diff options
| author | 董晓燕 <[email protected]> | 2021-06-02 07:14:46 +0000 |
|---|---|---|
| committer | 董晓燕 <[email protected]> | 2021-06-02 07:14:46 +0000 |
| commit | 2f39b56d617e5fba2b8d73d81cd5e6d894f85352 (patch) | |
| tree | 186240c23257b11de7cd65e6e2499870f097e421 | |
Update .project, __init__.robot, log.html, report.html, requirements.txt, 执行方式.txt, output.xml files
| -rw-r--r-- | .project | 11 | ||||
| -rw-r--r-- | __init__.robot | 7 | ||||
| -rw-r--r-- | log.html | 2137 | ||||
| -rw-r--r-- | output.xml | 41762 | ||||
| -rw-r--r-- | report.html | 2431 | ||||
| -rw-r--r-- | requirements.txt | 58 | ||||
| -rw-r--r-- | 执行方式.txt | 100 |
7 files changed, 46506 insertions, 0 deletions
diff --git a/.project b/.project new file mode 100644 index 0000000..c33d655 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>gap_tsg_api</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/__init__.robot b/__init__.robot new file mode 100644 index 0000000..f7baeb7 --- /dev/null +++ b/__init__.robot @@ -0,0 +1,7 @@ +*** Settings *** +#Suite Setup LoginAndAddLocalIP +#Suite Teardown LogoutAndDelLocalIP +#Resource keyword/common/login_logout_switch.robot +Suite Setup LoginAndAddLocalIP +Suite Teardown LogoutAndDelLocalIP +Resource keyword/common/login_logout_switch.robot
\ No newline at end of file diff --git a/log.html b/log.html new file mode 100644 index 0000000..836f547 --- /dev/null +++ b/log.html @@ -0,0 +1,2137 @@ +<!DOCTYPE html> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<meta http-equiv="Pragma" content="no-cache"> +<meta http-equiv="Expires" content="-1"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta content="Robot Framework 3.1.2 (Python 3.6.8 on win32)" name="Generator"> +<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA=="> +<style media="all" type="text/css"> +/* Generic and misc styles */ +body { + font-family: Helvetica, sans-serif; + font-size: 0.8em; + color: black; + padding: 6px; + background: white; +} +table { + table-layout: fixed; + word-wrap: break-word; + empty-cells: show; + font-size: 1em; +} +th, td { + vertical-align: top; +} +br { + mso-data-placement: same-cell; /* maintain line breaks in Excel */ +} +hr { + background: #ccc; + height: 1px; + border: 0; +} +a, a:link, a:visited { + text-decoration: none; + color: #15c; +} +a > img { + border: 1px solid #15c !important; +} +a:hover, a:active { + text-decoration: underline; + color: #61c; +} +.parent-name { + font-size: 0.7em; + letter-spacing: -0.07em; +} +.message { + white-space: pre-wrap; +} +/* Headers */ +#header { + width: 65em; + height: 3em; + margin: 6px 0; +} +h1 { + float: left; + margin: 0 0 0.5em 0; + width: 75%; +} +h2 { + clear: left; +} +#generated { + float: right; + text-align: right; + font-size: 0.9em; + white-space: nowrap; +} +/* Documentation headers */ +.doc > h2 { + font-size: 1.2em; +} +.doc > h3 { + font-size: 1.1em; +} +.doc > h4 { + font-size: 1.0em; +} +/* Status text colors -- !important allows using them in links */ +.fail { + color: #f33 !important; + font-weight: bold; +} +.pass { + color: #393 !important; +} +.label { + padding: 2px 5px; + font-size: 0.75em; + letter-spacing: 1px; + white-space: nowrap; + color: black; + background-color: #ddd; + border-radius: 3px; +} +.label.debug, .label.trace, .label.error, .label.keyword { + letter-spacing: 0; +} +.label.error, .label.fail, .label.pass, .label.warn { + color: #fff !important; + font-weight: bold; +} +.label.error, .label.fail { + background-color: #d9534f; +} +.label.pass { + background-color: #5cb85c; +} +.label.warn { + background-color: #ec971f; +} +/* Top right header */ +#top-right-header { + position: fixed; + top: 0; + right: 0; + z-index: 1000; + width: 12em; + text-align: center; +} +#report-or-log-link a { + display: block; + background: black; + color: white; + text-decoration: none; + font-weight: bold; + letter-spacing: 0.1em; + padding: 0.3em 0; + border-bottom-left-radius: 4px; +} +#report-or-log-link a:hover { + color: #ddd; +} +#log-level-selector { + padding: 0.3em 0; + font-size: 0.9em; + border-bottom-left-radius: 4px; + background: #ddd; +} +/* Statistics table */ +.statistics { + width: 65em; + border-collapse: collapse; + empty-cells: show; + margin-bottom: 1em; +} +.statistics tr:hover { + background: #f4f4f4; + cursor: pointer; +} +.statistics th, .statistics td { + border: 1px solid #ccc; + padding: 0.1em 0.3em; +} +.statistics th { + background-color: #ddd; + padding: 0.2em 0.3em; +} +.statistics td { + vertical-align: middle; +} +.stats-col-stat { + width: 4.5em; + text-align: center; +} +.stats-col-elapsed { + width: 5.5em; + text-align: center; +} +.stats-col-graph { + width: 9em; +} +th.stats-col-graph:hover { + cursor: default; +} +.stat-name { + float: left; +} +.stat-name a, .stat-name span { + font-weight: bold; +} +.tag-links { + font-size: 0.9em; + float: right; + margin-top: 0.05em; +} +.tag-links span { + margin-left: 0.2em; +} +/* Statistics graph */ +.graph, .empty-graph { + border: 1px solid #ccc; + width: auto; + height: 7px; + padding: 0; + background: #f33; +} +.empty-graph { + background: #eee; +} +.pass-bar, .fail-bar { + float: left; + height: 100%; +} +.pass-bar { + background: #1d4; +} +/* Tablesorter - adapted from provided Blue Skin */ +.tablesorter-header { + background-image: url(data:image/gif;base64,R0lGODlhCwAJAIAAAH9/fwAAACH5BAEAAAEALAAAAAALAAkAAAIRjAOnBr3cnIr0WUjTrC9e9BQAOw==); + background-repeat: no-repeat; + background-position: center right; + cursor: pointer; +} +.tablesorter-header:hover { + background-color: #ccc; +} +.tablesorter-headerAsc { + background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlBWnFr3cnIr0WQOyBmvzp13CpxQAOw==); + background-color: #ccc !important; +} +.tablesorter-headerDesc { + background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlAWnBr3cnIr0WROyDmvzp13CpxQAOw==); + background-color: #ccc !important; +} +.sorter-false { + background-image: none; + cursor: default; +} +.sorter-false:hover { + background-color: #ddd; +} +</style> +<style media="all" type="text/css"> +/* Icons are from Open Iconic <https://useiconic.com/open/>. + Licensed under the MIT License. */ +/* Containers */ +.suite, .test, #errors { + border: 1px solid #ccc; + padding: 0.3em 0.2em; + margin: 0.2em 0; +} +.test { + border-style: dashed; +} +#errors, .messages, .metadata { + width: 100%; + border-spacing: 0; +} +.children { + display: none; + margin-left: 1.4em; +} +.suite, .test, .keyword { + margin-left: -0.2em; +} +#s1, .suite > .children > .keyword { + margin-left: 0; +} +/* Suite, test and kw headers */ +.element-header { + border: 1px solid transparent; + border-radius: 2px; + position: relative; +} +.element-header:hover { + cursor: pointer; + background-color: #eee; + border-color: #ccc; +} +.element-header-toggle { + position: absolute; + left: 3px; + top: 5px; + background-repeat: no-repeat; + background-position: center; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAQAAABKxSfDAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfeCR0JChSkZz20AAAAGklEQVQI12NgQAKMDKzInP8IDhOqMk4G7AAANQwBE427PYUAAAAASUVORK5CYII=); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0wIDB2Mmg4di0yaC04eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAzKSIgLz4KPC9zdmc+), none; + height: 10px; + width: 10px; + background-size: 6px 6px; + border: 1px solid #ccc; + border-radius: 2px; +} +.closed > .element-header-toggle { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAQAAABKxSfDAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfeCR0JCDHdVYtxAAAAM0lEQVQI103MMQqAMBQFwVHyITaB3P+W1sKzSBC3mW6hRFw0pUB5DvF1bu9FN0RM3X/wAk98CUnvFTakAAAAAElFTkSuQmCC); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zIDB2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN2LTNoLTJ6IiAvPgo8L3N2Zz4=), none; +} +.element-header:hover > .element-header-toggle { + background-color: #ccc; +} +.element-header-right:hover ~ .element-header-toggle { + background-color: transparent; +} +.element-header-left { + padding: 3px 80px 3px 20px; +} +.element-header-right { + position: absolute; + right: 0; + top: 0; + padding: 3px; + cursor: default; +} +.name { + font-weight: bold; +} +.elapsed { + float: right; + color: #999; + padding-left: 1em; +} +.link { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHlJREFUGJVtzrEJwmAQBtCn6ASuIKTIBhY2gmghBiJYB1udwk10B8FJbKMBcQFbtbkfJHrVwfu+4/idJR64Y9H7E3higj5O3S8Y44ApLnjhnXCNGhV2yNGggDJwiC02gavUbpDFvscRo4QdXOMKDHBufz3HLYKzNn4AbSkV3fncGQYAAAAASUVORK5CYII=); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik01Ljg4LjAzYy0uMTguMDEtLjM2LjAzLS41My4wOS0uMjcuMS0uNTMuMjUtLjc1LjQ3YS41LjUgMCAxIDAgLjY5LjY5Yy4xMS0uMTEuMjQtLjE3LjM4LS4yMi4zNS0uMTIuNzgtLjA3IDEuMDYuMjIuMzkuMzkuMzkgMS4wNCAwIDEuNDRsLTEuNSAxLjVjLS40NC40NC0uOC40OC0xLjA2LjQ3LS4yNi0uMDEtLjQxLS4xMy0uNDEtLjEzYS41LjUgMCAxIDAtLjUuODhzLjM0LjIyLjg0LjI1Yy41LjAzIDEuMi0uMTYgMS44MS0uNzhsMS41LTEuNWMuNzgtLjc4Ljc4LTIuMDQgMC0yLjgxLS4yOC0uMjgtLjYxLS40NS0uOTctLjUzLS4xOC0uMDQtLjM4LS4wNC0uNTYtLjAzem0tMiAyLjMxYy0uNS0uMDItMS4xOS4xNS0xLjc4Ljc1bC0xLjUgMS41Yy0uNzguNzgtLjc4IDIuMDQgMCAyLjgxLjU2LjU2IDEuMzYuNzIgMi4wNi40Ny4yNy0uMS41My0uMjUuNzUtLjQ3YS41LjUgMCAxIDAtLjY5LS42OWMtLjExLjExLS4yNC4xNy0uMzguMjItLjM1LjEyLS43OC4wNy0xLjA2LS4yMi0uMzktLjM5LS4zOS0xLjA0IDAtMS40NGwxLjUtMS41Yy40LS40Ljc1LS40NSAxLjAzLS40NC4yOC4wMS40Ny4wOS40Ny4wOWEuNS41IDAgMSAwIC40NC0uODhzLS4zNC0uMi0uODQtLjIyeiIKICAvPgo8L3N2Zz4=), none; +} +.expand { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAADtJREFUGJVjYCACKDAwMByA0ljFDjAwMPxnYGB4ABVQgLL/Q+VQBB6gseGmIivCkERXhFUSWRFOSawAAEl7E3uv1iMcAAAAAElFTkSuQmCC); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0xLjUgMGwtMS41IDEuNSA0IDQgNC00LTEuNS0xLjUtMi41IDIuNS0yLjUtMi41eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAxKSIgLz4KPC9zdmc+), none; +} +.collapse { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAC5JREFUGJVjYCARNEAxTsn/UIyhCFkSQxG6ThQ+C5IpjWhG1yNb4YDFTdjEMAEACi8Q++9Y9TAAAAAASUVORK5CYII=); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik00IDBsLTQgNCAxLjUgMS41IDIuNS0yLjUgMi41IDIuNSAxLjUtMS41LTQtNHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMSkiIC8+Cjwvc3ZnPg==), none; +} +.expand, .collapse, .link { + float: left; + display: block; + visibility: hidden; + margin: 0 4px; + height: 14px; + width: 14px; + background-size: 8px 8px; + background-repeat: no-repeat; + background-position: center; + border: 1px solid #ccc; + border-radius: 2px; +} +.link { + background-size: 10px 10px; +} +.element-header:hover a { + visibility: visible; +} +.expand:hover, .collapse:hover, .link:hover { + background-color: #ccc; +} +/* Messages and errors */ +.messages .time, .messages .message { + font-family: monospace; + font-size: 1.1em; +} +#errors .message { + font-family: monospace; + font-size: 1.2em; +} +.message-row { + height: 20px; +} +.time { + width: 7.5em; +} +.error-time { + width: 11em; + font-size: 0.9em; + white-space: nowrap; +} +.level { + width: 5em; + text-align: center; +} +.select-message { + width: 24px; +} +.select-message > div { + float: right; + margin-right: 2px; + height: 16px; + width: 16px; + background-size: 12px 12px; + background-repeat: no-repeat; + background-position: center; +} +.message-row:hover .select-message div { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAQAAAD8fJRsAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfeCR0MOzhWKZQOAAAASUlEQVQY032PsRHAIAwDX9BkicD+W8UMEqegAQJWKZ/+3sLZJhFGQEZzNaIa4ibh66En867VNaIeoP5WppNuIGoAlOm3g5VC1AdYeQv1BZPRSgAAAABJRU5ErkJggg==); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0wIDB2MWg4di0xaC04em0wIDJ2MWg2di0xaC02em0wIDJ2MWg4di0xaC04em0wIDJ2MWg2di0xaC02eiIgLz4KPC9zdmc+), none; + border: 1px solid #ccc; + border-radius: 2px; +} +.select-message:hover div { + background-color: #ccc; + cursor: pointer; +} +/* Message tables - these MUST NOT be combined together because otherwise + dynamically altering them based on visible log level is not possible. */ +.trace-message { + display: table; +} +.debug-message { + display: table; +} +/* Metadata */ +.metadata th { + width: 12.5em; + text-align: left; + white-space: nowrap; + padding: 0; +} +.metadata td { + padding: 0.2em; +} +.keyword-metadata { + font-size: 0.9em; +} +/* Custom styles for statistics */ +#total-stats tr:hover, #tag-stats tr:hover { + cursor: default; +} +</style> +<style media="print" type="text/css"> +body { + background: white !important; + padding: 0; + font-size: 8pt; +} +a:link, a:visited { + color: black; +} +#header { + width: auto; +} +.details, .statistics { + width: 100%; +} +#generated-ago, #top-right-header, #normal-selector, #search-buttons, +.folding-button, .expand, .hidden, .details-col-toggle { + display: none; +} +.element-header-text, .children { + margin: 0; +} +#test-details { + border-collapse: collapse; + table-layout: auto; +} +#test-details th, #test-details td { + border: 1px solid black; +} +.details-col-header { + padding: 0; +} +#print-selector { + display: table-cell; +} +.tablesorter-header { + background-image: none; + background: #ddd !important; +} +</style> +<style media="all" type="text/css"> +#javascript-disabled { + width: 600px; + margin: 100px auto 0 auto; + padding: 20px; + color: black; + border: 1px solid #ccc; + background: #eee; +} +#javascript-disabled h1 { + width: 100%; + float: none; +} +#javascript-disabled ul { + font-size: 1.2em; +} +#javascript-disabled li { + margin: 0.5em 0; +} +#javascript-disabled b { + font-style: italic; +} +</style> +<style media="all" type="text/css"> +.doc > * { + margin: 0.7em 1em 0.1em 1em; + padding: 0; +} +.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 { + margin: 0.7em 0 0.1em 0; +} +.doc > *:first-child { + margin-top: 0.1em; +} +.doc table { + border: 1px solid #ccc; + background: transparent; + border-collapse: collapse; + empty-cells: show; + font-size: 0.9em; +} +.doc table th, .doc table td { + border: 1px solid #ccc; + background: transparent; + padding: 0.1em 0.3em; + height: 1.2em; +} +.doc table th { + text-align: center; + letter-spacing: 0.1em; +} +.doc pre { + font-size: 1.1em; + letter-spacing: 0.05em; + background: #f4f4f4; +} +.doc code { + padding: 0 0.2em; + letter-spacing: 0.05em; + background: #eee; +} +.doc li { + list-style-position: inside; + list-style-type: square; +} +.doc img { + border: 1px solid #ccc; +} +.doc hr { + background: #ccc; + height: 1px; + border: 0; +} +</style> +<script type="text/javascript"> +var LEVELS = {TRACE: 0, DEBUG: 1, INFO: 2, WARN: 3, FAIL: 4, NONE: 5}; +function toggleSuite(suiteId) { + toggleElement(suiteId, ['keyword', 'suite', 'test']); +} +function toggleTest(testId) { + toggleElement(testId, ['keyword']); +} +function toggleKeyword(kwId) { + toggleElement(kwId, ['keyword', 'message']); +} +function toggleElement(elementId, childrenNames) { + var element = $('#' + elementId); + var children = element.children('.children'); + children.toggle(100, '', function () { + element.children('.element-header').toggleClass('closed'); + }); + populateChildren(elementId, children, childrenNames); +} +function populateChildren(elementId, childElement, childrenNames) { + if (!childElement.hasClass('populated')) { + var element = window.testdata.findLoaded(elementId); + var callback = drawCallback(element, childElement, childrenNames); + element.callWhenChildrenReady(callback); + childElement.addClass('populated'); + } +} +function drawCallback(element, childElement, childrenNames) { + return function () { + util.map(childrenNames, function (childName) { + var children = element[childName + 's'](); + var template = childName + 'Template'; + util.map(children, function (child) { + $.tmpl(template, child).appendTo(childElement); + }); + }); + } +} +function expandSuite(suite) { + if (suite.status == "PASS") + expandElement(suite); + else + expandCriticalFailed(suite); +} +function expandElement(item) { + var element = $('#' + item.id); + var children = element.children('.children'); + // .css is faster than .show and .show w/ callback is terribly slow + children.css({'display': 'block'}); + populateChildren(item.id, children, item.childrenNames); + element.children('.element-header').removeClass('closed'); +} +function expandElementWithId(elementid) { + expandElement(window.testdata.findLoaded(elementid)); +} +function expandCriticalFailed(element) { + if (element.status == "FAIL") { + window.elementsToExpand = [element]; + window.expandDecider = function (e) { + return e.status == "FAIL" && (e.isCritical === undefined || e.isCritical); + }; + expandRecursively(); + } +} +function expandAll(elementId) { + window.elementsToExpand = [window.testdata.findLoaded(elementId)]; + window.expandDecider = function () { return true; }; + expandRecursively(); +} +function expandRecursively() { + if (!window.elementsToExpand.length) + return; + var element = window.elementsToExpand.pop(); + if (!element || elementHiddenByUser(element.id)) { + window.elementsToExpand = []; + return; + } + expandElement(element); + element.callWhenChildrenReady(function () { + var children = element.children(); + for (var i = children.length-1; i >= 0; i--) { + if (window.expandDecider(children[i])) + window.elementsToExpand.push(children[i]); + } + if (window.elementsToExpand.length) + setTimeout(expandRecursively, 0); + }); +} +function elementHiddenByUser(id) { + var element = $('#' + id); + return !element.is(":visible"); +} +function collapseAll(id) { + var element = $('#' + id); + element.find('.children').css({'display': 'none'}); + element.find('.element-header').addClass('closed'); +} +function logLevelSelected(level) { + var anchors = getViewAnchorElements(); + setMessageVisibility(level); + scrollToShortestVisibleAnchorElement(anchors); +} +function getViewAnchorElements() { + var elem1 = $(document.elementFromPoint(100, 0)); + var elem2 = $(document.elementFromPoint(100, 20)); + return [elem1, elem2]; +} +function scrollToShortestVisibleAnchorElement(anchors) { + anchors = util.map(anchors, closestVisibleParent); + var shortest = anchors[0]; + for (var i = 1; i < anchors.length; i++) + if (shortest.height() > anchors[i].height()) + shortest = anchors[i]; + shortest.get()[0].scrollIntoView(true); +} +function setMessageVisibility(level) { + level = parseInt(level); + changeClassDisplay(".trace-message", level <= LEVELS.TRACE); + changeClassDisplay(".debug-message", level <= LEVELS.DEBUG); + changeClassDisplay(".info-message", level <= LEVELS.INFO); +} +function closestVisibleParent(elem) { + while (!elem.is(":visible")) + elem = elem.parent(); + return elem; +} +function changeClassDisplay(clazz, visible) { + var styles = document.styleSheets; + for (var i = 0; i < styles.length; i++) { + var rules = getRules(styles[i]); + if (rules === null) + continue; + for (var j = 0; j < rules.length; j++) + if (rules[j].selectorText === clazz) + rules[j].style.display = visible ? "table" : "none"; + } +} +function getRules(style) { + // With Chrome external CSS files seem to have only null roles and with + // Firefox accessing rules can result to security error. + // Neither of these are a problem on with generated logs. + try { + return style.cssRules || style.rules; + } catch (e) { + return null; + } +} +function selectMessage(parentId) { + var element = $('#' + parentId).find('.message').get(0); + selectText(element); +} +function selectText(element) { + // Based on http://stackoverflow.com/questions/985272 + var range, selection; + if (document.body.createTextRange) { // IE 8 + range = document.body.createTextRange(); + range.moveToElementText(element); + range.select(); + } else if (window.getSelection) { // Others + selection = window.getSelection(); + range = document.createRange(); + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + } +} +function LogLevelController(minLevel, defaultLevel) { + minLevel = LEVELS[minLevel]; + defaultLevel = LEVELS[defaultLevel]; + function showLogLevelSelector() { + return minLevel < LEVELS.INFO; + } + function defaultLogLevel() { + if (minLevel > defaultLevel) + return minLevel; + return defaultLevel; + } + function showTrace() { + return minLevel == LEVELS.TRACE; + } + return { + showLogLevelSelector: showLogLevelSelector, + defaultLogLevel: defaultLogLevel, + showTrace: showTrace + }; +} +</script> +<script type="text/javascript"> +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w}); +</script> +<script type="text/javascript"> +/* + * jQuery Templates Plugin 1.0.0pre + * http://github.com/jquery/jquery-tmpl + * Requires jQuery 1.4.2 + * + * Copyright Software Freedom Conservancy, Inc. + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + */ +(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery); +</script> +<script type="text/javascript"> +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){return function(e){"use strict";var t=e.tablesorter={version:"2.30.5",parsers:[],widgets:[],defaults:{theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,tabIndex:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,resort:!0,headers:{},ignoreCase:!0,sortForce:null,sortList:[],sortAppend:null,sortStable:!1,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",duplicateSpan:!0,textExtraction:"basic",textAttribute:"data-text",textSorter:null,numberSorter:null,initWidgets:!0,widgetClass:"widget-{name}",widgets:[],widgetOptions:{zebra:["even","odd"]},initialized:null,tableClass:"",cssAsc:"",cssDesc:"",cssNone:"",cssHeader:"",cssHeaderRow:"",cssProcessing:"",cssChildRow:"tablesorter-childRow",cssInfoBlock:"tablesorter-infoOnly",cssNoSort:"tablesorter-noSort",cssIgnoreRow:"tablesorter-ignoreRow",cssIcon:"tablesorter-icon",cssIconNone:"",cssIconAsc:"",cssIconDesc:"",cssIconDisabled:"",pointerClick:"click",pointerDown:"mousedown",pointerUp:"mouseup",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[],globalize:0,imgAttr:0},css:{table:"tablesorter",cssHasChild:"tablesorter-hasChildRow",childRow:"tablesorter-childRow",colgroup:"tablesorter-colgroup",header:"tablesorter-header",headerRow:"tablesorter-headerRow",headerIn:"tablesorter-header-inner",icon:"tablesorter-icon",processing:"tablesorter-processing",sortAsc:"tablesorter-headerAsc",sortDesc:"tablesorter-headerDesc",sortNone:"tablesorter-headerUnSorted"},language:{sortAsc:"Ascending sort applied, ",sortDesc:"Descending sort applied, ",sortNone:"No sort applied, ",sortDisabled:"sorting is disabled",nextAsc:"activate to apply an ascending sort",nextDesc:"activate to apply a descending sort",nextNone:"activate to remove the sort"},regex:{templateContent:/\{content\}/g,templateIcon:/\{icon\}/g,templateName:/\{name\}/i,spaces:/\s+/g,nonWord:/\W/g,formElements:/(input|select|button|textarea)/i,chunk:/(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,chunks:/(^\\0|\\0$)/,hex:/^0x[0-9a-f]+$/i,comma:/,/g,digitNonUS:/[\s|\.]/g,digitNegativeTest:/^\s*\([.\d]+\)/,digitNegativeReplace:/^\s*\(([.\d]+)\)/,digitTest:/^[\-+(]?\d+[)]?$/,digitReplace:/[,.'"\s]/g},string:{max:1,min:-1,emptymin:1,emptymax:-1,zero:0,none:0,"null":0,top:!0,bottom:!1},keyCodes:{enter:13},dates:{},instanceMethods:{},setup:function(r,o){if(r&&r.tHead&&0!==r.tBodies.length&&!0!==r.hasInitialized){var s="",a=e(r),n=e.metadata;r.hasInitialized=!1,r.isProcessing=!0,r.config=o,e.data(r,"tablesorter",o),t.debug(o,"core")&&(console[console.group?"group":"log"]("Initializing tablesorter v"+t.version),e.data(r,"startoveralltimer",new Date)),o.supportsDataObject=function(e){return e[0]=parseInt(e[0],10),e[0]>1||1===e[0]&&parseInt(e[1],10)>=4}(e.fn.jquery.split(".")),o.emptyTo=o.emptyTo.toLowerCase(),o.stringTo=o.stringTo.toLowerCase(),o.last={sortList:[],clickedIndex:-1},/tablesorter\-/.test(a.attr("class"))||(s=""!==o.theme?" tablesorter-"+o.theme:""),o.namespace?o.namespace="."+o.namespace.replace(t.regex.nonWord,""):o.namespace=".tablesorter"+Math.random().toString(16).slice(2),o.table=r,o.$table=a.addClass(t.css.table+" "+o.tableClass+s+" "+o.namespace.slice(1)).attr("role","grid"),o.$headers=a.find(o.selectorHeaders),o.$table.children().children("tr").attr("role","row"),o.$tbodies=a.children("tbody:not(."+o.cssInfoBlock+")").attr({"aria-live":"polite","aria-relevant":"all"}),o.$table.children("caption").length&&((s=o.$table.children("caption")[0]).id||(s.id=o.namespace.slice(1)+"caption"),o.$table.attr("aria-labelledby",s.id)),o.widgetInit={},o.textExtraction=o.$table.attr("data-text-extraction")||o.textExtraction||"basic",t.buildHeaders(o),t.fixColumnWidth(r),t.addWidgetFromClass(r),t.applyWidgetOptions(r),t.setupParsers(o),o.totalRows=0,o.debug&&t.validateOptions(o),o.delayInit||t.buildCache(o),t.bindEvents(r,o.$headers,!0),t.bindMethods(o),o.supportsDataObject&&void 0!==a.data().sortlist?o.sortList=a.data().sortlist:n&&a.metadata()&&a.metadata().sortlist&&(o.sortList=a.metadata().sortlist),t.applyWidget(r,!0),o.sortList.length>0?t.sortOn(o,o.sortList,{},!o.initWidgets):(t.setHeadersCss(o),o.initWidgets&&t.applyWidget(r,!1)),o.showProcessing&&a.unbind("sortBegin"+o.namespace+" sortEnd"+o.namespace).bind("sortBegin"+o.namespace+" sortEnd"+o.namespace,function(e){clearTimeout(o.timerProcessing),t.isProcessing(r),"sortBegin"===e.type&&(o.timerProcessing=setTimeout(function(){t.isProcessing(r,!0)},500))}),r.hasInitialized=!0,r.isProcessing=!1,t.debug(o,"core")&&(console.log("Overall initialization time:"+t.benchmark(e.data(r,"startoveralltimer"))),t.debug(o,"core")&&console.groupEnd&&console.groupEnd()),a.triggerHandler("tablesorter-initialized",r),"function"==typeof o.initialized&&o.initialized(r)}else t.debug(o,"core")&&(r.hasInitialized?console.warn("Stopping initialization. Tablesorter has already been initialized"):console.error("Stopping initialization! No table, thead or tbody",r))},bindMethods:function(r){var o=r.$table,s=r.namespace,a="sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(s+" ");o.unbind(a.replace(t.regex.spaces," ")).bind("sortReset"+s,function(e,r){e.stopPropagation(),t.sortReset(this.config,function(e){e.isApplyingWidgets?setTimeout(function(){t.applyWidget(e,"",r)},100):t.applyWidget(e,"",r)})}).bind("updateAll"+s,function(e,r,o){e.stopPropagation(),t.updateAll(this.config,r,o)}).bind("update"+s+" updateRows"+s,function(e,r,o){e.stopPropagation(),t.update(this.config,r,o)}).bind("updateHeaders"+s,function(e,r){e.stopPropagation(),t.updateHeaders(this.config,r)}).bind("updateCell"+s,function(e,r,o,s){e.stopPropagation(),t.updateCell(this.config,r,o,s)}).bind("addRows"+s,function(e,r,o,s){e.stopPropagation(),t.addRows(this.config,r,o,s)}).bind("updateComplete"+s,function(){this.isUpdating=!1}).bind("sorton"+s,function(e,r,o,s){e.stopPropagation(),t.sortOn(this.config,r,o,s)}).bind("appendCache"+s,function(r,o,s){r.stopPropagation(),t.appendCache(this.config,s),e.isFunction(o)&&o(this)}).bind("updateCache"+s,function(e,r,o){e.stopPropagation(),t.updateCache(this.config,r,o)}).bind("applyWidgetId"+s,function(e,r){e.stopPropagation(),t.applyWidgetId(this,r)}).bind("applyWidgets"+s,function(e,r){e.stopPropagation(),t.applyWidget(this,!1,r)}).bind("refreshWidgets"+s,function(e,r,o){e.stopPropagation(),t.refreshWidgets(this,r,o)}).bind("removeWidget"+s,function(e,r,o){e.stopPropagation(),t.removeWidget(this,r,o)}).bind("destroy"+s,function(e,r,o){e.stopPropagation(),t.destroy(this,r,o)}).bind("resetToLoadState"+s,function(o){o.stopPropagation(),t.removeWidget(this,!0,!1);var s=e.extend(!0,{},r.originalSettings);(r=e.extend(!0,{},t.defaults,s)).originalSettings=s,this.hasInitialized=!1,t.setup(this,r)})},bindEvents:function(r,o,s){var a,n=(r=e(r)[0]).config,i=n.namespace,l=null;!0!==s&&(o.addClass(i.slice(1)+"_extra_headers"),(a=t.getClosest(o,"table")).length&&"TABLE"===a[0].nodeName&&a[0]!==r&&e(a[0]).addClass(i.slice(1)+"_extra_table")),a=(n.pointerDown+" "+n.pointerUp+" "+n.pointerClick+" sort keyup ").replace(t.regex.spaces," ").split(" ").join(i+" "),o.find(n.selectorSort).add(o.filter(n.selectorSort)).unbind(a).bind(a,function(r,o){var s,a,i,d=e(r.target),c=" "+r.type+" ";if(!(1!==(r.which||r.button)&&!c.match(" "+n.pointerClick+" | sort | keyup ")||" keyup "===c&&r.which!==t.keyCodes.enter||c.match(" "+n.pointerClick+" ")&&void 0!==r.which||c.match(" "+n.pointerUp+" ")&&l!==r.target&&!0!==o)){if(c.match(" "+n.pointerDown+" "))return l=r.target,void("1"===(i=d.jquery.split("."))[0]&&i[1]<4&&r.preventDefault());if(l=null,s=t.getClosest(e(this),"."+t.css.header),t.regex.formElements.test(r.target.nodeName)||d.hasClass(n.cssNoSort)||d.parents("."+n.cssNoSort).length>0||s.hasClass("sorter-false")||d.parents("button").length>0)return!n.cancelSelection;n.delayInit&&t.isEmptyObject(n.cache)&&t.buildCache(n),n.last.clickedIndex=s.attr("data-column")||s.index(),(a=n.$headerIndexed[n.last.clickedIndex][0])&&!a.sortDisabled&&t.initSort(n,a,r)}}),n.cancelSelection&&o.attr("unselectable","on").bind("selectstart",!1).css({"user-select":"none",MozUserSelect:"none"})},buildHeaders:function(r){var o,s,a,n;for(r.headerList=[],r.headerContent=[],r.sortVars=[],t.debug(r,"core")&&(a=new Date),r.columns=t.computeColumnIndex(r.$table.children("thead, tfoot").children("tr")),s=r.cssIcon?'<i class="'+(r.cssIcon===t.css.icon?t.css.icon:r.cssIcon+" "+t.css.icon)+'"></i>':"",r.$headers=e(e.map(r.$table.find(r.selectorHeaders),function(o,a){var n,i,l,d,c,g=e(o);if(!t.getClosest(g,"tr").hasClass(r.cssIgnoreRow))return/(th|td)/i.test(o.nodeName)||(c=t.getClosest(g,"th, td"),g.attr("data-column",c.attr("data-column"))),n=t.getColumnData(r.table,r.headers,a,!0),r.headerContent[a]=g.html(),""===r.headerTemplate||g.find("."+t.css.headerIn).length||(d=r.headerTemplate.replace(t.regex.templateContent,g.html()).replace(t.regex.templateIcon,g.find("."+t.css.icon).length?"":s),r.onRenderTemplate&&(i=r.onRenderTemplate.apply(g,[a,d]))&&"string"==typeof i&&(d=i),g.html('<div class="'+t.css.headerIn+'">'+d+"</div>")),r.onRenderHeader&&r.onRenderHeader.apply(g,[a,r,r.$table]),l=parseInt(g.attr("data-column"),10),o.column=l,c=t.getOrder(t.getData(g,n,"sortInitialOrder")||r.sortInitialOrder),r.sortVars[l]={count:-1,order:c?r.sortReset?[1,0,2]:[1,0]:r.sortReset?[0,1,2]:[0,1],lockedOrder:!1},void 0!==(c=t.getData(g,n,"lockedOrder")||!1)&&!1!==c&&(r.sortVars[l].lockedOrder=!0,r.sortVars[l].order=t.getOrder(c)?[1,1]:[0,0]),r.headerList[a]=o,g.addClass(t.css.header+" "+r.cssHeader),t.getClosest(g,"tr").addClass(t.css.headerRow+" "+r.cssHeaderRow).attr("role","row"),r.tabIndex&&g.attr("tabindex",0),o})),r.$headerIndexed=[],n=0;n<r.columns;n++)t.isEmptyObject(r.sortVars[n])&&(r.sortVars[n]={}),o=r.$headers.filter('[data-column="'+n+'"]'),r.$headerIndexed[n]=o.length?o.not(".sorter-false").length?o.not(".sorter-false").filter(":last"):o.filter(":last"):e();r.$table.find(r.selectorHeaders).attr({scope:"col",role:"columnheader"}),t.updateHeader(r),t.debug(r,"core")&&(console.log("Built headers:"+t.benchmark(a)),console.log(r.$headers))},addInstanceMethods:function(r){e.extend(t.instanceMethods,r)},setupParsers:function(e,r){var o,s,a,n,i,l,d,c,g,p,u,f,h,m,b=e.table,y=0,w=t.debug(e,"core"),x={};if(e.$tbodies=e.$table.children("tbody:not(."+e.cssInfoBlock+")"),h=void 0===r?e.$tbodies:r,0===(m=h.length))return w?console.warn("Warning: *Empty table!* Not building a parser cache"):"";for(w&&(f=new Date,console[console.group?"group":"log"]("Detecting parsers for each column")),s={extractors:[],parsers:[]};y<m;){if((o=h[y].rows).length)for(i=0,n=e.columns,l=0;l<n;l++){if((d=e.$headerIndexed[i])&&d.length&&(c=t.getColumnData(b,e.headers,i),u=t.getParserById(t.getData(d,c,"extractor")),p=t.getParserById(t.getData(d,c,"sorter")),g="false"===t.getData(d,c,"parser"),e.empties[i]=(t.getData(d,c,"empty")||e.emptyTo||(e.emptyToBottom?"bottom":"top")).toLowerCase(),e.strings[i]=(t.getData(d,c,"string")||e.stringTo||"max").toLowerCase(),g&&(p=t.getParserById("no-parser")),u||(u=!1),p||(p=t.detectParserForColumn(e,o,-1,i)),w&&(x["("+i+") "+d.text()]={parser:p.id,extractor:u?u.id:"none",string:e.strings[i],empty:e.empties[i]}),s.parsers[i]=p,s.extractors[i]=u,(a=d[0].colSpan-1)>0))for(i+=a,n+=a;a+1>0;)s.parsers[i-a]=p,s.extractors[i-a]=u,a--;i++}y+=s.parsers.length?m:1}w&&(t.isEmptyObject(x)?console.warn(" No parsers detected!"):console[console.table?"table":"log"](x),console.log("Completed detecting parsers"+t.benchmark(f)),console.groupEnd&&console.groupEnd()),e.parsers=s.parsers,e.extractors=s.extractors},addParser:function(e){var r,o=t.parsers.length,s=!0;for(r=0;r<o;r++)t.parsers[r].id.toLowerCase()===e.id.toLowerCase()&&(s=!1);s&&(t.parsers[t.parsers.length]=e)},getParserById:function(e){if("false"==e)return!1;var r,o=t.parsers.length;for(r=0;r<o;r++)if(t.parsers[r].id.toLowerCase()===e.toString().toLowerCase())return t.parsers[r];return!1},detectParserForColumn:function(r,o,s,a){for(var n,i,l,d=t.parsers.length,c=!1,g="",p=t.debug(r,"core"),u=!0;""===g&&u;)(l=o[++s])&&s<50?l.className.indexOf(t.cssIgnoreRow)<0&&(c=o[s].cells[a],g=t.getElementText(r,c,a),i=e(c),p&&console.log("Checking if value was empty on row "+s+", column: "+a+': "'+g+'"')):u=!1;for(;--d>=0;)if((n=t.parsers[d])&&"text"!==n.id&&n.is&&n.is(g,r.table,c,i))return n;return t.getParserById("text")},getElementText:function(r,o,s){if(!o)return"";var a,n=r.textExtraction||"",i=o.jquery?o:e(o);return"string"==typeof n?"basic"===n&&void 0!==(a=i.attr(r.textAttribute))?e.trim(a):e.trim(o.textContent||i.text()):"function"==typeof n?e.trim(n(i[0],r.table,s)):"function"==typeof(a=t.getColumnData(r.table,n,s))?e.trim(a(i[0],r.table,s)):e.trim(i[0].textContent||i.text())},getParsedText:function(e,r,o,s){void 0===s&&(s=t.getElementText(e,r,o));var a=""+s,n=e.parsers[o],i=e.extractors[o];return n&&(i&&"function"==typeof i.format&&(s=i.format(s,e.table,r,o)),a="no-parser"===n.id?"":n.format(""+s,e.table,r,o),e.ignoreCase&&"string"==typeof a&&(a=a.toLowerCase())),a},buildCache:function(r,o,s){var a,n,i,l,d,c,g,p,u,f,h,m,b,y,w,x,v,C,$,I,D,R,T=r.table,L=r.parsers,A=t.debug(r,"core");if(r.$tbodies=r.$table.children("tbody:not(."+r.cssInfoBlock+")"),g=void 0===s?r.$tbodies:s,r.cache={},r.totalRows=0,!L)return A?console.warn("Warning: *Empty table!* Not building a cache"):"";for(A&&(m=new Date),r.showProcessing&&t.isProcessing(T,!0),c=0;c<g.length;c++){for(x=[],a=r.cache[c]={normalized:[]},b=g[c]&&g[c].rows.length||0,l=0;l<b;++l)if(y={child:[],raw:[]},p=e(g[c].rows[l]),u=[],!p.hasClass(r.selectorRemove.slice(1)))if(p.hasClass(r.cssChildRow)&&0!==l)for(D=a.normalized.length-1,(w=a.normalized[D][r.columns]).$row=w.$row.add(p),p.prev().hasClass(r.cssChildRow)||p.prev().addClass(t.css.cssHasChild),f=p.children("th, td"),D=w.child.length,w.child[D]=[],C=0,I=r.columns,d=0;d<I;d++)(h=f[d])&&(w.child[D][d]=t.getParsedText(r,h,d),(v=f[d].colSpan-1)>0&&(C+=v,I+=v)),C++;else{for(y.$row=p,y.order=l,C=0,I=r.columns,d=0;d<I;++d){if((h=p[0].cells[d])&&C<r.columns&&(!($=void 0!==L[C])&&A&&console.warn("No parser found for row: "+l+", column: "+d+'; cell containing: "'+e(h).text()+'"; does it have a header?'),n=t.getElementText(r,h,C),y.raw[C]=n,i=t.getParsedText(r,h,C,n),u[C]=i,$&&"numeric"===(L[C].type||"").toLowerCase()&&(x[C]=Math.max(Math.abs(i)||0,x[C]||0)),(v=h.colSpan-1)>0)){for(R=0;R<=v;)i=r.duplicateSpan||0===R?n:"string"!=typeof r.textExtraction?t.getElementText(r,h,C+R)||"":"",y.raw[C+R]=i,u[C+R]=i,R++;C+=v,I+=v}C++}u[r.columns]=y,a.normalized[a.normalized.length]=u}a.colMax=x,r.totalRows+=a.normalized.length}if(r.showProcessing&&t.isProcessing(T),A){for(D=Math.min(5,r.cache[0].normalized.length),console[console.group?"group":"log"]("Building cache for "+r.totalRows+" rows (showing "+D+" rows in log) and "+r.columns+" columns"+t.benchmark(m)),n={},d=0;d<r.columns;d++)for(C=0;C<D;C++)n["row: "+C]||(n["row: "+C]={}),n["row: "+C][r.$headerIndexed[d].text()]=r.cache[0].normalized[C][d];console[console.table?"table":"log"](n),console.groupEnd&&console.groupEnd()}e.isFunction(o)&&o(T)},getColumnText:function(r,o,s,a){var n,i,l,d,c,g,p,u,f,h,m="function"==typeof s,b="all"===o,y={raw:[],parsed:[],$cell:[]},w=(r=e(r)[0]).config;if(!t.isEmptyObject(w)){for(c=w.$tbodies.length,n=0;n<c;n++)for(g=(l=w.cache[n].normalized).length,i=0;i<g;i++)d=l[i],a&&!d[w.columns].$row.is(a)||(h=!0,u=b?d.slice(0,w.columns):d[o],d=d[w.columns],p=b?d.raw:d.raw[o],f=b?d.$row.children():d.$row.children().eq(o),m&&(h=s({tbodyIndex:n,rowIndex:i,parsed:u,raw:p,$row:d.$row,$cell:f})),!1!==h&&(y.parsed[y.parsed.length]=u,y.raw[y.raw.length]=p,y.$cell[y.$cell.length]=f));return y}t.debug(w,"core")&&console.warn("No cache found - aborting getColumnText function!")},setHeadersCss:function(r){var o,s,a=r.sortList,n=a.length,i=t.css.sortNone+" "+r.cssNone,l=[t.css.sortAsc+" "+r.cssAsc,t.css.sortDesc+" "+r.cssDesc],d=[r.cssIconAsc,r.cssIconDesc,r.cssIconNone],c=["ascending","descending"],g=function(e,r){e.removeClass(i).addClass(l[r]).attr("aria-sort",c[r]).find("."+t.css.icon).removeClass(d[2]).addClass(d[r])},p=r.$table.find("tfoot tr").children("td, th").add(e(r.namespace+"_extra_headers")).removeClass(l.join(" ")),u=r.$headers.add(e("thead "+r.namespace+"_extra_headers")).removeClass(l.join(" ")).addClass(i).attr("aria-sort","none").find("."+t.css.icon).removeClass(d.join(" ")).end();for(u.not(".sorter-false").find("."+t.css.icon).addClass(d[2]),r.cssIconDisabled&&u.filter(".sorter-false").find("."+t.css.icon).addClass(r.cssIconDisabled),o=0;o<n;o++)if(2!==a[o][1]){if(u=r.$headers.filter(function(e){for(var o=!0,s=r.$headers.eq(e),a=parseInt(s.attr("data-column"),10),n=a+t.getClosest(s,"th, td")[0].colSpan;a<n;a++)o=!!o&&(o||t.isValueInArray(a,r.sortList)>-1);return o}),(u=u.not(".sorter-false").filter('[data-column="'+a[o][0]+'"]'+(1===n?":last":""))).length)for(s=0;s<u.length;s++)u[s].sortDisabled||g(u.eq(s),a[o][1]);p.length&&g(p.filter('[data-column="'+a[o][0]+'"]'),a[o][1])}for(n=r.$headers.length,o=0;o<n;o++)t.setColumnAriaLabel(r,r.$headers.eq(o))},getClosest:function(t,r){return e.fn.closest?t.closest(r):t.is(r)?t:t.parents(r).filter(":first")},setColumnAriaLabel:function(r,o,s){if(o.length){var a=parseInt(o.attr("data-column"),10),n=r.sortVars[a],i=o.hasClass(t.css.sortAsc)?"sortAsc":o.hasClass(t.css.sortDesc)?"sortDesc":"sortNone",l=e.trim(o.text())+": "+t.language[i];o.hasClass("sorter-false")||!1===s?l+=t.language.sortDisabled:(i=(n.count+1)%n.order.length,s=n.order[i],l+=t.language[0===s?"nextAsc":1===s?"nextDesc":"nextNone"]),o.attr("aria-label",l)}},updateHeader:function(e){var r,o,s,a,n=e.table,i=e.$headers.length;for(r=0;r<i;r++)s=e.$headers.eq(r),a=t.getColumnData(n,e.headers,r,!0),o="false"===t.getData(s,a,"sorter")||"false"===t.getData(s,a,"parser"),t.setColumnSort(e,s,o)},setColumnSort:function(e,t,r){var o=e.table.id;t[0].sortDisabled=r,t[r?"addClass":"removeClass"]("sorter-false").attr("aria-disabled",""+r),e.tabIndex&&(r?t.removeAttr("tabindex"):t.attr("tabindex","0")),o&&(r?t.removeAttr("aria-controls"):t.attr("aria-controls",o))},updateHeaderSortCount:function(r,o){var s,a,n,i,l,d,c,g,p=o||r.sortList,u=p.length;for(r.sortList=[],i=0;i<u;i++)if(c=p[i],(s=parseInt(c[0],10))<r.columns){switch(r.sortVars[s].order||(g=t.getOrder(r.sortInitialOrder)?r.sortReset?[1,0,2]:[1,0]:r.sortReset?[0,1,2]:[0,1],r.sortVars[s].order=g,r.sortVars[s].count=0),g=r.sortVars[s].order,a=(""+c[1]).match(/^(1|d|s|o|n)/),a=a?a[0]:""){case"1":case"d":a=1;break;case"s":a=l||0;break;case"o":a=0===(d=g[(l||0)%g.length])?1:1===d?0:2;break;case"n":a=g[++r.sortVars[s].count%g.length];break;default:a=0}l=0===i?a:l,n=[s,parseInt(a,10)||0],r.sortList[r.sortList.length]=n,a=e.inArray(n[1],g),r.sortVars[s].count=a>=0?a:n[1]%g.length}},updateAll:function(e,r,o){var s=e.table;s.isUpdating=!0,t.refreshWidgets(s,!0,!0),t.buildHeaders(e),t.bindEvents(s,e.$headers,!0),t.bindMethods(e),t.commonUpdate(e,r,o)},update:function(e,r,o){e.table.isUpdating=!0,t.updateHeader(e),t.commonUpdate(e,r,o)},updateHeaders:function(e,r){e.table.isUpdating=!0,t.buildHeaders(e),t.bindEvents(e.table,e.$headers,!0),t.resortComplete(e,r)},updateCell:function(r,o,s,a){if(e(o).closest("tr").hasClass(r.cssChildRow))console.warn('Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead');else{if(t.isEmptyObject(r.cache))return t.updateHeader(r),void t.commonUpdate(r,s,a);r.table.isUpdating=!0,r.$table.find(r.selectorRemove).remove();var n,i,l,d,c,g,p=r.$tbodies,u=e(o),f=p.index(t.getClosest(u,"tbody")),h=r.cache[f],m=t.getClosest(u,"tr");if(o=u[0],p.length&&f>=0){if(l=p.eq(f).find("tr").not("."+r.cssChildRow).index(m),c=h.normalized[l],(g=m[0].cells.length)!==r.columns)for(d=0,n=!1,i=0;i<g;i++)n||m[0].cells[i]===o?n=!0:d+=m[0].cells[i].colSpan;else d=u.index();n=t.getElementText(r,o,d),c[r.columns].raw[d]=n,n=t.getParsedText(r,o,d,n),c[d]=n,"numeric"===(r.parsers[d].type||"").toLowerCase()&&(h.colMax[d]=Math.max(Math.abs(n)||0,h.colMax[d]||0)),!1!==(n="undefined"!==s?s:r.resort)?t.checkResort(r,n,a):t.resortComplete(r,a)}else t.debug(r,"core")&&console.error("updateCell aborted, tbody missing or not within the indicated table"),r.table.isUpdating=!1}},addRows:function(r,o,s,a){var n,i,l,d,c,g,p,u,f,h,m,b,y,w="string"==typeof o&&1===r.$tbodies.length&&/<tr/.test(o||""),x=r.table;if(w)o=e(o),r.$tbodies.append(o);else if(!(o&&o instanceof e&&t.getClosest(o,"table")[0]===r.table))return t.debug(r,"core")&&console.error("addRows method requires (1) a jQuery selector reference to rows that have already been added to the table, or (2) row HTML string to be added to a table with only one tbody"),!1;if(x.isUpdating=!0,t.isEmptyObject(r.cache))t.updateHeader(r),t.commonUpdate(r,s,a);else{for(c=o.filter("tr").attr("role","row").length,l=r.$tbodies.index(o.parents("tbody").filter(":first")),r.parsers&&r.parsers.length||t.setupParsers(r),d=0;d<c;d++){for(f=0,p=o[d].cells.length,u=r.cache[l].normalized.length,m=[],h={child:[],raw:[],$row:o.eq(d),order:u},g=0;g<p;g++)b=o[d].cells[g],n=t.getElementText(r,b,f),h.raw[f]=n,i=t.getParsedText(r,b,f,n),m[f]=i,"numeric"===(r.parsers[f].type||"").toLowerCase()&&(r.cache[l].colMax[f]=Math.max(Math.abs(i)||0,r.cache[l].colMax[f]||0)),(y=b.colSpan-1)>0&&(f+=y),f++;m[r.columns]=h,r.cache[l].normalized[u]=m}t.checkResort(r,s,a)}},updateCache:function(e,r,o){e.parsers&&e.parsers.length||t.setupParsers(e,o),t.buildCache(e,r,o)},appendCache:function(e,r){var o,s,a,n,i,l,d,c=e.table,g=e.$tbodies,p=[],u=e.cache;if(t.isEmptyObject(u))return e.appender?e.appender(c,p):c.isUpdating?e.$table.triggerHandler("updateComplete",c):"";for(t.debug(e,"core")&&(d=new Date),l=0;l<g.length;l++)if((a=g.eq(l)).length){for(n=t.processTbody(c,a,!0),s=(o=u[l].normalized).length,i=0;i<s;i++)p[p.length]=o[i][e.columns].$row,e.appender&&(!e.pager||e.pager.removeRows||e.pager.ajax)||n.append(o[i][e.columns].$row);t.processTbody(c,n,!1)}e.appender&&e.appender(c,p),t.debug(e,"core")&&console.log("Rebuilt table"+t.benchmark(d)),r||e.appender||t.applyWidget(c),c.isUpdating&&e.$table.triggerHandler("updateComplete",c)},commonUpdate:function(e,r,o){e.$table.find(e.selectorRemove).remove(),t.setupParsers(e),t.buildCache(e),t.checkResort(e,r,o)},initSort:function(r,o,s){if(r.table.isUpdating)return setTimeout(function(){t.initSort(r,o,s)},50);var a,n,i,l,d,c,g,p=!s[r.sortMultiSortKey],u=r.table,f=r.$headers.length,h=t.getClosest(e(o),"th, td"),m=parseInt(h.attr("data-column"),10),b=r.sortVars[m].order;if(h=h[0],r.$table.triggerHandler("sortStart",u),c=(r.sortVars[m].count+1)%b.length,r.sortVars[m].count=s[r.sortResetKey]?2:c,r.sortRestart)for(i=0;i<f;i++)g=r.$headers.eq(i),m!==(c=parseInt(g.attr("data-column"),10))&&(p||g.hasClass(t.css.sortNone))&&(r.sortVars[c].count=-1);if(p){if(r.sortList=[],r.last.sortList=[],null!==r.sortForce)for(a=r.sortForce,n=0;n<a.length;n++)a[n][0]!==m&&(r.sortList[r.sortList.length]=a[n]);if((l=b[r.sortVars[m].count])<2&&(r.sortList[r.sortList.length]=[m,l],h.colSpan>1))for(n=1;n<h.colSpan;n++)r.sortList[r.sortList.length]=[m+n,l],r.sortVars[m+n].count=e.inArray(l,b)}else if(r.sortList=e.extend([],r.last.sortList),t.isValueInArray(m,r.sortList)>=0)for(n=0;n<r.sortList.length;n++)(c=r.sortList[n])[0]===m&&(c[1]=b[r.sortVars[m].count],2===c[1]&&(r.sortList.splice(n,1),r.sortVars[m].count=-1));else if((l=b[r.sortVars[m].count])<2&&(r.sortList[r.sortList.length]=[m,l],h.colSpan>1))for(n=1;n<h.colSpan;n++)r.sortList[r.sortList.length]=[m+n,l],r.sortVars[m+n].count=e.inArray(l,b);if(r.last.sortList=e.extend([],r.sortList),r.sortList.length&&r.sortAppend&&(a=e.isArray(r.sortAppend)?r.sortAppend:r.sortAppend[r.sortList[0][0]],!t.isEmptyObject(a)))for(n=0;n<a.length;n++)if(a[n][0]!==m&&t.isValueInArray(a[n][0],r.sortList)<0){if(l=a[n][1],d=(""+l).match(/^(a|d|s|o|n)/))switch(c=r.sortList[0][1],d[0]){case"d":l=1;break;case"s":l=c;break;case"o":l=0===c?1:0;break;case"n":l=(c+1)%b.length;break;default:l=0}r.sortList[r.sortList.length]=[a[n][0],l]}r.$table.triggerHandler("sortBegin",u),setTimeout(function(){t.setHeadersCss(r),t.multisort(r),t.appendCache(r),r.$table.triggerHandler("sortBeforeEnd",u),r.$table.triggerHandler("sortEnd",u)},1)},multisort:function(e){var r,o,s,a,n=e.table,i=[],l=0,d=e.textSorter||"",c=e.sortList,g=c.length,p=e.$tbodies.length;if(!e.serverSideSorting&&!t.isEmptyObject(e.cache)){if(t.debug(e,"core")&&(o=new Date),"object"==typeof d)for(s=e.columns;s--;)"function"==typeof(a=t.getColumnData(n,d,s))&&(i[s]=a);for(r=0;r<p;r++)s=e.cache[r].colMax,e.cache[r].normalized.sort(function(r,o){var a,p,u,f,h,m,b;for(a=0;a<g;a++){if(u=c[a][0],f=c[a][1],l=0===f,e.sortStable&&r[u]===o[u]&&1===g)return r[e.columns].order-o[e.columns].order;if(p=/n/i.test(t.getSortType(e.parsers,u)),p&&e.strings[u]?(p="boolean"==typeof t.string[e.strings[u]]?(l?1:-1)*(t.string[e.strings[u]]?-1:1):e.strings[u]?t.string[e.strings[u]]||0:0,h=e.numberSorter?e.numberSorter(r[u],o[u],l,s[u],n):t["sortNumeric"+(l?"Asc":"Desc")](r[u],o[u],p,s[u],u,e)):(m=l?r:o,b=l?o:r,h="function"==typeof d?d(m[u],b[u],l,u,n):"function"==typeof i[u]?i[u](m[u],b[u],l,u,n):t["sortNatural"+(l?"Asc":"Desc")](r[u],o[u],u,e)),h)return h}return r[e.columns].order-o[e.columns].order});t.debug(e,"core")&&console.log("Applying sort "+c.toString()+t.benchmark(o))}},resortComplete:function(t,r){t.table.isUpdating&&t.$table.triggerHandler("updateComplete",t.table),e.isFunction(r)&&r(t.table)},checkResort:function(r,o,s){var a=e.isArray(o)?o:r.sortList;!1===(void 0===o?r.resort:o)||r.serverSideSorting||r.table.isProcessing?(t.resortComplete(r,s),t.applyWidget(r.table,!1)):a.length?t.sortOn(r,a,function(){t.resortComplete(r,s)},!0):t.sortReset(r,function(){t.resortComplete(r,s),t.applyWidget(r.table,!1)})},sortOn:function(r,o,s,a){var n=r.table;r.$table.triggerHandler("sortStart",n),t.updateHeaderSortCount(r,o),t.setHeadersCss(r),r.delayInit&&t.isEmptyObject(r.cache)&&t.buildCache(r),r.$table.triggerHandler("sortBegin",n),t.multisort(r),t.appendCache(r,a),r.$table.triggerHandler("sortBeforeEnd",n),r.$table.triggerHandler("sortEnd",n),t.applyWidget(n),e.isFunction(s)&&s(n)},sortReset:function(r,o){r.sortList=[],t.setHeadersCss(r),t.multisort(r),t.appendCache(r);var s;for(s=0;s<r.columns;s++)r.sortVars[s].count=-1;e.isFunction(o)&&o(r.table)},getSortType:function(e,t){return e&&e[t]?e[t].type||"":""},getOrder:function(e){return/^d/i.test(e)||1===e},sortNatural:function(e,r){if(e===r)return 0;e=e.toString(),r=r.toString();var o,s,a,n,i,l,d=t.regex;if(d.hex.test(r)){if(o=parseInt((e||"").match(d.hex),16),s=parseInt((r||"").match(d.hex),16),o<s)return-1;if(o>s)return 1}for(o=(e||"").replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0"),s=(r||"").replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0"),l=Math.max(o.length,s.length),i=0;i<l;i++){if(a=isNaN(o[i])?o[i]||0:parseFloat(o[i])||0,n=isNaN(s[i])?s[i]||0:parseFloat(s[i])||0,isNaN(a)!==isNaN(n))return isNaN(a)?1:-1;if(typeof a!=typeof n&&(a+="",n+=""),a<n)return-1;if(a>n)return 1}return 0},sortNaturalAsc:function(e,r,o,s){if(e===r)return 0;var a=t.string[s.empties[o]||s.emptyTo];return""===e&&0!==a?"boolean"==typeof a?a?-1:1:-a||-1:""===r&&0!==a?"boolean"==typeof a?a?1:-1:a||1:t.sortNatural(e,r)},sortNaturalDesc:function(e,r,o,s){if(e===r)return 0;var a=t.string[s.empties[o]||s.emptyTo];return""===e&&0!==a?"boolean"==typeof a?a?-1:1:a||1:""===r&&0!==a?"boolean"==typeof a?a?1:-1:-a||-1:t.sortNatural(r,e)},sortText:function(e,t){return e>t?1:e<t?-1:0},getTextValue:function(e,t,r){if(r){var o,s=e?e.length:0,a=r+t;for(o=0;o<s;o++)a+=e.charCodeAt(o);return t*a}return 0},sortNumericAsc:function(e,r,o,s,a,n){if(e===r)return 0;var i=t.string[n.empties[a]||n.emptyTo];return""===e&&0!==i?"boolean"==typeof i?i?-1:1:-i||-1:""===r&&0!==i?"boolean"==typeof i?i?1:-1:i||1:(isNaN(e)&&(e=t.getTextValue(e,o,s)),isNaN(r)&&(r=t.getTextValue(r,o,s)),e-r)},sortNumericDesc:function(e,r,o,s,a,n){if(e===r)return 0;var i=t.string[n.empties[a]||n.emptyTo];return""===e&&0!==i?"boolean"==typeof i?i?-1:1:i||1:""===r&&0!==i?"boolean"==typeof i?i?1:-1:-i||-1:(isNaN(e)&&(e=t.getTextValue(e,o,s)),isNaN(r)&&(r=t.getTextValue(r,o,s)),r-e)},sortNumeric:function(e,t){return e-t},addWidget:function(e){e.id&&!t.isEmptyObject(t.getWidgetById(e.id))&&console.warn('"'+e.id+'" widget was loaded more than once!'),t.widgets[t.widgets.length]=e},hasWidget:function(t,r){return(t=e(t)).length&&t[0].config&&t[0].config.widgetInit[r]||!1},getWidgetById:function(e){var r,o,s=t.widgets.length;for(r=0;r<s;r++)if((o=t.widgets[r])&&o.id&&o.id.toLowerCase()===e.toLowerCase())return o},applyWidgetOptions:function(r){var o,s,a,n=r.config,i=n.widgets.length;if(i)for(o=0;o<i;o++)(s=t.getWidgetById(n.widgets[o]))&&s.options&&(a=e.extend(!0,{},s.options),n.widgetOptions=e.extend(!0,a,n.widgetOptions),e.extend(!0,t.defaults.widgetOptions,s.options))},addWidgetFromClass:function(e){var r,o,s=e.config,a="^"+s.widgetClass.replace(t.regex.templateName,"(\\S+)+")+"$",n=new RegExp(a,"g"),i=(e.className||"").split(t.regex.spaces);if(i.length)for(r=i.length,o=0;o<r;o++)i[o].match(n)&&(s.widgets[s.widgets.length]=i[o].replace(n,"$1"))},applyWidgetId:function(r,o,s){var a,n,i,l=(r=e(r)[0]).config,d=l.widgetOptions,c=t.debug(l,"core"),g=t.getWidgetById(o);g&&(i=g.id,a=!1,e.inArray(i,l.widgets)<0&&(l.widgets[l.widgets.length]=i),c&&(n=new Date),!s&&l.widgetInit[i]||(l.widgetInit[i]=!0,r.hasInitialized&&t.applyWidgetOptions(r),"function"==typeof g.init&&(a=!0,c&&console[console.group?"group":"log"]("Initializing "+i+" widget"),g.init(r,g,l,d))),s||"function"!=typeof g.format||(a=!0,c&&console[console.group?"group":"log"]("Updating "+i+" widget"),g.format(r,l,d,!1)),c&&a&&(console.log("Completed "+(s?"initializing ":"applying ")+i+" widget"+t.benchmark(n)),console.groupEnd&&console.groupEnd()))},applyWidget:function(r,o,s){var a,n,i,l,d,c=(r=e(r)[0]).config,g=t.debug(c,"core"),p=[];if(!1===o||!r.hasInitialized||!r.isApplyingWidgets&&!r.isUpdating){if(g&&(d=new Date),t.addWidgetFromClass(r),clearTimeout(c.timerReady),c.widgets.length){for(r.isApplyingWidgets=!0,c.widgets=e.grep(c.widgets,function(t,r){return e.inArray(t,c.widgets)===r}),n=(i=c.widgets||[]).length,a=0;a<n;a++)(l=t.getWidgetById(i[a]))&&l.id?(l.priority||(l.priority=10),p[a]=l):g&&console.warn('"'+i[a]+'" was enabled, but the widget code has not been loaded!');for(p.sort(function(e,t){return e.priority<t.priority?-1:e.priority===t.priority?0:1}),n=p.length,g&&console[console.group?"group":"log"]("Start "+(o?"initializing":"applying")+" widgets"),a=0;a<n;a++)(l=p[a])&&l.id&&t.applyWidgetId(r,l.id,o);g&&console.groupEnd&&console.groupEnd()}c.timerReady=setTimeout(function(){r.isApplyingWidgets=!1,e.data(r,"lastWidgetApplication",new Date),c.$table.triggerHandler("tablesorter-ready"),o||"function"!=typeof s||s(r),g&&(l=c.widgets.length,console.log("Completed "+(!0===o?"initializing ":"applying ")+l+" widget"+(1!==l?"s":"")+t.benchmark(d)))},10)}},removeWidget:function(r,o,s){var a,n,i,l,d=(r=e(r)[0]).config;if(!0===o)for(o=[],l=t.widgets.length,i=0;i<l;i++)(n=t.widgets[i])&&n.id&&(o[o.length]=n.id);else o=(e.isArray(o)?o.join(","):o||"").toLowerCase().split(/[\s,]+/);for(l=o.length,a=0;a<l;a++)n=t.getWidgetById(o[a]),(i=e.inArray(o[a],d.widgets))>=0&&!0!==s&&d.widgets.splice(i,1),n&&n.remove&&(t.debug(d,"core")&&console.log((s?"Refreshing":"Removing")+' "'+o[a]+'" widget'),n.remove(r,d,d.widgetOptions,s),d.widgetInit[o[a]]=!1);d.$table.triggerHandler("widgetRemoveEnd",r)},refreshWidgets:function(r,o,s){var a,n,i=(r=e(r)[0]).config.widgets,l=t.widgets,d=l.length,c=[],g=function(t){e(t).triggerHandler("refreshComplete")};for(a=0;a<d;a++)(n=l[a])&&n.id&&(o||e.inArray(n.id,i)<0)&&(c[c.length]=n.id);t.removeWidget(r,c.join(","),!0),!0!==s?(t.applyWidget(r,o||!1,g),o&&t.applyWidget(r,!1,g)):g(r)},benchmark:function(e){return" ("+((new Date).getTime()-e.getTime())+" ms)"},log:function(){console.log(arguments)},debug:function(e,t){return e&&(!0===e.debug||"string"==typeof e.debug&&e.debug.indexOf(t)>-1)},isEmptyObject:function(e){for(var t in e)return!1;return!0},isValueInArray:function(e,t){var r,o=t&&t.length||0;for(r=0;r<o;r++)if(t[r][0]===e)return r;return-1},formatFloat:function(r,o){if("string"!=typeof r||""===r)return r;var s;return r=(o&&o.config?!1!==o.config.usNumberFormat:void 0===o||o)?r.replace(t.regex.comma,""):r.replace(t.regex.digitNonUS,"").replace(t.regex.comma,"."),t.regex.digitNegativeTest.test(r)&&(r=r.replace(t.regex.digitNegativeReplace,"-$1")),s=parseFloat(r),isNaN(s)?e.trim(r):s},isDigit:function(e){return isNaN(e)?t.regex.digitTest.test(e.toString().replace(t.regex.digitReplace,"")):""!==e},computeColumnIndex:function(r,o){var s,a,n,i,l,d,c,g,p,u,f=o&&o.columns||0,h=[],m=new Array(f);for(s=0;s<r.length;s++)for(d=r[s].cells,a=0;a<d.length;a++){for(c=s,g=(l=d[a]).rowSpan||1,p=l.colSpan||1,void 0===h[c]&&(h[c]=[]),n=0;n<h[c].length+1;n++)if(void 0===h[c][n]){u=n;break}for(f&&l.cellIndex===u||(l.setAttribute?l.setAttribute("data-column",u):e(l).attr("data-column",u)),n=c;n<c+g;n++)for(void 0===h[n]&&(h[n]=[]),m=h[n],i=u;i<u+p;i++)m[i]="x"}return t.checkColumnCount(r,h,m.length),m.length},checkColumnCount:function(e,t,r){var o,s,a=!0,n=[];for(o=0;o<t.length;o++)if(t[o]&&(s=t[o].length,t[o].length!==r)){a=!1;break}a||(e.each(function(e,t){var r=t.parentElement.nodeName;n.indexOf(r)<0&&n.push(r)}),console.error("Invalid or incorrect number of columns in the "+n.join(" or ")+"; expected "+r+", but found "+s+" columns"))},fixColumnWidth:function(r){var o,s,a,n,i,l=(r=e(r)[0]).config,d=l.$table.children("colgroup");if(d.length&&d.hasClass(t.css.colgroup)&&d.remove(),l.widthFixed&&0===l.$table.children("colgroup").length){for(d=e('<colgroup class="'+t.css.colgroup+'">'),o=l.$table.width(),n=(a=l.$tbodies.find("tr:first").children(":visible")).length,i=0;i<n;i++)s=parseInt(a.eq(i).width()/o*1e3,10)/10+"%",d.append(e("<col>").css("width",s));l.$table.prepend(d)}},getData:function(t,r,o){var s,a,n="",i=e(t);return i.length?(s=!!e.metadata&&i.metadata(),a=" "+(i.attr("class")||""),void 0!==i.data(o)||void 0!==i.data(o.toLowerCase())?n+=i.data(o)||i.data(o.toLowerCase()):s&&void 0!==s[o]?n+=s[o]:r&&void 0!==r[o]?n+=r[o]:" "!==a&&a.match(" "+o+"-")&&(n=a.match(new RegExp("\\s"+o+"-([\\w-]+)"))[1]||""),e.trim(n)):""},getColumnData:function(t,r,o,s,a){if("object"!=typeof r||null===r)return r;var n,i=(t=e(t)[0]).config,l=a||i.$headers,d=i.$headerIndexed&&i.$headerIndexed[o]||l.find('[data-column="'+o+'"]:last');if(void 0!==r[o])return s?r[o]:r[l.index(d)];for(n in r)if("string"==typeof n&&d.filter(n).add(d.find(n)).length)return r[n]},isProcessing:function(r,o,s){var a=(r=e(r))[0].config,n=s||r.find("."+t.css.header);o?(void 0!==s&&a.sortList.length>0&&(n=n.filter(function(){return!this.sortDisabled&&t.isValueInArray(parseFloat(e(this).attr("data-column")),a.sortList)>=0})),r.add(n).addClass(t.css.processing+" "+a.cssProcessing)):r.add(n).removeClass(t.css.processing+" "+a.cssProcessing)},processTbody:function(t,r,o){if(t=e(t)[0],o)return t.isProcessing=!0,r.before('<colgroup class="tablesorter-savemyplace"/>'),e.fn.detach?r.detach():r.remove();var s=e(t).find("colgroup.tablesorter-savemyplace");r.insertAfter(s),s.remove(),t.isProcessing=!1},clearTableBody:function(t){e(t)[0].config.$tbodies.children().detach()},characterEquivalents:{a:"áàâãäąå",A:"ÁÀÂÃÄĄÅ",c:"çćč",C:"ÇĆČ",e:"éèêëěę",E:"ÉÈÊËĚĘ",i:"íìİîïı",I:"ÍÌİÎÏ",o:"óòôõöō",O:"ÓÒÔÕÖŌ",ss:"ß",SS:"ẞ",u:"úùûüů",U:"ÚÙÛÜŮ"},replaceAccents:function(e){var r,o="[",s=t.characterEquivalents;if(!t.characterRegex){t.characterRegexArray={};for(r in s)"string"==typeof r&&(o+=s[r],t.characterRegexArray[r]=new RegExp("["+s[r]+"]","g"));t.characterRegex=new RegExp(o+"]")}if(t.characterRegex.test(e))for(r in s)"string"==typeof r&&(e=e.replace(t.characterRegexArray[r],r));return e},validateOptions:function(r){var o,s,a,n,i="headers sortForce sortList sortAppend widgets".split(" "),l=r.originalSettings;if(l){t.debug(r,"core")&&(n=new Date);for(o in l)if("undefined"===(a=typeof t.defaults[o]))console.warn('Tablesorter Warning! "table.config.'+o+'" option not recognized');else if("object"===a)for(s in l[o])a=t.defaults[o]&&typeof t.defaults[o][s],e.inArray(o,i)<0&&"undefined"===a&&console.warn('Tablesorter Warning! "table.config.'+o+"."+s+'" option not recognized');t.debug(r,"core")&&console.log("validate options time:"+t.benchmark(n))}},restoreHeaders:function(r){var o,s,a=e(r)[0].config,n=a.$table.find(a.selectorHeaders),i=n.length;for(o=0;o<i;o++)(s=n.eq(o)).find("."+t.css.headerIn).length&&s.html(a.headerContent[o])},destroy:function(r,o,s){if((r=e(r)[0]).hasInitialized){t.removeWidget(r,!0,!1);var a,n=e(r),i=r.config,l=n.find("thead:first"),d=l.find("tr."+t.css.headerRow).removeClass(t.css.headerRow+" "+i.cssHeaderRow),c=n.find("tfoot:first > tr").children("th, td");!1===o&&e.inArray("uitheme",i.widgets)>=0&&(n.triggerHandler("applyWidgetId",["uitheme"]),n.triggerHandler("applyWidgetId",["zebra"])),l.find("tr").not(d).remove(),a="sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave "+"keypress sortBegin sortEnd resetToLoadState ".split(" ").join(i.namespace+" "),n.removeData("tablesorter").unbind(a.replace(t.regex.spaces," ")),i.$headers.add(c).removeClass([t.css.header,i.cssHeader,i.cssAsc,i.cssDesc,t.css.sortAsc,t.css.sortDesc,t.css.sortNone].join(" ")).removeAttr("data-column").removeAttr("aria-label").attr("aria-disabled","true"),d.find(i.selectorSort).unbind("mousedown mouseup keypress ".split(" ").join(i.namespace+" ").replace(t.regex.spaces," ")),t.restoreHeaders(r),n.toggleClass(t.css.table+" "+i.tableClass+" tablesorter-"+i.theme,!1===o),n.removeClass(i.namespace.slice(1)),r.hasInitialized=!1,delete r.config.cache,"function"==typeof s&&s(r),t.debug(i,"core")&&console.log("tablesorter has been removed")}}};e.fn.tablesorter=function(r){return this.each(function(){var o=this,s=e.extend(!0,{},t.defaults,r,t.instanceMethods);s.originalSettings=r,!o.hasInitialized&&t.buildTable&&"TABLE"!==this.nodeName?t.buildTable(o,s):t.setup(o,s)})},window.console&&window.console.log||(t.logs=[],console={},console.log=console.warn=console.error=console.table=function(){var e=arguments.length>1?arguments:arguments[0];t.logs[t.logs.length]={date:Date.now(),log:e}}),t.addParser({id:"no-parser",is:function(){return!1},format:function(){return""},type:"text"}),t.addParser({id:"text",is:function(){return!0},format:function(r,o){var s=o.config;return r&&(r=e.trim(s.ignoreCase?r.toLocaleLowerCase():r),r=s.sortLocaleCompare?t.replaceAccents(r):r),r},type:"text"}),t.regex.nondigit=/[^\w,. \-()]/g,t.addParser({id:"digit",is:function(e){return t.isDigit(e)},format:function(r,o){var s=t.formatFloat((r||"").replace(t.regex.nondigit,""),o);return r&&"number"==typeof s?s:r?e.trim(r&&o.config.ignoreCase?r.toLocaleLowerCase():r):r},type:"numeric"}),t.regex.currencyReplace=/[+\-,. ]/g,t.regex.currencyTest=/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/,t.addParser({id:"currency",is:function(e){return e=(e||"").replace(t.regex.currencyReplace,""),t.regex.currencyTest.test(e)},format:function(r,o){var s=t.formatFloat((r||"").replace(t.regex.nondigit,""),o);return r&&"number"==typeof s?s:r?e.trim(r&&o.config.ignoreCase?r.toLocaleLowerCase():r):r},type:"numeric"}),t.regex.urlProtocolTest=/^(https?|ftp|file):\/\//,t.regex.urlProtocolReplace=/(https?|ftp|file):\/\/(www\.)?/,t.addParser({id:"url",is:function(e){return t.regex.urlProtocolTest.test(e)},format:function(r){return r?e.trim(r.replace(t.regex.urlProtocolReplace,"")):r},type:"text"}),t.regex.dash=/-/g,t.regex.isoDate=/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/,t.addParser({id:"isoDate",is:function(e){return t.regex.isoDate.test(e)},format:function(e){var r=e?new Date(e.replace(t.regex.dash,"/")):e;return r instanceof Date&&isFinite(r)?r.getTime():e},type:"numeric"}),t.regex.percent=/%/g,t.regex.percentTest=/(\d\s*?%|%\s*?\d)/,t.addParser({id:"percent",is:function(e){return t.regex.percentTest.test(e)&&e.length<15},format:function(e,r){return e?t.formatFloat(e.replace(t.regex.percent,""),r):e},type:"numeric"}),t.addParser({id:"image",is:function(e,t,r,o){return o.find("img").length>0},format:function(t,r,o){return e(o).find("img").attr(r.config.imgAttr||"alt")||t},parsed:!0,type:"text"}),t.regex.dateReplace=/(\S)([AP]M)$/i,t.regex.usLongDateTest1=/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i,t.regex.usLongDateTest2=/^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i,t.addParser({id:"usLongDate",is:function(e){return t.regex.usLongDateTest1.test(e)||t.regex.usLongDateTest2.test(e)},format:function(e){var r=e?new Date(e.replace(t.regex.dateReplace,"$1 $2")):e;return r instanceof Date&&isFinite(r)?r.getTime():e},type:"numeric"}),t.regex.shortDateTest=/(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/,t.regex.shortDateReplace=/[\-.,]/g,t.regex.shortDateXXY=/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,t.regex.shortDateYMD=/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,t.convertFormat=function(e,r){e=(e||"").replace(t.regex.spaces," ").replace(t.regex.shortDateReplace,"/"),"mmddyyyy"===r?e=e.replace(t.regex.shortDateXXY,"$3/$1/$2"):"ddmmyyyy"===r?e=e.replace(t.regex.shortDateXXY,"$3/$2/$1"):"yyyymmdd"===r&&(e=e.replace(t.regex.shortDateYMD,"$1/$2/$3"));var o=new Date(e);return o instanceof Date&&isFinite(o)?o.getTime():""},t.addParser({id:"shortDate",is:function(e){return e=(e||"").replace(t.regex.spaces," ").replace(t.regex.shortDateReplace,"/"),t.regex.shortDateTest.test(e)},format:function(e,r,o,s){if(e){var a=r.config,n=a.$headerIndexed[s],i=n.length&&n.data("dateFormat")||t.getData(n,t.getColumnData(r,a.headers,s),"dateFormat")||a.dateFormat;return n.length&&n.data("dateFormat",i),t.convertFormat(e,i)||e}return e},type:"numeric"}),t.regex.timeTest=/^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i,t.regex.timeMatch=/(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i,t.addParser({id:"time",is:function(e){return t.regex.timeTest.test(e)},format:function(e){var r,o=(e||"").match(t.regex.timeMatch),s=new Date(e),a=e&&(null!==o?o[0]:"00:00 AM"),n=a?new Date("2000/01/01 "+a.replace(t.regex.dateReplace,"$1 $2")):a;return n instanceof Date&&isFinite(n)?(r=s instanceof Date&&isFinite(s)?s.getTime():0,r?parseFloat(n.getTime()+"."+s.getTime()):n.getTime()):e},type:"numeric"}),t.addParser({id:"metadata",is:function(){return!1},format:function(t,r,o){var s=r.config,a=s.parserMetadataName?s.parserMetadataName:"sortValue";return e(o).metadata()[a]},type:"numeric"}),t.addWidget({id:"zebra",priority:90,format:function(t,r,o){var s,a,n,i,l,d,c,g=new RegExp(r.cssChildRow,"i"),p=r.$tbodies.add(e(r.namespace+"_extra_table").children("tbody:not(."+r.cssInfoBlock+")"));for(l=0;l<p.length;l++)for(n=0,c=(s=p.eq(l).children("tr:visible").not(r.selectorRemove)).length,d=0;d<c;d++)a=s.eq(d),g.test(a[0].className)||n++,i=n%2==0,a.removeClass(o.zebra[i?1:0]).addClass(o.zebra[i?0:1])},remove:function(e,r,o,s){if(!s){var a,n,i=r.$tbodies,l=(o.zebra||["even","odd"]).join(" ");for(a=0;a<i.length;a++)(n=t.processTbody(e,i.eq(a),!0)).children().removeClass(l),t.processTbody(e,n,!1)}}})}(e),e.tablesorter}); +</script> +<script type="text/javascript"> +/* + Copyright 2008-2013 + Matthias Ehmann, + Michael Gerhaeuser, + Carsten Miller, + Bianca Valentin, + Alfred Wassermann, + Peter Wilfahrt + Dual licensed under the Apache License Version 2.0, or LGPL Version 3 licenses. + You should have received a copy of the GNU Lesser General Public License + along with JSXCompressor. If not, see <http://www.gnu.org/licenses/>. + You should have received a copy of the Apache License along with JSXCompressor. + If not, see <http://www.apache.org/licenses/>. +*/ +(function(){var e,r,n;(function(t){function o(e,r){return C.call(e,r)}function i(e,r){var n,t,o,i,a,u,c,f,s,l,p=r&&r.split("/"),h=k.map,d=h&&h["*"]||{};if(e&&"."===e.charAt(0))if(r){for(p=p.slice(0,p.length-1),e=p.concat(e.split("/")),f=0;e.length>f;f+=1)if(l=e[f],"."===l)e.splice(f,1),f-=1;else if(".."===l){if(1===f&&(".."===e[2]||".."===e[0]))break;f>0&&(e.splice(f-1,2),f-=2)}e=e.join("/")}else 0===e.indexOf("./")&&(e=e.substring(2));if((p||d)&&h){for(n=e.split("/"),f=n.length;f>0;f-=1){if(t=n.slice(0,f).join("/"),p)for(s=p.length;s>0;s-=1)if(o=h[p.slice(0,s).join("/")],o&&(o=o[t])){i=o,a=f;break}if(i)break;!u&&d&&d[t]&&(u=d[t],c=f)}!i&&u&&(i=u,a=c),i&&(n.splice(0,a,i),e=n.join("/"))}return e}function a(e,r){return function(){return h.apply(t,v.call(arguments,0).concat([e,r]))}}function u(e){return function(r){return i(r,e)}}function c(e){return function(r){b[e]=r}}function f(e){if(o(m,e)){var r=m[e];delete m[e],y[e]=!0,p.apply(t,r)}if(!o(b,e)&&!o(y,e))throw Error("No "+e);return b[e]}function s(e){var r,n=e?e.indexOf("!"):-1;return n>-1&&(r=e.substring(0,n),e=e.substring(n+1,e.length)),[r,e]}function l(e){return function(){return k&&k.config&&k.config[e]||{}}}var p,h,d,g,b={},m={},k={},y={},C=Object.prototype.hasOwnProperty,v=[].slice;d=function(e,r){var n,t=s(e),o=t[0];return e=t[1],o&&(o=i(o,r),n=f(o)),o?e=n&&n.normalize?n.normalize(e,u(r)):i(e,r):(e=i(e,r),t=s(e),o=t[0],e=t[1],o&&(n=f(o))),{f:o?o+"!"+e:e,n:e,pr:o,p:n}},g={require:function(e){return a(e)},exports:function(e){var r=b[e];return r!==void 0?r:b[e]={}},module:function(e){return{id:e,uri:"",exports:b[e],config:l(e)}}},p=function(e,r,n,i){var u,s,l,p,h,k,C=[];if(i=i||e,"function"==typeof n){for(r=!r.length&&n.length?["require","exports","module"]:r,h=0;r.length>h;h+=1)if(p=d(r[h],i),s=p.f,"require"===s)C[h]=g.require(e);else if("exports"===s)C[h]=g.exports(e),k=!0;else if("module"===s)u=C[h]=g.module(e);else if(o(b,s)||o(m,s)||o(y,s))C[h]=f(s);else{if(!p.p)throw Error(e+" missing "+s);p.p.load(p.n,a(i,!0),c(s),{}),C[h]=b[s]}l=n.apply(b[e],C),e&&(u&&u.exports!==t&&u.exports!==b[e]?b[e]=u.exports:l===t&&k||(b[e]=l))}else e&&(b[e]=n)},e=r=h=function(e,r,n,o,i){return"string"==typeof e?g[e]?g[e](r):f(d(e,r).f):(e.splice||(k=e,r.splice?(e=r,r=n,n=null):e=t),r=r||function(){},"function"==typeof n&&(n=o,o=i),o?p(t,e,r,n):setTimeout(function(){p(t,e,r,n)},4),h)},h.config=function(e){return k=e,k.deps&&h(k.deps,k.callback),h},n=function(e,r,n){r.splice||(n=r,r=[]),o(b,e)||o(m,e)||(m[e]=[e,r,n])},n.amd={jQuery:!0}})(),n("../node_modules/almond/almond",function(){}),n("jxg",[],function(){var e={};return"object"!=typeof JXG||JXG.extend||(e=JXG),e.extend=function(e,r,n,t){var o,i;n=n||!1,t=t||!1;for(o in r)(!n||n&&r.hasOwnProperty(o))&&(i=t?o.toLowerCase():o,e[i]=r[o])},e.extend(e,{boards:{},readers:{},elements:{},registerElement:function(e,r){e=e.toLowerCase(),this.elements[e]=r},registerReader:function(e,r){var n,t;for(n=0;r.length>n;n++)t=r[n].toLowerCase(),"function"!=typeof this.readers[t]&&(this.readers[t]=e)},shortcut:function(e,r){return function(){return e[r].apply(this,arguments)}},getRef:function(e,r){return e.select(r)},getReference:function(e,r){return e.select(r)},debugInt:function(){var e,r;for(e=0;arguments.length>e;e++)r=arguments[e],"object"==typeof window&&window.console&&console.log?console.log(r):"object"==typeof document&&document.getElementById("debug")&&(document.getElementById("debug").innerHTML+=r+"<br/>")},debugWST:function(){var r=Error();e.debugInt.apply(this,arguments),r&&r.stack&&(e.debugInt("stacktrace"),e.debugInt(r.stack.split("\n").slice(1).join("\n")))},debugLine:function(){var r=Error();e.debugInt.apply(this,arguments),r&&r.stack&&e.debugInt("Called from",r.stack.split("\n").slice(2,3).join("\n"))},debug:function(){e.debugInt.apply(this,arguments)}}),e}),n("utils/zip",["jxg"],function(e){var r=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255],n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,99,99],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],i=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=256;return e.Util=e.Util||{},e.Util.Unzip=function(c){function f(){return R+=8,O>X?c[X++]:-1}function s(){B=1}function l(){var e;try{return R++,e=1&B,B>>=1,0===B&&(B=f(),e=1&B,B=128|B>>1),e}catch(r){throw r}}function p(e){var n=0,t=e;try{for(;t--;)n=n<<1|l();e&&(n=r[n]>>8-e)}catch(o){throw o}return n}function h(){J=0}function d(e){j++,G[J++]=e,z.push(String.fromCharCode(e)),32768===J&&(J=0)}function g(){this.b0=0,this.b1=0,this.jump=null,this.jumppos=-1}function b(){for(;;){if(M[H]>=x)return-1;if(U[M[H]]===H)return M[H]++;M[H]++}}function m(){var e,r=P[F];if(17===H)return-1;if(F++,H++,e=b(),e>=0)r.b0=e;else if(r.b0=32768,m())return-1;if(e=b(),e>=0)r.b1=e,r.jump=null;else if(r.b1=32768,r.jump=P[F],r.jumppos=F,m())return-1;return H--,0}function k(e,r,n){var t;for(P=e,F=0,U=n,x=r,t=0;17>t;t++)M[t]=0;return H=0,m()?-1:0}function y(e){for(var r,n,t,o=0,i=e[o];;)if(t=l()){if(!(32768&i.b1))return i.b1;for(i=i.jump,r=e.length,n=0;r>n;n++)if(e[n]===i){o=n;break}}else{if(!(32768&i.b0))return i.b0;o++,i=e[o]}}function C(){var u,c,b,m,C,v,A,j,w,U,x,S,z,I,E,L,O;do if(u=l(),b=p(2),0===b)for(s(),U=f(),U|=f()<<8,S=f(),S|=f()<<8,65535&(U^~S)&&e.debug("BlockLen checksum mismatch\n");U--;)c=f(),d(c);else if(1===b)for(;;)if(C=r[p(7)]>>1,C>23?(C=C<<1|l(),C>199?(C-=128,C=C<<1|l()):(C-=48,C>143&&(C+=136))):C+=256,256>C)d(C);else{if(256===C)break;for(C-=257,w=p(t[C])+n[C],C=r[p(5)]>>3,i[C]>8?(x=p(8),x|=p(i[C]-8)<<8):x=p(i[C]),x+=o[C],C=0;w>C;C++)c=G[32767&J-x],d(c)}else if(2===b){for(A=Array(320),I=257+p(5),E=1+p(5),L=4+p(4),C=0;19>C;C++)A[C]=0;for(C=0;L>C;C++)A[a[C]]=p(3);for(w=q.length,m=0;w>m;m++)q[m]=new g;if(k(q,19,A,0))return h(),1;for(z=I+E,m=0,O=-1;z>m;)if(O++,C=y(q),16>C)A[m++]=C;else if(16===C){if(C=3+p(2),m+C>z)return h(),1;for(v=m?A[m-1]:0;C--;)A[m++]=v}else{if(C=17===C?3+p(3):11+p(7),m+C>z)return h(),1;for(;C--;)A[m++]=0}for(w=T.length,m=0;w>m;m++)T[m]=new g;if(k(T,I,A,0))return h(),1;for(w=T.length,m=0;w>m;m++)q[m]=new g;for(j=[],m=I;A.length>m;m++)j[m-I]=A[m];if(k(q,E,j,0))return h(),1;for(;;)if(C=y(T),C>=256){if(C-=256,0===C)break;for(C-=1,w=p(t[C])+n[C],C=y(q),i[C]>8?(x=p(8),x|=p(i[C]-8)<<8):x=p(i[C]),x+=o[C];w--;)c=G[32767&J-x],d(c)}else d(C)}while(!u);return h(),s(),0}function v(){var e,r,n,t,o,i,a,c,s=[];try{if(z=[],L=!1,s[0]=f(),s[1]=f(),120===s[0]&&218===s[1]&&(C(),E[I]=[z.join(""),"geonext.gxt"],I++),31===s[0]&&139===s[1]&&(S(),E[I]=[z.join(""),"file"],I++),80===s[0]&&75===s[1]&&(L=!0,s[2]=f(),s[3]=f(),3===s[2]&&4===s[3])){for(s[0]=f(),s[1]=f(),A=f(),A|=f()<<8,c=f(),c|=f()<<8,f(),f(),f(),f(),a=f(),a|=f()<<8,a|=f()<<16,a|=f()<<24,i=f(),i|=f()<<8,i|=f()<<16,i|=f()<<24,o=f(),o|=f()<<8,o|=f()<<16,o|=f()<<24,t=f(),t|=f()<<8,n=f(),n|=f()<<8,e=0,N=[];t--;)r=f(),"/"===r|":"===r?e=0:u-1>e&&(N[e++]=String.fromCharCode(r));for(w||(w=N),e=0;n>e;)r=f(),e++;j=0,8===c&&(C(),E[I]=Array(2),E[I][0]=z.join(""),E[I][1]=N.join(""),I++),S()}}catch(l){throw l}}var A,j,w,U,x,S,z=[],I=0,E=[],G=Array(32768),J=0,L=!1,O=c.length,X=0,B=1,R=0,T=Array(288),q=Array(32),F=0,P=null,H=(Array(64),Array(64),0),M=Array(17),N=[];M[0]=0,S=function(){var e,r,n,t,o,i,a=[];if(8&A&&(a[0]=f(),a[1]=f(),a[2]=f(),a[3]=f(),80===a[0]&&75===a[1]&&7===a[2]&&8===a[3]?(e=f(),e|=f()<<8,e|=f()<<16,e|=f()<<24):e=a[0]|a[1]<<8|a[2]<<16|a[3]<<24,r=f(),r|=f()<<8,r|=f()<<16,r|=f()<<24,n=f(),n|=f()<<8,n|=f()<<16,n|=f()<<24),L&&v(),a[0]=f(),8===a[0]){if(A=f(),f(),f(),f(),f(),f(),t=f(),4&A)for(a[0]=f(),a[2]=f(),H=a[0]+256*a[1],o=0;H>o;o++)f();if(8&A)for(o=0,N=[],i=f();i;)("7"===i||":"===i)&&(o=0),u-1>o&&(N[o++]=i),i=f();if(16&A)for(i=f();i;)i=f();2&A&&(f(),f()),C(),e=f(),e|=f()<<8,e|=f()<<16,e|=f()<<24,n=f(),n|=f()<<8,n|=f()<<16,n|=f()<<24,L&&v()}},e.Util.Unzip.prototype.unzipFile=function(e){var r;for(this.unzip(),r=0;E.length>r;r++)if(E[r][1]===e)return E[r][0];return""},e.Util.Unzip.prototype.unzip=function(){return v(),E}},e.Util}),n("utils/encoding",["jxg"],function(e){var r=0,n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,0,12,24,36,60,96,84,12,12,12,48,72,12,12,12,12,12,12,12,12,12,12,12,12,12,0,12,12,12,12,12,0,12,0,12,12,12,24,12,12,12,12,12,24,12,24,12,12,12,12,12,12,12,12,12,24,12,12,12,12,12,24,12,12,12,12,12,12,12,24,12,12,12,12,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,12,12,12,12,12];return e.Util=e.Util||{},e.Util.UTF8={encode:function(e){var r,n,t="",o=e.length;if(e=e.replace(/\r\n/g,"\n"),"function"==typeof unescape&&"function"==typeof encodeURIComponent)return unescape(encodeURIComponent(e));for(r=0;o>r;r++)n=e.charCodeAt(r),128>n?t+=String.fromCharCode(n):n>127&&2048>n?(t+=String.fromCharCode(192|n>>6),t+=String.fromCharCode(128|63&n)):(t+=String.fromCharCode(224|n>>12),t+=String.fromCharCode(128|63&n>>6),t+=String.fromCharCode(128|63&n));return t},decode:function(e){var t,o,i,a=0,u=0,c=r,f=[],s=e.length,l=[];for(t=0;s>t;t++)o=e.charCodeAt(t),i=n[o],u=c!==r?63&o|u<<6:255>>i&o,c=n[256+c+i],c===r&&(u>65535?f.push(55232+(u>>10),56320+(1023&u)):f.push(u),a++,0===a%1e4&&(l.push(String.fromCharCode.apply(null,f)),f=[]));return l.push(String.fromCharCode.apply(null,f)),l.join("")},asciiCharCodeAt:function(e,r){var n=e.charCodeAt(r);if(n>255)switch(n){case 8364:n=128;break;case 8218:n=130;break;case 402:n=131;break;case 8222:n=132;break;case 8230:n=133;break;case 8224:n=134;break;case 8225:n=135;break;case 710:n=136;break;case 8240:n=137;break;case 352:n=138;break;case 8249:n=139;break;case 338:n=140;break;case 381:n=142;break;case 8216:n=145;break;case 8217:n=146;break;case 8220:n=147;break;case 8221:n=148;break;case 8226:n=149;break;case 8211:n=150;break;case 8212:n=151;break;case 732:n=152;break;case 8482:n=153;break;case 353:n=154;break;case 8250:n=155;break;case 339:n=156;break;case 382:n=158;break;case 376:n=159;break;default:}return n}},e.Util.UTF8}),n("utils/base64",["jxg","utils/encoding"],function(e,r){function n(e,r){return 255&e.charCodeAt(r)}function t(e,r){var n=o.indexOf(e.charAt(r));if(-1===n)throw Error("JSXGraph/utils/base64: Can't decode string (invalid character).");return n}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i="=";return e.Util=e.Util||{},e.Util.Base64={encode:function(e){var t,a,u,c,f,s=[];for(f=r.encode(e),u=f.length,c=u%3,t=0;u-c>t;t+=3)a=n(f,t)<<16|n(f,t+1)<<8|n(f,t+2),s.push(o.charAt(a>>18),o.charAt(63&a>>12),o.charAt(63&a>>6),o.charAt(63&a));switch(c){case 1:a=n(f,u-1),s.push(o.charAt(a>>2),o.charAt(63&a<<4),i,i);break;case 2:a=n(f,u-2)<<8|n(f,u-1),s.push(o.charAt(a>>10),o.charAt(63&a>>4),o.charAt(63&a<<2),i)}return s.join("")},decode:function(e,n){var o,a,u,c,f,s,l=[],p=[];if(o=e.replace(/[^A-Za-z0-9\+\/=]/g,""),u=o.length,0!==u%4)throw Error("JSXGraph/utils/base64: Can't decode string (invalid input length).");for(o.charAt(u-1)===i&&(c=1,o.charAt(u-2)===i&&(c=2),u-=4),a=0;u>a;a+=4)f=t(o,a)<<18|t(o,a+1)<<12|t(o,a+2)<<6|t(o,a+3),p.push(f>>16,255&f>>8,255&f),0===a%1e4&&(l.push(String.fromCharCode.apply(null,p)),p=[]);switch(c){case 1:f=t(o,u)<<12|t(o,u+1)<<6|t(o,u+2),p.push(f>>10,255&f>>2);break;case 2:f=t(o,a)<<6|t(o,a+1),p.push(f>>4)}return l.push(String.fromCharCode.apply(null,p)),s=l.join(""),n&&(s=r.decode(s)),s},decodeAsArray:function(e){var r,n=this.decode(e),t=[],o=n.length;for(r=0;o>r;r++)t[r]=n.charCodeAt(r);return t}},e.Util.Base64}),n("../build/compressor.deps.js",["jxg","utils/zip","utils/base64"],function(e,r,n){return e.decompress=function(e){return unescape(new r.Unzip(n.decodeAsArray(e)).unzip()[0][0])},e}),window.JXG=r("../build/compressor.deps.js")})(); +</script> +<script type="text/javascript"> +window.fileLoading = (function () { + var fileLoadingCallbacks = {}; + var timestamp = new Date().getTime(); + function loadKeywordsFile(filename, callback) { + fileLoadingCallbacks[filename] = callback; + var script = document.createElement('script'); + script.type = 'text/javascript'; + // timestamp as an argument to prevent browsers from caching scripts + // see: http://stackoverflow.com/questions/866619/how-to-force-ie-to-reload-javascript + script.src = filename+'?time='+timestamp; + document.getElementsByTagName("head")[0].appendChild(script); + } + function getCallbackHandlerForKeywords(parent) { + var callableList = []; + return function (callable) { + if (!parent.isChildrenLoaded) { + callableList.push(callable); + if (callableList.length == 1) { + loadKeywordsFile(parent.childFileName, function () { + parent.isChildrenLoaded = true; + for (var i = 0; i < callableList.length; i++) { + callableList[i](); + } + }); + } + } else { + callable(); + } + } + } + function notifyFileLoaded(filename) { + fileLoadingCallbacks[filename](); + } + return { + getCallbackHandlerForKeywords: getCallbackHandlerForKeywords, + notify: notifyFileLoaded + } +}()); +</script> +<script type="text/javascript"> +window.model = (function () { + function Suite(data) { + var suite = createModelObject(data); + suite.source = data.source; + suite.relativeSource = data.relativeSource; + suite.fullName = data.parent ? data.parent.fullName + '.' + data.name : data.name; + setStats(suite, data.statistics); + suite.metadata = data.metadata; + suite.populateKeywords = createIterablePopulator('Keyword'); + suite.populateTests = createIterablePopulator('Test'); + suite.populateSuites = createIterablePopulator('Suite'); + suite.childrenNames = ['keyword', 'suite', 'test']; + suite.callWhenChildrenReady = function (callable) { callable(); }; + suite.message = data.message; + suite.children = function () { + return suite.keywords().concat(suite.tests()).concat(suite.suites()); + }; + suite.searchTests = function (predicate) { + var tests = []; + var suites = this.suites(); + for (var i in suites) + tests = tests.concat(suites[i].searchTests(predicate)); + return tests.concat(util.filter(this.tests(), predicate)); + }; + suite.searchTestsInSuite = function (pattern, matcher) { + if (!matcher) + matcher = util.Matcher(pattern); + if (matcher.matchesAny([suite.fullName, suite.name])) + return suite.allTests(); + var tests = []; + var suites = this.suites(); + for (var i in suites) + tests = tests.concat(suites[i].searchTestsInSuite(pattern, matcher)); + return tests; + }; + suite.searchTestsByTag = function (tag) { + return suite.searchTests(function (test) { + if (tag.info == "critical" || tag.info == "non-critical") + return containsTagPattern(test.tags, tag.label); + if (tag.combined) + return containsTagPattern(test.tags, tag.combined); + return containsTag(test.tags, tag.label); + }); + }; + suite.findSuiteByName = function (name) { + return findSuiteByName(suite, name); + }; + suite.allTests = function () { + return suite.searchTests(function (test) { + return true; + }); + }; + suite.criticalTests = function () { + return suite.searchTests(function (test) { + return test.isCritical; + }); + }; + return suite; + } + function containsTag(testTags, tagname) { + testTags = util.map(testTags, util.normalize); + return util.contains(testTags, util.normalize(tagname)); + } + function containsTagPattern(testTags, pattern) { + var patterns; + if (pattern.indexOf('NOT') != -1) { + patterns = pattern.split('NOT'); + if (!util.normalize(patterns[0])) + return util.all(util.map(patterns.slice(1), function (p) { + return !containsTagPattern(testTags, p); + })); + return containsTagPattern(testTags, patterns[0]) && + util.all(util.map(patterns.slice(1), function (p) { + return !containsTagPattern(testTags, p); + })); + } + if (pattern.indexOf('OR') != -1) { + patterns = pattern.split('OR'); + return util.any(util.map(patterns, function (p) { + return containsTagPattern(testTags, p); + })); + } + if (pattern.indexOf('AND') != -1) { + patterns = pattern.split('AND'); + return util.all(util.map(patterns, function (p) { + return containsTagPattern(testTags, p); + })); + } + return util.Matcher(pattern).matchesAny(testTags); + } + function findSuiteByName(suite, name) { + if (suite.fullName == name) + return suite; + var subSuites = suite.suites(); + for (var i in subSuites) { + var match = findSuiteByName(subSuites[i], name); + if (match) + return match; + } + return null; + } + function setStats(suite, stats) { + for (var name in stats) { + suite[name] = stats[name]; + } + } + function createModelObject(data) { + return { + name: data.name, + doc: data.doc, + status: data.status, + times: data.times, + id: data.parent ? data.parent.id + '-' + data.id : data.id + }; + } + function Test(data) { + var test = createModelObject(data); + test.fullName = data.parent.fullName + '.' + test.name; + test.formatParentName = function () { return util.formatParentName(test); }; + test.timeout = data.timeout; + test.populateKeywords = createIterablePopulator('Keyword'); + test.childrenNames = ['keyword']; + test.isChildrenLoaded = data.isChildrenLoaded; + test.callWhenChildrenReady = window.fileLoading.getCallbackHandlerForKeywords(test); + test.children = function () { + if (test.isChildrenLoaded) + return test.keywords(); + }; + test.isCritical = data.isCritical; + test.tags = data.tags; + test.message = data.message; + test.matchesTagPattern = function (pattern) { + return containsTagPattern(test.tags, pattern); + }; + test.matchesNamePattern = function (pattern) { + return util.Matcher(pattern).matchesAny([test.name, test.fullName]); + }; + return test; + } + function Keyword(data) { + var kw = createModelObject(data); + kw.libname = data.libname; + kw.type = data.type; + kw.arguments = data.args; + kw.assign = data.assign + (data.assign ? ' =' : ''); + kw.tags = data.tags; + kw.timeout = data.timeout; + kw.populateMessages = createIterablePopulator('Message'); + kw.populateKeywords = createIterablePopulator('Keyword'); + kw.childrenNames = ['keyword', 'message']; + kw.isChildrenLoaded = data.isChildrenLoaded; + kw.callWhenChildrenReady = window.fileLoading.getCallbackHandlerForKeywords(kw); + kw.children = function () { + if (kw.isChildrenLoaded) + return kw.keywords(); + }; + return kw; + } + function Message(level, date, text, link) { + return { + level: level, + time: util.timeFromDate(date), + date: util.dateFromDate(date), + text: text, + link: link + }; + } + function Times(timedata) { + var start = timedata[0]; + var end = timedata[1]; + var elapsed = timedata[2]; + return { + elapsedMillis: elapsed, + elapsedTime: util.formatElapsed(elapsed), + startTime: util.dateTimeFromDate(start), + endTime: util.dateTimeFromDate(end) + }; + } + function createIterablePopulator(name) { + return function (populator) { + populateIterable(this, name, populator); + }; + } + function populateIterable(obj, name, populator) { + name = name.toLowerCase() + 's'; + obj[name] = createGetAllFunction(populator.numberOfItems, populator.creator); + } + function createGetAllFunction(numberOfElements, creator) { + var cached = null; + return function () { + if (cached === null) { + cached = []; + for (var i = 0; i < numberOfElements(); i++) { + cached.push(creator(i)); + } + } + return cached; + }; + } + return { + Suite: Suite, + Test: Test, + Keyword: Keyword, + Message: Message, + Times: Times, + containsTag: containsTag, // Exposed for tests + containsTagPattern: containsTagPattern // Exposed for tests + }; +}()); +window.stats = (function () { + function Statistics(totalElems, tagElems, suiteElems) { + return {total: util.map(totalElems, totalStatElem), + tag: util.map(tagElems, tagStatElem), + suite: util.map(suiteElems, suiteStatElem)}; + } + function statElem(stat) { + stat.total = stat.pass + stat.fail; + var percents = calculatePercents(stat.total, stat.pass, stat.fail); + stat.passPercent = percents[0]; + stat.failPercent = percents[1]; + var widths = calculateWidths(stat.passPercent, stat.failPercent); + stat.passWidth = widths[0]; + stat.failWidth = widths[1]; + return stat; + } + function totalStatElem(data) { + var stat = statElem(data); + stat.type = stat.label == 'Critical Tests' ? 'critical' : 'all'; + return stat; + } + function tagStatElem(data) { + var stat = statElem(data); + stat.links = parseLinks(stat.links); + return stat; + } + function suiteStatElem(data) { + var stat = statElem(data); + stat.fullName = stat.label; + stat.formatParentName = function () { return util.formatParentName(stat); }; + return stat; + } + function parseLinks(linksData) { + if (!linksData) + return []; + return util.map(linksData.split(':::'), function (link) { + var index = link.indexOf(':'); + return {title: link.slice(0, index), url: link.slice(index+1)}; + }); + } + function calculatePercents(total, passed, failed) { + if (total == 0) + return [0.0, 0.0]; + var pass = 100.0 * passed / total; + var fail = 100.0 * failed / total; + if (pass > 0 && pass < 0.1) + return [0.1, 99.9]; + if (fail > 0 && fail < 0.1) + return [99.9, 0.1]; + return [Math.round(pass*10)/10, Math.round(fail*10)/10]; + } + function calculateWidths(num1, num2) { + if (num1 + num2 == 0) + return [0.0, 0.0]; + // Make small percentages better visible + if (num1 > 0 && num1 < 1) + return [1.0, 99.0]; + if (num2 > 0 && num2 < 1) + return [99.0, 1.0]; + // Handle situation where both are rounded up + while (num1 + num2 > 100) { + if (num1 > num2) + num1 -= 0.1; + if (num2 > num1) + num2 -= 0.1; + } + return [num1, num2]; + } + return { + Statistics: Statistics + }; +}()); +</script> +<script type="text/javascript"> +window.util = function () { + function map(elems, func) { + var ret = []; + for (var i = 0, len = elems.length; i < len; i++) { + ret[i] = func(elems[i]); + } + return ret; + } + function filter(elems, predicate) { + var ret = []; + for (var i = 0, len = elems.length; i < len; i++) { + if (predicate(elems[i])) + ret.push(elems[i]); + } + return ret; + } + function all(elems) { + for (var i = 0, len = elems.length; i < len; i++) { + if (!elems[i]) + return false; + } + return true; + } + function any(elems) { + for (var i = 0, len = elems.length; i < len; i++) { + if (elems[i]) + return elems[i]; + } + return false; + } + function contains(elems, e) { + for (var i = 0, len = elems.length; i < len; i++) { + if (elems[i] == e) + return true; + } + return false; + } + function last(items) { + return items[items.length-1]; + } + function unescape(string) { + return string.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&'); + } + function escape(string) { + return string.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); + } + function normalize(string) { + return string.toLowerCase().replace(/ /g, '').replace(/_/g, ''); + } + function regexpEscape(string) { + return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&"); + } + function Matcher(pattern) { + pattern = regexpEscape(normalize(pattern)); + var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$'; + var regexp = new RegExp(rePattern); + function matches(string) { + return regexp.test(normalize(string)); + } + return { + matches: matches, + matchesAny: function (strings) { + for (var i = 0, len = strings.length; i < len; i++) + if (matches(strings[i])) + return true; + return false; + } + }; + } + function formatParentName(item) { + var parentName = item.fullName.slice(0, item.fullName.length - item.name.length); + return parentName.replace(/\./g, ' . '); + } + function timeFromDate(date) { + if (!date) + return 'N/A'; + return formatTime(date.getHours(), date.getMinutes(), + date.getSeconds(), date.getMilliseconds()); + } + function dateFromDate(date) { + if (!date) + return 'N/A'; + return padTo(date.getFullYear(), 4) + + padTo(date.getMonth() + 1, 2) + + padTo(date.getDate(), 2); + } + function dateTimeFromDate(date) { + if (!date) + return 'N/A'; + return dateFromDate(date) + ' ' + timeFromDate(date); + } + function formatTime(hours, minutes, seconds, milliseconds) { + return padTo(hours, 2) + ':' + + padTo(minutes, 2) + ':' + + padTo(seconds, 2) + '.' + + padTo(milliseconds, 3); + } + function formatElapsed(elapsed) { + var millis = elapsed; + var hours = Math.floor(millis / (60 * 60 * 1000)); + millis -= hours * 60 * 60 * 1000; + var minutes = Math.floor(millis / (60 * 1000)); + millis -= minutes * 60 * 1000; + var seconds = Math.floor(millis / 1000); + millis -= seconds * 1000; + return formatTime(hours, minutes, seconds, millis); + } + function padTo(number, len) { + var numString = number + ""; + while (numString.length < len) numString = "0" + numString; + return numString; + } + function timestamp(millis) { + // used also by tools that do not set window.output.baseMillis + var base = window.output ? window.output.baseMillis : 0; + return new Date(base + millis); + } + function createGeneratedString(timestamp) { + var date = new Date(timestamp); + var dt = dateTimeFromDate(date).slice(0, 17); // drop millis + var offset = date.getTimezoneOffset(); + var sign = offset > 0 ? '-' : '+'; + var hh = Math.floor(Math.abs(offset) / 60); + var mm = Math.abs(offset) % 60; + return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2); + } + function createGeneratedAgoString(timestamp) { + function timeString(time, shortUnit) { + var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute', + s: 'second'}[shortUnit]; + var end = time == 1 ? ' ' : 's '; + return time + ' ' + unit + end; + } + function compensateLeapYears(days, years) { + // Not a perfect algorithm but ought to be enough + return days - Math.floor(years / 4); + } + var generated = Math.round(timestamp / 1000); + var current = Math.round(new Date().getTime() / 1000); + var elapsed = current - generated; + var prefix = ''; + if (elapsed < 0) { + prefix = '- '; + elapsed = Math.abs(elapsed); + } + var secs = elapsed % 60; + var mins = Math.floor(elapsed / 60) % 60; + var hours = Math.floor(elapsed / (60*60)) % 24; + var days = Math.floor(elapsed / (60*60*24)) % 365; + var years = Math.floor(elapsed / (60*60*24*365)); + if (years) { + days = compensateLeapYears(days, years); + return prefix + timeString(years, 'y') + timeString(days, 'd'); + } else if (days) { + return prefix + timeString(days, 'd') + timeString(hours, 'h'); + } else if (hours) { + return prefix + timeString(hours, 'h') + timeString(mins, 'm'); + } else if (mins) { + return prefix + timeString(mins, 'm') + timeString(secs, 's'); + } else { + return prefix + timeString(secs, 's'); + } + } + function parseQueryString(query) { + var result = {}; + if (!query) + return result; + var params = query.split('&'); + var parts; + function decode(item) { + return decodeURIComponent(item.replace('+', ' ')); + } + for (var i = 0, len = params.length; i < len; i++) { + parts = params[i].split('='); + result[decode(parts.shift())] = decode(parts.join('=')); + } + return result; + } + return { + map: map, + filter: filter, + all: all, + any: any, + contains: contains, + last: last, + escape: escape, + unescape: unescape, + normalize: normalize, + regexpEscape: regexpEscape, + Matcher: Matcher, + formatParentName: formatParentName, + timeFromDate: timeFromDate, + dateFromDate: dateFromDate, + dateTimeFromDate: dateTimeFromDate, + formatElapsed: formatElapsed, + timestamp: timestamp, + createGeneratedString: createGeneratedString, + createGeneratedAgoString: createGeneratedAgoString, + parseQueryString: parseQueryString + }; +}(); +</script> +<script type="text/javascript"> +window.testdata = function () { + var elementsById = {}; + var idCounter = 0; + var _statistics = null; + var LEVELS = ['TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FAIL']; + var STATUSES = ['FAIL', 'PASS', 'NOT_RUN']; + var KEYWORDS = ['KEYWORD', 'SETUP', 'TEARDOWN', 'FOR', 'VAR']; + function addElement(elem) { + if (!elem.id) + elem.id = uniqueId(); + elementsById[elem.id] = elem; + return elem; + } + function uniqueId() { + idCounter++; + return 'element-id-' + idCounter; + } + function times(stats) { + var startMillis = stats[1]; + var elapsed = stats[2]; + if (startMillis === null) + return [null, null, elapsed]; + return [util.timestamp(startMillis), + util.timestamp(startMillis + elapsed), + elapsed]; + } + function message(element, strings) { + return addElement(model.Message(LEVELS[element[1]], + util.timestamp(element[0]), + strings.get(element[2]), + strings.get(element[3]))); + } + function parseStatus(stats) { + return STATUSES[stats[0]]; + } + function childCreator(parent, childType) { + return function (elem, strings, index) { + return addElement(childType(parent, elem, strings, index)); + }; + } + function createKeyword(parent, element, strings, index) { + var kw = model.Keyword({ + parent: parent, + type: KEYWORDS[element[0]], + id: 'k' + (index + 1), + name: strings.get(element[1]), + libname: strings.get(element[2]), + timeout: strings.get(element[3]), + args: strings.get(element[5]), + assign: strings.get(element[6]), + tags: strings.get(element[7]), + doc: function () { + var doc = strings.get(element[4]); + this.doc = function () { return doc; }; + return doc; + }, + status: parseStatus(element[8], strings), + times: model.Times(times(element[8])), + isChildrenLoaded: typeof(element[9]) !== 'number' + }); + lazyPopulateKeywordsFromFile(kw, element[9], strings); + kw.populateMessages(Populator(element[10], strings, message)); + return kw; + } + function lazyPopulateKeywordsFromFile(parent, modelOrIndex, strings) { + var model, index, populator; + var creator = childCreator(parent, createKeyword); + if (parent.isChildrenLoaded) { + model = modelOrIndex; + populator = Populator(model, strings, creator); + } else { + index = modelOrIndex; + parent.childFileName = window.settings['splitLogBase'] + '-' + index + '.js'; + populator = SplitLogPopulator(index, creator); + } + parent.populateKeywords(populator); + } + function tags(taglist, strings) { + return util.map(taglist, strings.get); + } + function createTest(parent, element, strings, index) { + var statusElement = element[5]; + var test = model.Test({ + parent: parent, + id: 't' + (index + 1), + name: strings.get(element[0]), + doc: function () { + var doc = strings.get(element[3]); + this.doc = function () { return doc; }; + return doc; + }, + timeout: strings.get(element[1]), + isCritical: element[2], + status: parseStatus(statusElement), + message: function () { + var msg = createMessage(statusElement, strings); + this.message = function () { return msg; }; + return msg; + }, + times: model.Times(times(statusElement)), + tags: tags(element[4], strings), + isChildrenLoaded: typeof(element[6]) !== 'number' + }); + lazyPopulateKeywordsFromFile(test, element[6], strings); + return test; + } + function createMessage(statusElement, strings) { + return statusElement.length == 4 ? strings.get(statusElement[3]) : ''; + } + function createSuite(parent, element, strings, index) { + var statusElement = element[5]; + var suite = model.Suite({ + parent: parent, + id: 's' + ((index || 0) + 1), + name: strings.get(element[0]), + source: strings.get(element[1]), + relativeSource: strings.get(element[2]), + doc: function () { + var doc = strings.get(element[3]); + this.doc = function () { return doc; }; + return doc; + }, + status: parseStatus(statusElement), + message: function () { + var msg = createMessage(statusElement, strings); + this.message = function () { return msg; }; + return msg; + }, + times: model.Times(times(statusElement)), + statistics: suiteStats(util.last(element)), + metadata: parseMetadata(element[4], strings) + }); + suite.populateKeywords(Populator(element[8], strings, childCreator(suite, createKeyword))); + suite.populateTests(Populator(element[7], strings, childCreator(suite, createTest))); + suite.populateSuites(Populator(element[6], strings, childCreator(suite, createSuite))); + return suite; + } + function parseMetadata(data, strings) { + var metadata = []; + for (var i=0; i<data.length; i+=2) { + metadata.push([strings.get(data[i]), strings.get(data[i+1])]); + } + return metadata; + } + function suiteStats(stats) { + return { + total: stats[0], + totalPassed: stats[1], + totalFailed: stats[0] - stats[1], + critical: stats[2], + criticalPassed: stats[3], + criticalFailed: stats[2] - stats[3] + }; + } + function Populator(items, strings, creator) { + return { + numberOfItems: function () { + return items.length; + }, + creator: function (index) { + return creator(items[index], strings, index); + } + }; + } + function SplitLogPopulator(structureIndex, creator) { + return { + numberOfItems: function () { + return window['keywords'+structureIndex].length; + }, + creator: function (index) { + return creator(window['keywords'+structureIndex][index], + StringStore(window['strings'+structureIndex]), + index); + } + }; + } + function suite() { + var elem = window.output.suite; + if (elementsById[elem.id]) + return elem; + var root = addElement(createSuite(null, elem, StringStore(window.output.strings))); + window.output.suite = root; + return root; + } + function findLoaded(id) { + return elementsById[id]; + } + function ensureLoaded(id, callback) { + var ids = id.split('-'); + var root = suite(); + ids.shift(); + loadItems(ids, root, [root.id], callback); + } + function loadItems(ids, current, result, callback) { + if (!ids.length) { + callback(result); + return; + } + current.callWhenChildrenReady(function () { + var id = ids.shift(); + var type = id[0]; + var index = parseInt(id.substring(1)) - 1; + var item = selectFrom(current, type, index); + if (item) + result.push(item.id); + else // Invalid id. Should this be reported somewhere? + ids = []; + loadItems(ids, item, result, callback); + }); + } + function selectFrom(element, type, index) { + if (type === 'k') { + return element.keywords()[index]; + } else if (type === 't') { + return element.tests()[index]; + } else { + return element.suites()[index]; + } + } + function errorIterator() { + return { + next: function () { + return message(window.output.errors.shift(), + StringStore(window.output.strings)); + }, + hasNext: function () { + return window.output.errors.length > 0; + } + }; + } + function statistics() { + if (!_statistics) { + var statData = window.output.stats; + _statistics = stats.Statistics(statData[0], statData[1], statData[2]); + } + return _statistics; + } + function StringStore(strings) { + function getText(id) { + var text = strings[id]; + if (!text) + return ''; + if (text[0] == '*') + return text.substring(1); + var extracted = extract(text); + strings[id] = '*' + extracted; + return extracted; + } + function extract(text) { + var decoded = JXG.Util.Base64.decodeAsArray(text); + var extracted = (new JXG.Util.Unzip(decoded)).unzip()[0][0]; + return JXG.Util.UTF8.decode(extracted); + } + function get(id) { + if (id === null) return null; + return getText(id); + } + return {get: get}; + } + return { + suite: suite, + errorIterator: errorIterator, + findLoaded: findLoaded, + ensureLoaded: ensureLoaded, + statistics: statistics, + StringStore: StringStore, // exposed for tests + LEVELS: LEVELS + }; +}(); +</script> +<script type="text/javascript"> +function removeJavaScriptDisabledWarning() { + // Not using jQuery here for maximum speed + document.getElementById('javascript-disabled').style.display = 'none'; +} +function addJavaScriptDisabledWarning(error) { + if (window.console) + console.error('Opening failed: ' + error.name + ': ' + error.message); + document.getElementById('javascript-disabled').style.display = 'block'; +} +function initLayout(suiteName, type) { + parseTemplates(); + setTitle(suiteName, type); + addHeader(); + addReportOrLogLink(type); +} +function parseTemplates() { + $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) { + $.template(elem.id, elem.text); + }); +} +function testOrTask(text) { + return text.replace(/{(.*)}/, function (match, group, offset, string) { + if (!window.settings.rpa) + return group; + return {'TEST': 'TASK', 'Test': 'Task', 'test': 'task'}[group]; + }); +} +function setTitle(suiteName, type) { + var givenTitle = window.settings.title; + var title = givenTitle ? givenTitle : suiteName + " " + type; + document.title = util.unescape(title); +} +function addHeader() { + var generated = util.timestamp(window.output.generated); + $.tmpl('<h1>${title}</h1>' + + '<div id="generated">' + + '<span>Generated<br>${generated}</span><br>' + + '<span id="generated-ago">${ago} ago</span>' + + '</div>' + + '<div id="top-right-header">' + + '<div id="report-or-log-link"><a href="#"></a></div>' + + '</div>', { + generated: util.createGeneratedString(generated), + ago: util.createGeneratedAgoString(generated), + title: document.title + }).appendTo($('#header')); +} +function addReportOrLogLink(myType) { + var url; + var text; + var container = $('#report-or-log-link'); + if (myType == 'Report') { + url = window.settings.logURL; + text = 'LOG'; + } else { + url = window.settings.reportURL; + text = 'REPORT'; + } + if (url) { + container.find('a').attr('href', url); + container.find('a').text(text); + } else { + container.remove(); + } +} +function addStatistics() { + var statHeaders = + '<th class="stats-col-stat">Total</th>' + + '<th class="stats-col-stat">Pass</th>' + + '<th class="stats-col-stat">Fail</th>' + + '<th class="stats-col-elapsed">Elapsed</th>' + + '<th class="stats-col-graph">Pass / Fail</th>'; + var statTable = + '<h2>{Test} Statistics</h2>' + + '<table class="statistics" id="total-stats"><thead><tr>' + + '<th class="stats-col-name">Total Statistics</th>' + statHeaders + + '</tr></thead></table>' + + '<table class="statistics" id="tag-stats"><thead><tr>' + + '<th class="stats-col-name">Statistics by Tag</th>' + statHeaders + + '</tr></thead></table>' + + '<table class="statistics" id="suite-stats"><thead><tr>' + + '<th class="stats-col-name">Statistics by Suite</th>' + statHeaders + + '</tr></thead></table>'; + $(testOrTask(statTable)).appendTo('#statistics-container'); + util.map(['total', 'tag', 'suite'], addStatTable); + addTooltipsToElapsedTimes(); + enableStatisticsSorter(); +} +function addTooltipsToElapsedTimes() { + $('.stats-col-elapsed').attr('title', + testOrTask('Total execution time of these {test}s. ') + + 'Excludes suite setups and teardowns.'); + $('#suite-stats').find('.stats-col-elapsed').attr('title', + 'Total execution time of this suite.'); +} +function enableStatisticsSorter() { + $.tablesorter.addParser({ + id: 'statName', + type: 'numeric', + is: function(s) { + return false; // do not auto-detect + }, + format: function(string, table, cell, cellIndex) { + // Rows have class in format 'row-<index>'. + var index = $(cell).parent().attr('class').substring(4); + return parseInt(index); + } + }); + $(".statistics").tablesorter({ + sortInitialOrder: 'desc', + headers: {0: {sorter:'statName', sortInitialOrder: 'asc'}, + 5: {sorter: false}} + }); +} +function addStatTable(tableName) { + var stats = window.testdata.statistics()[tableName]; + if (tableName == 'tag' && stats.length == 0) { + renderNoTagStatTable(); + } else { + renderStatTable(tableName, stats); + } +} +function renderNoTagStatTable() { + $('<tbody><tr class="row-0">' + + '<td class="stats-col-name">No Tags</td>' + + '<td class="stats-col-stat"></td>' + + '<td class="stats-col-stat"></td>' + + '<td class="stats-col-stat"></td>' + + '<td class="stats-col-elapsed"></td>' + + '<td class="stats-col-graph">' + + '<div class="empty-graph"></div>' + + '</td>' + + '</tr></tbody>').appendTo('#tag-stats'); +} +function renderStatTable(tableName, stats) { + var template = tableName + 'StatisticsRowTemplate'; + var tbody = $('<tbody></tbody>'); + for (var i = 0, len = stats.length; i < len; i++) { + $.tmpl(template, stats[i], {index: i}).appendTo(tbody); + } + tbody.appendTo('#' + tableName + '-stats'); +} +$.template('statColumnsTemplate', + '<td class="stats-col-stat">${total}</td>' + + '<td class="stats-col-stat">${pass}</td>' + + '<td class="stats-col-stat">${fail}</td>' + + '<td class="stats-col-elapsed">${elapsed}</td>' + + '<td class="stats-col-graph">' + + '{{if total}}' + + '<div class="graph">' + + '<div class="pass-bar" style="width: ${passWidth}%" title="${passPercent}%"></div>' + + '<div class="fail-bar" style="width: ${failWidth}%" title="${failPercent}%"></div>' + + '</div>' + + '{{else}}' + + '<div class="empty-graph"></div>' + + '{{/if}}' + + '</td>' +); +$.template('suiteStatusMessageTemplate', + '${critical} critical {{= testOrTask("{test}")}}, ' + + '${criticalPassed} passed, ' + + '<span class="{{if criticalFailed}}fail{{else}}pass{{/if}}">${criticalFailed} failed</span><br>' + + '${total} {{= testOrTask("{test}")}} total, ' + + '${totalPassed} passed, ' + + '<span class="{{if totalFailed}}fail{{else}}pass{{/if}}">${totalFailed} failed</span>' +); +// For complete cross-browser experience.. +// http://www.quirksmode.org/js/events_order.html +function stopPropagation(event) { + var event = event || window.event; + event.cancelBubble = true; + if (event.stopPropagation) + event.stopPropagation(); +} +</script> +<script type="text/javascript"> +window.output = {}; +</script> +<script type="text/javascript"> +window.sPart0 = [[4,85,0,0,0,0,0,0,[1,2088,397],[[0,40,41,0,42,86,87,0,[1,2088,1],[],[[2089,2,88]]],[0,89,90,0,91,92,93,0,[1,2089,391],[[0,59,20,0,60,94,0,0,[1,2090,0],[],[]],[0,40,41,0,42,95,87,0,[1,2090,0],[],[[2090,2,88]]],[0,96,90,0,91,97,93,0,[1,2091,386],[[0,59,20,0,60,94,0,0,[1,2091,0],[],[]],[0,40,41,0,42,95,87,0,[1,2092,0],[],[[2092,2,88]]],[0,40,41,0,42,98,99,0,[1,2092,1],[],[[2093,2,100]]],[0,59,20,0,60,101,0,0,[1,2094,0],[],[]],[0,63,20,0,64,102,103,0,[1,2094,1],[],[[2095,2,104]]],[0,63,20,0,64,105,106,0,[1,2095,1],[],[[2096,2,107]]],[0,108,20,0,109,110,111,0,[1,2096,2],[[0,40,41,0,42,112,0,0,[1,2097,0],[],[]]],[[2097,2,113],[2097,2,114]]],[0,115,20,0,116,117,106,0,[1,2098,2],[[0,118,119,0,120,121,0,0,[1,2099,0],[],[]]],[[2100,2,122]]],[0,108,20,0,109,123,124,0,[1,2100,1],[[0,40,41,0,42,125,0,0,[1,2101,0],[],[]]],[[2101,2,113],[2101,2,126]]],[0,115,20,0,116,127,106,0,[1,2102,1],[[0,118,119,0,120,128,0,0,[1,2102,1],[],[]]],[[2103,2,129]]],[0,108,20,0,109,130,131,0,[1,2103,2],[[0,40,41,0,42,132,0,0,[0,2104,0],[],[[2104,5,133]]]],[[2105,2,134],[2105,2,135]]],[0,115,20,0,116,136,106,0,[1,2105,1],[[0,63,20,0,64,106,0,0,[1,2106,0],[],[]]],[[2106,2,129]]],[0,115,20,0,116,137,106,0,[1,2107,1],[[0,63,20,0,64,106,0,0,[1,2107,0],[],[]]],[[2108,2,129]]],[0,46,20,0,47,0,138,0,[1,2108,1],[],[[2108,2,139]]],[0,140,20,0,141,142,143,0,[1,2109,5],[],[[2114,2,144]]],[3,145,0,0,0,0,0,0,[1,2115,46],[[4,146,0,0,0,0,0,0,[1,2115,23],[[0,108,20,0,109,147,148,0,[1,2116,1],[[0,40,41,0,42,149,0,0,[1,2116,1],[],[]]],[[2117,2,113],[2117,2,150]]],[0,151,152,0,153,154,154,0,[1,2117,1],[],[[2118,2,155]]],[0,115,20,0,116,156,154,0,[1,2118,1],[[0,63,20,0,64,154,0,0,[1,2119,0],[],[]]],[[2119,2,155]]],[0,115,20,0,116,157,154,0,[1,2120,1],[[0,63,20,0,64,154,0,0,[1,2120,1],[],[]]],[[2121,2,155]]],[0,115,20,0,116,158,106,0,[1,2121,1],[[0,118,119,0,120,159,0,0,[1,2122,0],[],[]]],[[2122,2,129]]],[0,118,119,0,120,160,106,0,[1,2123,0],[],[[2123,2,129]]],[0,161,152,0,162,106,163,0,[1,2123,1],[],[[2124,2,164]]],[0,165,166,0,167,168,0,0,[1,2135,3],[[0,59,20,0,60,169,0,0,[1,2135,0],[],[]],[0,59,20,0,60,170,0,0,[1,2136,0],[],[]],[3,171,0,0,0,0,0,0,[1,2136,1],[[4,172,0,0,0,0,0,0,[1,2137,0],[[0,173,41,0,174,175,0,0,[1,2137,0],[],[]]],[]]],[]]],[]]],[]],[4,176,0,0,0,0,0,0,[1,2138,23],[[0,108,20,0,109,147,148,0,[1,2138,2],[[0,40,41,0,42,149,0,0,[1,2139,0],[],[]]],[[2139,2,113],[2140,2,177]]],[0,151,152,0,153,154,154,0,[1,2140,0],[],[[2140,2,178]]],[0,115,20,0,116,156,154,0,[1,2141,1],[[0,63,20,0,64,154,0,0,[1,2141,0],[],[]]],[[2142,2,178]]],[0,115,20,0,116,157,154,0,[1,2143,2],[[0,63,20,0,64,154,0,0,[1,2144,0],[],[]]],[[2144,2,178]]],[0,115,20,0,116,158,106,0,[1,2145,1],[[0,118,119,0,120,159,0,0,[1,2145,1],[],[]]],[[2146,2,129]]],[0,118,119,0,120,160,106,0,[1,2146,1],[],[[2147,2,129]]],[0,161,152,0,162,106,163,0,[1,2147,1],[],[[2147,2,164]]],[0,165,166,0,167,168,0,0,[1,2158,3],[[0,59,20,0,60,169,0,0,[1,2159,0],[],[]],[0,59,20,0,60,170,0,0,[1,2159,0],[],[]],[3,171,0,0,0,0,0,0,[1,2160,1],[[4,172,0,0,0,0,0,0,[1,2160,1],[[0,173,41,0,174,175,0,0,[1,2160,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,2162,1],[],[[2163,2,182]]],[0,183,90,0,0,97,184,0,[1,2163,307],[[0,59,20,0,60,185,0,0,[1,2164,0],[],[]],[0,59,20,0,60,186,0,0,[1,2164,1],[],[]],[0,40,41,0,42,187,188,0,[1,2165,1],[],[[2166,2,189]]],[0,151,152,0,153,190,191,0,[1,2166,1],[],[[2166,2,192]]],[0,193,166,0,0,194,195,0,[1,2167,292],[[0,63,20,0,64,196,197,0,[1,2167,1],[],[[2168,2,198]]],[0,199,200,0,201,202,0,0,[1,2168,1],[],[[2169,2,203]]],[0,204,200,0,205,206,195,0,[1,2169,285],[],[[2170,2,207],[2454,2,208]]],[0,19,20,0,21,209,0,0,[1,2456,1],[],[[2456,2,210]]],[0,211,20,0,212,213,0,0,[1,2457,1],[],[[2457,2,214]]],[0,215,200,0,216,217,195,0,[1,2458,1],[],[[2458,2,218],[2459,2,219],[2459,2,220]]]],[[2459,2,220]]],[0,115,20,0,116,221,48,0,[1,2460,8],[[0,222,223,0,224,195,0,0,[1,2460,8],[[0,19,20,0,21,225,0,0,[1,2461,0],[],[[2461,2,225]]],[0,46,20,0,47,0,48,0,[1,2461,1],[],[[2462,2,49]]],[0,63,20,0,64,226,227,0,[1,2462,0],[],[[2462,2,228]]],[0,108,20,0,109,229,230,0,[1,2463,1],[[0,40,41,0,42,231,0,0,[1,2463,0],[],[]]],[[2464,2,113],[2464,2,232]]],[0,233,20,0,234,235,0,0,[1,2465,0],[],[]],[3,236,0,0,0,0,0,0,[1,2465,2],[[4,237,0,0,0,0,0,0,[1,2465,1],[[0,173,41,0,174,238,0,0,[1,2466,0],[],[]]],[]],[4,237,0,0,0,0,0,0,[1,2466,1],[[0,173,41,0,174,238,0,0,[1,2467,0],[],[]]],[]]],[]]],[]]],[[2468,2,239]]],[0,63,20,0,64,240,241,0,[1,2468,1],[],[[2469,2,242]]],[0,211,20,0,212,243,0,0,[1,2469,1],[],[[2470,2,214]]]],[[2470,2,242],[2470,2,239]]],[0,211,20,0,212,243,0,0,[1,2471,0],[],[[2471,2,214]]],[0,115,20,0,116,244,87,0,[1,2471,1],[],[[2472,2,88]]],[0,46,20,0,47,0,245,0,[1,2472,1],[],[[2472,2,246]]],[3,247,0,0,0,0,0,0,[1,2473,4],[[4,248,0,0,0,0,0,0,[1,2473,2],[[0,179,20,0,180,249,250,0,[1,2473,1],[],[[2474,2,251]]],[0,173,41,0,174,252,0,0,[1,2474,0],[],[]]],[]],[4,253,0,0,0,0,0,0,[1,2475,1],[[0,179,20,0,180,249,250,0,[1,2475,1],[],[[2475,2,251]]],[0,173,41,0,174,252,0,0,[1,2476,0],[],[]]],[]]],[]]],[[2477,2,239],[2477,2,251]]],[0,115,20,0,116,254,250,0,[1,2478,2],[[0,63,20,0,64,250,0,0,[1,2479,0],[],[]]],[[2479,2,251]]]],[[2480,2,239],[2480,2,251]]],[0,255,20,0,256,82,257,0,[1,2481,0],[],[[2481,2,258],[2481,2,259]]],[0,115,20,0,116,260,82,0,[1,2482,1],[[0,63,20,0,64,48,0,0,[1,2482,0],[],[]]],[[2482,2,261]]],[0,115,20,0,116,262,0,0,[1,2483,2],[[0,173,41,0,174,263,0,0,[1,2484,0],[],[]]],[]]],[]],[4,264,0,0,0,0,0,0,[1,2485,2889],[[0,40,41,0,42,86,87,0,[1,2485,1],[],[[2486,2,265]]],[0,89,90,0,91,92,93,0,[1,2486,2870],[[0,59,20,0,60,94,0,0,[1,2487,0],[],[]],[0,40,41,0,42,95,87,0,[1,2487,1],[],[[2488,2,265]]],[0,96,90,0,91,97,93,0,[1,2488,2865],[[0,59,20,0,60,94,0,0,[1,2488,1],[],[]],[0,40,41,0,42,95,87,0,[1,2489,0],[],[[2489,2,265]]],[0,40,41,0,42,98,99,0,[1,2490,0],[],[[2490,2,266]]],[0,59,20,0,60,101,0,0,[1,2490,1],[],[]],[0,63,20,0,64,102,103,0,[1,2491,1],[],[[2491,2,104]]],[0,63,20,0,64,105,106,0,[1,2492,0],[],[[2492,2,107]]],[0,108,20,0,109,110,111,0,[1,2493,1],[[0,40,41,0,42,112,0,0,[1,2493,0],[],[]]],[[2494,2,113],[2494,2,267]]],[0,115,20,0,116,117,106,0,[1,2494,1],[[0,118,119,0,120,121,0,0,[1,2495,0],[],[]]],[[2495,2,268]]],[0,108,20,0,109,123,124,0,[1,2496,1],[[0,40,41,0,42,125,0,0,[1,2496,0],[],[]]],[[2497,2,113],[2497,2,269]]],[0,115,20,0,116,127,106,0,[1,2497,2],[[0,118,119,0,120,128,0,0,[1,2498,0],[],[]]],[[2498,2,270]]],[0,108,20,0,109,130,131,0,[1,2499,1],[[0,40,41,0,42,132,0,0,[0,2499,1],[],[[2500,5,133]]]],[[2500,2,134],[2500,2,135]]],[0,115,20,0,116,136,106,0,[1,2501,1],[[0,63,20,0,64,106,0,0,[1,2501,0],[],[]]],[[2502,2,270]]],[0,115,20,0,116,137,106,0,[1,2502,1],[[0,63,20,0,64,106,0,0,[1,2503,0],[],[]]],[[2503,2,270]]],[0,46,20,0,47,0,138,0,[1,2504,0],[],[[2504,2,139]]],[0,140,20,0,141,142,143,0,[1,2504,1],[],[[2505,2,144]]],[3,145,0,0,0,0,0,0,[1,2505,46],[[4,271,0,0,0,0,0,0,[1,2505,24],[[0,108,20,0,109,147,148,0,[1,2506,1],[[0,40,41,0,42,149,0,0,[1,2506,0],[],[]]],[[2507,2,113],[2507,2,272]]],[0,151,152,0,153,154,154,0,[1,2507,1],[],[[2508,2,273]]],[0,115,20,0,116,156,154,0,[1,2508,1],[[0,63,20,0,64,154,0,0,[1,2508,1],[],[]]],[[2509,2,273]]],[0,115,20,0,116,157,154,0,[1,2509,2],[[0,63,20,0,64,154,0,0,[1,2510,0],[],[]]],[[2510,2,273]]],[0,115,20,0,116,158,106,0,[1,2511,1],[[0,118,119,0,120,159,0,0,[1,2511,1],[],[]]],[[2512,2,270]]],[0,118,119,0,120,160,106,0,[1,2513,0],[],[[2513,2,270]]],[0,161,152,0,162,106,163,0,[1,2513,1],[],[[2514,2,274]]],[0,165,166,0,167,168,0,0,[1,2525,3],[[0,59,20,0,60,169,0,0,[1,2526,0],[],[]],[0,59,20,0,60,170,0,0,[1,2526,1],[],[]],[3,171,0,0,0,0,0,0,[1,2527,1],[[4,275,0,0,0,0,0,0,[1,2527,1],[[0,173,41,0,174,175,0,0,[1,2527,1],[],[]]],[]]],[]]],[]]],[]],[4,276,0,0,0,0,0,0,[1,2529,22],[[0,108,20,0,109,147,148,0,[1,2529,1],[[0,40,41,0,42,149,0,0,[1,2530,0],[],[]]],[[2530,2,113],[2530,2,277]]],[0,151,152,0,153,154,154,0,[1,2531,1],[],[[2532,2,278]]],[0,115,20,0,116,156,154,0,[1,2532,1],[[0,63,20,0,64,154,0,0,[1,2532,1],[],[]]],[[2533,2,278]]],[0,115,20,0,116,157,154,0,[1,2533,2],[[0,63,20,0,64,154,0,0,[1,2534,0],[],[]]],[[2535,2,278]]],[0,115,20,0,116,158,106,0,[1,2535,1],[[0,118,119,0,120,159,0,0,[1,2536,0],[],[]]],[[2536,2,270]]],[0,118,119,0,120,160,106,0,[1,2537,0],[],[[2537,2,270]]],[0,161,152,0,162,106,163,0,[1,2538,0],[],[[2538,2,274]]],[0,165,166,0,167,168,0,0,[1,2548,3],[[0,59,20,0,60,169,0,0,[1,2548,0],[],[]],[0,59,20,0,60,170,0,0,[1,2549,0],[],[]],[3,171,0,0,0,0,0,0,[1,2549,1],[[4,275,0,0,0,0,0,0,[1,2549,1],[[0,173,41,0,174,175,0,0,[1,2550,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,2552,1],[],[[2553,2,279]]],[0,183,90,0,0,97,184,0,[1,2553,2790],[[0,59,20,0,60,185,0,0,[1,2554,0],[],[]],[0,59,20,0,60,186,0,0,[1,2554,1],[],[]],[0,40,41,0,42,187,188,0,[1,2555,1],[],[[2555,2,189]]],[0,151,152,0,153,190,191,0,[1,2556,0],[],[[2556,2,280]]],[0,193,166,0,0,194,195,0,[1,2557,2767],[[0,63,20,0,64,196,197,0,[1,2557,1],[],[[2557,2,198]]],[0,199,200,0,201,202,0,0,[1,2558,1],[],[[2558,2,203]]],[0,204,200,0,205,206,195,0,[1,2559,2747],[],[[2559,2,281],[5305,2,208]]],[0,19,20,0,21,209,0,0,[1,5308,4],[],[[5311,2,210]]],[0,211,20,0,212,213,0,0,[1,5314,4],[],[[5317,2,214]]],[0,215,200,0,216,217,195,0,[1,5319,4],[],[[5321,2,282],[5322,2,219],[5323,2,283]]]],[[5324,2,283]]],[0,115,20,0,116,221,48,0,[1,5325,15],[[0,222,223,0,224,195,0,0,[1,5326,13],[[0,19,20,0,21,225,0,0,[1,5327,1],[],[[5328,2,225]]],[0,46,20,0,47,0,48,0,[1,5329,1],[],[[5329,2,49]]],[0,63,20,0,64,226,227,0,[1,5330,2],[],[[5331,2,228]]],[0,108,20,0,109,229,230,0,[1,5332,2],[[0,40,41,0,42,231,0,0,[1,5333,0],[],[]]],[[5334,2,113],[5334,2,284]]],[0,233,20,0,234,235,0,0,[1,5335,0],[],[]],[3,236,0,0,0,0,0,0,[1,5335,4],[[4,285,0,0,0,0,0,0,[1,5336,1],[[0,173,41,0,174,238,0,0,[1,5336,1],[],[]]],[]],[4,285,0,0,0,0,0,0,[1,5337,2],[[0,173,41,0,174,238,0,0,[1,5338,0],[],[]]],[]]],[]]],[]]],[[5339,2,286]]],[0,63,20,0,64,240,241,0,[1,5340,1],[],[[5341,2,242]]],[0,211,20,0,212,243,0,0,[1,5341,1],[],[[5342,2,214]]]],[[5342,2,242],[5343,2,286]]],[0,211,20,0,212,243,0,0,[1,5343,1],[],[[5344,2,214]]],[0,115,20,0,116,244,87,0,[1,5345,2],[[0,63,20,0,64,87,0,0,[1,5345,1],[],[]]],[[5346,2,265]]],[0,46,20,0,47,0,245,0,[1,5347,1],[],[[5347,2,246]]],[3,247,0,0,0,0,0,0,[1,5348,5],[[4,287,0,0,0,0,0,0,[1,5348,2],[[0,179,20,0,180,249,250,0,[1,5348,1],[],[[5349,2,288]]],[0,173,41,0,174,252,0,0,[1,5349,1],[],[]]],[]],[4,289,0,0,0,0,0,0,[1,5350,2],[[0,179,20,0,180,249,250,0,[1,5350,1],[],[[5351,2,288]]],[0,173,41,0,174,252,0,0,[1,5352,0],[],[]]],[]]],[]]],[[5353,2,286],[5353,2,288]]],[0,115,20,0,116,254,250,0,[1,5354,1],[[0,63,20,0,64,250,0,0,[1,5355,0],[],[]]],[[5355,2,288]]]],[[5356,2,286],[5356,2,288]]],[0,255,20,0,256,82,257,0,[1,5357,0],[],[[5357,2,290],[5357,2,291]]],[0,115,20,0,116,260,82,0,[1,5358,14],[[0,165,166,0,167,292,0,0,[1,5368,4],[[0,59,20,0,60,169,0,0,[1,5368,1],[],[]],[0,59,20,0,60,170,0,0,[1,5369,0],[],[]],[3,171,0,0,0,0,0,0,[1,5369,3],[[4,293,0,0,0,0,0,0,[1,5370,0],[[0,173,41,0,174,175,0,0,[1,5370,0],[],[]]],[]],[4,294,0,0,0,0,0,0,[1,5371,0],[[0,173,41,0,174,175,0,0,[1,5371,0],[],[]]],[]]],[]]],[]]],[[5372,2,295]]],[0,115,20,0,116,262,0,0,[1,5372,2],[[0,173,41,0,174,263,0,0,[1,5373,0],[],[]]],[]]],[]],[4,296,0,0,0,0,0,0,[1,5374,272],[[0,40,41,0,42,86,87,0,[1,5374,1],[],[[5375,2,297]]],[0,89,90,0,91,92,93,0,[1,5375,251],[[0,59,20,0,60,94,0,0,[1,5376,0],[],[]],[0,40,41,0,42,95,87,0,[1,5376,1],[],[[5377,2,297]]],[0,96,90,0,91,97,93,0,[1,5377,247],[[0,59,20,0,60,94,0,0,[1,5377,1],[],[]],[0,40,41,0,42,95,87,0,[1,5378,1],[],[[5378,2,297]]],[0,40,41,0,42,98,99,0,[1,5379,0],[],[[5379,2,298]]],[0,59,20,0,60,101,0,0,[1,5380,0],[],[]],[0,63,20,0,64,102,103,0,[1,5380,1],[],[[5381,2,104]]],[0,63,20,0,64,105,106,0,[1,5381,0],[],[[5381,2,107]]],[0,108,20,0,109,110,111,0,[1,5382,1],[[0,40,41,0,42,112,0,0,[1,5382,0],[],[]]],[[5383,2,113],[5383,2,267]]],[0,115,20,0,116,117,106,0,[1,5383,2],[[0,118,119,0,120,121,0,0,[1,5384,0],[],[]]],[[5384,2,268]]],[0,108,20,0,109,123,124,0,[1,5385,1],[[0,40,41,0,42,125,0,0,[1,5385,1],[],[]]],[[5386,2,113],[5386,2,299]]],[0,115,20,0,116,127,106,0,[1,5386,2],[[0,118,119,0,120,128,0,0,[1,5387,0],[],[]]],[[5387,2,300]]],[0,108,20,0,109,130,131,0,[1,5388,1],[[0,40,41,0,42,132,0,0,[0,5388,1],[],[[5389,5,133]]]],[[5389,2,134],[5389,2,135]]],[0,115,20,0,116,136,106,0,[1,5390,1],[[0,63,20,0,64,106,0,0,[1,5390,0],[],[]]],[[5391,2,300]]],[0,115,20,0,116,137,106,0,[1,5391,2],[[0,63,20,0,64,106,0,0,[1,5392,0],[],[]]],[[5392,2,300]]],[0,46,20,0,47,0,138,0,[1,5393,0],[],[[5393,2,139]]],[0,140,20,0,141,142,143,0,[1,5394,0],[],[[5394,2,144]]],[3,145,0,0,0,0,0,0,[1,5394,22],[[4,301,0,0,0,0,0,0,[1,5395,21],[[0,108,20,0,109,147,148,0,[1,5395,1],[[0,40,41,0,42,149,0,0,[1,5395,1],[],[]]],[[5396,2,113],[5396,2,302]]],[0,151,152,0,153,154,154,0,[1,5396,1],[],[[5397,2,303]]],[0,115,20,0,116,156,154,0,[1,5397,1],[[0,63,20,0,64,154,0,0,[1,5398,0],[],[]]],[[5398,2,303]]],[0,115,20,0,116,157,154,0,[1,5399,1],[[0,63,20,0,64,154,0,0,[1,5399,1],[],[]]],[[5400,2,303]]],[0,115,20,0,116,158,106,0,[1,5400,2],[[0,118,119,0,120,159,0,0,[1,5401,0],[],[]]],[[5401,2,300]]],[0,118,119,0,120,160,106,0,[1,5402,0],[],[[5402,2,300]]],[0,161,152,0,162,106,163,0,[1,5403,0],[],[[5403,2,304]]],[0,165,166,0,167,168,0,0,[1,5413,3],[[0,59,20,0,60,169,0,0,[1,5414,0],[],[]],[0,59,20,0,60,170,0,0,[1,5414,1],[],[]],[3,171,0,0,0,0,0,0,[1,5415,1],[[4,305,0,0,0,0,0,0,[1,5415,1],[[0,173,41,0,174,175,0,0,[1,5415,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,5417,0],[],[[5417,2,306]]],[0,183,90,0,0,97,184,0,[1,5418,200],[[0,59,20,0,60,185,0,0,[1,5418,0],[],[]],[0,59,20,0,60,186,0,0,[1,5419,0],[],[]],[0,40,41,0,42,187,188,0,[1,5419,1],[],[[5419,2,189]]],[0,151,152,0,153,190,191,0,[1,5420,0],[],[[5420,2,307]]],[0,193,166,0,0,194,195,0,[1,5421,185],[[0,63,20,0,64,196,197,0,[1,5421,1],[],[[5422,2,198]]],[0,199,200,0,201,202,0,0,[1,5422,1],[],[[5423,2,203]]],[0,204,200,0,205,206,195,0,[1,5424,176],[],[[5424,2,308],[5600,2,208]]],[0,19,20,0,21,209,0,0,[1,5601,0],[],[[5601,2,210]]],[0,211,20,0,212,213,0,0,[1,5602,1],[],[[5603,2,214]]],[0,215,200,0,216,217,195,0,[1,5604,1],[],[[5605,2,309],[5605,2,219],[5605,2,310]]]],[[5606,2,310]]],[0,115,20,0,116,221,48,0,[1,5606,9],[[0,222,223,0,224,195,0,0,[1,5607,7],[[0,19,20,0,21,225,0,0,[1,5607,1],[],[[5608,2,225]]],[0,46,20,0,47,0,48,0,[1,5608,1],[],[[5609,2,49]]],[0,63,20,0,64,226,227,0,[1,5609,1],[],[[5610,2,228]]],[0,108,20,0,109,229,230,0,[1,5610,2],[[0,40,41,0,42,231,0,0,[1,5611,0],[],[]]],[[5611,2,113],[5611,2,311]]],[0,233,20,0,234,235,0,0,[1,5612,0],[],[]],[3,236,0,0,0,0,0,0,[1,5613,1],[[4,312,0,0,0,0,0,0,[1,5613,1],[[0,173,41,0,174,238,0,0,[1,5613,1],[],[]]],[]]],[]]],[]]],[[5615,2,313]]],[0,63,20,0,64,240,241,0,[1,5615,1],[],[[5616,2,242]]],[0,211,20,0,212,243,0,0,[1,5616,1],[],[[5617,2,214]]]],[[5617,2,242],[5617,2,313]]],[0,211,20,0,212,243,0,0,[1,5618,1],[],[[5618,2,214]]],[0,115,20,0,116,244,87,0,[1,5619,1],[[0,63,20,0,64,87,0,0,[1,5620,0],[],[]]],[[5620,2,297]]],[0,46,20,0,47,0,245,0,[1,5621,0],[],[[5621,2,246]]],[3,247,0,0,0,0,0,0,[1,5621,2],[[4,314,0,0,0,0,0,0,[1,5622,1],[[0,179,20,0,180,249,250,0,[1,5622,0],[],[[5622,2,315]]],[0,173,41,0,174,252,0,0,[1,5623,0],[],[]]],[]]],[]]],[[5624,2,313],[5624,2,315]]],[0,115,20,0,116,254,250,0,[1,5624,2],[[0,63,20,0,64,250,0,0,[1,5625,0],[],[]]],[[5625,2,315]]]],[[5626,2,313],[5626,2,315]]],[0,255,20,0,256,82,257,0,[1,5626,1],[],[[5627,2,316],[5627,2,317]]],[0,115,20,0,116,260,82,0,[1,5627,17],[[0,165,166,0,167,292,0,0,[1,5641,3],[[0,59,20,0,60,169,0,0,[1,5642,0],[],[]],[0,59,20,0,60,170,0,0,[1,5642,0],[],[]],[3,171,0,0,0,0,0,0,[1,5643,1],[[4,318,0,0,0,0,0,0,[1,5643,1],[[0,173,41,0,174,175,0,0,[1,5643,1],[],[]]],[]]],[]]],[]]],[[5644,2,319]]],[0,115,20,0,116,262,0,0,[1,5645,1],[[0,173,41,0,174,263,0,0,[1,5646,0],[],[]]],[]]],[]],[4,320,0,0,0,0,0,0,[1,5646,178],[[0,40,41,0,42,86,87,0,[1,5647,0],[],[[5647,2,321]]],[0,89,90,0,91,92,93,0,[1,5647,161],[[0,59,20,0,60,94,0,0,[1,5648,0],[],[]],[0,40,41,0,42,95,87,0,[1,5649,0],[],[[5649,2,321]]],[0,96,90,0,91,97,93,0,[1,5649,156],[[0,59,20,0,60,94,0,0,[1,5650,0],[],[]],[0,40,41,0,42,95,87,0,[1,5650,1],[],[[5651,2,321]]],[0,40,41,0,42,98,99,0,[1,5652,0],[],[[5652,2,322]]],[0,59,20,0,60,101,0,0,[1,5652,1],[],[]],[0,63,20,0,64,102,103,0,[1,5653,0],[],[[5653,2,104]]],[0,63,20,0,64,105,106,0,[1,5654,0],[],[[5654,2,107]]],[0,108,20,0,109,110,111,0,[1,5655,1],[[0,40,41,0,42,112,0,0,[1,5655,0],[],[]]],[[5655,2,113],[5656,2,323]]],[0,115,20,0,116,117,106,0,[1,5656,2],[[0,118,119,0,120,121,0,0,[1,5657,1],[],[]]],[[5658,2,324]]],[0,108,20,0,109,123,124,0,[1,5659,1],[[0,40,41,0,42,125,0,0,[1,5659,0],[],[]]],[[5659,2,113],[5660,2,325]]],[0,115,20,0,116,127,106,0,[1,5660,1],[[0,118,119,0,120,128,0,0,[1,5661,0],[],[]]],[[5661,2,326]]],[0,108,20,0,109,130,131,0,[1,5662,1],[[0,40,41,0,42,132,0,0,[0,5662,1],[],[[5663,5,133]]]],[[5663,2,134],[5663,2,135]]],[0,115,20,0,116,136,106,0,[1,5663,2],[[0,63,20,0,64,106,0,0,[1,5664,0],[],[]]],[[5665,2,326]]],[0,115,20,0,116,137,106,0,[1,5665,1],[[0,63,20,0,64,106,0,0,[1,5665,1],[],[]]],[[5666,2,326]]],[0,46,20,0,47,0,138,0,[1,5666,1],[],[[5667,2,139]]],[0,140,20,0,141,142,143,0,[1,5667,1],[],[[5668,2,144]]],[3,145,0,0,0,0,0,0,[1,5668,24],[[4,327,0,0,0,0,0,0,[1,5668,24],[[0,108,20,0,109,147,148,0,[1,5669,1],[[0,40,41,0,42,149,0,0,[1,5669,0],[],[]]],[[5670,2,113],[5670,2,328]]],[0,151,152,0,153,154,154,0,[1,5670,1],[],[[5671,2,329]]],[0,115,20,0,116,156,154,0,[1,5671,2],[[0,63,20,0,64,154,0,0,[1,5672,1],[],[]]],[[5673,2,329]]],[0,115,20,0,116,157,154,0,[1,5673,2],[[0,63,20,0,64,154,0,0,[1,5674,0],[],[]]],[[5675,2,329]]],[0,115,20,0,116,158,106,0,[1,5675,1],[[0,118,119,0,120,159,0,0,[1,5676,0],[],[]]],[[5676,2,326]]],[0,118,119,0,120,160,106,0,[1,5677,0],[],[[5677,2,326]]],[0,161,152,0,162,106,163,0,[1,5677,1],[],[[5678,2,330]]],[0,165,166,0,167,168,0,0,[1,5689,3],[[0,59,20,0,60,169,0,0,[1,5689,1],[],[]],[0,59,20,0,60,170,0,0,[1,5690,0],[],[]],[3,171,0,0,0,0,0,0,[1,5690,2],[[4,331,0,0,0,0,0,0,[1,5691,0],[[0,173,41,0,174,175,0,0,[1,5691,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,5693,0],[],[[5693,2,332]]],[0,183,90,0,0,97,184,0,[1,5693,105],[[0,59,20,0,60,185,0,0,[1,5694,0],[],[]],[0,59,20,0,60,186,0,0,[1,5695,0],[],[]],[0,40,41,0,42,187,188,0,[1,5695,1],[],[[5695,2,189]]],[0,151,152,0,153,190,191,0,[1,5696,0],[],[[5696,2,333]]],[0,193,166,0,0,194,195,0,[1,5697,83],[[0,63,20,0,64,196,197,0,[1,5697,1],[],[[5698,2,198]]],[0,199,200,0,201,202,0,0,[1,5698,1],[],[[5698,2,203]]],[0,204,200,0,205,206,195,0,[1,5699,74],[],[[5700,2,334],[5772,2,208]]],[0,19,20,0,21,209,0,0,[1,5773,2],[],[[5774,2,210]]],[0,211,20,0,212,213,0,0,[1,5775,2],[],[[5776,2,214]]],[0,215,200,0,216,217,195,0,[1,5777,2],[],[[5778,2,335],[5779,2,219],[5779,2,310]]]],[[5780,2,310]]],[0,115,20,0,116,221,48,0,[1,5781,14],[[0,222,223,0,224,195,0,0,[1,5782,12],[[0,19,20,0,21,225,0,0,[1,5783,1],[],[[5784,2,225]]],[0,46,20,0,47,0,48,0,[1,5785,1],[],[[5786,2,49]]],[0,63,20,0,64,226,227,0,[1,5787,1],[],[[5787,2,228]]],[0,108,20,0,109,229,230,0,[1,5788,2],[[0,40,41,0,42,231,0,0,[1,5789,1],[],[]]],[[5790,2,113],[5790,2,336]]],[0,233,20,0,234,235,0,0,[1,5791,1],[],[]],[3,236,0,0,0,0,0,0,[1,5792,2],[[4,337,0,0,0,0,0,0,[1,5792,2],[[0,173,41,0,174,238,0,0,[1,5793,0],[],[]]],[]]],[]]],[]]],[[5795,2,338]]],[0,63,20,0,64,240,241,0,[1,5795,1],[],[[5796,2,242]]],[0,211,20,0,212,243,0,0,[1,5797,0],[],[[5797,2,214]]]],[[5798,2,242],[5798,2,338]]],[0,211,20,0,212,243,0,0,[1,5799,0],[],[[5799,2,214]]],[0,115,20,0,116,244,87,0,[1,5800,1],[[0,63,20,0,64,87,0,0,[1,5800,1],[],[]]],[[5801,2,321]]],[0,46,20,0,47,0,245,0,[1,5801,1],[],[[5802,2,246]]],[3,247,0,0,0,0,0,0,[1,5802,3],[[4,339,0,0,0,0,0,0,[1,5802,2],[[0,179,20,0,180,249,250,0,[1,5803,1],[],[[5803,2,340]]],[0,173,41,0,174,252,0,0,[1,5804,0],[],[]]],[]]],[]]],[[5805,2,338],[5805,2,340]]],[0,115,20,0,116,254,250,0,[1,5806,1],[[0,63,20,0,64,250,0,0,[1,5806,1],[],[]]],[[5807,2,340]]]],[[5808,2,338],[5808,2,340]]],[0,255,20,0,256,82,257,0,[1,5808,1],[],[[5808,2,341],[5809,2,342]]],[0,115,20,0,116,260,82,0,[1,5809,13],[[0,165,166,0,167,292,0,0,[1,5819,3],[[0,59,20,0,60,169,0,0,[1,5820,0],[],[]],[0,59,20,0,60,170,0,0,[1,5820,0],[],[]],[3,171,0,0,0,0,0,0,[1,5821,1],[[4,343,0,0,0,0,0,0,[1,5821,1],[[0,173,41,0,174,175,0,0,[1,5821,1],[],[]]],[]]],[]]],[]]],[[5822,2,344]]],[0,115,20,0,116,262,0,0,[1,5823,1],[[0,173,41,0,174,263,0,0,[1,5824,0],[],[]]],[]]],[]],[4,345,0,0,0,0,0,0,[1,5824,361],[[0,40,41,0,42,86,87,0,[1,5825,0],[],[[5825,2,346]]],[0,89,90,0,91,92,93,0,[1,5825,338],[[0,59,20,0,60,94,0,0,[1,5826,0],[],[]],[0,40,41,0,42,95,87,0,[1,5826,1],[],[[5827,2,346]]],[0,96,90,0,91,97,93,0,[1,5827,334],[[0,59,20,0,60,94,0,0,[1,5828,0],[],[]],[0,40,41,0,42,95,87,0,[1,5828,1],[],[[5829,2,346]]],[0,40,41,0,42,98,99,0,[1,5829,1],[],[[5830,2,347]]],[0,59,20,0,60,101,0,0,[1,5830,1],[],[]],[0,63,20,0,64,102,103,0,[1,5831,1],[],[[5831,2,104]]],[0,63,20,0,64,105,106,0,[1,5832,0],[],[[5832,2,107]]],[0,108,20,0,109,110,111,0,[1,5833,1],[[0,40,41,0,42,112,0,0,[1,5833,1],[],[]]],[[5834,2,113],[5834,2,323]]],[0,115,20,0,116,117,106,0,[1,5835,1],[[0,118,119,0,120,121,0,0,[1,5835,0],[],[]]],[[5836,2,324]]],[0,108,20,0,109,123,124,0,[1,5836,2],[[0,40,41,0,42,125,0,0,[1,5837,0],[],[]]],[[5837,2,113],[5837,2,348]]],[0,115,20,0,116,127,106,0,[1,5838,1],[[0,118,119,0,120,128,0,0,[1,5838,1],[],[]]],[[5839,2,349]]],[0,108,20,0,109,130,131,0,[1,5839,2],[[0,40,41,0,42,132,0,0,[0,5840,0],[],[[5840,5,133]]]],[[5841,2,134],[5841,2,135]]],[0,115,20,0,116,136,106,0,[1,5841,1],[[0,63,20,0,64,106,0,0,[1,5842,0],[],[]]],[[5842,2,349]]],[0,115,20,0,116,137,106,0,[1,5843,1],[[0,63,20,0,64,106,0,0,[1,5843,1],[],[]]],[[5844,2,349]]],[0,46,20,0,47,0,138,0,[1,5844,1],[],[[5845,2,139]]],[0,140,20,0,141,142,143,0,[1,5845,1],[],[[5846,2,144]]],[3,145,0,0,0,0,0,0,[1,5846,25],[[4,350,0,0,0,0,0,0,[1,5846,25],[[0,108,20,0,109,147,148,0,[1,5847,1],[[0,40,41,0,42,149,0,0,[1,5847,0],[],[]]],[[5848,2,113],[5848,2,351]]],[0,151,152,0,153,154,154,0,[1,5848,1],[],[[5849,2,352]]],[0,115,20,0,116,156,154,0,[1,5849,1],[[0,63,20,0,64,154,0,0,[1,5850,0],[],[]]],[[5850,2,352]]],[0,115,20,0,116,157,154,0,[1,5850,2],[[0,63,20,0,64,154,0,0,[1,5851,0],[],[]]],[[5852,2,352]]],[0,115,20,0,116,158,106,0,[1,5852,1],[[0,118,119,0,120,159,0,0,[1,5853,0],[],[]]],[[5853,2,349]]],[0,118,119,0,120,160,106,0,[1,5854,0],[],[[5854,2,349]]],[0,161,152,0,162,106,163,0,[1,5854,1],[],[[5855,2,353]]],[0,165,166,0,167,168,0,0,[1,5867,4],[[0,59,20,0,60,169,0,0,[1,5868,0],[],[]],[0,59,20,0,60,170,0,0,[1,5868,1],[],[]],[3,171,0,0,0,0,0,0,[1,5869,1],[[4,354,0,0,0,0,0,0,[1,5869,1],[[0,173,41,0,174,175,0,0,[1,5870,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,5871,1],[],[[5872,2,355]]],[0,183,90,0,0,97,184,0,[1,5872,283],[[0,59,20,0,60,185,0,0,[1,5873,0],[],[]],[0,59,20,0,60,186,0,0,[1,5874,0],[],[]],[0,40,41,0,42,187,188,0,[1,5874,1],[],[[5875,2,189]]],[0,151,152,0,153,190,191,0,[1,5875,1],[],[[5876,2,356]]],[0,193,166,0,0,194,195,0,[1,5876,269],[[0,63,20,0,64,196,197,0,[1,5877,0],[],[[5877,2,198]]],[0,199,200,0,201,202,0,0,[1,5877,2],[],[[5878,2,203]]],[0,204,200,0,205,206,195,0,[1,5879,254],[],[[5880,2,357],[6132,2,208]]],[0,19,20,0,21,209,0,0,[1,6135,3],[],[[6137,2,210]]],[0,211,20,0,212,213,0,0,[1,6141,2],[],[[6142,2,214]]],[0,215,200,0,216,217,195,0,[1,6144,1],[],[[6144,2,358],[6145,2,219],[6145,2,359]]]],[[6145,2,359]]],[0,115,20,0,116,221,48,0,[1,6146,7],[[0,222,223,0,224,195,0,0,[1,6146,7],[[0,19,20,0,21,225,0,0,[1,6147,0],[],[[6147,2,225]]],[0,46,20,0,47,0,48,0,[1,6147,1],[],[[6148,2,49]]],[0,63,20,0,64,226,227,0,[1,6148,1],[],[[6148,2,228]]],[0,108,20,0,109,229,230,0,[1,6149,1],[[0,40,41,0,42,231,0,0,[1,6149,1],[],[]]],[[6150,2,113],[6150,2,360]]],[0,233,20,0,234,235,0,0,[1,6150,1],[],[]],[3,236,0,0,0,0,0,0,[1,6151,1],[[4,361,0,0,0,0,0,0,[1,6151,1],[[0,173,41,0,174,238,0,0,[1,6152,0],[],[]]],[]]],[]]],[]]],[[6153,2,362]]],[0,63,20,0,64,240,241,0,[1,6153,1],[],[[6154,2,242]]],[0,211,20,0,212,243,0,0,[1,6154,1],[],[[6154,2,214]]]],[[6155,2,242],[6155,2,362]]],[0,211,20,0,212,243,0,0,[1,6155,1],[],[[6156,2,214]]],[0,115,20,0,116,244,87,0,[1,6156,1],[[0,63,20,0,64,87,0,0,[1,6157,0],[],[]]],[[6157,2,346]]],[0,46,20,0,47,0,245,0,[1,6158,0],[],[[6158,2,246]]],[3,247,0,0,0,0,0,0,[1,6158,2],[[4,363,0,0,0,0,0,0,[1,6158,2],[[0,179,20,0,180,249,250,0,[1,6159,0],[],[[6159,2,364]]],[0,173,41,0,174,252,0,0,[1,6160,0],[],[]]],[]]],[]]],[[6161,2,362],[6161,2,364]]],[0,115,20,0,116,254,250,0,[1,6161,2],[[0,63,20,0,64,250,0,0,[1,6162,0],[],[]]],[[6163,2,364]]]],[[6163,2,362],[6163,2,364]]],[0,255,20,0,256,82,257,0,[1,6163,1],[],[[6164,2,365],[6164,2,366]]],[0,115,20,0,116,260,82,0,[1,6164,19],[[0,165,166,0,167,292,0,0,[1,6179,4],[[0,59,20,0,60,169,0,0,[1,6180,0],[],[]],[0,59,20,0,60,170,0,0,[1,6181,0],[],[]],[3,171,0,0,0,0,0,0,[1,6181,1],[[4,367,0,0,0,0,0,0,[1,6181,1],[[0,173,41,0,174,175,0,0,[1,6182,0],[],[]]],[]]],[]]],[]]],[[6183,2,368]]],[0,115,20,0,116,262,0,0,[1,6183,2],[[0,173,41,0,174,263,0,0,[1,6184,0],[],[]]],[]]],[]],[4,369,0,0,0,0,0,0,[1,6185,1427],[[0,40,41,0,42,86,87,0,[1,6186,0],[],[[6186,2,370]]],[0,89,90,0,91,92,93,0,[1,6187,1407],[[0,59,20,0,60,94,0,0,[1,6187,0],[],[]],[0,40,41,0,42,95,87,0,[1,6188,0],[],[[6188,2,370]]],[0,96,90,0,91,97,93,0,[1,6189,1403],[[0,59,20,0,60,94,0,0,[1,6189,0],[],[]],[0,40,41,0,42,95,87,0,[1,6190,0],[],[[6190,2,370]]],[0,40,41,0,42,98,99,0,[1,6190,1],[],[[6191,2,371]]],[0,59,20,0,60,101,0,0,[1,6191,0],[],[]],[0,63,20,0,64,102,103,0,[1,6192,0],[],[[6192,2,104]]],[0,63,20,0,64,105,106,0,[1,6193,0],[],[[6193,2,107]]],[0,108,20,0,109,110,111,0,[1,6193,2],[[0,40,41,0,42,112,0,0,[1,6194,0],[],[]]],[[6194,2,113],[6194,2,372]]],[0,115,20,0,116,117,106,0,[1,6195,1],[[0,118,119,0,120,121,0,0,[1,6195,1],[],[]]],[[6196,2,373]]],[0,108,20,0,109,123,124,0,[1,6196,2],[[0,40,41,0,42,125,0,0,[1,6197,0],[],[]]],[[6197,2,113],[6197,2,374]]],[0,115,20,0,116,127,106,0,[1,6198,1],[[0,118,119,0,120,128,0,0,[1,6198,1],[],[]]],[[6199,2,375]]],[0,108,20,0,109,130,131,0,[1,6199,2],[[0,40,41,0,42,132,0,0,[0,6200,0],[],[[6200,5,133]]]],[[6201,2,134],[6201,2,135]]],[0,115,20,0,116,136,106,0,[1,6201,2],[[0,63,20,0,64,106,0,0,[1,6202,1],[],[]]],[[6203,2,375]]],[0,115,20,0,116,137,106,0,[1,6204,1],[[0,63,20,0,64,106,0,0,[1,6204,1],[],[]]],[[6205,2,375]]],[0,46,20,0,47,0,138,0,[1,6205,1],[],[[6206,2,139]]],[0,140,20,0,141,142,143,0,[1,6206,1],[],[[6206,2,144]]],[3,145,0,0,0,0,0,0,[1,6207,22],[[4,376,0,0,0,0,0,0,[1,6207,22],[[0,108,20,0,109,147,148,0,[1,6207,2],[[0,40,41,0,42,149,0,0,[1,6208,0],[],[]]],[[6208,2,113],[6209,2,377]]],[0,151,152,0,153,154,154,0,[1,6209,0],[],[[6209,2,378]]],[0,115,20,0,116,156,154,0,[1,6210,1],[[0,63,20,0,64,154,0,0,[1,6210,1],[],[]]],[[6211,2,378]]],[0,115,20,0,116,157,154,0,[1,6211,1],[[0,63,20,0,64,154,0,0,[1,6212,0],[],[]]],[[6212,2,378]]],[0,115,20,0,116,158,106,0,[1,6213,1],[[0,118,119,0,120,159,0,0,[1,6213,1],[],[]]],[[6214,2,375]]],[0,118,119,0,120,160,106,0,[1,6214,1],[],[[6215,2,375]]],[0,161,152,0,162,106,163,0,[1,6215,1],[],[[6215,2,379]]],[0,165,166,0,167,168,0,0,[1,6226,3],[[0,59,20,0,60,169,0,0,[1,6227,0],[],[]],[0,59,20,0,60,170,0,0,[1,6227,0],[],[]],[3,171,0,0,0,0,0,0,[1,6228,1],[[4,380,0,0,0,0,0,0,[1,6228,1],[[0,173,41,0,174,175,0,0,[1,6228,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,6230,0],[],[[6230,2,381]]],[0,183,90,0,0,97,184,0,[1,6231,1355],[[0,59,20,0,60,185,0,0,[1,6231,0],[],[]],[0,59,20,0,60,186,0,0,[1,6232,0],[],[]],[0,40,41,0,42,187,188,0,[1,6232,1],[],[[6232,2,189]]],[0,151,152,0,153,190,191,0,[1,6233,0],[],[[6233,2,382]]],[0,193,166,0,0,194,195,0,[1,6234,1343],[[0,63,20,0,64,196,197,0,[1,6234,2],[],[[6235,2,198]]],[0,199,200,0,201,202,0,0,[1,6236,1],[],[[6237,2,203]]],[0,204,200,0,205,206,195,0,[1,6237,1336],[],[[6238,2,383],[7573,2,208]]],[0,19,20,0,21,209,0,0,[1,7573,1],[],[[7574,2,210]]],[0,211,20,0,212,213,0,0,[1,7574,1],[],[[7575,2,214]]],[0,215,200,0,216,217,195,0,[1,7575,1],[],[[7576,2,384],[7576,2,219],[7576,2,385]]]],[[7576,2,385]]],[0,115,20,0,116,221,48,0,[1,7577,7],[[0,222,223,0,224,195,0,0,[1,7577,7],[[0,19,20,0,21,225,0,0,[1,7578,0],[],[[7578,2,225]]],[0,46,20,0,47,0,48,0,[1,7579,0],[],[[7579,2,49]]],[0,63,20,0,64,226,227,0,[1,7579,1],[],[[7579,2,228]]],[0,108,20,0,109,229,230,0,[1,7580,1],[[0,40,41,0,42,231,0,0,[1,7580,1],[],[]]],[[7581,2,113],[7581,2,386]]],[0,233,20,0,234,235,0,0,[1,7582,0],[],[]],[3,236,0,0,0,0,0,0,[1,7582,1],[[4,387,0,0,0,0,0,0,[1,7582,1],[[0,173,41,0,174,238,0,0,[1,7583,0],[],[]]],[]]],[]]],[]]],[[7584,2,388]]],[0,63,20,0,64,240,241,0,[1,7584,1],[],[[7585,2,242]]],[0,211,20,0,212,243,0,0,[1,7585,1],[],[[7585,2,214]]]],[[7586,2,242],[7586,2,388]]],[0,211,20,0,212,243,0,0,[1,7587,0],[],[[7587,2,214]]],[0,115,20,0,116,244,87,0,[1,7587,2],[[0,63,20,0,64,87,0,0,[1,7588,0],[],[]]],[[7589,2,370]]],[0,46,20,0,47,0,245,0,[1,7589,0],[],[[7589,2,246]]],[3,247,0,0,0,0,0,0,[1,7590,2],[[4,389,0,0,0,0,0,0,[1,7590,1],[[0,179,20,0,180,249,250,0,[1,7590,1],[],[[7590,2,390]]],[0,173,41,0,174,252,0,0,[1,7591,0],[],[]]],[]]],[]]],[[7592,2,388],[7592,2,390]]],[0,115,20,0,116,254,250,0,[1,7592,2],[[0,63,20,0,64,250,0,0,[1,7593,0],[],[]]],[[7594,2,390]]]],[[7594,2,388],[7594,2,390]]],[0,255,20,0,256,82,257,0,[1,7595,0],[],[[7595,2,391],[7595,2,392]]],[0,115,20,0,116,260,82,0,[1,7596,14],[[0,165,166,0,167,292,0,0,[1,7606,3],[[0,59,20,0,60,169,0,0,[1,7606,1],[],[]],[0,59,20,0,60,170,0,0,[1,7607,0],[],[]],[3,171,0,0,0,0,0,0,[1,7607,2],[[4,393,0,0,0,0,0,0,[1,7608,0],[[0,173,41,0,174,175,0,0,[1,7608,0],[],[]]],[]]],[]]],[]]],[[7610,2,394]]],[0,115,20,0,116,262,0,0,[1,7610,2],[[0,173,41,0,174,263,0,0,[1,7611,0],[],[]]],[]]],[]],[4,395,0,0,0,0,0,0,[1,7612,446],[[0,40,41,0,42,86,87,0,[1,7612,1],[],[[7613,2,265]]],[0,89,90,0,91,92,93,0,[1,7613,429],[[0,59,20,0,60,94,0,0,[1,7614,0],[],[]],[0,40,41,0,42,95,87,0,[1,7614,1],[],[[7614,2,265]]],[0,96,90,0,91,97,93,0,[1,7615,423],[[0,59,20,0,60,94,0,0,[1,7615,1],[],[]],[0,40,41,0,42,95,87,0,[1,7616,0],[],[[7616,2,265]]],[0,40,41,0,42,98,99,0,[1,7617,0],[],[[7617,2,396]]],[0,59,20,0,60,101,0,0,[1,7617,1],[],[]],[0,63,20,0,64,102,103,0,[1,7618,0],[],[[7618,2,104]]],[0,63,20,0,64,105,106,0,[1,7619,0],[],[[7619,2,107]]],[0,108,20,0,109,110,111,0,[1,7619,1],[[0,40,41,0,42,112,0,0,[1,7620,0],[],[]]],[[7620,2,113],[7620,2,267]]],[0,115,20,0,116,117,106,0,[1,7621,1],[[0,118,119,0,120,121,0,0,[1,7621,1],[],[]]],[[7622,2,268]]],[0,108,20,0,109,123,124,0,[1,7622,1],[[0,40,41,0,42,125,0,0,[1,7623,0],[],[]]],[[7623,2,113],[7623,2,397]]],[0,115,20,0,116,127,106,0,[1,7624,1],[[0,118,119,0,120,128,0,0,[1,7624,1],[],[]]],[[7625,2,398]]],[0,108,20,0,109,130,131,0,[1,7625,2],[[0,40,41,0,42,132,0,0,[0,7626,0],[],[[7626,5,133]]]],[[7627,2,134],[7627,2,135]]],[0,115,20,0,116,136,106,0,[1,7627,1],[[0,63,20,0,64,106,0,0,[1,7628,0],[],[]]],[[7628,2,398]]],[0,115,20,0,116,137,106,0,[1,7629,1],[[0,63,20,0,64,106,0,0,[1,7629,0],[],[]]],[[7630,2,398]]],[0,46,20,0,47,0,138,0,[1,7630,0],[],[[7630,2,139]]],[0,140,20,0,141,142,143,0,[1,7631,1],[],[[7632,2,144]]],[3,145,0,0,0,0,0,0,[1,7632,25],[[4,399,0,0,0,0,0,0,[1,7633,24],[[0,108,20,0,109,147,148,0,[1,7633,1],[[0,40,41,0,42,149,0,0,[1,7633,1],[],[]]],[[7634,2,113],[7634,2,400]]],[0,151,152,0,153,154,154,0,[1,7635,0],[],[[7635,2,401]]],[0,115,20,0,116,156,154,0,[1,7636,1],[[0,118,119,0,120,402,0,0,[1,7637,0],[],[]]],[[7637,2,403]]],[0,115,20,0,116,157,154,0,[1,7638,1],[[0,118,119,0,120,404,0,0,[1,7638,1],[],[]]],[[7639,2,405]]],[0,115,20,0,116,158,106,0,[1,7639,2],[[0,118,119,0,120,406,0,0,[1,7640,0],[],[]]],[[7640,2,398]]],[0,118,119,0,120,160,106,0,[1,7641,1],[],[[7641,2,398]]],[0,161,152,0,162,106,163,0,[1,7642,0],[],[[7642,2,407]]],[0,165,166,0,167,168,0,0,[1,7652,4],[[0,59,20,0,60,169,0,0,[1,7653,0],[],[]],[0,59,20,0,60,170,0,0,[1,7653,1],[],[]],[3,171,0,0,0,0,0,0,[1,7654,2],[[4,408,0,0,0,0,0,0,[1,7654,1],[[0,173,41,0,174,175,0,0,[1,7654,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,7657,1],[],[[7658,2,409]]],[0,183,90,0,0,97,184,0,[1,7658,369],[[0,59,20,0,60,185,0,0,[1,7659,0],[],[]],[0,59,20,0,60,186,0,0,[1,7659,1],[],[]],[0,40,41,0,42,187,188,0,[1,7660,1],[],[[7661,2,189]]],[0,151,152,0,153,190,191,0,[1,7661,1],[],[[7662,2,410]]],[0,193,166,0,0,194,195,0,[1,7663,350],[[0,63,20,0,64,196,197,0,[1,7664,1],[],[[7665,2,198]]],[0,199,200,0,201,202,0,0,[1,7665,1],[],[[7666,2,203]]],[0,204,200,0,205,206,195,0,[1,7667,342],[],[[7667,2,411],[8009,2,208]]],[0,19,20,0,21,209,0,0,[1,8009,1],[],[[8010,2,210]]],[0,211,20,0,212,213,0,0,[1,8010,1],[],[[8011,2,214]]],[0,215,200,0,216,217,195,0,[1,8011,1],[],[[8012,2,412],[8012,2,219],[8012,2,413]]]],[[8013,2,413]]],[0,115,20,0,116,221,48,0,[1,8013,10],[[0,222,223,0,224,195,0,0,[1,8014,9],[[0,19,20,0,21,225,0,0,[1,8014,1],[],[[8015,2,225]]],[0,46,20,0,47,0,48,0,[1,8015,1],[],[[8015,2,49]]],[0,63,20,0,64,226,227,0,[1,8016,1],[],[[8016,2,228]]],[0,108,20,0,109,229,230,0,[1,8017,2],[[0,40,41,0,42,231,0,0,[1,8017,1],[],[]]],[[8018,2,113],[8018,2,414]]],[0,233,20,0,234,235,0,0,[1,8019,0],[],[]],[3,236,0,0,0,0,0,0,[1,8020,2],[[4,415,0,0,0,0,0,0,[1,8020,2],[[0,173,41,0,174,238,0,0,[1,8021,1],[],[]]],[]]],[]]],[]]],[[8023,2,416]]],[0,63,20,0,64,240,241,0,[1,8024,1],[],[[8024,2,242]]],[0,211,20,0,212,243,0,0,[1,8025,1],[],[[8026,2,214]]]],[[8027,2,242],[8027,2,416]]],[0,211,20,0,212,243,0,0,[1,8028,0],[],[[8028,2,214]]],[0,115,20,0,116,244,87,0,[1,8029,3],[[0,63,20,0,64,87,0,0,[1,8030,1],[],[]]],[[8031,2,265]]],[0,46,20,0,47,0,245,0,[1,8032,1],[],[[8033,2,246]]],[3,247,0,0,0,0,0,0,[1,8033,4],[[4,417,0,0,0,0,0,0,[1,8034,3],[[0,179,20,0,180,249,250,0,[1,8034,1],[],[[8035,2,418]]],[0,173,41,0,174,252,0,0,[1,8036,0],[],[]]],[]]],[]]],[[8038,2,416],[8038,2,418]]],[0,115,20,0,116,254,250,0,[1,8039,2],[[0,63,20,0,64,250,0,0,[1,8040,0],[],[]]],[[8041,2,418]]]],[[8041,2,416],[8041,2,418]]],[0,255,20,0,256,82,257,0,[1,8042,0],[],[[8042,2,419],[8042,2,420]]],[0,115,20,0,116,260,82,0,[1,8043,13],[[0,165,166,0,167,292,0,0,[1,8052,4],[[0,59,20,0,60,169,0,0,[1,8053,0],[],[]],[0,59,20,0,60,170,0,0,[1,8054,0],[],[]],[3,171,0,0,0,0,0,0,[1,8054,1],[[4,421,0,0,0,0,0,0,[1,8054,1],[[0,173,41,0,174,175,0,0,[1,8055,0],[],[]]],[]]],[]]],[]]],[[8056,2,422]]],[0,115,20,0,116,262,0,0,[1,8056,2],[[0,173,41,0,174,263,0,0,[1,8057,0],[],[]]],[]]],[]],[4,423,0,0,0,0,0,0,[1,8058,2413],[[0,40,41,0,42,86,87,0,[1,8058,1],[],[[8059,2,424]]],[0,89,90,0,91,92,93,0,[1,8059,2395],[[0,59,20,0,60,94,0,0,[1,8059,1],[],[]],[0,40,41,0,42,95,87,0,[1,8060,0],[],[[8060,2,424]]],[0,96,90,0,91,97,93,0,[1,8061,2390],[[0,59,20,0,60,94,0,0,[1,8061,0],[],[]],[0,40,41,0,42,95,87,0,[1,8062,0],[],[[8062,2,424]]],[0,40,41,0,42,98,99,0,[1,8062,1],[],[[8063,2,425]]],[0,59,20,0,60,101,0,0,[1,8064,0],[],[]],[0,63,20,0,64,102,103,0,[1,8064,1],[],[[8064,2,104]]],[0,63,20,0,64,105,106,0,[1,8065,0],[],[[8065,2,107]]],[0,108,20,0,109,110,111,0,[1,8066,1],[[0,40,41,0,42,112,0,0,[0,8066,1],[],[[8067,5,426]]]],[[8067,2,134],[8067,2,427]]],[0,115,20,0,116,117,106,0,[1,8068,1],[[0,63,20,0,64,106,0,0,[1,8068,0],[],[]]],[[8069,2,107]]],[0,108,20,0,109,123,124,0,[1,8069,2],[[0,40,41,0,42,125,0,0,[0,8069,1],[],[[8070,5,428]]]],[[8070,2,134],[8071,2,429]]],[0,115,20,0,116,127,106,0,[1,8071,1],[[0,63,20,0,64,106,0,0,[1,8072,0],[],[]]],[[8072,2,107]]],[0,108,20,0,109,130,131,0,[1,8073,1],[[0,40,41,0,42,132,0,0,[0,8073,1],[],[[8073,5,133]]]],[[8074,2,134],[8074,2,135]]],[0,115,20,0,116,136,106,0,[1,8074,2],[[0,63,20,0,64,106,0,0,[1,8075,0],[],[]]],[[8075,2,107]]],[0,115,20,0,116,137,106,0,[1,8076,1],[[0,63,20,0,64,106,0,0,[1,8076,1],[],[]]],[[8077,2,107]]],[0,46,20,0,47,0,138,0,[1,8077,1],[],[[8078,2,139]]],[0,140,20,0,141,142,143,0,[1,8078,1],[],[[8079,2,144]]],[3,145,0,0,0,0,0,0,[1,8079,23],[[4,430,0,0,0,0,0,0,[1,8079,23],[[0,108,20,0,109,147,148,0,[1,8080,1],[[0,40,41,0,42,149,0,0,[1,8080,0],[],[]]],[[8081,2,113],[8081,2,431]]],[0,151,152,0,153,154,154,0,[1,8081,1],[],[[8082,2,432]]],[0,115,20,0,116,156,154,0,[1,8082,1],[[0,63,20,0,64,154,0,0,[1,8082,1],[],[]]],[[8083,2,432]]],[0,115,20,0,116,157,154,0,[1,8083,2],[[0,63,20,0,64,154,0,0,[1,8084,0],[],[]]],[[8084,2,432]]],[0,115,20,0,116,158,106,0,[1,8085,1],[[0,118,119,0,120,159,0,0,[1,8085,1],[],[]]],[[8086,2,107]]],[0,118,119,0,120,160,106,0,[1,8087,0],[],[[8087,2,107]]],[0,161,152,0,162,106,163,0,[1,8087,1],[],[[8088,2,274]]],[0,165,166,0,167,168,0,0,[1,8099,3],[[0,59,20,0,60,169,0,0,[1,8099,1],[],[]],[0,59,20,0,60,170,0,0,[1,8100,0],[],[]],[3,171,0,0,0,0,0,0,[1,8100,2],[[4,275,0,0,0,0,0,0,[1,8101,1],[[0,173,41,0,174,175,0,0,[1,8101,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,8103,0],[],[[8103,2,279]]],[0,183,90,0,0,97,184,0,[1,8104,2340],[[0,59,20,0,60,185,0,0,[1,8104,0],[],[]],[0,59,20,0,60,186,0,0,[1,8105,0],[],[]],[0,40,41,0,42,187,188,0,[1,8105,1],[],[[8106,2,189]]],[0,151,152,0,153,190,191,0,[1,8106,0],[],[[8106,2,280]]],[0,193,166,0,0,194,195,0,[1,8107,2322],[[0,63,20,0,64,196,197,0,[1,8107,1],[],[[8107,2,198]]],[0,199,200,0,201,202,0,0,[1,8108,1],[],[[8108,2,203]]],[0,204,200,0,205,206,195,0,[1,8109,2307],[],[[8110,2,433],[10415,2,208]]],[0,19,20,0,21,209,0,0,[1,10418,3],[],[[10420,2,210]]],[0,211,20,0,212,213,0,0,[1,10422,2],[],[[10423,2,214]]],[0,215,200,0,216,217,195,0,[1,10425,3],[],[[10426,2,434],[10427,2,219],[10427,2,435]]]],[[10429,2,435]]],[0,115,20,0,116,221,48,0,[1,10430,12],[[0,222,223,0,224,195,0,0,[1,10431,11],[[0,19,20,0,21,225,0,0,[1,10432,1],[],[[10432,2,225]]],[0,46,20,0,47,0,48,0,[1,10433,1],[],[[10434,2,49]]],[0,63,20,0,64,226,227,0,[1,10435,0],[],[[10435,2,228]]],[0,108,20,0,109,229,230,0,[1,10436,2],[[0,40,41,0,42,231,0,0,[1,10437,1],[],[]]],[[10438,2,113],[10438,2,436]]],[0,233,20,0,234,235,0,0,[1,10438,0],[],[]],[3,236,0,0,0,0,0,0,[1,10440,2],[[4,437,0,0,0,0,0,0,[1,10440,1],[[0,173,41,0,174,238,0,0,[1,10441,0],[],[]]],[]]],[]]],[]]],[[10442,2,438]]],[0,63,20,0,64,240,241,0,[1,10442,1],[],[[10442,2,242]]],[0,211,20,0,212,243,0,0,[1,10443,1],[],[[10443,2,214]]]],[[10444,2,242],[10444,2,438]]],[0,211,20,0,212,243,0,0,[1,10445,0],[],[[10445,2,214]]],[0,115,20,0,116,244,87,0,[1,10446,1],[[0,63,20,0,64,87,0,0,[1,10446,1],[],[]]],[[10447,2,424]]],[0,46,20,0,47,0,245,0,[1,10448,0],[],[[10448,2,246]]],[3,247,0,0,0,0,0,0,[1,10448,3],[[4,439,0,0,0,0,0,0,[1,10449,2],[[0,179,20,0,180,249,250,0,[1,10449,1],[],[[10449,2,440]]],[0,173,41,0,174,252,0,0,[1,10450,0],[],[]]],[]]],[]]],[[10451,2,438],[10451,2,440]]],[0,115,20,0,116,254,250,0,[1,10452,1],[[0,63,20,0,64,250,0,0,[1,10452,1],[],[]]],[[10453,2,440]]]],[[10453,2,438],[10454,2,440]]],[0,255,20,0,256,82,257,0,[1,10454,1],[],[[10454,2,441],[10455,2,442]]],[0,115,20,0,116,260,82,0,[1,10455,14],[[0,165,166,0,167,292,0,0,[1,10465,3],[[0,59,20,0,60,169,0,0,[1,10465,1],[],[]],[0,59,20,0,60,170,0,0,[1,10466,0],[],[]],[3,171,0,0,0,0,0,0,[1,10466,2],[[4,443,0,0,0,0,0,0,[1,10467,0],[[0,173,41,0,174,175,0,0,[1,10467,0],[],[]]],[]]],[]]],[]]],[[10469,2,444]]],[0,115,20,0,116,262,0,0,[1,10469,1],[[0,173,41,0,174,445,0,0,[1,10470,0],[],[]]],[]]],[]],[4,446,0,0,0,0,0,0,[1,10471,259],[[0,40,41,0,42,86,87,0,[1,10471,1],[],[[10471,2,447]]],[0,89,90,0,91,92,93,0,[1,10472,240],[[0,59,20,0,60,94,0,0,[1,10472,1],[],[]],[0,40,41,0,42,95,87,0,[1,10473,0],[],[[10473,2,447]]],[0,96,90,0,91,97,93,0,[1,10474,236],[[0,59,20,0,60,94,0,0,[1,10474,1],[],[]],[0,40,41,0,42,95,87,0,[1,10475,0],[],[[10475,2,447]]],[0,40,41,0,42,98,99,0,[1,10476,0],[],[[10476,2,448]]],[0,59,20,0,60,101,0,0,[1,10476,1],[],[]],[0,63,20,0,64,102,103,0,[1,10477,0],[],[[10477,2,104]]],[0,63,20,0,64,105,106,0,[1,10478,0],[],[[10478,2,107]]],[0,108,20,0,109,110,111,0,[1,10479,1],[[0,40,41,0,42,112,0,0,[0,10479,1],[],[[10479,5,426]]]],[[10480,2,134],[10480,2,427]]],[0,115,20,0,116,117,106,0,[1,10480,1],[[0,63,20,0,64,106,0,0,[1,10481,0],[],[]]],[[10481,2,107]]],[0,108,20,0,109,123,124,0,[1,10482,1],[[0,40,41,0,42,125,0,0,[1,10482,0],[],[]]],[[10483,2,113],[10483,2,299]]],[0,115,20,0,116,127,106,0,[1,10483,2],[[0,118,119,0,120,128,0,0,[1,10484,0],[],[]]],[[10485,2,449]]],[0,108,20,0,109,130,131,0,[1,10485,2],[[0,40,41,0,42,132,0,0,[0,10485,1],[],[[10486,5,133]]]],[[10486,2,134],[10486,2,135]]],[0,115,20,0,116,136,106,0,[1,10487,1],[[0,63,20,0,64,106,0,0,[1,10487,1],[],[]]],[[10488,2,449]]],[0,115,20,0,116,137,106,0,[1,10488,2],[[0,63,20,0,64,106,0,0,[1,10489,0],[],[]]],[[10490,2,449]]],[0,46,20,0,47,0,138,0,[1,10490,0],[],[[10490,2,139]]],[0,140,20,0,141,142,143,0,[1,10491,0],[],[[10491,2,144]]],[3,145,0,0,0,0,0,0,[1,10491,23],[[4,450,0,0,0,0,0,0,[1,10492,22],[[0,108,20,0,109,147,148,0,[1,10492,1],[[0,40,41,0,42,149,0,0,[1,10492,1],[],[]]],[[10493,2,113],[10493,2,451]]],[0,151,152,0,153,154,154,0,[1,10493,1],[],[[10494,2,452]]],[0,115,20,0,116,156,154,0,[1,10494,2],[[0,63,20,0,64,154,0,0,[1,10495,0],[],[]]],[[10495,2,452]]],[0,115,20,0,116,157,154,0,[1,10496,1],[[0,63,20,0,64,154,0,0,[1,10496,1],[],[]]],[[10497,2,452]]],[0,115,20,0,116,158,106,0,[1,10497,2],[[0,118,119,0,120,159,0,0,[1,10498,1],[],[]]],[[10499,2,449]]],[0,118,119,0,120,160,106,0,[1,10499,1],[],[[10500,2,449]]],[0,161,152,0,162,106,163,0,[1,10500,1],[],[[10500,2,304]]],[0,165,166,0,167,168,0,0,[1,10511,3],[[0,59,20,0,60,169,0,0,[1,10511,1],[],[]],[0,59,20,0,60,170,0,0,[1,10512,0],[],[]],[3,171,0,0,0,0,0,0,[1,10513,1],[[4,305,0,0,0,0,0,0,[1,10513,1],[[0,173,41,0,174,175,0,0,[1,10513,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,10515,1],[],[[10516,2,306]]],[0,183,90,0,0,97,184,0,[1,10516,187],[[0,59,20,0,60,185,0,0,[1,10517,0],[],[]],[0,59,20,0,60,186,0,0,[1,10517,1],[],[]],[0,40,41,0,42,187,188,0,[1,10518,1],[],[[10518,2,189]]],[0,151,152,0,153,190,191,0,[1,10519,0],[],[[10519,2,307]]],[0,193,166,0,0,194,195,0,[1,10520,172],[[0,63,20,0,64,196,197,0,[1,10520,1],[],[[10521,2,198]]],[0,199,200,0,201,202,0,0,[1,10521,1],[],[[10522,2,203]]],[0,204,200,0,205,206,195,0,[1,10522,165],[],[[10523,2,453],[10687,2,208]]],[0,19,20,0,21,209,0,0,[1,10688,1],[],[[10689,2,210]]],[0,211,20,0,212,213,0,0,[1,10690,0],[],[[10690,2,214]]],[0,215,200,0,216,217,195,0,[1,10691,1],[],[[10691,2,454],[10691,2,219],[10691,2,455]]]],[[10692,2,455]]],[0,115,20,0,116,221,48,0,[1,10693,8],[[0,222,223,0,224,195,0,0,[1,10693,8],[[0,19,20,0,21,225,0,0,[1,10694,0],[],[[10694,2,225]]],[0,46,20,0,47,0,48,0,[1,10695,0],[],[[10695,2,49]]],[0,63,20,0,64,226,227,0,[1,10695,1],[],[[10696,2,228]]],[0,108,20,0,109,229,230,0,[1,10696,2],[[0,40,41,0,42,231,0,0,[1,10697,1],[],[]]],[[10698,2,113],[10698,2,456]]],[0,233,20,0,234,235,0,0,[1,10699,0],[],[]],[3,236,0,0,0,0,0,0,[1,10699,1],[[4,457,0,0,0,0,0,0,[1,10699,1],[[0,173,41,0,174,238,0,0,[1,10700,0],[],[]]],[]]],[]]],[]]],[[10701,2,458]]],[0,63,20,0,64,240,241,0,[1,10701,1],[],[[10702,2,242]]],[0,211,20,0,212,243,0,0,[1,10702,1],[],[[10702,2,214]]]],[[10703,2,242],[10703,2,458]]],[0,211,20,0,212,243,0,0,[1,10704,0],[],[[10704,2,214]]],[0,115,20,0,116,244,87,0,[1,10705,1],[[0,63,20,0,64,87,0,0,[1,10705,1],[],[]]],[[10706,2,447]]],[0,46,20,0,47,0,245,0,[1,10706,1],[],[[10707,2,246]]],[3,247,0,0,0,0,0,0,[1,10707,2],[[4,459,0,0,0,0,0,0,[1,10707,2],[[0,179,20,0,180,249,250,0,[1,10707,1],[],[[10708,2,460]]],[0,173,41,0,174,252,0,0,[1,10708,1],[],[]]],[]]],[]]],[[10709,2,458],[10710,2,460]]],[0,115,20,0,116,254,250,0,[1,10710,1],[[0,63,20,0,64,250,0,0,[1,10711,0],[],[]]],[[10711,2,460]]]],[[10712,2,458],[10712,2,460]]],[0,255,20,0,256,82,257,0,[1,10712,1],[],[[10713,2,461],[10713,2,462]]],[0,115,20,0,116,260,82,0,[1,10713,15],[[0,165,166,0,167,292,0,0,[1,10725,3],[[0,59,20,0,60,169,0,0,[1,10725,1],[],[]],[0,59,20,0,60,170,0,0,[1,10726,0],[],[]],[3,171,0,0,0,0,0,0,[1,10726,1],[[4,463,0,0,0,0,0,0,[1,10727,0],[[0,173,41,0,174,175,0,0,[1,10727,0],[],[]]],[]]],[]]],[]]],[[10728,2,464]]],[0,115,20,0,116,262,0,0,[1,10728,2],[[0,173,41,0,174,445,0,0,[1,10729,1],[],[]]],[]]],[]],[4,465,0,0,0,0,0,0,[1,10730,126],[[0,40,41,0,42,86,87,0,[1,10731,0],[],[[10731,2,424]]],[0,89,90,0,91,92,93,0,[1,10731,108],[[0,59,20,0,60,94,0,0,[1,10732,0],[],[]],[0,40,41,0,42,95,87,0,[1,10732,1],[],[[10733,2,424]]],[0,96,90,0,91,97,93,0,[1,10733,104],[[0,59,20,0,60,94,0,0,[1,10734,0],[],[]],[0,40,41,0,42,95,87,0,[1,10734,1],[],[[10735,2,424]]],[0,40,41,0,42,98,99,0,[1,10735,1],[],[[10735,2,396]]],[0,59,20,0,60,101,0,0,[1,10736,0],[],[]],[0,63,20,0,64,102,103,0,[1,10736,1],[],[[10737,2,104]]],[0,63,20,0,64,105,106,0,[1,10737,1],[],[[10737,2,107]]],[0,108,20,0,109,110,111,0,[1,10738,2],[[0,40,41,0,42,112,0,0,[0,10738,1],[],[[10739,5,426]]]],[[10739,2,134],[10739,2,427]]],[0,115,20,0,116,117,106,0,[1,10740,1],[[0,63,20,0,64,106,0,0,[1,10740,1],[],[]]],[[10741,2,107]]],[0,108,20,0,109,123,124,0,[1,10742,1],[[0,40,41,0,42,125,0,0,[1,10742,0],[],[]]],[[10742,2,113],[10743,2,397]]],[0,115,20,0,116,127,106,0,[1,10743,1],[[0,118,119,0,120,128,0,0,[1,10744,0],[],[]]],[[10744,2,466]]],[0,108,20,0,109,130,131,0,[1,10745,1],[[0,40,41,0,42,132,0,0,[0,10745,0],[],[[10745,5,133]]]],[[10746,2,134],[10746,2,135]]],[0,115,20,0,116,136,106,0,[1,10746,1],[[0,63,20,0,64,106,0,0,[1,10747,0],[],[]]],[[10747,2,466]]],[0,115,20,0,116,137,106,0,[1,10748,1],[[0,63,20,0,64,106,0,0,[1,10748,1],[],[]]],[[10749,2,466]]],[0,46,20,0,47,0,138,0,[1,10749,1],[],[[10749,2,139]]],[0,140,20,0,141,142,143,0,[1,10750,1],[],[[10750,2,144]]],[3,145,0,0,0,0,0,0,[1,10751,23],[[4,399,0,0,0,0,0,0,[1,10751,23],[[0,108,20,0,109,147,148,0,[1,10751,2],[[0,40,41,0,42,149,0,0,[1,10752,0],[],[]]],[[10752,2,113],[10752,2,400]]],[0,151,152,0,153,154,154,0,[1,10753,0],[],[[10753,2,401]]],[0,115,20,0,116,156,154,0,[1,10754,1],[[0,118,119,0,120,402,0,0,[1,10754,1],[],[]]],[[10755,2,403]]],[0,115,20,0,116,157,154,0,[1,10756,1],[[0,118,119,0,120,404,0,0,[1,10756,1],[],[]]],[[10757,2,405]]],[0,115,20,0,116,158,106,0,[1,10757,2],[[0,118,119,0,120,406,0,0,[1,10758,0],[],[]]],[[10758,2,466]]],[0,118,119,0,120,160,106,0,[1,10759,0],[],[[10759,2,466]]],[0,161,152,0,162,106,163,0,[1,10760,0],[],[[10760,2,407]]],[0,165,166,0,167,168,0,0,[1,10771,3],[[0,59,20,0,60,169,0,0,[1,10771,1],[],[]],[0,59,20,0,60,170,0,0,[1,10772,0],[],[]],[3,171,0,0,0,0,0,0,[1,10772,2],[[4,408,0,0,0,0,0,0,[1,10773,1],[[0,173,41,0,174,175,0,0,[1,10773,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,10775,0],[],[[10775,2,409]]],[0,183,90,0,0,97,184,0,[1,10776,55],[[0,59,20,0,60,185,0,0,[1,10776,0],[],[]],[0,59,20,0,60,186,0,0,[1,10777,0],[],[]],[0,40,41,0,42,187,188,0,[1,10777,1],[],[[10778,2,189]]],[0,151,152,0,153,190,191,0,[1,10778,0],[],[[10778,2,410]]],[0,193,166,0,0,194,195,0,[1,10779,43],[[0,63,20,0,64,196,197,0,[1,10779,1],[],[[10779,2,198]]],[0,199,200,0,201,202,0,0,[1,10780,1],[],[[10780,2,203]]],[0,204,200,0,205,206,195,0,[1,10781,37],[],[[10782,2,411],[10818,2,208]]],[0,19,20,0,21,209,0,0,[1,10819,0],[],[[10819,2,210]]],[0,211,20,0,212,213,0,0,[1,10819,1],[],[[10820,2,214]]],[0,215,200,0,216,217,195,0,[1,10820,1],[],[[10821,2,467],[10821,2,219],[10821,2,413]]]],[[10822,2,413]]],[0,115,20,0,116,221,48,0,[1,10822,7],[[0,222,223,0,224,195,0,0,[1,10822,7],[[0,19,20,0,21,225,0,0,[1,10823,0],[],[[10823,2,225]]],[0,46,20,0,47,0,48,0,[1,10824,0],[],[[10824,2,49]]],[0,63,20,0,64,226,227,0,[1,10824,1],[],[[10825,2,228]]],[0,108,20,0,109,229,230,0,[1,10825,1],[[0,40,41,0,42,231,0,0,[1,10826,0],[],[]]],[[10826,2,113],[10826,2,414]]],[0,233,20,0,234,235,0,0,[1,10827,0],[],[]],[3,236,0,0,0,0,0,0,[1,10827,2],[[4,415,0,0,0,0,0,0,[1,10828,0],[[0,173,41,0,174,238,0,0,[1,10828,0],[],[]]],[]]],[]]],[]]],[[10829,2,468]]],[0,63,20,0,64,240,241,0,[1,10830,0],[],[[10830,2,242]]],[0,211,20,0,212,243,0,0,[1,10830,1],[],[[10831,2,214]]]],[[10831,2,242],[10831,2,468]]],[0,211,20,0,212,243,0,0,[1,10832,0],[],[[10832,2,214]]],[0,115,20,0,116,244,87,0,[1,10833,1],[[0,63,20,0,64,87,0,0,[1,10833,0],[],[]]],[[10833,2,424]]],[0,46,20,0,47,0,245,0,[1,10834,0],[],[[10834,2,246]]],[3,247,0,0,0,0,0,0,[1,10834,3],[[4,469,0,0,0,0,0,0,[1,10835,1],[[0,179,20,0,180,249,250,0,[1,10835,1],[],[[10835,2,470]]],[0,173,41,0,174,252,0,0,[1,10836,0],[],[]]],[]]],[]]],[[10837,2,468],[10837,2,470]]],[0,115,20,0,116,254,250,0,[1,10837,2],[[0,63,20,0,64,250,0,0,[1,10838,0],[],[]]],[[10839,2,470]]]],[[10839,2,468],[10839,2,470]]],[0,255,20,0,256,82,257,0,[1,10840,0],[],[[10840,2,471],[10840,2,472]]],[0,115,20,0,116,260,82,0,[1,10841,13],[[0,165,166,0,167,292,0,0,[1,10851,3],[[0,59,20,0,60,169,0,0,[1,10851,0],[],[]],[0,59,20,0,60,170,0,0,[1,10852,0],[],[]],[3,171,0,0,0,0,0,0,[1,10852,1],[[4,473,0,0,0,0,0,0,[1,10852,1],[[0,173,41,0,174,175,0,0,[1,10853,0],[],[]]],[]]],[]]],[]]],[[10854,2,474]]],[0,115,20,0,116,262,0,0,[1,10854,2],[[0,173,41,0,174,445,0,0,[1,10855,0],[],[]]],[]]],[]],[4,475,0,0,0,0,0,0,[1,10856,376],[[0,40,41,0,42,86,87,0,[1,10856,1],[],[[10857,2,476]]],[0,89,90,0,91,92,93,0,[1,10857,355],[[0,59,20,0,60,94,0,0,[1,10858,0],[],[]],[0,40,41,0,42,95,87,0,[1,10858,1],[],[[10858,2,476]]],[0,96,90,0,91,97,93,0,[1,10859,349],[[0,59,20,0,60,94,0,0,[1,10860,0],[],[]],[0,40,41,0,42,95,87,0,[1,10860,1],[],[[10861,2,476]]],[0,40,41,0,42,98,99,0,[1,10861,1],[],[[10861,2,477]]],[0,59,20,0,60,101,0,0,[1,10862,0],[],[]],[0,63,20,0,64,102,103,0,[1,10862,1],[],[[10863,2,104]]],[0,63,20,0,64,105,106,0,[1,10863,1],[],[[10864,2,107]]],[0,108,20,0,109,110,111,0,[1,10864,1],[[0,40,41,0,42,112,0,0,[1,10864,1],[],[]]],[[10865,2,113],[10865,2,478]]],[0,115,20,0,116,117,106,0,[1,10865,2],[[0,118,119,0,120,121,0,0,[1,10866,0],[],[]]],[[10867,2,479]]],[0,108,20,0,109,123,124,0,[1,10867,1],[[0,40,41,0,42,125,0,0,[1,10867,1],[],[]]],[[10868,2,113],[10868,2,374]]],[0,115,20,0,116,127,106,0,[1,10868,2],[[0,118,119,0,120,128,0,0,[1,10869,0],[],[]]],[[10870,2,480]]],[0,108,20,0,109,130,131,0,[1,10870,1],[[0,40,41,0,42,132,0,0,[0,10870,1],[],[[10871,5,133]]]],[[10871,2,134],[10871,2,135]]],[0,115,20,0,116,136,106,0,[1,10872,1],[[0,63,20,0,64,106,0,0,[1,10872,0],[],[]]],[[10873,2,480]]],[0,115,20,0,116,137,106,0,[1,10873,1],[[0,63,20,0,64,106,0,0,[1,10874,0],[],[]]],[[10874,2,480]]],[0,46,20,0,47,0,138,0,[1,10875,0],[],[[10875,2,139]]],[0,140,20,0,141,142,143,0,[1,10875,1],[],[[10876,2,144]]],[3,145,0,0,0,0,0,0,[1,10876,46],[[4,481,0,0,0,0,0,0,[1,10877,22],[[0,108,20,0,109,147,148,0,[1,10877,1],[[0,40,41,0,42,149,0,0,[1,10877,1],[],[]]],[[10878,2,113],[10878,2,482]]],[0,151,152,0,153,154,154,0,[1,10878,1],[],[[10879,2,483]]],[0,115,20,0,116,156,154,0,[1,10879,2],[[0,63,20,0,64,154,0,0,[1,10880,1],[],[]]],[[10881,2,483]]],[0,115,20,0,116,157,154,0,[1,10881,2],[[0,63,20,0,64,154,0,0,[1,10882,0],[],[]]],[[10882,2,483]]],[0,115,20,0,116,158,106,0,[1,10883,1],[[0,118,119,0,120,159,0,0,[1,10883,1],[],[]]],[[10884,2,480]]],[0,118,119,0,120,160,106,0,[1,10884,1],[],[[10885,2,480]]],[0,161,152,0,162,106,163,0,[1,10885,1],[],[[10886,2,484]]],[0,165,166,0,167,168,0,0,[1,10896,3],[[0,59,20,0,60,169,0,0,[1,10897,0],[],[]],[0,59,20,0,60,170,0,0,[1,10897,0],[],[]],[3,171,0,0,0,0,0,0,[1,10898,1],[[4,485,0,0,0,0,0,0,[1,10898,1],[[0,173,41,0,174,175,0,0,[1,10898,1],[],[]]],[]]],[]]],[]]],[]],[4,486,0,0,0,0,0,0,[1,10900,22],[[0,108,20,0,109,147,148,0,[1,10900,1],[[0,40,41,0,42,149,0,0,[1,10900,1],[],[]]],[[10901,2,113],[10901,2,487]]],[0,151,152,0,153,154,154,0,[1,10901,1],[],[[10902,2,488]]],[0,115,20,0,116,156,154,0,[1,10902,1],[[0,63,20,0,64,154,0,0,[1,10903,0],[],[]]],[[10903,2,488]]],[0,115,20,0,116,157,154,0,[1,10904,1],[[0,63,20,0,64,154,0,0,[1,10904,0],[],[]]],[[10905,2,488]]],[0,115,20,0,116,158,106,0,[1,10906,1],[[0,118,119,0,120,159,0,0,[1,10906,1],[],[]]],[[10907,2,480]]],[0,118,119,0,120,160,106,0,[1,10907,1],[],[[10908,2,480]]],[0,161,152,0,162,106,163,0,[1,10908,1],[],[[10908,2,484]]],[0,165,166,0,167,168,0,0,[1,10919,3],[[0,59,20,0,60,169,0,0,[1,10919,1],[],[]],[0,59,20,0,60,170,0,0,[1,10920,0],[],[]],[3,171,0,0,0,0,0,0,[1,10920,2],[[4,485,0,0,0,0,0,0,[1,10921,1],[[0,173,41,0,174,175,0,0,[1,10921,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,10923,1],[],[[10923,2,489]]],[0,183,90,0,0,97,184,0,[1,10924,276],[[0,59,20,0,60,185,0,0,[1,10924,1],[],[]],[0,59,20,0,60,186,0,0,[1,10925,0],[],[]],[0,40,41,0,42,187,188,0,[1,10925,1],[],[[10926,2,189]]],[0,151,152,0,153,190,191,0,[1,10926,1],[],[[10926,2,490]]],[0,193,166,0,0,194,195,0,[1,10927,255],[[0,63,20,0,64,196,197,0,[1,10928,0],[],[[10928,2,198]]],[0,199,200,0,201,202,0,0,[1,10928,1],[],[[10929,2,203]]],[0,204,200,0,205,206,195,0,[1,10930,237],[],[[10930,2,491],[11166,2,208]]],[0,19,20,0,21,209,0,0,[1,11168,2],[],[[11170,2,210]]],[0,211,20,0,212,213,0,0,[1,11172,3],[],[[11174,2,214]]],[0,215,200,0,216,217,195,0,[1,11176,4],[],[[11178,2,492],[11179,2,219],[11180,2,493]]]],[[11181,2,493]]],[0,115,20,0,116,221,48,0,[1,11182,15],[[0,222,223,0,224,195,0,0,[1,11184,12],[[0,19,20,0,21,225,0,0,[1,11185,1],[],[[11185,2,225]]],[0,46,20,0,47,0,48,0,[1,11186,1],[],[[11187,2,49]]],[0,63,20,0,64,226,227,0,[1,11187,1],[],[[11188,2,228]]],[0,108,20,0,109,229,230,0,[1,11188,4],[[0,40,41,0,42,231,0,0,[1,11190,1],[],[]]],[[11191,2,113],[11191,2,494]]],[0,233,20,0,234,235,0,0,[1,11192,0],[],[]],[3,236,0,0,0,0,0,0,[1,11192,4],[[4,495,0,0,0,0,0,0,[1,11193,1],[[0,173,41,0,174,238,0,0,[1,11193,1],[],[]]],[]],[4,495,0,0,0,0,0,0,[1,11194,2],[[0,173,41,0,174,238,0,0,[1,11195,0],[],[]]],[]]],[]]],[]]],[[11197,2,496]]],[0,63,20,0,64,240,241,0,[1,11197,1],[],[[11198,2,242]]],[0,211,20,0,212,243,0,0,[1,11198,1],[],[[11199,2,214]]]],[[11199,2,242],[11199,2,496]]],[0,211,20,0,212,243,0,0,[1,11200,1],[],[[11200,2,214]]],[0,115,20,0,116,244,87,0,[1,11201,1],[[0,63,20,0,64,87,0,0,[1,11202,0],[],[]]],[[11202,2,476]]],[0,46,20,0,47,0,245,0,[1,11203,0],[],[[11203,2,246]]],[3,247,0,0,0,0,0,0,[1,11204,4],[[4,497,0,0,0,0,0,0,[1,11204,2],[[0,179,20,0,180,249,250,0,[1,11204,1],[],[[11205,2,498]]],[0,173,41,0,174,252,0,0,[1,11205,0],[],[]]],[]],[4,499,0,0,0,0,0,0,[1,11206,1],[[0,179,20,0,180,249,250,0,[1,11206,1],[],[[11207,2,498]]],[0,173,41,0,174,252,0,0,[1,11207,0],[],[]]],[]]],[]]],[[11208,2,496],[11208,2,498]]],[0,115,20,0,116,254,250,0,[1,11208,4],[[0,500,90,0,501,250,0,0,[1,11209,2],[[0,46,20,0,47,250,502,0,[1,11210,0],[],[[11210,2,503]]],[0,179,20,0,180,504,505,0,[1,11211,0],[],[[11211,2,506]]]],[]]],[[11212,2,507]]]],[[11212,2,496],[11212,2,507]]],[0,255,20,0,256,82,257,0,[1,11213,0],[],[[11213,2,508],[11213,2,509]]],[0,115,20,0,116,260,82,0,[1,11214,16],[[0,165,166,0,167,292,0,0,[1,11226,4],[[0,59,20,0,60,169,0,0,[1,11226,1],[],[]],[0,59,20,0,60,170,0,0,[1,11227,0],[],[]],[3,171,0,0,0,0,0,0,[1,11227,3],[[4,510,0,0,0,0,0,0,[1,11228,0],[[0,173,41,0,174,175,0,0,[1,11228,0],[],[]]],[]],[4,511,0,0,0,0,0,0,[1,11229,0],[[0,173,41,0,174,175,0,0,[1,11229,0],[],[]]],[]]],[]]],[]]],[[11230,2,512]]],[0,115,20,0,116,262,0,0,[1,11231,1],[[0,173,41,0,174,513,0,0,[1,11231,1],[],[]]],[]]],[]],[4,514,0,0,0,0,0,0,[1,11232,212],[[0,40,41,0,42,86,87,0,[1,11232,1],[],[[11233,2,476]]],[0,89,90,0,91,92,93,0,[1,11233,194],[[0,59,20,0,60,94,0,0,[1,11234,1],[],[]],[0,40,41,0,42,95,87,0,[1,11235,1],[],[[11235,2,476]]],[0,96,90,0,91,97,93,0,[1,11236,187],[[0,59,20,0,60,94,0,0,[1,11236,0],[],[]],[0,40,41,0,42,95,87,0,[1,11237,0],[],[[11237,2,476]]],[0,40,41,0,42,98,99,0,[1,11237,1],[],[[11238,2,515]]],[0,59,20,0,60,101,0,0,[1,11238,1],[],[]],[0,63,20,0,64,102,103,0,[1,11239,0],[],[[11239,2,104]]],[0,63,20,0,64,105,106,0,[1,11240,0],[],[[11240,2,107]]],[0,108,20,0,109,110,111,0,[1,11240,2],[[0,40,41,0,42,112,0,0,[1,11241,0],[],[]]],[[11241,2,113],[11242,2,478]]],[0,115,20,0,116,117,106,0,[1,11242,1],[[0,118,119,0,120,121,0,0,[1,11242,1],[],[]]],[[11243,2,479]]],[0,108,20,0,109,123,124,0,[1,11243,2],[[0,40,41,0,42,125,0,0,[1,11244,0],[],[]]],[[11244,2,113],[11244,2,374]]],[0,115,20,0,116,127,106,0,[1,11245,1],[[0,118,119,0,120,128,0,0,[1,11245,1],[],[]]],[[11246,2,480]]],[0,108,20,0,109,130,131,0,[1,11246,2],[[0,40,41,0,42,132,0,0,[0,11247,0],[],[[11247,5,133]]]],[[11248,2,134],[11248,2,135]]],[0,115,20,0,116,136,106,0,[1,11248,1],[[0,63,20,0,64,106,0,0,[1,11249,0],[],[]]],[[11249,2,480]]],[0,115,20,0,116,137,106,0,[1,11250,1],[[0,63,20,0,64,106,0,0,[1,11250,0],[],[]]],[[11251,2,480]]],[0,46,20,0,47,0,138,0,[1,11251,0],[],[[11251,2,139]]],[0,140,20,0,141,142,143,0,[1,11252,1],[],[[11252,2,144]]],[3,145,0,0,0,0,0,0,[1,11253,48],[[4,516,0,0,0,0,0,0,[1,11253,24],[[0,108,20,0,109,147,148,0,[1,11253,1],[[0,40,41,0,42,149,0,0,[1,11254,0],[],[]]],[[11254,2,113],[11254,2,517]]],[0,151,152,0,153,154,154,0,[1,11255,0],[],[[11255,2,518]]],[0,115,20,0,116,156,154,0,[1,11256,1],[[0,63,20,0,64,154,0,0,[1,11256,1],[],[]]],[[11257,2,518]]],[0,115,20,0,116,157,154,0,[1,11258,1],[[0,63,20,0,64,154,0,0,[1,11258,0],[],[]]],[[11259,2,518]]],[0,115,20,0,116,158,106,0,[1,11259,1],[[0,118,119,0,120,159,0,0,[1,11260,0],[],[]]],[[11260,2,480]]],[0,118,119,0,120,160,106,0,[1,11261,0],[],[[11261,2,480]]],[0,161,152,0,162,106,163,0,[1,11262,0],[],[[11262,2,484]]],[0,165,166,0,167,168,0,0,[1,11274,3],[[0,59,20,0,60,169,0,0,[1,11274,0],[],[]],[0,59,20,0,60,170,0,0,[1,11275,0],[],[]],[3,171,0,0,0,0,0,0,[1,11275,1],[[4,485,0,0,0,0,0,0,[1,11276,0],[[0,173,41,0,174,175,0,0,[1,11276,0],[],[]]],[]]],[]]],[]]],[]],[4,486,0,0,0,0,0,0,[1,11277,24],[[0,108,20,0,109,147,148,0,[1,11278,1],[[0,40,41,0,42,149,0,0,[1,11278,0],[],[]]],[[11279,2,113],[11279,2,487]]],[0,151,152,0,153,154,154,0,[1,11279,1],[],[[11280,2,488]]],[0,115,20,0,116,156,154,0,[1,11280,2],[[0,63,20,0,64,154,0,0,[1,11281,0],[],[]]],[[11282,2,488]]],[0,115,20,0,116,157,154,0,[1,11282,2],[[0,63,20,0,64,154,0,0,[1,11283,0],[],[]]],[[11283,2,488]]],[0,115,20,0,116,158,106,0,[1,11284,1],[[0,118,119,0,120,159,0,0,[1,11285,0],[],[]]],[[11285,2,480]]],[0,118,119,0,120,160,106,0,[1,11286,0],[],[[11286,2,480]]],[0,161,152,0,162,106,163,0,[1,11287,0],[],[[11287,2,484]]],[0,165,166,0,167,168,0,0,[1,11297,4],[[0,59,20,0,60,169,0,0,[1,11298,0],[],[]],[0,59,20,0,60,170,0,0,[1,11299,0],[],[]],[3,171,0,0,0,0,0,0,[1,11299,1],[[4,485,0,0,0,0,0,0,[1,11299,1],[[0,173,41,0,174,175,0,0,[1,11300,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,11301,1],[],[[11302,2,489]]],[0,183,90,0,0,97,184,0,[1,11303,110],[[0,59,20,0,60,185,0,0,[1,11304,0],[],[]],[0,59,20,0,60,186,0,0,[1,11304,1],[],[]],[0,40,41,0,42,187,188,0,[1,11305,1],[],[[11306,2,189]]],[0,151,152,0,153,190,191,0,[1,11306,1],[],[[11307,2,490]]],[0,193,166,0,0,194,195,0,[1,11307,88],[[0,63,20,0,64,196,197,0,[1,11308,0],[],[[11308,2,198]]],[0,199,200,0,201,202,0,0,[1,11309,0],[],[[11309,2,203]]],[0,204,200,0,205,206,195,0,[1,11310,78],[],[[11310,2,519],[11388,2,208]]],[0,19,20,0,21,209,0,0,[1,11389,1],[],[[11389,2,210]]],[0,211,20,0,212,213,0,0,[1,11390,1],[],[[11391,2,214]]],[0,215,200,0,216,217,195,0,[1,11392,2],[],[[11393,2,520],[11393,2,219],[11393,2,493]]]],[[11394,2,493]]],[0,115,20,0,116,221,48,0,[1,11395,15],[[0,222,223,0,224,195,0,0,[1,11396,13],[[0,19,20,0,21,225,0,0,[1,11397,1],[],[[11397,2,225]]],[0,46,20,0,47,0,48,0,[1,11398,1],[],[[11399,2,49]]],[0,63,20,0,64,226,227,0,[1,11400,0],[],[[11400,2,228]]],[0,108,20,0,109,229,230,0,[1,11401,2],[[0,40,41,0,42,231,0,0,[1,11402,0],[],[]]],[[11403,2,113],[11403,2,521]]],[0,233,20,0,234,235,0,0,[1,11404,0],[],[]],[3,236,0,0,0,0,0,0,[1,11405,4],[[4,522,0,0,0,0,0,0,[1,11405,2],[[0,173,41,0,174,238,0,0,[1,11406,1],[],[]]],[]],[4,522,0,0,0,0,0,0,[1,11408,1],[[0,173,41,0,174,238,0,0,[1,11408,1],[],[]]],[]]],[]]],[]]],[[11410,2,523]]],[0,63,20,0,64,240,241,0,[1,11410,1],[],[[11411,2,242]]],[0,211,20,0,212,243,0,0,[1,11412,1],[],[[11412,2,214]]]],[[11413,2,242],[11413,2,523]]],[0,211,20,0,212,243,0,0,[1,11414,0],[],[[11414,2,214]]],[0,115,20,0,116,244,87,0,[1,11415,1],[[0,63,20,0,64,87,0,0,[1,11415,1],[],[]]],[[11416,2,476]]],[0,46,20,0,47,0,245,0,[1,11417,0],[],[[11417,2,246]]],[3,247,0,0,0,0,0,0,[1,11417,5],[[4,524,0,0,0,0,0,0,[1,11418,2],[[0,179,20,0,180,249,250,0,[1,11418,1],[],[[11419,2,525]]],[0,173,41,0,174,252,0,0,[1,11419,0],[],[]]],[]],[4,526,0,0,0,0,0,0,[1,11420,2],[[0,179,20,0,180,249,250,0,[1,11420,1],[],[[11421,2,525]]],[0,173,41,0,174,252,0,0,[1,11421,1],[],[]]],[]]],[]]],[[11422,2,523],[11422,2,525]]],[0,115,20,0,116,254,250,0,[1,11423,3],[[0,500,90,0,501,250,0,0,[1,11424,2],[[0,46,20,0,47,250,502,0,[1,11424,1],[],[[11425,2,527]]],[0,179,20,0,180,504,505,0,[1,11425,0],[],[[11425,2,528]]]],[]]],[[11426,2,529]]]],[[11426,2,523],[11427,2,529]]],[0,255,20,0,256,82,257,0,[1,11427,1],[],[[11427,2,530],[11427,2,531]]],[0,115,20,0,116,260,82,0,[1,11428,14],[[0,165,166,0,167,292,0,0,[1,11438,3],[[0,59,20,0,60,169,0,0,[1,11438,0],[],[]],[0,59,20,0,60,170,0,0,[1,11439,0],[],[]],[3,171,0,0,0,0,0,0,[1,11439,2],[[4,532,0,0,0,0,0,0,[1,11439,1],[[0,173,41,0,174,175,0,0,[1,11440,0],[],[]]],[]],[4,533,0,0,0,0,0,0,[1,11440,1],[[0,173,41,0,174,175,0,0,[1,11440,1],[],[]]],[]]],[]]],[]]],[[11442,2,534]]],[0,115,20,0,116,262,0,0,[1,11442,1],[[0,173,41,0,174,513,0,0,[1,11443,0],[],[]]],[]]],[]]]; +</script> +<script type="text/javascript"> +window.sPart1 = [[4,264,0,0,0,0,0,0,[1,11841,210],[[0,40,41,0,42,86,87,0,[1,11842,0],[],[[11842,2,265]]],[0,89,90,0,91,92,93,0,[1,11842,205],[[0,59,20,0,60,94,0,0,[1,11843,0],[],[]],[0,40,41,0,42,95,87,0,[1,11844,0],[],[[11844,2,265]]],[0,96,90,0,91,97,93,0,[1,11845,200],[[0,59,20,0,60,94,0,0,[1,11845,0],[],[]],[0,40,41,0,42,95,87,0,[1,11846,0],[],[[11846,2,265]]],[0,40,41,0,42,98,99,0,[1,11846,1],[],[[11847,2,266]]],[0,59,20,0,60,101,0,0,[1,11847,0],[],[]],[0,63,20,0,64,102,103,0,[1,11848,0],[],[[11848,2,104]]],[0,63,20,0,64,105,106,0,[1,11848,1],[],[[11849,2,107]]],[0,108,20,0,109,110,111,0,[1,11849,1],[[0,40,41,0,42,112,0,0,[1,11850,0],[],[]]],[[11850,2,113],[11850,2,267]]],[0,115,20,0,116,117,106,0,[1,11851,1],[[0,118,119,0,120,121,0,0,[1,11851,1],[],[]]],[[11852,2,268]]],[0,108,20,0,109,123,124,0,[1,11852,1],[[0,40,41,0,42,125,0,0,[1,11853,0],[],[]]],[[11853,2,113],[11853,2,269]]],[0,115,20,0,116,127,106,0,[1,11854,1],[[0,118,119,0,120,128,0,0,[1,11854,1],[],[]]],[[11855,2,270]]],[0,108,20,0,109,130,131,0,[1,11855,2],[[0,40,41,0,42,132,0,0,[0,11856,0],[],[[11856,5,133]]]],[[11856,2,134],[11856,2,135]]],[0,115,20,0,116,136,106,0,[1,11857,1],[[0,63,20,0,64,106,0,0,[1,11857,1],[],[]]],[[11858,2,270]]],[0,115,20,0,116,137,106,0,[1,11858,2],[[0,63,20,0,64,106,0,0,[1,11859,0],[],[]]],[[11860,2,270]]],[0,46,20,0,47,0,138,0,[1,11861,0],[],[[11861,2,139]]],[0,140,20,0,141,142,143,0,[1,11862,0],[],[[11862,2,144]]],[3,145,0,0,0,0,0,0,[1,11862,55],[[4,271,0,0,0,0,0,0,[1,11863,30],[[0,108,20,0,109,147,148,0,[1,11863,2],[[0,40,41,0,42,149,0,0,[1,11864,0],[],[]]],[[11864,2,113],[11864,2,272]]],[0,151,152,0,153,154,154,0,[1,11865,0],[],[[11865,2,273]]],[0,115,20,0,116,156,154,0,[1,11866,1],[[0,63,20,0,64,154,0,0,[1,11866,1],[],[]]],[[11867,2,273]]],[0,115,20,0,116,157,154,0,[1,11868,1],[[0,63,20,0,64,154,0,0,[1,11868,1],[],[]]],[[11869,2,273]]],[0,115,20,0,116,158,106,0,[1,11869,2],[[0,118,119,0,120,159,0,0,[1,11870,0],[],[]]],[[11871,2,270]]],[0,118,119,0,120,160,106,0,[1,11871,1],[],[[11872,2,270]]],[0,161,152,0,162,106,163,0,[1,11872,1],[],[[11873,2,274]]],[0,165,166,0,167,168,0,0,[1,11888,5],[[0,59,20,0,60,169,0,0,[1,11889,0],[],[]],[0,59,20,0,60,170,0,0,[1,11890,1],[],[]],[3,171,0,0,0,0,0,0,[1,11891,2],[[4,275,0,0,0,0,0,0,[1,11891,1],[[0,173,41,0,174,175,0,0,[1,11892,0],[],[]]],[]]],[]]],[]]],[]],[4,276,0,0,0,0,0,0,[1,11893,24],[[0,108,20,0,109,147,148,0,[1,11894,1],[[0,40,41,0,42,149,0,0,[1,11894,1],[],[]]],[[11895,2,113],[11895,2,277]]],[0,151,152,0,153,154,154,0,[1,11896,0],[],[[11896,2,278]]],[0,115,20,0,116,156,154,0,[1,11897,1],[[0,63,20,0,64,154,0,0,[1,11897,1],[],[]]],[[11898,2,278]]],[0,115,20,0,116,157,154,0,[1,11898,1],[[0,63,20,0,64,154,0,0,[1,11899,0],[],[]]],[[11899,2,278]]],[0,115,20,0,116,158,106,0,[1,11900,1],[[0,118,119,0,120,159,0,0,[1,11900,1],[],[]]],[[11901,2,270]]],[0,118,119,0,120,160,106,0,[1,11901,1],[],[[11902,2,270]]],[0,161,152,0,162,106,163,0,[1,11902,1],[],[[11902,2,274]]],[0,165,166,0,167,168,0,0,[1,11913,3],[[0,59,20,0,60,169,0,0,[1,11914,0],[],[]],[0,59,20,0,60,170,0,0,[1,11915,0],[],[]],[3,171,0,0,0,0,0,0,[1,11915,1],[[4,275,0,0,0,0,0,0,[1,11915,1],[[0,173,41,0,174,175,0,0,[1,11915,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,11917,1],[],[[11918,2,279]]],[0,183,90,0,0,97,184,0,[1,11918,120],[[0,59,20,0,60,185,0,0,[1,11919,0],[],[]],[0,59,20,0,60,186,0,0,[1,11919,1],[],[]],[0,40,41,0,42,187,188,0,[1,11920,0],[],[[11920,2,189]]],[0,151,152,0,153,190,191,0,[1,11921,0],[],[[11921,2,280]]],[0,193,166,0,0,194,195,0,[1,11921,106],[[0,63,20,0,64,196,197,0,[1,11922,0],[],[[11922,2,198]]],[0,199,200,0,201,202,0,0,[1,11923,1],[],[[11923,2,203]]],[0,204,200,0,205,206,195,0,[1,11925,97],[],[[11926,2,281],[12021,2,208]]],[0,19,20,0,21,209,0,0,[1,12023,1],[],[[12024,2,210]]],[0,211,20,0,212,213,0,0,[1,12024,1],[],[[12025,2,214]]],[0,215,200,0,216,217,195,0,[1,12025,1],[],[[12026,2,746],[12026,2,219],[12026,2,283]]]],[[12027,2,283]]],[0,115,20,0,116,221,48,0,[1,12027,9],[[0,222,223,0,224,195,0,0,[1,12028,7],[[0,19,20,0,21,225,0,0,[1,12028,0],[],[[12028,2,225]]],[0,46,20,0,47,0,48,0,[1,12029,0],[],[[12029,2,49]]],[0,63,20,0,64,226,227,0,[1,12029,1],[],[[12030,2,228]]],[0,108,20,0,109,229,230,0,[1,12030,2],[[0,40,41,0,42,231,0,0,[1,12031,0],[],[]]],[[12031,2,113],[12032,2,284]]],[0,233,20,0,234,235,0,0,[1,12032,0],[],[]],[3,236,0,0,0,0,0,0,[1,12033,2],[[4,285,0,0,0,0,0,0,[1,12033,1],[[0,173,41,0,174,238,0,0,[1,12033,1],[],[]]],[]],[4,285,0,0,0,0,0,0,[1,12034,1],[[0,173,41,0,174,238,0,0,[1,12034,1],[],[]]],[]]],[]]],[]]],[[12036,2,747]]],[0,63,20,0,64,240,241,0,[1,12036,0],[],[[12036,2,242]]],[0,211,20,0,212,243,0,0,[1,12037,0],[],[[12037,2,214]]]],[[12037,2,242],[12038,2,747]]],[0,211,20,0,212,243,0,0,[1,12038,1],[],[[12038,2,214]]],[0,115,20,0,116,244,87,0,[1,12039,1],[[0,63,20,0,64,87,0,0,[1,12039,1],[],[]]],[[12040,2,265]]],[0,46,20,0,47,0,245,0,[1,12040,1],[],[[12040,2,246]]],[3,247,0,0,0,0,0,0,[1,12041,4],[[4,748,0,0,0,0,0,0,[1,12041,2],[[0,179,20,0,180,249,250,0,[1,12041,1],[],[[12042,2,749]]],[0,173,41,0,174,252,0,0,[1,12042,1],[],[]]],[]],[4,750,0,0,0,0,0,0,[1,12043,2],[[0,179,20,0,180,249,250,0,[1,12043,1],[],[[12044,2,749]]],[0,173,41,0,174,252,0,0,[1,12044,0],[],[]]],[]]],[]]],[[12045,2,747],[12045,2,749]]],[0,115,20,0,116,254,250,0,[1,12046,1],[[0,63,20,0,64,250,0,0,[1,12046,1],[],[]]],[[12047,2,749]]]],[[12047,2,747],[12047,2,749]]],[0,255,20,0,256,82,257,0,[1,12048,0],[],[[12048,2,258],[12048,2,259]]],[0,115,20,0,116,260,82,0,[1,12049,1],[[0,63,20,0,64,48,0,0,[1,12049,0],[],[]]],[[12050,2,751]]],[0,115,20,0,116,262,0,0,[1,12050,1],[[0,173,41,0,174,263,0,0,[1,12051,0],[],[]]],[]]],[]],[4,296,0,0,0,0,0,0,[1,12052,959],[[0,40,41,0,42,86,87,0,[1,12052,1],[],[[12052,2,297]]],[0,89,90,0,91,92,93,0,[1,12053,941],[[0,59,20,0,60,94,0,0,[1,12053,1],[],[]],[0,40,41,0,42,95,87,0,[1,12054,0],[],[[12054,2,297]]],[0,96,90,0,91,97,93,0,[1,12055,937],[[0,59,20,0,60,94,0,0,[1,12055,0],[],[]],[0,40,41,0,42,95,87,0,[1,12056,0],[],[[12056,2,297]]],[0,40,41,0,42,98,99,0,[1,12057,0],[],[[12057,2,298]]],[0,59,20,0,60,101,0,0,[1,12057,1],[],[]],[0,63,20,0,64,102,103,0,[1,12058,0],[],[[12058,2,104]]],[0,63,20,0,64,105,106,0,[1,12059,0],[],[[12059,2,107]]],[0,108,20,0,109,110,111,0,[1,12060,1],[[0,40,41,0,42,112,0,0,[1,12060,0],[],[]]],[[12061,2,113],[12061,2,267]]],[0,115,20,0,116,117,106,0,[1,12061,1],[[0,118,119,0,120,121,0,0,[1,12062,0],[],[]]],[[12062,2,268]]],[0,108,20,0,109,123,124,0,[1,12063,1],[[0,40,41,0,42,125,0,0,[1,12063,0],[],[]]],[[12064,2,113],[12064,2,299]]],[0,115,20,0,116,127,106,0,[1,12064,1],[[0,118,119,0,120,128,0,0,[1,12065,0],[],[]]],[[12065,2,300]]],[0,108,20,0,109,130,131,0,[1,12066,1],[[0,40,41,0,42,132,0,0,[0,12066,1],[],[[12067,5,133]]]],[[12067,2,134],[12067,2,135]]],[0,115,20,0,116,136,106,0,[1,12068,1],[[0,63,20,0,64,106,0,0,[1,12068,0],[],[]]],[[12069,2,300]]],[0,115,20,0,116,137,106,0,[1,12069,1],[[0,63,20,0,64,106,0,0,[1,12069,1],[],[]]],[[12070,2,300]]],[0,46,20,0,47,0,138,0,[1,12070,1],[],[[12071,2,139]]],[0,140,20,0,141,142,143,0,[1,12071,1],[],[[12072,2,144]]],[3,145,0,0,0,0,0,0,[1,12072,23],[[4,301,0,0,0,0,0,0,[1,12072,23],[[0,108,20,0,109,147,148,0,[1,12072,2],[[0,40,41,0,42,149,0,0,[1,12073,0],[],[]]],[[12073,2,113],[12073,2,302]]],[0,151,152,0,153,154,154,0,[1,12074,0],[],[[12074,2,303]]],[0,115,20,0,116,156,154,0,[1,12075,1],[[0,63,20,0,64,154,0,0,[1,12075,0],[],[]]],[[12076,2,303]]],[0,115,20,0,116,157,154,0,[1,12076,2],[[0,63,20,0,64,154,0,0,[1,12076,1],[],[]]],[[12078,2,303]]],[0,115,20,0,116,158,106,0,[1,12078,2],[[0,118,119,0,120,159,0,0,[1,12079,0],[],[]]],[[12079,2,300]]],[0,118,119,0,120,160,106,0,[1,12080,1],[],[[12080,2,300]]],[0,161,152,0,162,106,163,0,[1,12081,0],[],[[12081,2,304]]],[0,165,166,0,167,168,0,0,[1,12091,4],[[0,59,20,0,60,169,0,0,[1,12092,0],[],[]],[0,59,20,0,60,170,0,0,[1,12092,1],[],[]],[3,171,0,0,0,0,0,0,[1,12093,2],[[4,305,0,0,0,0,0,0,[1,12094,0],[[0,173,41,0,174,175,0,0,[1,12094,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,12095,1],[],[[12096,2,306]]],[0,183,90,0,0,97,184,0,[1,12096,890],[[0,59,20,0,60,185,0,0,[1,12097,0],[],[]],[0,59,20,0,60,186,0,0,[1,12097,1],[],[]],[0,40,41,0,42,187,188,0,[1,12098,0],[],[[12098,2,189]]],[0,151,152,0,153,190,191,0,[1,12099,0],[],[[12099,2,307]]],[0,193,166,0,0,194,195,0,[1,12099,877],[[0,63,20,0,64,196,197,0,[1,12100,0],[],[[12100,2,198]]],[0,199,200,0,201,202,0,0,[1,12101,1],[],[[12101,2,203]]],[0,204,200,0,205,206,195,0,[1,12102,870],[],[[12102,2,308],[12972,2,208]]],[0,19,20,0,21,209,0,0,[1,12973,1],[],[[12974,2,210]]],[0,211,20,0,212,213,0,0,[1,12974,1],[],[[12974,2,214]]],[0,215,200,0,216,217,195,0,[1,12975,1],[],[[12975,2,752],[12975,2,219],[12976,2,753]]]],[[12976,2,753]]],[0,115,20,0,116,221,48,0,[1,12977,7],[[0,222,223,0,224,195,0,0,[1,12977,7],[[0,19,20,0,21,225,0,0,[1,12977,1],[],[[12978,2,225]]],[0,46,20,0,47,0,48,0,[1,12978,1],[],[[12978,2,49]]],[0,63,20,0,64,226,227,0,[1,12979,0],[],[[12979,2,228]]],[0,108,20,0,109,229,230,0,[1,12980,1],[[0,40,41,0,42,231,0,0,[1,12980,1],[],[]]],[[12981,2,113],[12981,2,754]]],[0,233,20,0,234,235,0,0,[1,12981,1],[],[]],[3,236,0,0,0,0,0,0,[1,12982,1],[[4,755,0,0,0,0,0,0,[1,12982,1],[[0,173,41,0,174,238,0,0,[1,12983,0],[],[]]],[]]],[]]],[]]],[[12984,2,756]]],[0,63,20,0,64,240,241,0,[1,12984,1],[],[[12985,2,242]]],[0,211,20,0,212,243,0,0,[1,12985,1],[],[[12985,2,214]]]],[[12986,2,242],[12986,2,756]]],[0,211,20,0,212,243,0,0,[1,12986,1],[],[[12987,2,214]]],[0,115,20,0,116,244,87,0,[1,12987,1],[[0,63,20,0,64,87,0,0,[1,12988,0],[],[]]],[[12988,2,297]]],[0,46,20,0,47,0,245,0,[1,12989,0],[],[[12989,2,246]]],[3,247,0,0,0,0,0,0,[1,12989,2],[[4,757,0,0,0,0,0,0,[1,12989,2],[[0,179,20,0,180,249,250,0,[1,12990,0],[],[[12990,2,758]]],[0,173,41,0,174,252,0,0,[1,12991,0],[],[]]],[]]],[]]],[[12992,2,756],[12992,2,758]]],[0,115,20,0,116,254,250,0,[1,12992,2],[[0,63,20,0,64,250,0,0,[1,12993,0],[],[]]],[[12994,2,758]]]],[[12994,2,756],[12994,2,758]]],[0,255,20,0,256,82,257,0,[1,12995,0],[],[[12995,2,290],[12995,2,291]]],[0,115,20,0,116,260,82,0,[1,12996,13],[[0,165,166,0,167,292,0,0,[1,13005,4],[[0,59,20,0,60,169,0,0,[1,13006,0],[],[]],[0,59,20,0,60,170,0,0,[1,13007,0],[],[]],[3,171,0,0,0,0,0,0,[1,13007,1],[[4,759,0,0,0,0,0,0,[1,13007,1],[[0,173,41,0,174,175,0,0,[1,13008,0],[],[]]],[]]],[]]],[]]],[[13009,2,760]]],[0,115,20,0,116,262,0,0,[1,13009,2],[[0,173,41,0,174,263,0,0,[1,13010,0],[],[]]],[]]],[]],[4,320,0,0,0,0,0,0,[1,13011,178],[[0,40,41,0,42,86,87,0,[1,13011,1],[],[[13012,2,321]]],[0,89,90,0,91,92,93,0,[1,13012,160],[[0,59,20,0,60,94,0,0,[1,13013,0],[],[]],[0,40,41,0,42,95,87,0,[1,13013,1],[],[[13013,2,321]]],[0,96,90,0,91,97,93,0,[1,13014,156],[[0,59,20,0,60,94,0,0,[1,13014,1],[],[]],[0,40,41,0,42,95,87,0,[1,13015,1],[],[[13015,2,321]]],[0,40,41,0,42,98,99,0,[1,13016,0],[],[[13016,2,322]]],[0,59,20,0,60,101,0,0,[1,13017,0],[],[]],[0,63,20,0,64,102,103,0,[1,13017,1],[],[[13017,2,104]]],[0,63,20,0,64,105,106,0,[1,13018,1],[],[[13019,2,107]]],[0,108,20,0,109,110,111,0,[1,13019,2],[[0,40,41,0,42,112,0,0,[1,13020,0],[],[]]],[[13020,2,113],[13021,2,323]]],[0,115,20,0,116,117,106,0,[1,13021,1],[[0,118,119,0,120,121,0,0,[1,13021,1],[],[]]],[[13022,2,324]]],[0,108,20,0,109,123,124,0,[1,13023,1],[[0,40,41,0,42,125,0,0,[1,13023,0],[],[]]],[[13024,2,113],[13024,2,325]]],[0,115,20,0,116,127,106,0,[1,13024,1],[[0,118,119,0,120,128,0,0,[1,13025,0],[],[]]],[[13025,2,326]]],[0,108,20,0,109,130,131,0,[1,13026,1],[[0,40,41,0,42,132,0,0,[0,13026,1],[],[[13026,5,133]]]],[[13027,2,134],[13027,2,135]]],[0,115,20,0,116,136,106,0,[1,13027,2],[[0,63,20,0,64,106,0,0,[1,13028,0],[],[]]],[[13028,2,326]]],[0,115,20,0,116,137,106,0,[1,13029,1],[[0,63,20,0,64,106,0,0,[1,13029,1],[],[]]],[[13030,2,326]]],[0,46,20,0,47,0,138,0,[1,13030,1],[],[[13031,2,139]]],[0,140,20,0,141,142,143,0,[1,13031,1],[],[[13031,2,144]]],[3,145,0,0,0,0,0,0,[1,13032,23],[[4,327,0,0,0,0,0,0,[1,13033,22],[[0,108,20,0,109,147,148,0,[1,13033,1],[[0,40,41,0,42,149,0,0,[1,13033,1],[],[]]],[[13034,2,113],[13034,2,328]]],[0,151,152,0,153,154,154,0,[1,13034,1],[],[[13035,2,329]]],[0,115,20,0,116,156,154,0,[1,13035,1],[[0,63,20,0,64,154,0,0,[1,13036,0],[],[]]],[[13036,2,329]]],[0,115,20,0,116,157,154,0,[1,13037,1],[[0,63,20,0,64,154,0,0,[1,13037,0],[],[]]],[[13038,2,329]]],[0,115,20,0,116,158,106,0,[1,13038,2],[[0,118,119,0,120,159,0,0,[1,13039,0],[],[]]],[[13040,2,326]]],[0,118,119,0,120,160,106,0,[1,13040,1],[],[[13041,2,326]]],[0,161,152,0,162,106,163,0,[1,13041,0],[],[[13041,2,330]]],[0,165,166,0,167,168,0,0,[1,13051,2],[[0,59,20,0,60,169,0,0,[1,13051,0],[],[]],[0,59,20,0,60,170,0,0,[1,13051,0],[],[]],[3,171,0,0,0,0,0,0,[1,13052,1],[[4,331,0,0,0,0,0,0,[1,13052,1],[[0,173,41,0,174,175,0,0,[1,13052,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,13055,1],[],[[13056,2,332]]],[0,183,90,0,0,97,184,0,[1,13056,108],[[0,59,20,0,60,185,0,0,[1,13057,0],[],[]],[0,59,20,0,60,186,0,0,[1,13057,0],[],[]],[0,40,41,0,42,187,188,0,[1,13058,0],[],[[13058,2,189]]],[0,151,152,0,153,190,191,0,[1,13058,1],[],[[13059,2,333]]],[0,193,166,0,0,194,195,0,[1,13059,94],[[0,63,20,0,64,196,197,0,[1,13060,0],[],[[13060,2,198]]],[0,199,200,0,201,202,0,0,[1,13061,0],[],[[13061,2,203]]],[0,204,200,0,205,206,195,0,[1,13061,89],[],[[13061,2,334],[13149,2,208]]],[0,19,20,0,21,209,0,0,[1,13150,1],[],[[13150,2,210]]],[0,211,20,0,212,213,0,0,[1,13151,0],[],[[13151,2,214]]],[0,215,200,0,216,217,195,0,[1,13152,1],[],[[13152,2,761],[13152,2,219],[13153,2,762]]]],[[13153,2,762]]],[0,115,20,0,116,221,48,0,[1,13154,7],[[0,222,223,0,224,195,0,0,[1,13154,7],[[0,19,20,0,21,225,0,0,[1,13155,0],[],[[13155,2,225]]],[0,46,20,0,47,0,48,0,[1,13156,0],[],[[13156,2,49]]],[0,63,20,0,64,226,227,0,[1,13156,1],[],[[13157,2,228]]],[0,108,20,0,109,229,230,0,[1,13157,1],[[0,40,41,0,42,231,0,0,[1,13158,0],[],[]]],[[13158,2,113],[13158,2,763]]],[0,233,20,0,234,235,0,0,[1,13159,0],[],[]],[3,236,0,0,0,0,0,0,[1,13159,2],[[4,764,0,0,0,0,0,0,[1,13160,1],[[0,173,41,0,174,238,0,0,[1,13160,0],[],[]]],[]]],[]]],[]]],[[13161,2,765]]],[0,63,20,0,64,240,241,0,[1,13162,0],[],[[13162,2,242]]],[0,211,20,0,212,243,0,0,[1,13163,0],[],[[13163,2,214]]]],[[13163,2,242],[13164,2,765]]],[0,211,20,0,212,243,0,0,[1,13164,1],[],[[13164,2,214]]],[0,115,20,0,116,244,87,0,[1,13165,1],[[0,63,20,0,64,87,0,0,[1,13165,1],[],[]]],[[13166,2,321]]],[0,46,20,0,47,0,245,0,[1,13166,1],[],[[13167,2,246]]],[3,247,0,0,0,0,0,0,[1,13167,2],[[4,766,0,0,0,0,0,0,[1,13167,2],[[0,179,20,0,180,249,250,0,[1,13167,1],[],[[13168,2,767]]],[0,173,41,0,174,252,0,0,[1,13168,1],[],[]]],[]]],[]]],[[13169,2,765],[13169,2,767]]],[0,115,20,0,116,254,250,0,[1,13170,2],[[0,63,20,0,64,250,0,0,[1,13170,1],[],[]]],[[13171,2,767]]]],[[13172,2,765],[13172,2,767]]],[0,255,20,0,256,82,257,0,[1,13173,0],[],[[13173,2,768],[13173,2,769]]],[0,115,20,0,116,260,82,0,[1,13174,13],[[0,165,166,0,167,292,0,0,[1,13184,3],[[0,59,20,0,60,169,0,0,[1,13184,0],[],[]],[0,59,20,0,60,170,0,0,[1,13185,0],[],[]],[3,171,0,0,0,0,0,0,[1,13185,1],[[4,770,0,0,0,0,0,0,[1,13185,1],[[0,173,41,0,174,175,0,0,[1,13186,0],[],[]]],[]]],[]]],[]]],[[13187,2,771]]],[0,115,20,0,116,262,0,0,[1,13187,1],[[0,173,41,0,174,263,0,0,[1,13188,0],[],[]]],[]]],[]],[4,345,0,0,0,0,0,0,[1,13189,374],[[0,40,41,0,42,86,87,0,[1,13189,1],[],[[13189,2,346]]],[0,89,90,0,91,92,93,0,[1,13190,356],[[0,59,20,0,60,94,0,0,[1,13190,1],[],[]],[0,40,41,0,42,95,87,0,[1,13191,0],[],[[13191,2,346]]],[0,96,90,0,91,97,93,0,[1,13192,351],[[0,59,20,0,60,94,0,0,[1,13192,0],[],[]],[0,40,41,0,42,95,87,0,[1,13193,0],[],[[13193,2,346]]],[0,40,41,0,42,98,99,0,[1,13193,1],[],[[13194,2,347]]],[0,59,20,0,60,101,0,0,[1,13194,0],[],[]],[0,63,20,0,64,102,103,0,[1,13195,0],[],[[13195,2,104]]],[0,63,20,0,64,105,106,0,[1,13196,0],[],[[13196,2,107]]],[0,108,20,0,109,110,111,0,[1,13196,2],[[0,40,41,0,42,112,0,0,[1,13197,0],[],[]]],[[13197,2,113],[13198,2,323]]],[0,115,20,0,116,117,106,0,[1,13198,1],[[0,118,119,0,120,121,0,0,[1,13198,1],[],[]]],[[13199,2,324]]],[0,108,20,0,109,123,124,0,[1,13200,1],[[0,40,41,0,42,125,0,0,[1,13200,0],[],[]]],[[13200,2,113],[13201,2,348]]],[0,115,20,0,116,127,106,0,[1,13201,1],[[0,118,119,0,120,128,0,0,[1,13201,1],[],[]]],[[13202,2,349]]],[0,108,20,0,109,130,131,0,[1,13202,2],[[0,40,41,0,42,132,0,0,[0,13203,1],[],[[13204,5,133]]]],[[13204,2,134],[13204,2,135]]],[0,115,20,0,116,136,106,0,[1,13205,1],[[0,63,20,0,64,106,0,0,[1,13205,1],[],[]]],[[13206,2,349]]],[0,115,20,0,116,137,106,0,[1,13206,1],[[0,63,20,0,64,106,0,0,[1,13207,0],[],[]]],[[13207,2,349]]],[0,46,20,0,47,0,138,0,[1,13208,0],[],[[13208,2,139]]],[0,140,20,0,141,142,143,0,[1,13208,1],[],[[13209,2,144]]],[3,145,0,0,0,0,0,0,[1,13209,28],[[4,350,0,0,0,0,0,0,[1,13210,27],[[0,108,20,0,109,147,148,0,[1,13210,1],[[0,40,41,0,42,149,0,0,[1,13210,0],[],[]]],[[13211,2,113],[13211,2,351]]],[0,151,152,0,153,154,154,0,[1,13211,1],[],[[13212,2,352]]],[0,115,20,0,116,156,154,0,[1,13212,1],[[0,63,20,0,64,154,0,0,[1,13213,0],[],[]]],[[13213,2,352]]],[0,115,20,0,116,157,154,0,[1,13214,1],[[0,63,20,0,64,154,0,0,[1,13214,0],[],[]]],[[13215,2,352]]],[0,115,20,0,116,158,106,0,[1,13215,1],[[0,118,119,0,120,159,0,0,[1,13216,0],[],[]]],[[13216,2,349]]],[0,118,119,0,120,160,106,0,[1,13217,0],[],[[13217,2,349]]],[0,161,152,0,162,106,163,0,[1,13218,0],[],[[13218,2,353]]],[0,165,166,0,167,168,0,0,[1,13233,4],[[0,59,20,0,60,169,0,0,[1,13234,0],[],[]],[0,59,20,0,60,170,0,0,[1,13234,1],[],[]],[3,171,0,0,0,0,0,0,[1,13235,1],[[4,354,0,0,0,0,0,0,[1,13235,1],[[0,173,41,0,174,175,0,0,[1,13236,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,13237,1],[],[[13238,2,355]]],[0,183,90,0,0,97,184,0,[1,13238,300],[[0,59,20,0,60,185,0,0,[1,13239,0],[],[]],[0,59,20,0,60,186,0,0,[1,13239,1],[],[]],[0,40,41,0,42,187,188,0,[1,13240,1],[],[[13241,2,189]]],[0,151,152,0,153,190,191,0,[1,13241,1],[],[[13242,2,356]]],[0,193,166,0,0,194,195,0,[1,13243,283],[[0,63,20,0,64,196,197,0,[1,13243,1],[],[[13243,2,198]]],[0,199,200,0,201,202,0,0,[1,13244,1],[],[[13244,2,203]]],[0,204,200,0,205,206,195,0,[1,13245,277],[],[[13245,2,357],[13522,2,208]]],[0,19,20,0,21,209,0,0,[1,13523,0],[],[[13523,2,210]]],[0,211,20,0,212,213,0,0,[1,13524,0],[],[[13524,2,214]]],[0,215,200,0,216,217,195,0,[1,13524,2],[],[[13525,2,772],[13525,2,219],[13525,2,762]]]],[[13526,2,762]]],[0,115,20,0,116,221,48,0,[1,13526,10],[[0,222,223,0,224,195,0,0,[1,13527,8],[[0,19,20,0,21,225,0,0,[1,13527,1],[],[[13528,2,225]]],[0,46,20,0,47,0,48,0,[1,13529,0],[],[[13529,2,49]]],[0,63,20,0,64,226,227,0,[1,13530,1],[],[[13531,2,228]]],[0,108,20,0,109,229,230,0,[1,13531,1],[[0,40,41,0,42,231,0,0,[1,13532,0],[],[]]],[[13532,2,113],[13532,2,763]]],[0,233,20,0,234,235,0,0,[1,13533,0],[],[]],[3,236,0,0,0,0,0,0,[1,13533,2],[[4,764,0,0,0,0,0,0,[1,13534,1],[[0,173,41,0,174,238,0,0,[1,13534,0],[],[]]],[]]],[]]],[]]],[[13535,2,773]]],[0,63,20,0,64,240,241,0,[1,13536,0],[],[[13536,2,242]]],[0,211,20,0,212,243,0,0,[1,13537,0],[],[[13537,2,214]]]],[[13537,2,242],[13538,2,773]]],[0,211,20,0,212,243,0,0,[1,13538,0],[],[[13538,2,214]]],[0,115,20,0,116,244,87,0,[1,13539,1],[[0,63,20,0,64,87,0,0,[1,13539,1],[],[]]],[[13540,2,346]]],[0,46,20,0,47,0,245,0,[1,13540,1],[],[[13540,2,246]]],[3,247,0,0,0,0,0,0,[1,13541,2],[[4,774,0,0,0,0,0,0,[1,13541,2],[[0,179,20,0,180,249,250,0,[1,13541,1],[],[[13542,2,775]]],[0,173,41,0,174,252,0,0,[1,13542,1],[],[]]],[]]],[]]],[[13543,2,773],[13543,2,775]]],[0,115,20,0,116,254,250,0,[1,13544,1],[[0,63,20,0,64,250,0,0,[1,13545,0],[],[]]],[[13545,2,775]]]],[[13545,2,773],[13546,2,775]]],[0,255,20,0,256,82,257,0,[1,13546,1],[],[[13546,2,316],[13547,2,317]]],[0,115,20,0,116,260,82,0,[1,13547,15],[[0,165,166,0,167,292,0,0,[1,13558,3],[[0,59,20,0,60,169,0,0,[1,13558,1],[],[]],[0,59,20,0,60,170,0,0,[1,13559,0],[],[]],[3,171,0,0,0,0,0,0,[1,13559,1],[[4,776,0,0,0,0,0,0,[1,13559,1],[[0,173,41,0,174,175,0,0,[1,13560,0],[],[]]],[]]],[]]],[]]],[[13561,2,777]]],[0,115,20,0,116,262,0,0,[1,13562,1],[[0,173,41,0,174,263,0,0,[1,13563,0],[],[]]],[]]],[]],[4,369,0,0,0,0,0,0,[1,13564,239],[[0,40,41,0,42,86,87,0,[1,13564,0],[],[[13564,2,370]]],[0,89,90,0,91,92,93,0,[1,13565,221],[[0,59,20,0,60,94,0,0,[1,13565,0],[],[]],[0,40,41,0,42,95,87,0,[1,13566,0],[],[[13566,2,370]]],[0,96,90,0,91,97,93,0,[1,13566,218],[[0,59,20,0,60,94,0,0,[1,13567,0],[],[]],[0,40,41,0,42,95,87,0,[1,13568,0],[],[[13568,2,370]]],[0,40,41,0,42,98,99,0,[1,13568,1],[],[[13569,2,371]]],[0,59,20,0,60,101,0,0,[1,13569,0],[],[]],[0,63,20,0,64,102,103,0,[1,13570,0],[],[[13570,2,104]]],[0,63,20,0,64,105,106,0,[1,13570,1],[],[[13571,2,107]]],[0,108,20,0,109,110,111,0,[1,13571,1],[[0,40,41,0,42,112,0,0,[1,13572,0],[],[]]],[[13572,2,113],[13572,2,372]]],[0,115,20,0,116,117,106,0,[1,13573,1],[[0,118,119,0,120,121,0,0,[1,13573,1],[],[]]],[[13574,2,373]]],[0,108,20,0,109,123,124,0,[1,13575,1],[[0,40,41,0,42,125,0,0,[1,13575,0],[],[]]],[[13575,2,113],[13576,2,374]]],[0,115,20,0,116,127,106,0,[1,13576,2],[[0,118,119,0,120,128,0,0,[1,13577,0],[],[]]],[[13577,2,375]]],[0,108,20,0,109,130,131,0,[1,13578,1],[[0,40,41,0,42,132,0,0,[0,13578,1],[],[[13579,5,133]]]],[[13579,2,134],[13579,2,135]]],[0,115,20,0,116,136,106,0,[1,13580,1],[[0,63,20,0,64,106,0,0,[1,13580,1],[],[]]],[[13581,2,375]]],[0,115,20,0,116,137,106,0,[1,13581,1],[[0,63,20,0,64,106,0,0,[1,13582,0],[],[]]],[[13582,2,375]]],[0,46,20,0,47,0,138,0,[1,13583,0],[],[[13583,2,139]]],[0,140,20,0,141,142,143,0,[1,13583,1],[],[[13584,2,144]]],[3,145,0,0,0,0,0,0,[1,13584,24],[[4,376,0,0,0,0,0,0,[1,13585,23],[[0,108,20,0,109,147,148,0,[1,13585,1],[[0,40,41,0,42,149,0,0,[1,13585,1],[],[]]],[[13586,2,113],[13586,2,377]]],[0,151,152,0,153,154,154,0,[1,13587,0],[],[[13587,2,378]]],[0,115,20,0,116,156,154,0,[1,13587,2],[[0,63,20,0,64,154,0,0,[1,13588,0],[],[]]],[[13589,2,378]]],[0,115,20,0,116,157,154,0,[1,13589,1],[[0,63,20,0,64,154,0,0,[1,13590,0],[],[]]],[[13590,2,378]]],[0,115,20,0,116,158,106,0,[1,13591,1],[[0,118,119,0,120,159,0,0,[1,13591,1],[],[]]],[[13592,2,375]]],[0,118,119,0,120,160,106,0,[1,13593,0],[],[[13593,2,375]]],[0,161,152,0,162,106,163,0,[1,13594,0],[],[[13594,2,379]]],[0,165,166,0,167,168,0,0,[1,13604,3],[[0,59,20,0,60,169,0,0,[1,13605,0],[],[]],[0,59,20,0,60,170,0,0,[1,13605,1],[],[]],[3,171,0,0,0,0,0,0,[1,13606,1],[[4,380,0,0,0,0,0,0,[1,13606,1],[[0,173,41,0,174,175,0,0,[1,13606,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,13608,1],[],[[13609,2,381]]],[0,183,90,0,0,97,184,0,[1,13610,167],[[0,59,20,0,60,185,0,0,[1,13610,0],[],[]],[0,59,20,0,60,186,0,0,[1,13611,0],[],[]],[0,40,41,0,42,187,188,0,[1,13611,1],[],[[13612,2,189]]],[0,151,152,0,153,190,191,0,[1,13612,1],[],[[13612,2,382]]],[0,193,166,0,0,194,195,0,[1,13613,152],[[0,63,20,0,64,196,197,0,[1,13613,1],[],[[13614,2,198]]],[0,199,200,0,201,202,0,0,[1,13614,1],[],[[13614,2,203]]],[0,204,200,0,205,206,195,0,[1,13615,146],[],[[13616,2,383],[13760,2,208]]],[0,19,20,0,21,209,0,0,[1,13761,1],[],[[13761,2,210]]],[0,211,20,0,212,213,0,0,[1,13762,1],[],[[13762,2,214]]],[0,215,200,0,216,217,195,0,[1,13763,1],[],[[13763,2,778],[13764,2,219],[13764,2,762]]]],[[13765,2,762]]],[0,115,20,0,116,221,48,0,[1,13765,10],[[0,222,223,0,224,195,0,0,[1,13766,8],[[0,19,20,0,21,225,0,0,[1,13767,0],[],[[13767,2,225]]],[0,46,20,0,47,0,48,0,[1,13767,1],[],[[13768,2,49]]],[0,63,20,0,64,226,227,0,[1,13768,1],[],[[13769,2,228]]],[0,108,20,0,109,229,230,0,[1,13769,2],[[0,40,41,0,42,231,0,0,[1,13770,0],[],[]]],[[13771,2,113],[13771,2,779]]],[0,233,20,0,234,235,0,0,[1,13771,1],[],[]],[3,236,0,0,0,0,0,0,[1,13772,2],[[4,780,0,0,0,0,0,0,[1,13772,1],[[0,173,41,0,174,238,0,0,[1,13773,0],[],[]]],[]]],[]]],[]]],[[13774,2,781]]],[0,63,20,0,64,240,241,0,[1,13775,1],[],[[13775,2,242]]],[0,211,20,0,212,243,0,0,[1,13776,1],[],[[13776,2,214]]]],[[13777,2,242],[13777,2,781]]],[0,211,20,0,212,243,0,0,[1,13778,0],[],[[13778,2,214]]],[0,115,20,0,116,244,87,0,[1,13779,1],[[0,63,20,0,64,87,0,0,[1,13779,0],[],[]]],[[13780,2,370]]],[0,46,20,0,47,0,245,0,[1,13780,1],[],[[13780,2,246]]],[3,247,0,0,0,0,0,0,[1,13781,2],[[4,782,0,0,0,0,0,0,[1,13781,2],[[0,179,20,0,180,249,250,0,[1,13781,1],[],[[13782,2,783]]],[0,173,41,0,174,252,0,0,[1,13782,1],[],[]]],[]]],[]]],[[13783,2,781],[13784,2,783]]],[0,115,20,0,116,254,250,0,[1,13784,1],[[0,63,20,0,64,250,0,0,[1,13785,0],[],[]]],[[13785,2,783]]]],[[13786,2,781],[13786,2,783]]],[0,255,20,0,256,82,257,0,[1,13786,1],[],[[13787,2,341],[13787,2,342]]],[0,115,20,0,116,260,82,0,[1,13787,13],[[0,165,166,0,167,292,0,0,[1,13797,3],[[0,59,20,0,60,169,0,0,[1,13798,0],[],[]],[0,59,20,0,60,170,0,0,[1,13798,0],[],[]],[3,171,0,0,0,0,0,0,[1,13798,2],[[4,784,0,0,0,0,0,0,[1,13798,2],[[0,173,41,0,174,175,0,0,[1,13798,0],[],[]]],[]]],[]]],[]]],[[13800,2,785]]],[0,115,20,0,116,262,0,0,[1,13801,1],[[0,173,41,0,174,263,0,0,[1,13802,0],[],[]]],[]]],[]],[4,395,0,0,0,0,0,0,[1,13803,199],[[0,40,41,0,42,86,87,0,[1,13803,1],[],[[13803,2,265]]],[0,89,90,0,91,92,93,0,[1,13804,179],[[0,59,20,0,60,94,0,0,[1,13804,1],[],[]],[0,40,41,0,42,95,87,0,[1,13805,0],[],[[13805,2,265]]],[0,96,90,0,91,97,93,0,[1,13806,174],[[0,59,20,0,60,94,0,0,[1,13806,0],[],[]],[0,40,41,0,42,95,87,0,[1,13807,0],[],[[13807,2,265]]],[0,40,41,0,42,98,99,0,[1,13808,0],[],[[13808,2,396]]],[0,59,20,0,60,101,0,0,[1,13808,0],[],[]],[0,63,20,0,64,102,103,0,[1,13808,0],[],[[13808,2,104]]],[0,63,20,0,64,105,106,0,[1,13809,0],[],[[13809,2,107]]],[0,108,20,0,109,110,111,0,[1,13809,2],[[0,40,41,0,42,112,0,0,[1,13810,0],[],[]]],[[13810,2,113],[13810,2,267]]],[0,115,20,0,116,117,106,0,[1,13811,1],[[0,118,119,0,120,121,0,0,[1,13811,1],[],[]]],[[13812,2,268]]],[0,108,20,0,109,123,124,0,[1,13812,2],[[0,40,41,0,42,125,0,0,[1,13813,0],[],[]]],[[13813,2,113],[13814,2,397]]],[0,115,20,0,116,127,106,0,[1,13814,1],[[0,118,119,0,120,128,0,0,[1,13814,1],[],[]]],[[13815,2,398]]],[0,108,20,0,109,130,131,0,[1,13816,1],[[0,40,41,0,42,132,0,0,[0,13816,0],[],[[13816,5,133]]]],[[13817,2,134],[13817,2,135]]],[0,115,20,0,116,136,106,0,[1,13817,1],[[0,63,20,0,64,106,0,0,[1,13818,0],[],[]]],[[13818,2,398]]],[0,115,20,0,116,137,106,0,[1,13819,1],[[0,63,20,0,64,106,0,0,[1,13819,0],[],[]]],[[13820,2,398]]],[0,46,20,0,47,0,138,0,[1,13820,1],[],[[13820,2,139]]],[0,140,20,0,141,142,143,0,[1,13821,1],[],[[13822,2,144]]],[3,145,0,0,0,0,0,0,[1,13823,29],[[4,399,0,0,0,0,0,0,[1,13823,29],[[0,108,20,0,109,147,148,0,[1,13823,2],[[0,40,41,0,42,149,0,0,[1,13824,0],[],[]]],[[13824,2,113],[13824,2,400]]],[0,151,152,0,153,154,154,0,[1,13825,0],[],[[13825,2,401]]],[0,115,20,0,116,156,154,0,[1,13826,2],[[0,118,119,0,120,402,0,0,[1,13826,1],[],[]]],[[13828,2,403]]],[0,115,20,0,116,157,154,0,[1,13828,1],[[0,118,119,0,120,404,0,0,[1,13829,0],[],[]]],[[13829,2,405]]],[0,115,20,0,116,158,106,0,[1,13830,1],[[0,118,119,0,120,406,0,0,[1,13830,1],[],[]]],[[13831,2,398]]],[0,118,119,0,120,160,106,0,[1,13831,1],[],[[13832,2,398]]],[0,161,152,0,162,106,163,0,[1,13832,1],[],[[13833,2,407]]],[0,165,166,0,167,168,0,0,[1,13848,3],[[0,59,20,0,60,169,0,0,[1,13849,0],[],[]],[0,59,20,0,60,170,0,0,[1,13850,0],[],[]],[3,171,0,0,0,0,0,0,[1,13850,1],[[4,408,0,0,0,0,0,0,[1,13850,1],[[0,173,41,0,174,175,0,0,[1,13851,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,13852,1],[],[[13853,2,409]]],[0,183,90,0,0,97,184,0,[1,13853,121],[[0,59,20,0,60,185,0,0,[1,13853,1],[],[]],[0,59,20,0,60,186,0,0,[1,13854,0],[],[]],[0,40,41,0,42,187,188,0,[1,13855,0],[],[[13855,2,189]]],[0,151,152,0,153,190,191,0,[1,13855,1],[],[[13856,2,410]]],[0,193,166,0,0,194,195,0,[1,13856,108],[[0,63,20,0,64,196,197,0,[1,13857,0],[],[[13857,2,198]]],[0,199,200,0,201,202,0,0,[1,13857,1],[],[[13858,2,203]]],[0,204,200,0,205,206,195,0,[1,13859,94],[],[[13860,2,411],[13952,2,208]]],[0,19,20,0,21,209,0,0,[1,13954,1],[],[[13955,2,210]]],[0,211,20,0,212,213,0,0,[1,13956,2],[],[[13958,2,214]]],[0,215,200,0,216,217,195,0,[1,13959,4],[],[[13961,2,786],[13962,2,219],[13962,2,413]]]],[[13964,2,413]]],[0,115,20,0,116,221,48,0,[1,13964,8],[[0,222,223,0,224,195,0,0,[1,13965,6],[[0,19,20,0,21,225,0,0,[1,13965,1],[],[[13966,2,225]]],[0,46,20,0,47,0,48,0,[1,13966,0],[],[[13966,2,49]]],[0,63,20,0,64,226,227,0,[1,13967,0],[],[[13967,2,228]]],[0,108,20,0,109,229,230,0,[1,13968,1],[[0,40,41,0,42,231,0,0,[1,13968,0],[],[]]],[[13968,2,113],[13969,2,414]]],[0,233,20,0,234,235,0,0,[1,13969,0],[],[]],[3,236,0,0,0,0,0,0,[1,13970,1],[[4,415,0,0,0,0,0,0,[1,13970,1],[[0,173,41,0,174,238,0,0,[1,13970,0],[],[]]],[]]],[]]],[]]],[[13971,2,787]]],[0,63,20,0,64,240,241,0,[1,13972,0],[],[[13972,2,242]]],[0,211,20,0,212,243,0,0,[1,13973,0],[],[[13973,2,214]]]],[[13973,2,242],[13974,2,787]]],[0,211,20,0,212,243,0,0,[1,13974,1],[],[[13974,2,214]]],[0,115,20,0,116,244,87,0,[1,13975,1],[[0,63,20,0,64,87,0,0,[1,13975,1],[],[]]],[[13976,2,265]]],[0,46,20,0,47,0,245,0,[1,13976,1],[],[[13977,2,246]]],[3,247,0,0,0,0,0,0,[1,13977,2],[[4,788,0,0,0,0,0,0,[1,13977,2],[[0,179,20,0,180,249,250,0,[1,13977,1],[],[[13978,2,789]]],[0,173,41,0,174,252,0,0,[1,13978,1],[],[]]],[]]],[]]],[[13980,2,787],[13980,2,789]]],[0,115,20,0,116,254,250,0,[1,13980,2],[[0,63,20,0,64,250,0,0,[1,13981,0],[],[]]],[[13982,2,789]]]],[[13982,2,787],[13982,2,789]]],[0,255,20,0,256,82,257,0,[1,13983,1],[],[[13983,2,365],[13984,2,366]]],[0,115,20,0,116,260,82,0,[1,13984,15],[[0,165,166,0,167,292,0,0,[1,13994,5],[[0,59,20,0,60,169,0,0,[1,13995,0],[],[]],[0,59,20,0,60,170,0,0,[1,13996,0],[],[]],[3,171,0,0,0,0,0,0,[1,13996,2],[[4,790,0,0,0,0,0,0,[1,13997,1],[[0,173,41,0,174,175,0,0,[1,13997,1],[],[]]],[]]],[]]],[]]],[[13999,2,791]]],[0,115,20,0,116,262,0,0,[1,14000,2],[[0,173,41,0,174,263,0,0,[1,14001,0],[],[]]],[]]],[]],[4,423,0,0,0,0,0,0,[1,14002,449],[[0,40,41,0,42,86,87,0,[1,14002,1],[],[[14003,2,424]]],[0,89,90,0,91,92,93,0,[1,14003,431],[[0,59,20,0,60,94,0,0,[1,14004,0],[],[]],[0,40,41,0,42,95,87,0,[1,14005,0],[],[[14005,2,424]]],[0,96,90,0,91,97,93,0,[1,14006,426],[[0,59,20,0,60,94,0,0,[1,14006,0],[],[]],[0,40,41,0,42,95,87,0,[1,14007,0],[],[[14007,2,424]]],[0,40,41,0,42,98,99,0,[1,14008,1],[],[[14008,2,425]]],[0,59,20,0,60,101,0,0,[1,14009,0],[],[]],[0,63,20,0,64,102,103,0,[1,14009,1],[],[[14010,2,104]]],[0,63,20,0,64,105,106,0,[1,14011,0],[],[[14011,2,107]]],[0,108,20,0,109,110,111,0,[1,14012,1],[[0,40,41,0,42,112,0,0,[0,14012,1],[],[[14013,5,426]]]],[[14013,2,134],[14013,2,427]]],[0,115,20,0,116,117,106,0,[1,14014,1],[[0,63,20,0,64,106,0,0,[1,14014,1],[],[]]],[[14015,2,107]]],[0,108,20,0,109,123,124,0,[1,14015,3],[[0,40,41,0,42,125,0,0,[0,14016,1],[],[[14017,5,428]]]],[[14017,2,134],[14018,2,429]]],[0,115,20,0,116,127,106,0,[1,14019,2],[[0,63,20,0,64,106,0,0,[1,14020,0],[],[]]],[[14021,2,107]]],[0,108,20,0,109,130,131,0,[1,14021,3],[[0,40,41,0,42,132,0,0,[0,14022,1],[],[[14023,5,133]]]],[[14023,2,134],[14023,2,135]]],[0,115,20,0,116,136,106,0,[1,14024,1],[[0,63,20,0,64,106,0,0,[1,14024,1],[],[]]],[[14025,2,107]]],[0,115,20,0,116,137,106,0,[1,14026,2],[[0,63,20,0,64,106,0,0,[1,14026,1],[],[]]],[[14027,2,107]]],[0,46,20,0,47,0,138,0,[1,14028,0],[],[[14028,2,139]]],[0,140,20,0,141,142,143,0,[1,14029,0],[],[[14029,2,144]]],[3,145,0,0,0,0,0,0,[1,14029,26],[[4,430,0,0,0,0,0,0,[1,14030,25],[[0,108,20,0,109,147,148,0,[1,14030,2],[[0,40,41,0,42,149,0,0,[1,14030,1],[],[]]],[[14031,2,113],[14032,2,431]]],[0,151,152,0,153,154,154,0,[1,14032,1],[],[[14033,2,432]]],[0,115,20,0,116,156,154,0,[1,14033,1],[[0,63,20,0,64,154,0,0,[1,14034,0],[],[]]],[[14034,2,432]]],[0,115,20,0,116,157,154,0,[1,14034,2],[[0,63,20,0,64,154,0,0,[1,14035,0],[],[]]],[[14036,2,432]]],[0,115,20,0,116,158,106,0,[1,14036,1],[[0,118,119,0,120,159,0,0,[1,14036,1],[],[]]],[[14037,2,107]]],[0,118,119,0,120,160,106,0,[1,14037,1],[],[[14038,2,107]]],[0,161,152,0,162,106,163,0,[1,14038,1],[],[[14039,2,274]]],[0,165,166,0,167,168,0,0,[1,14051,4],[[0,59,20,0,60,169,0,0,[1,14052,0],[],[]],[0,59,20,0,60,170,0,0,[1,14053,0],[],[]],[3,171,0,0,0,0,0,0,[1,14053,1],[[4,275,0,0,0,0,0,0,[1,14053,1],[[0,173,41,0,174,175,0,0,[1,14054,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,14055,1],[],[[14056,2,279]]],[0,183,90,0,0,97,184,0,[1,14056,370],[[0,59,20,0,60,185,0,0,[1,14057,0],[],[]],[0,59,20,0,60,186,0,0,[1,14057,0],[],[]],[0,40,41,0,42,187,188,0,[1,14058,0],[],[[14058,2,189]]],[0,151,152,0,153,190,191,0,[1,14059,0],[],[[14059,2,280]]],[0,193,166,0,0,194,195,0,[1,14059,355],[[0,63,20,0,64,196,197,0,[1,14060,1],[],[[14060,2,198]]],[0,199,200,0,201,202,0,0,[1,14061,1],[],[[14061,2,203]]],[0,204,200,0,205,206,195,0,[1,14062,347],[],[[14063,2,433],[14409,2,208]]],[0,19,20,0,21,209,0,0,[1,14410,0],[],[[14410,2,210]]],[0,211,20,0,212,213,0,0,[1,14411,0],[],[[14411,2,214]]],[0,215,200,0,216,217,195,0,[1,14412,1],[],[[14412,2,792],[14413,2,219],[14413,2,435]]]],[[14414,2,435]]],[0,115,20,0,116,221,48,0,[1,14414,9],[[0,222,223,0,224,195,0,0,[1,14415,8],[[0,19,20,0,21,225,0,0,[1,14415,1],[],[[14416,2,225]]],[0,46,20,0,47,0,48,0,[1,14416,1],[],[[14417,2,49]]],[0,63,20,0,64,226,227,0,[1,14417,1],[],[[14418,2,228]]],[0,108,20,0,109,229,230,0,[1,14418,2],[[0,40,41,0,42,231,0,0,[1,14419,0],[],[]]],[[14420,2,113],[14420,2,436]]],[0,233,20,0,234,235,0,0,[1,14420,1],[],[]],[3,236,0,0,0,0,0,0,[1,14421,2],[[4,437,0,0,0,0,0,0,[1,14421,1],[[0,173,41,0,174,238,0,0,[1,14422,0],[],[]]],[]]],[]]],[]]],[[14423,2,793]]],[0,63,20,0,64,240,241,0,[1,14424,0],[],[[14424,2,242]]],[0,211,20,0,212,243,0,0,[1,14425,0],[],[[14425,2,214]]]],[[14426,2,242],[14426,2,793]]],[0,211,20,0,212,243,0,0,[1,14426,1],[],[[14427,2,214]]],[0,115,20,0,116,244,87,0,[1,14427,1],[[0,63,20,0,64,87,0,0,[1,14428,0],[],[]]],[[14428,2,424]]],[0,46,20,0,47,0,245,0,[1,14428,1],[],[[14429,2,246]]],[3,247,0,0,0,0,0,0,[1,14429,2],[[4,794,0,0,0,0,0,0,[1,14429,2],[[0,179,20,0,180,249,250,0,[1,14430,0],[],[[14430,2,795]]],[0,173,41,0,174,252,0,0,[1,14431,0],[],[]]],[]]],[]]],[[14432,2,793],[14432,2,795]]],[0,115,20,0,116,254,250,0,[1,14432,2],[[0,63,20,0,64,250,0,0,[1,14433,0],[],[]]],[[14434,2,795]]]],[[14434,2,793],[14434,2,795]]],[0,255,20,0,256,82,257,0,[1,14435,0],[],[[14435,2,391],[14435,2,392]]],[0,115,20,0,116,260,82,0,[1,14436,13],[[0,165,166,0,167,292,0,0,[1,14446,3],[[0,59,20,0,60,169,0,0,[1,14446,1],[],[]],[0,59,20,0,60,170,0,0,[1,14447,0],[],[]],[3,171,0,0,0,0,0,0,[1,14447,2],[[4,796,0,0,0,0,0,0,[1,14448,0],[[0,173,41,0,174,175,0,0,[1,14448,0],[],[]]],[]]],[]]],[]]],[[14449,2,797]]],[0,115,20,0,116,262,0,0,[1,14449,2],[[0,173,41,0,174,445,0,0,[1,14450,1],[],[]]],[]]],[]],[4,446,0,0,0,0,0,0,[1,14451,994],[[0,40,41,0,42,86,87,0,[1,14451,1],[],[[14452,2,447]]],[0,89,90,0,91,92,93,0,[1,14452,969],[[0,59,20,0,60,94,0,0,[1,14453,0],[],[]],[0,40,41,0,42,95,87,0,[1,14454,0],[],[[14454,2,447]]],[0,96,90,0,91,97,93,0,[1,14455,964],[[0,59,20,0,60,94,0,0,[1,14455,1],[],[]],[0,40,41,0,42,95,87,0,[1,14456,0],[],[[14456,2,447]]],[0,40,41,0,42,98,99,0,[1,14457,0],[],[[14457,2,448]]],[0,59,20,0,60,101,0,0,[1,14457,1],[],[]],[0,63,20,0,64,102,103,0,[1,14458,0],[],[[14458,2,104]]],[0,63,20,0,64,105,106,0,[1,14459,0],[],[[14459,2,107]]],[0,108,20,0,109,110,111,0,[1,14460,1],[[0,40,41,0,42,112,0,0,[0,14460,1],[],[[14460,5,426]]]],[[14461,2,134],[14461,2,427]]],[0,115,20,0,116,117,106,0,[1,14461,1],[[0,63,20,0,64,106,0,0,[1,14462,0],[],[]]],[[14462,2,107]]],[0,108,20,0,109,123,124,0,[1,14463,1],[[0,40,41,0,42,125,0,0,[1,14463,0],[],[]]],[[14464,2,113],[14464,2,299]]],[0,115,20,0,116,127,106,0,[1,14464,2],[[0,118,119,0,120,128,0,0,[1,14465,0],[],[]]],[[14465,2,449]]],[0,108,20,0,109,130,131,0,[1,14466,2],[[0,40,41,0,42,132,0,0,[0,14466,1],[],[[14467,5,133]]]],[[14467,2,134],[14467,2,135]]],[0,115,20,0,116,136,106,0,[1,14468,2],[[0,63,20,0,64,106,0,0,[1,14469,1],[],[]]],[[14470,2,449]]],[0,115,20,0,116,137,106,0,[1,14470,1],[[0,63,20,0,64,106,0,0,[1,14471,0],[],[]]],[[14471,2,449]]],[0,46,20,0,47,0,138,0,[1,14472,0],[],[[14472,2,139]]],[0,140,20,0,141,142,143,0,[1,14472,1],[],[[14473,2,144]]],[3,145,0,0,0,0,0,0,[1,14473,23],[[4,450,0,0,0,0,0,0,[1,14473,23],[[0,108,20,0,109,147,148,0,[1,14474,1],[[0,40,41,0,42,149,0,0,[1,14474,0],[],[]]],[[14475,2,113],[14475,2,451]]],[0,151,152,0,153,154,154,0,[1,14475,1],[],[[14476,2,452]]],[0,115,20,0,116,156,154,0,[1,14476,1],[[0,63,20,0,64,154,0,0,[1,14477,0],[],[]]],[[14477,2,452]]],[0,115,20,0,116,157,154,0,[1,14478,1],[[0,63,20,0,64,154,0,0,[1,14478,0],[],[]]],[[14479,2,452]]],[0,115,20,0,116,158,106,0,[1,14479,1],[[0,118,119,0,120,159,0,0,[1,14480,0],[],[]]],[[14480,2,449]]],[0,118,119,0,120,160,106,0,[1,14481,0],[],[[14481,2,449]]],[0,161,152,0,162,106,163,0,[1,14481,1],[],[[14482,2,304]]],[0,165,166,0,167,168,0,0,[1,14492,3],[[0,59,20,0,60,169,0,0,[1,14493,0],[],[]],[0,59,20,0,60,170,0,0,[1,14493,1],[],[]],[3,171,0,0,0,0,0,0,[1,14494,1],[[4,305,0,0,0,0,0,0,[1,14494,1],[[0,173,41,0,174,175,0,0,[1,14494,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,14496,1],[],[[14497,2,306]]],[0,183,90,0,0,97,184,0,[1,14497,915],[[0,59,20,0,60,185,0,0,[1,14498,0],[],[]],[0,59,20,0,60,186,0,0,[1,14498,0],[],[]],[0,40,41,0,42,187,188,0,[1,14499,0],[],[[14499,2,189]]],[0,151,152,0,153,190,191,0,[1,14499,1],[],[[14500,2,307]]],[0,193,166,0,0,194,195,0,[1,14500,893],[[0,63,20,0,64,196,197,0,[1,14501,0],[],[[14501,2,198]]],[0,199,200,0,201,202,0,0,[1,14502,0],[],[[14502,2,203]]],[0,204,200,0,205,206,195,0,[1,14503,876],[],[[14503,2,453],[15378,2,208]]],[0,19,20,0,21,209,0,0,[1,15380,3],[],[[15382,2,210]]],[0,211,20,0,212,213,0,0,[1,15384,3],[],[[15386,2,214]]],[0,215,200,0,216,217,195,0,[1,15388,4],[],[[15390,2,798],[15390,2,219],[15391,2,799]]]],[[15393,2,799]]],[0,115,20,0,116,221,48,0,[1,15394,14],[[0,222,223,0,224,195,0,0,[1,15395,13],[[0,19,20,0,21,225,0,0,[1,15397,1],[],[[15397,2,225]]],[0,46,20,0,47,0,48,0,[1,15398,1],[],[[15399,2,49]]],[0,63,20,0,64,226,227,0,[1,15400,1],[],[[15401,2,228]]],[0,108,20,0,109,229,230,0,[1,15402,2],[[0,40,41,0,42,231,0,0,[1,15402,1],[],[]]],[[15403,2,113],[15403,2,800]]],[0,233,20,0,234,235,0,0,[1,15404,1],[],[]],[3,236,0,0,0,0,0,0,[1,15405,2],[[4,801,0,0,0,0,0,0,[1,15406,1],[[0,173,41,0,174,238,0,0,[1,15406,1],[],[]]],[]]],[]]],[]]],[[15408,2,802]]],[0,63,20,0,64,240,241,0,[1,15409,0],[],[[15409,2,242]]],[0,211,20,0,212,243,0,0,[1,15410,1],[],[[15410,2,214]]]],[[15411,2,242],[15411,2,802]]],[0,211,20,0,212,243,0,0,[1,15412,1],[],[[15412,2,214]]],[0,115,20,0,116,244,87,0,[1,15413,1],[[0,63,20,0,64,87,0,0,[1,15414,0],[],[]]],[[15414,2,447]]],[0,46,20,0,47,0,245,0,[1,15415,0],[],[[15415,2,246]]],[3,247,0,0,0,0,0,0,[1,15416,2],[[4,803,0,0,0,0,0,0,[1,15416,2],[[0,179,20,0,180,249,250,0,[1,15416,1],[],[[15417,2,804]]],[0,173,41,0,174,252,0,0,[1,15417,1],[],[]]],[]]],[]]],[[15418,2,802],[15419,2,804]]],[0,115,20,0,116,254,250,0,[1,15419,2],[[0,63,20,0,64,250,0,0,[1,15420,0],[],[]]],[[15421,2,804]]]],[[15421,2,802],[15421,2,804]]],[0,255,20,0,256,82,257,0,[1,15422,1],[],[[15422,2,419],[15422,2,420]]],[0,115,20,0,116,260,82,0,[1,15423,20],[[0,165,166,0,167,292,0,0,[1,15439,3],[[0,59,20,0,60,169,0,0,[1,15440,0],[],[]],[0,59,20,0,60,170,0,0,[1,15440,1],[],[]],[3,171,0,0,0,0,0,0,[1,15441,1],[[4,805,0,0,0,0,0,0,[1,15441,1],[[0,173,41,0,174,175,0,0,[1,15441,1],[],[]]],[]]],[]]],[]]],[[15443,2,806]]],[0,115,20,0,116,262,0,0,[1,15443,1],[[0,173,41,0,174,445,0,0,[1,15444,0],[],[]]],[]]],[]],[4,465,0,0,0,0,0,0,[1,15445,1743],[[0,40,41,0,42,86,87,0,[1,15445,1],[],[[15445,2,424]]],[0,89,90,0,91,92,93,0,[1,15446,1724],[[0,59,20,0,60,94,0,0,[1,15446,1],[],[]],[0,40,41,0,42,95,87,0,[1,15447,0],[],[[15447,2,424]]],[0,96,90,0,91,97,93,0,[1,15448,1719],[[0,59,20,0,60,94,0,0,[1,15448,0],[],[]],[0,40,41,0,42,95,87,0,[1,15449,0],[],[[15449,2,424]]],[0,40,41,0,42,98,99,0,[1,15449,1],[],[[15450,2,396]]],[0,59,20,0,60,101,0,0,[1,15450,0],[],[]],[0,63,20,0,64,102,103,0,[1,15451,0],[],[[15451,2,104]]],[0,63,20,0,64,105,106,0,[1,15451,1],[],[[15452,2,107]]],[0,108,20,0,109,110,111,0,[1,15452,2],[[0,40,41,0,42,112,0,0,[0,15453,0],[],[[15453,5,426]]]],[[15453,2,134],[15453,2,427]]],[0,115,20,0,116,117,106,0,[1,15454,2],[[0,63,20,0,64,106,0,0,[1,15455,0],[],[]]],[[15456,2,107]]],[0,108,20,0,109,123,124,0,[1,15456,1],[[0,40,41,0,42,125,0,0,[1,15456,1],[],[]]],[[15457,2,113],[15457,2,397]]],[0,115,20,0,116,127,106,0,[1,15458,1],[[0,118,119,0,120,128,0,0,[1,15458,1],[],[]]],[[15459,2,466]]],[0,108,20,0,109,130,131,0,[1,15459,2],[[0,40,41,0,42,132,0,0,[0,15460,1],[],[[15460,5,133]]]],[[15461,2,134],[15461,2,135]]],[0,115,20,0,116,136,106,0,[1,15461,2],[[0,63,20,0,64,106,0,0,[1,15462,0],[],[]]],[[15463,2,466]]],[0,115,20,0,116,137,106,0,[1,15463,1],[[0,63,20,0,64,106,0,0,[1,15464,0],[],[]]],[[15464,2,466]]],[0,46,20,0,47,0,138,0,[1,15465,0],[],[[15465,2,139]]],[0,140,20,0,141,142,143,0,[1,15466,0],[],[[15466,2,144]]],[3,145,0,0,0,0,0,0,[1,15467,25],[[4,399,0,0,0,0,0,0,[1,15467,25],[[0,108,20,0,109,147,148,0,[1,15467,2],[[0,40,41,0,42,149,0,0,[1,15468,0],[],[]]],[[15468,2,113],[15468,2,400]]],[0,151,152,0,153,154,154,0,[1,15469,1],[],[[15470,2,401]]],[0,115,20,0,116,156,154,0,[1,15470,2],[[0,118,119,0,120,402,0,0,[1,15471,0],[],[]]],[[15472,2,403]]],[0,115,20,0,116,157,154,0,[1,15472,2],[[0,118,119,0,120,404,0,0,[1,15473,0],[],[]]],[[15474,2,405]]],[0,115,20,0,116,158,106,0,[1,15475,2],[[0,118,119,0,120,406,0,0,[1,15476,0],[],[]]],[[15476,2,466]]],[0,118,119,0,120,160,106,0,[1,15477,1],[],[[15477,2,466]]],[0,161,152,0,162,106,163,0,[1,15478,1],[],[[15478,2,407]]],[0,165,166,0,167,168,0,0,[1,15489,3],[[0,59,20,0,60,169,0,0,[1,15489,1],[],[]],[0,59,20,0,60,170,0,0,[1,15490,0],[],[]],[3,171,0,0,0,0,0,0,[1,15490,2],[[4,408,0,0,0,0,0,0,[1,15491,0],[[0,173,41,0,174,175,0,0,[1,15491,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,15493,1],[],[[15493,2,409]]],[0,183,90,0,0,97,184,0,[1,15494,1666],[[0,59,20,0,60,185,0,0,[1,15494,1],[],[]],[0,59,20,0,60,186,0,0,[1,15495,0],[],[]],[0,40,41,0,42,187,188,0,[1,15496,0],[],[[15496,2,189]]],[0,151,152,0,153,190,191,0,[1,15496,1],[],[[15497,2,410]]],[0,193,166,0,0,194,195,0,[1,15497,1645],[[0,63,20,0,64,196,197,0,[1,15498,0],[],[[15498,2,198]]],[0,199,200,0,201,202,0,0,[1,15499,1],[],[[15499,2,203]]],[0,204,200,0,205,206,195,0,[1,15500,1628],[],[[15500,2,411],[17127,2,208]]],[0,19,20,0,21,209,0,0,[1,17130,2],[],[[17131,2,210]]],[0,211,20,0,212,213,0,0,[1,17133,3],[],[[17135,2,214]]],[0,215,200,0,216,217,195,0,[1,17137,3],[],[[17139,2,807],[17139,2,219],[17140,2,413]]]],[[17141,2,413]]],[0,115,20,0,116,221,48,0,[1,17142,14],[[0,222,223,0,224,195,0,0,[1,17144,12],[[0,19,20,0,21,225,0,0,[1,17145,1],[],[[17145,2,225]]],[0,46,20,0,47,0,48,0,[1,17146,1],[],[[17147,2,49]]],[0,63,20,0,64,226,227,0,[1,17148,1],[],[[17149,2,228]]],[0,108,20,0,109,229,230,0,[1,17149,3],[[0,40,41,0,42,231,0,0,[1,17150,1],[],[]]],[[17151,2,113],[17151,2,414]]],[0,233,20,0,234,235,0,0,[1,17152,1],[],[]],[3,236,0,0,0,0,0,0,[1,17153,3],[[4,415,0,0,0,0,0,0,[1,17154,1],[[0,173,41,0,174,238,0,0,[1,17154,1],[],[]]],[]]],[]]],[]]],[[17156,2,808]]],[0,63,20,0,64,240,241,0,[1,17157,1],[],[[17158,2,242]]],[0,211,20,0,212,243,0,0,[1,17159,0],[],[[17159,2,214]]]],[[17160,2,242],[17160,2,808]]],[0,211,20,0,212,243,0,0,[1,17161,0],[],[[17161,2,214]]],[0,115,20,0,116,244,87,0,[1,17162,1],[[0,63,20,0,64,87,0,0,[1,17162,1],[],[]]],[[17163,2,424]]],[0,46,20,0,47,0,245,0,[1,17163,1],[],[[17164,2,246]]],[3,247,0,0,0,0,0,0,[1,17164,3],[[4,809,0,0,0,0,0,0,[1,17164,3],[[0,179,20,0,180,249,250,0,[1,17165,1],[],[[17166,2,810]]],[0,173,41,0,174,252,0,0,[1,17166,0],[],[]]],[]]],[]]],[[17167,2,808],[17167,2,810]]],[0,115,20,0,116,254,250,0,[1,17168,1],[[0,63,20,0,64,250,0,0,[1,17169,0],[],[]]],[[17169,2,810]]]],[[17170,2,808],[17170,2,810]]],[0,255,20,0,256,82,257,0,[1,17170,1],[],[[17171,2,441],[17171,2,442]]],[0,115,20,0,116,260,82,0,[1,17171,16],[[0,165,166,0,167,292,0,0,[1,17183,3],[[0,59,20,0,60,169,0,0,[1,17184,0],[],[]],[0,59,20,0,60,170,0,0,[1,17184,1],[],[]],[3,171,0,0,0,0,0,0,[1,17185,1],[[4,811,0,0,0,0,0,0,[1,17185,1],[[0,173,41,0,174,175,0,0,[1,17185,1],[],[]]],[]]],[]]],[]]],[[17187,2,812]]],[0,115,20,0,116,262,0,0,[1,17187,1],[[0,173,41,0,174,445,0,0,[1,17188,0],[],[]]],[]]],[]],[4,813,0,0,0,0,0,0,[1,17189,398],[[0,40,41,0,42,86,87,0,[1,17189,1],[],[[17189,2,814]]],[0,89,90,0,91,92,93,0,[1,17190,378],[[0,59,20,0,60,94,0,0,[1,17190,1],[],[]],[0,40,41,0,42,95,87,0,[1,17191,0],[],[[17191,2,814]]],[0,96,90,0,91,97,93,0,[1,17192,371],[[0,59,20,0,60,94,0,0,[1,17192,0],[],[]],[0,40,41,0,42,95,87,0,[1,17193,0],[],[[17193,2,814]]],[0,40,41,0,42,98,99,0,[1,17194,0],[],[[17194,2,815]]],[0,59,20,0,60,101,0,0,[1,17194,1],[],[]],[0,63,20,0,64,102,103,0,[1,17195,1],[],[[17195,2,104]]],[0,63,20,0,64,105,106,0,[1,17196,0],[],[[17196,2,107]]],[0,108,20,0,109,110,111,0,[1,17197,1],[[0,40,41,0,42,112,0,0,[1,17197,0],[],[]]],[[17198,2,113],[17198,2,816]]],[0,115,20,0,116,117,106,0,[1,17198,2],[[0,118,119,0,120,121,0,0,[1,17199,0],[],[]]],[[17199,2,817]]],[0,108,20,0,109,123,124,0,[1,17200,1],[[0,40,41,0,42,125,0,0,[1,17200,1],[],[]]],[[17201,2,113],[17201,2,374]]],[0,115,20,0,116,127,106,0,[1,17201,2],[[0,118,119,0,120,128,0,0,[1,17202,1],[],[]]],[[17203,2,818]]],[0,108,20,0,109,130,131,0,[1,17204,1],[[0,40,41,0,42,132,0,0,[0,17204,1],[],[[17204,5,133]]]],[[17205,2,134],[17205,2,135]]],[0,115,20,0,116,136,106,0,[1,17205,2],[[0,63,20,0,64,106,0,0,[1,17206,0],[],[]]],[[17206,2,818]]],[0,115,20,0,116,137,106,0,[1,17207,1],[[0,63,20,0,64,106,0,0,[1,17207,1],[],[]]],[[17208,2,818]]],[0,46,20,0,47,0,138,0,[1,17208,1],[],[[17209,2,139]]],[0,140,20,0,141,142,143,0,[1,17209,1],[],[[17210,2,144]]],[3,145,0,0,0,0,0,0,[1,17210,55],[[4,819,0,0,0,0,0,0,[1,17210,29],[[0,108,20,0,109,147,148,0,[1,17211,1],[[0,40,41,0,42,149,0,0,[1,17211,0],[],[]]],[[17212,2,113],[17212,2,820]]],[0,151,152,0,153,154,154,0,[1,17212,1],[],[[17213,2,821]]],[0,115,20,0,116,156,154,0,[1,17213,1],[[0,63,20,0,64,154,0,0,[1,17213,1],[],[]]],[[17214,2,821]]],[0,115,20,0,116,157,154,0,[1,17214,2],[[0,63,20,0,64,154,0,0,[1,17215,0],[],[]]],[[17216,2,821]]],[0,115,20,0,116,158,106,0,[1,17216,1],[[0,118,119,0,120,159,0,0,[1,17217,0],[],[]]],[[17217,2,818]]],[0,118,119,0,120,160,106,0,[1,17218,1],[],[[17219,2,818]]],[0,161,152,0,162,106,163,0,[1,17219,1],[],[[17219,2,822]]],[0,165,166,0,167,168,0,0,[1,17235,4],[[0,59,20,0,60,169,0,0,[1,17236,0],[],[]],[0,59,20,0,60,170,0,0,[1,17237,0],[],[]],[3,171,0,0,0,0,0,0,[1,17237,1],[[4,823,0,0,0,0,0,0,[1,17237,1],[[0,173,41,0,174,175,0,0,[1,17238,0],[],[]]],[]]],[]]],[]]],[]],[4,824,0,0,0,0,0,0,[1,17239,26],[[0,108,20,0,109,147,148,0,[1,17239,1],[[0,40,41,0,42,149,0,0,[1,17240,0],[],[]]],[[17240,2,113],[17240,2,825]]],[0,151,152,0,153,154,154,0,[1,17241,0],[],[[17241,2,826]]],[0,115,20,0,116,156,154,0,[1,17242,1],[[0,63,20,0,64,154,0,0,[1,17242,0],[],[]]],[[17243,2,826]]],[0,115,20,0,116,157,154,0,[1,17243,1],[[0,63,20,0,64,154,0,0,[1,17244,0],[],[]]],[[17244,2,826]]],[0,115,20,0,116,158,106,0,[1,17244,2],[[0,118,119,0,120,159,0,0,[1,17245,0],[],[]]],[[17246,2,818]]],[0,118,119,0,120,160,106,0,[1,17246,1],[],[[17246,2,818]]],[0,161,152,0,162,106,163,0,[1,17247,0],[],[[17247,2,822]]],[0,165,166,0,167,168,0,0,[1,17261,4],[[0,59,20,0,60,169,0,0,[1,17262,0],[],[]],[0,59,20,0,60,170,0,0,[1,17263,0],[],[]],[3,171,0,0,0,0,0,0,[1,17263,2],[[4,823,0,0,0,0,0,0,[1,17263,1],[[0,173,41,0,174,175,0,0,[1,17264,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,17266,1],[],[[17267,2,827]]],[0,183,90,0,0,97,184,0,[1,17267,288],[[0,59,20,0,60,185,0,0,[1,17268,0],[],[]],[0,59,20,0,60,186,0,0,[1,17269,0],[],[]],[0,40,41,0,42,187,188,0,[1,17269,1],[],[[17270,2,189]]],[0,151,152,0,153,190,191,0,[1,17270,1],[],[[17271,2,828]]],[0,193,166,0,0,194,195,0,[1,17271,268],[[0,63,20,0,64,196,197,0,[1,17272,0],[],[[17272,2,198]]],[0,199,200,0,201,202,0,0,[1,17273,1],[],[[17273,2,203]]],[0,204,200,0,205,206,195,0,[1,17275,255],[],[[17275,2,829],[17529,2,208]]],[0,19,20,0,21,209,0,0,[1,17531,2],[],[[17533,2,210]]],[0,211,20,0,212,213,0,0,[1,17534,1],[],[[17535,2,214]]],[0,215,200,0,216,217,195,0,[1,17536,2],[],[[17537,2,830],[17537,2,219],[17538,2,831]]]],[[17539,2,831]]],[0,115,20,0,116,221,48,0,[1,17540,12],[[0,222,223,0,224,195,0,0,[1,17541,11],[[0,19,20,0,21,225,0,0,[1,17543,1],[],[[17543,2,225]]],[0,46,20,0,47,0,48,0,[1,17544,0],[],[[17544,2,49]]],[0,63,20,0,64,226,227,0,[1,17544,2],[],[[17546,2,228]]],[0,108,20,0,109,229,230,0,[1,17546,2],[[0,40,41,0,42,231,0,0,[1,17547,0],[],[]]],[[17548,2,113],[17548,2,832]]],[0,233,20,0,234,235,0,0,[1,17549,0],[],[]],[3,236,0,0,0,0,0,0,[1,17549,2],[[4,833,0,0,0,0,0,0,[1,17550,1],[[0,173,41,0,174,238,0,0,[1,17550,1],[],[]]],[]],[4,833,0,0,0,0,0,0,[1,17551,0],[[0,173,41,0,174,238,0,0,[1,17551,0],[],[]]],[]]],[]]],[]]],[[17552,2,834]]],[0,63,20,0,64,240,241,0,[1,17553,0],[],[[17553,2,242]]],[0,211,20,0,212,243,0,0,[1,17553,1],[],[[17554,2,214]]]],[[17554,2,242],[17555,2,834]]],[0,211,20,0,212,243,0,0,[1,17555,1],[],[[17555,2,214]]],[0,115,20,0,116,244,87,0,[1,17556,1],[[0,63,20,0,64,87,0,0,[1,17556,1],[],[]]],[[17557,2,814]]],[0,46,20,0,47,0,245,0,[1,17557,1],[],[[17558,2,246]]],[3,247,0,0,0,0,0,0,[1,17558,4],[[4,835,0,0,0,0,0,0,[1,17558,2],[[0,179,20,0,180,249,250,0,[1,17559,0],[],[[17559,2,836]]],[0,173,41,0,174,252,0,0,[1,17560,0],[],[]]],[]],[4,837,0,0,0,0,0,0,[1,17560,2],[[0,179,20,0,180,249,250,0,[1,17561,0],[],[[17561,2,836]]],[0,173,41,0,174,252,0,0,[1,17561,1],[],[]]],[]]],[]]],[[17563,2,834],[17563,2,836]]],[0,115,20,0,116,254,250,0,[1,17563,4],[[0,500,90,0,501,250,0,0,[1,17565,2],[[0,46,20,0,47,250,502,0,[1,17565,1],[],[[17566,2,838]]],[0,179,20,0,180,504,505,0,[1,17566,1],[],[[17566,2,839]]]],[]]],[[17567,2,840]]]],[[17568,2,834],[17568,2,840]]],[0,255,20,0,256,82,257,0,[1,17568,1],[],[[17569,2,461],[17569,2,462]]],[0,115,20,0,116,260,82,0,[1,17569,16],[[0,165,166,0,167,292,0,0,[1,17579,6],[[0,59,20,0,60,169,0,0,[1,17580,1],[],[]],[0,59,20,0,60,170,0,0,[1,17581,0],[],[]],[3,171,0,0,0,0,0,0,[1,17582,2],[[4,841,0,0,0,0,0,0,[1,17582,1],[[0,173,41,0,174,175,0,0,[1,17582,1],[],[]]],[]],[4,842,0,0,0,0,0,0,[1,17583,1],[[0,173,41,0,174,175,0,0,[1,17583,1],[],[]]],[]]],[]]],[]]],[[17585,2,843]]],[0,115,20,0,116,262,0,0,[1,17585,2],[[0,173,41,0,174,513,0,0,[1,17586,1],[],[]]],[]]],[]],[4,844,0,0,0,0,0,0,[1,17587,231],[[0,40,41,0,42,86,87,0,[1,17588,0],[],[[17588,2,845]]],[0,89,90,0,91,92,93,0,[1,17589,205],[[0,59,20,0,60,94,0,0,[1,17589,0],[],[]],[0,40,41,0,42,95,87,0,[1,17590,0],[],[[17590,2,845]]],[0,96,90,0,91,97,93,0,[1,17590,200],[[0,59,20,0,60,94,0,0,[1,17591,0],[],[]],[0,40,41,0,42,95,87,0,[1,17592,0],[],[[17592,2,845]]],[0,40,41,0,42,98,99,0,[1,17593,0],[],[[17593,2,846]]],[0,59,20,0,60,101,0,0,[1,17593,1],[],[]],[0,63,20,0,64,102,103,0,[1,17594,1],[],[[17594,2,104]]],[0,63,20,0,64,105,106,0,[1,17595,1],[],[[17596,2,107]]],[0,108,20,0,109,110,111,0,[1,17596,2],[[0,40,41,0,42,112,0,0,[1,17597,0],[],[]]],[[17597,2,113],[17598,2,847]]],[0,115,20,0,116,117,106,0,[1,17598,1],[[0,118,119,0,120,121,0,0,[1,17598,1],[],[]]],[[17599,2,848]]],[0,108,20,0,109,123,124,0,[1,17600,1],[[0,40,41,0,42,125,0,0,[1,17600,0],[],[]]],[[17601,2,113],[17601,2,374]]],[0,115,20,0,116,127,106,0,[1,17601,1],[[0,118,119,0,120,128,0,0,[1,17602,0],[],[]]],[[17602,2,849]]],[0,108,20,0,109,130,131,0,[1,17603,1],[[0,40,41,0,42,132,0,0,[0,17603,1],[],[[17604,5,133]]]],[[17604,2,134],[17604,2,135]]],[0,115,20,0,116,136,106,0,[1,17604,2],[[0,63,20,0,64,106,0,0,[1,17605,0],[],[]]],[[17606,2,849]]],[0,115,20,0,116,137,106,0,[1,17606,1],[[0,63,20,0,64,106,0,0,[1,17606,1],[],[]]],[[17607,2,849]]],[0,46,20,0,47,0,138,0,[1,17607,1],[],[[17608,2,139]]],[0,140,20,0,141,142,143,0,[1,17608,1],[],[[17609,2,144]]],[3,145,0,0,0,0,0,0,[1,17609,49],[[4,850,0,0,0,0,0,0,[1,17610,24],[[0,108,20,0,109,147,148,0,[1,17610,2],[[0,40,41,0,42,149,0,0,[1,17611,0],[],[]]],[[17612,2,113],[17612,2,851]]],[0,151,152,0,153,154,154,0,[1,17613,0],[],[[17613,2,852]]],[0,115,20,0,116,156,154,0,[1,17614,1],[[0,63,20,0,64,154,0,0,[1,17614,1],[],[]]],[[17615,2,852]]],[0,115,20,0,116,157,154,0,[1,17615,2],[[0,63,20,0,64,154,0,0,[1,17616,0],[],[]]],[[17617,2,852]]],[0,115,20,0,116,158,106,0,[1,17617,1],[[0,118,119,0,120,159,0,0,[1,17618,0],[],[]]],[[17618,2,849]]],[0,118,119,0,120,160,106,0,[1,17619,0],[],[[17619,2,849]]],[0,161,152,0,162,106,163,0,[1,17620,0],[],[[17620,2,853]]],[0,165,166,0,167,168,0,0,[1,17630,4],[[0,59,20,0,60,169,0,0,[1,17630,1],[],[]],[0,59,20,0,60,170,0,0,[1,17631,1],[],[]],[3,171,0,0,0,0,0,0,[1,17632,2],[[4,854,0,0,0,0,0,0,[1,17632,1],[[0,173,41,0,174,175,0,0,[1,17633,0],[],[]]],[]]],[]]],[]]],[]],[4,855,0,0,0,0,0,0,[1,17634,24],[[0,108,20,0,109,147,148,0,[1,17635,1],[[0,40,41,0,42,149,0,0,[1,17635,1],[],[]]],[[17636,2,113],[17636,2,856]]],[0,151,152,0,153,154,154,0,[1,17637,0],[],[[17637,2,857]]],[0,115,20,0,116,156,154,0,[1,17638,1],[[0,63,20,0,64,154,0,0,[1,17638,1],[],[]]],[[17639,2,857]]],[0,115,20,0,116,157,154,0,[1,17639,1],[[0,63,20,0,64,154,0,0,[1,17640,0],[],[]]],[[17640,2,857]]],[0,115,20,0,116,158,106,0,[1,17641,1],[[0,118,119,0,120,159,0,0,[1,17641,1],[],[]]],[[17642,2,849]]],[0,118,119,0,120,160,106,0,[1,17642,1],[],[[17643,2,849]]],[0,161,152,0,162,106,163,0,[1,17643,1],[],[[17644,2,853]]],[0,165,166,0,167,168,0,0,[1,17655,3],[[0,59,20,0,60,169,0,0,[1,17655,0],[],[]],[0,59,20,0,60,170,0,0,[1,17656,0],[],[]],[3,171,0,0,0,0,0,0,[1,17657,1],[[4,854,0,0,0,0,0,0,[1,17657,1],[[0,173,41,0,174,175,0,0,[1,17657,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,17659,1],[],[[17659,2,858]]],[0,183,90,0,0,97,184,0,[1,17660,122],[[0,59,20,0,60,185,0,0,[1,17660,1],[],[]],[0,59,20,0,60,186,0,0,[1,17661,0],[],[]],[0,40,41,0,42,187,188,0,[1,17662,0],[],[[17662,2,189]]],[0,151,152,0,153,190,191,0,[1,17662,1],[],[[17663,2,859]]],[0,193,166,0,0,194,195,0,[1,17663,108],[[0,63,20,0,64,196,197,0,[1,17664,0],[],[[17664,2,198]]],[0,199,200,0,201,202,0,0,[1,17664,1],[],[[17665,2,203]]],[0,204,200,0,205,206,195,0,[1,17665,100],[],[[17666,2,860],[17765,2,208]]],[0,19,20,0,21,209,0,0,[1,17766,2],[],[[17767,2,210]]],[0,211,20,0,212,213,0,0,[1,17768,1],[],[[17769,2,214]]],[0,215,200,0,216,217,195,0,[1,17770,1],[],[[17770,2,861],[17770,2,219],[17771,2,831]]]],[[17771,2,831]]],[0,115,20,0,116,221,48,0,[1,17771,9],[[0,222,223,0,224,195,0,0,[1,17772,7],[[0,19,20,0,21,225,0,0,[1,17772,1],[],[[17773,2,225]]],[0,46,20,0,47,0,48,0,[1,17773,1],[],[[17773,2,49]]],[0,63,20,0,64,226,227,0,[1,17774,0],[],[[17774,2,228]]],[0,108,20,0,109,229,230,0,[1,17775,1],[[0,40,41,0,42,231,0,0,[1,17775,0],[],[]]],[[17776,2,113],[17776,2,862]]],[0,233,20,0,234,235,0,0,[1,17776,0],[],[]],[3,236,0,0,0,0,0,0,[1,17777,2],[[4,863,0,0,0,0,0,0,[1,17777,1],[[0,173,41,0,174,238,0,0,[1,17777,1],[],[]]],[]],[4,863,0,0,0,0,0,0,[1,17778,1],[[0,173,41,0,174,238,0,0,[1,17778,1],[],[]]],[]]],[]]],[]]],[[17780,2,864]]],[0,63,20,0,64,240,241,0,[1,17780,1],[],[[17780,2,242]]],[0,211,20,0,212,243,0,0,[1,17781,0],[],[[17781,2,214]]]],[[17782,2,242],[17782,2,864]]],[0,211,20,0,212,243,0,0,[1,17782,1],[],[[17783,2,214]]],[0,115,20,0,116,244,87,0,[1,17783,1],[[0,63,20,0,64,87,0,0,[1,17784,0],[],[]]],[[17784,2,845]]],[0,46,20,0,47,0,245,0,[1,17784,1],[],[[17785,2,246]]],[3,247,0,0,0,0,0,0,[1,17785,4],[[4,865,0,0,0,0,0,0,[1,17785,2],[[0,179,20,0,180,249,250,0,[1,17786,0],[],[[17786,2,866]]],[0,173,41,0,174,252,0,0,[1,17787,0],[],[]]],[]],[4,867,0,0,0,0,0,0,[1,17787,2],[[0,179,20,0,180,249,250,0,[1,17788,0],[],[[17788,2,866]]],[0,173,41,0,174,252,0,0,[1,17788,1],[],[]]],[]]],[]]],[[17789,2,864],[17790,2,866]]],[0,115,20,0,116,254,250,0,[1,17790,3],[[0,500,90,0,501,250,0,0,[1,17791,2],[[0,46,20,0,47,250,502,0,[1,17791,1],[],[[17791,2,868]]],[0,179,20,0,180,504,505,0,[1,17792,1],[],[[17792,2,869]]]],[]]],[[17793,2,870]]]],[[17794,2,864],[17794,2,870]]],[0,255,20,0,256,82,257,0,[1,17794,1],[],[[17794,2,508],[17795,2,509]]],[0,115,20,0,116,260,82,0,[1,17795,21],[[0,165,166,0,167,292,0,0,[1,17811,5],[[0,59,20,0,60,169,0,0,[1,17812,0],[],[]],[0,59,20,0,60,170,0,0,[1,17812,1],[],[]],[3,171,0,0,0,0,0,0,[1,17813,2],[[4,871,0,0,0,0,0,0,[1,17813,1],[[0,173,41,0,174,175,0,0,[1,17813,1],[],[]]],[]],[4,872,0,0,0,0,0,0,[1,17814,1],[[0,173,41,0,174,175,0,0,[1,17815,0],[],[]]],[]]],[]]],[]]],[[17816,2,873]]],[0,115,20,0,116,262,0,0,[1,17816,2],[[0,173,41,0,174,513,0,0,[1,17817,0],[],[]]],[]]],[]]]; +</script> +<script type="text/javascript"> +window.sPart2 = [[4,264,0,0,0,0,0,0,[1,18665,551],[[0,40,41,0,42,86,87,0,[1,18665,1],[],[[18666,2,265]]],[0,89,90,0,91,92,93,0,[1,18666,546],[[0,59,20,0,60,94,0,0,[1,18667,0],[],[]],[0,40,41,0,42,95,87,0,[1,18667,1],[],[[18668,2,265]]],[0,96,90,0,91,97,93,0,[1,18668,541],[[0,59,20,0,60,94,0,0,[1,18668,1],[],[]],[0,40,41,0,42,95,87,0,[1,18669,0],[],[[18669,2,265]]],[0,40,41,0,42,98,99,0,[1,18670,0],[],[[18670,2,266]]],[0,59,20,0,60,101,0,0,[1,18670,1],[],[]],[0,63,20,0,64,102,103,0,[1,18671,0],[],[[18671,2,104]]],[0,63,20,0,64,105,106,0,[1,18672,0],[],[[18672,2,107]]],[0,108,20,0,109,110,111,0,[1,18672,2],[[0,40,41,0,42,112,0,0,[1,18672,0],[],[]]],[[18672,2,113],[18674,2,267]]],[0,115,20,0,116,117,106,0,[1,18674,0],[[0,118,119,0,120,121,0,0,[1,18674,0],[],[]]],[[18674,2,268]]],[0,108,20,0,109,123,124,0,[1,18674,2],[[0,40,41,0,42,125,0,0,[1,18675,0],[],[]]],[[18675,2,113],[18676,2,269]]],[0,115,20,0,116,127,106,0,[1,18676,2],[[0,118,119,0,120,128,0,0,[1,18677,1],[],[]]],[[18678,2,270]]],[0,108,20,0,109,130,131,0,[1,18678,2],[[0,40,41,0,42,132,0,0,[0,18679,1],[],[[18679,5,133]]]],[[18680,2,134],[18680,2,135]]],[0,115,20,0,116,136,106,0,[1,18680,2],[[0,63,20,0,64,106,0,0,[1,18681,0],[],[]]],[[18681,2,270]]],[0,115,20,0,116,137,106,0,[1,18682,1],[[0,63,20,0,64,106,0,0,[1,18682,1],[],[]]],[[18683,2,270]]],[0,46,20,0,47,0,138,0,[1,18683,1],[],[[18684,2,139]]],[0,140,20,0,141,142,143,0,[1,18684,1],[],[[18684,2,144]]],[3,145,0,0,0,0,0,0,[1,18685,47],[[4,271,0,0,0,0,0,0,[1,18685,23],[[0,108,20,0,109,147,148,0,[1,18685,1],[[0,40,41,0,42,149,0,0,[1,18686,0],[],[]]],[[18686,2,113],[18686,2,272]]],[0,151,152,0,153,154,154,0,[1,18687,0],[],[[18687,2,273]]],[0,115,20,0,116,156,154,0,[1,18688,1],[[0,63,20,0,64,154,0,0,[1,18688,1],[],[]]],[[18689,2,273]]],[0,115,20,0,116,157,154,0,[1,18689,1],[[0,63,20,0,64,154,0,0,[1,18690,0],[],[]]],[[18690,2,273]]],[0,115,20,0,116,158,106,0,[1,18691,1],[[0,118,119,0,120,159,0,0,[1,18691,1],[],[]]],[[18692,2,270]]],[0,118,119,0,120,160,106,0,[1,18692,1],[],[[18693,2,270]]],[0,161,152,0,162,106,163,0,[1,18693,1],[],[[18693,2,274]]],[0,165,166,0,167,168,0,0,[1,18704,4],[[0,59,20,0,60,169,0,0,[1,18705,0],[],[]],[0,59,20,0,60,170,0,0,[1,18706,0],[],[]],[3,171,0,0,0,0,0,0,[1,18706,2],[[4,275,0,0,0,0,0,0,[1,18707,1],[[0,173,41,0,174,175,0,0,[1,18707,1],[],[]]],[]]],[]]],[]]],[]],[4,276,0,0,0,0,0,0,[1,18709,22],[[0,108,20,0,109,147,148,0,[1,18709,2],[[0,40,41,0,42,149,0,0,[1,18709,1],[],[]]],[[18710,2,113],[18710,2,277]]],[0,151,152,0,153,154,154,0,[1,18711,0],[],[[18711,2,278]]],[0,115,20,0,116,156,154,0,[1,18712,1],[[0,63,20,0,64,154,0,0,[1,18713,0],[],[]]],[[18713,2,278]]],[0,115,20,0,116,157,154,0,[1,18714,1],[[0,63,20,0,64,154,0,0,[1,18714,1],[],[]]],[[18715,2,278]]],[0,115,20,0,116,158,106,0,[1,18715,2],[[0,118,119,0,120,159,0,0,[1,18716,0],[],[]]],[[18716,2,270]]],[0,118,119,0,120,160,106,0,[1,18717,0],[],[[18717,2,270]]],[0,161,152,0,162,106,163,0,[1,18718,1],[],[[18718,2,274]]],[0,165,166,0,167,168,0,0,[1,18728,3],[[0,59,20,0,60,169,0,0,[1,18729,0],[],[]],[0,59,20,0,60,170,0,0,[1,18729,1],[],[]],[3,171,0,0,0,0,0,0,[1,18730,1],[[4,275,0,0,0,0,0,0,[1,18730,1],[[0,173,41,0,174,175,0,0,[1,18730,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,18732,1],[],[[18732,2,279]]],[0,183,90,0,0,97,184,0,[1,18733,468],[[0,59,20,0,60,185,0,0,[1,18734,0],[],[]],[0,59,20,0,60,186,0,0,[1,18734,0],[],[]],[0,40,41,0,42,187,188,0,[1,18735,0],[],[[18735,2,189]]],[0,151,152,0,153,190,191,0,[1,18736,0],[],[[18736,2,280]]],[0,193,166,0,0,194,195,0,[1,18736,446],[[0,63,20,0,64,196,197,0,[1,18737,0],[],[[18737,2,198]]],[0,199,200,0,201,202,0,0,[1,18738,1],[],[[18738,2,203]]],[0,204,200,0,205,206,195,0,[1,18739,429],[],[[18739,2,281],[19167,2,208]]],[0,19,20,0,21,209,0,0,[1,19170,2],[],[[19171,2,210]]],[0,211,20,0,212,213,0,0,[1,19173,4],[],[[19176,2,214]]],[0,215,200,0,216,217,195,0,[1,19178,3],[],[[19179,2,910],[19180,2,219],[19181,2,283]]]],[[19182,2,283]]],[0,115,20,0,116,221,48,0,[1,19183,15],[[0,222,223,0,224,195,0,0,[1,19184,13],[[0,19,20,0,21,225,0,0,[1,19185,1],[],[[19186,2,225]]],[0,46,20,0,47,0,48,0,[1,19187,1],[],[[19188,2,49]]],[0,63,20,0,64,226,227,0,[1,19188,1],[],[[19189,2,228]]],[0,108,20,0,109,229,230,0,[1,19190,2],[[0,40,41,0,42,231,0,0,[1,19191,0],[],[]]],[[19192,2,113],[19192,2,284]]],[0,233,20,0,234,235,0,0,[1,19193,0],[],[]],[3,236,0,0,0,0,0,0,[1,19193,4],[[4,285,0,0,0,0,0,0,[1,19194,1],[[0,173,41,0,174,238,0,0,[1,19194,1],[],[]]],[]],[4,285,0,0,0,0,0,0,[1,19196,1],[[0,173,41,0,174,238,0,0,[1,19196,1],[],[]]],[]]],[]]],[]]],[[19198,2,911]]],[0,63,20,0,64,240,241,0,[1,19198,1],[],[[19199,2,242]]],[0,211,20,0,212,243,0,0,[1,19199,1],[],[[19200,2,214]]]],[[19200,2,242],[19201,2,911]]],[0,211,20,0,212,243,0,0,[1,19201,1],[],[[19202,2,214]]],[0,115,20,0,116,244,87,0,[1,19202,1],[[0,63,20,0,64,87,0,0,[1,19203,0],[],[]]],[[19203,2,265]]],[0,46,20,0,47,0,245,0,[1,19204,0],[],[[19204,2,246]]],[3,247,0,0,0,0,0,0,[1,19204,5],[[4,912,0,0,0,0,0,0,[1,19205,2],[[0,179,20,0,180,249,250,0,[1,19205,1],[],[[19206,2,913]]],[0,173,41,0,174,252,0,0,[1,19206,0],[],[]]],[]],[4,914,0,0,0,0,0,0,[1,19207,1],[[0,179,20,0,180,249,250,0,[1,19207,1],[],[[19208,2,913]]],[0,173,41,0,174,252,0,0,[1,19208,0],[],[]]],[]]],[]]],[[19209,2,911],[19209,2,913]]],[0,115,20,0,116,254,250,0,[1,19210,1],[[0,63,20,0,64,250,0,0,[1,19210,1],[],[]]],[[19211,2,913]]]],[[19211,2,911],[19212,2,913]]],[0,255,20,0,256,82,257,0,[1,19212,1],[],[[19212,2,258],[19213,2,259]]],[0,115,20,0,116,260,82,0,[1,19213,1],[[0,63,20,0,64,48,0,0,[1,19213,1],[],[]]],[[19214,2,915]]],[0,115,20,0,116,262,0,0,[1,19214,2],[[0,173,41,0,174,263,0,0,[1,19215,0],[],[]]],[]]],[]],[4,296,0,0,0,0,0,0,[1,19216,851],[[0,40,41,0,42,86,87,0,[1,19216,1],[],[[19217,2,297]]],[0,89,90,0,91,92,93,0,[1,19217,833],[[0,59,20,0,60,94,0,0,[1,19218,0],[],[]],[0,40,41,0,42,95,87,0,[1,19219,0],[],[[19219,2,297]]],[0,96,90,0,91,97,93,0,[1,19219,828],[[0,59,20,0,60,94,0,0,[1,19220,0],[],[]],[0,40,41,0,42,95,87,0,[1,19220,1],[],[[19221,2,297]]],[0,40,41,0,42,98,99,0,[1,19221,1],[],[[19221,2,298]]],[0,59,20,0,60,101,0,0,[1,19222,0],[],[]],[0,63,20,0,64,102,103,0,[1,19222,1],[],[[19223,2,104]]],[0,63,20,0,64,105,106,0,[1,19223,1],[],[[19224,2,107]]],[0,108,20,0,109,110,111,0,[1,19224,1],[[0,40,41,0,42,112,0,0,[1,19224,1],[],[]]],[[19225,2,113],[19225,2,267]]],[0,115,20,0,116,117,106,0,[1,19225,2],[[0,118,119,0,120,121,0,0,[1,19226,0],[],[]]],[[19226,2,268]]],[0,108,20,0,109,123,124,0,[1,19227,1],[[0,40,41,0,42,125,0,0,[1,19227,1],[],[]]],[[19228,2,113],[19228,2,299]]],[0,115,20,0,116,127,106,0,[1,19228,2],[[0,118,119,0,120,128,0,0,[1,19229,0],[],[]]],[[19230,2,300]]],[0,108,20,0,109,130,131,0,[1,19230,1],[[0,40,41,0,42,132,0,0,[0,19230,1],[],[[19231,5,133]]]],[[19231,2,134],[19231,2,135]]],[0,115,20,0,116,136,106,0,[1,19232,1],[[0,63,20,0,64,106,0,0,[1,19232,0],[],[]]],[[19233,2,300]]],[0,115,20,0,116,137,106,0,[1,19233,1],[[0,63,20,0,64,106,0,0,[1,19234,0],[],[]]],[[19234,2,300]]],[0,46,20,0,47,0,138,0,[1,19235,0],[],[[19235,2,139]]],[0,140,20,0,141,142,143,0,[1,19236,0],[],[[19236,2,144]]],[3,145,0,0,0,0,0,0,[1,19236,23],[[4,301,0,0,0,0,0,0,[1,19237,22],[[0,108,20,0,109,147,148,0,[1,19237,1],[[0,40,41,0,42,149,0,0,[1,19237,1],[],[]]],[[19238,2,113],[19238,2,302]]],[0,151,152,0,153,154,154,0,[1,19238,1],[],[[19239,2,303]]],[0,115,20,0,116,156,154,0,[1,19239,1],[[0,63,20,0,64,154,0,0,[1,19240,0],[],[]]],[[19240,2,303]]],[0,115,20,0,116,157,154,0,[1,19241,1],[[0,63,20,0,64,154,0,0,[1,19241,1],[],[]]],[[19242,2,303]]],[0,115,20,0,116,158,106,0,[1,19242,2],[[0,118,119,0,120,159,0,0,[1,19243,0],[],[]]],[[19243,2,300]]],[0,118,119,0,120,160,106,0,[1,19244,0],[],[[19244,2,300]]],[0,161,152,0,162,106,163,0,[1,19245,0],[],[[19245,2,304]]],[0,165,166,0,167,168,0,0,[1,19256,3],[[0,59,20,0,60,169,0,0,[1,19256,1],[],[]],[0,59,20,0,60,170,0,0,[1,19257,0],[],[]],[3,171,0,0,0,0,0,0,[1,19257,2],[[4,305,0,0,0,0,0,0,[1,19258,1],[[0,173,41,0,174,175,0,0,[1,19258,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,19260,0],[],[[19260,2,306]]],[0,183,90,0,0,97,184,0,[1,19261,779],[[0,59,20,0,60,185,0,0,[1,19261,0],[],[]],[0,59,20,0,60,186,0,0,[1,19262,0],[],[]],[0,40,41,0,42,187,188,0,[1,19262,1],[],[[19263,2,189]]],[0,151,152,0,153,190,191,0,[1,19263,1],[],[[19264,2,307]]],[0,193,166,0,0,194,195,0,[1,19264,760],[[0,63,20,0,64,196,197,0,[1,19264,1],[],[[19265,2,198]]],[0,199,200,0,201,202,0,0,[1,19265,1],[],[[19266,2,203]]],[0,204,200,0,205,206,195,0,[1,19266,746],[],[[19267,2,308],[20011,2,208]]],[0,19,20,0,21,209,0,0,[1,20013,4],[],[[20016,2,210]]],[0,211,20,0,212,213,0,0,[1,20018,2],[],[[20019,2,214]]],[0,215,200,0,216,217,195,0,[1,20020,3],[],[[20022,2,916],[20022,2,219],[20023,2,917]]]],[[20024,2,917]]],[0,115,20,0,116,221,48,0,[1,20025,13],[[0,222,223,0,224,195,0,0,[1,20026,11],[[0,19,20,0,21,225,0,0,[1,20027,1],[],[[20028,2,225]]],[0,46,20,0,47,0,48,0,[1,20028,1],[],[[20029,2,49]]],[0,63,20,0,64,226,227,0,[1,20030,1],[],[[20030,2,228]]],[0,108,20,0,109,229,230,0,[1,20031,2],[[0,40,41,0,42,231,0,0,[1,20032,1],[],[]]],[[20033,2,113],[20033,2,918]]],[0,233,20,0,234,235,0,0,[1,20034,0],[],[]],[3,236,0,0,0,0,0,0,[1,20035,2],[[4,919,0,0,0,0,0,0,[1,20035,1],[[0,173,41,0,174,238,0,0,[1,20036,0],[],[]]],[]]],[]]],[]]],[[20037,2,920]]],[0,63,20,0,64,240,241,0,[1,20038,1],[],[[20039,2,242]]],[0,211,20,0,212,243,0,0,[1,20039,1],[],[[20039,2,214]]]],[[20040,2,242],[20040,2,920]]],[0,211,20,0,212,243,0,0,[1,20041,0],[],[[20041,2,214]]],[0,115,20,0,116,244,87,0,[1,20042,1],[[0,63,20,0,64,87,0,0,[1,20042,1],[],[]]],[[20043,2,297]]],[0,46,20,0,47,0,245,0,[1,20044,0],[],[[20044,2,246]]],[3,247,0,0,0,0,0,0,[1,20044,3],[[4,921,0,0,0,0,0,0,[1,20044,2],[[0,179,20,0,180,249,250,0,[1,20045,0],[],[[20045,2,922]]],[0,173,41,0,174,252,0,0,[1,20046,0],[],[]]],[]]],[]]],[[20047,2,920],[20047,2,922]]],[0,115,20,0,116,254,250,0,[1,20048,1],[[0,63,20,0,64,250,0,0,[1,20048,1],[],[]]],[[20049,2,922]]]],[[20049,2,920],[20050,2,922]]],[0,255,20,0,256,82,257,0,[1,20050,1],[],[[20050,2,290],[20050,2,291]]],[0,115,20,0,116,260,82,0,[1,20051,14],[[0,165,166,0,167,292,0,0,[1,20061,4],[[0,59,20,0,60,169,0,0,[1,20061,1],[],[]],[0,59,20,0,60,170,0,0,[1,20062,1],[],[]],[3,171,0,0,0,0,0,0,[1,20063,1],[[4,923,0,0,0,0,0,0,[1,20063,1],[[0,173,41,0,174,175,0,0,[1,20063,1],[],[]]],[]]],[]]],[]]],[[20065,2,924]]],[0,115,20,0,116,262,0,0,[1,20065,2],[[0,173,41,0,174,263,0,0,[1,20066,0],[],[]]],[]]],[]],[4,320,0,0,0,0,0,0,[1,20067,300],[[0,40,41,0,42,86,87,0,[1,20067,1],[],[[20068,2,321]]],[0,89,90,0,91,92,93,0,[1,20068,280],[[0,59,20,0,60,94,0,0,[1,20068,1],[],[]],[0,40,41,0,42,95,87,0,[1,20069,1],[],[[20069,2,321]]],[0,96,90,0,91,97,93,0,[1,20070,274],[[0,59,20,0,60,94,0,0,[1,20070,1],[],[]],[0,40,41,0,42,95,87,0,[1,20071,0],[],[[20071,2,321]]],[0,40,41,0,42,98,99,0,[1,20072,0],[],[[20072,2,322]]],[0,59,20,0,60,101,0,0,[1,20072,1],[],[]],[0,63,20,0,64,102,103,0,[1,20073,0],[],[[20073,2,104]]],[0,63,20,0,64,105,106,0,[1,20074,0],[],[[20074,2,107]]],[0,108,20,0,109,110,111,0,[1,20074,2],[[0,40,41,0,42,112,0,0,[1,20075,0],[],[]]],[[20075,2,113],[20076,2,323]]],[0,115,20,0,116,117,106,0,[1,20076,1],[[0,118,119,0,120,121,0,0,[1,20076,1],[],[]]],[[20077,2,324]]],[0,108,20,0,109,123,124,0,[1,20078,1],[[0,40,41,0,42,125,0,0,[1,20078,1],[],[]]],[[20079,2,113],[20079,2,325]]],[0,115,20,0,116,127,106,0,[1,20079,2],[[0,118,119,0,120,128,0,0,[1,20080,0],[],[]]],[[20081,2,326]]],[0,108,20,0,109,130,131,0,[1,20081,2],[[0,40,41,0,42,132,0,0,[0,20082,0],[],[[20082,5,133]]]],[[20082,2,134],[20083,2,135]]],[0,115,20,0,116,136,106,0,[1,20083,1],[[0,63,20,0,64,106,0,0,[1,20083,1],[],[]]],[[20084,2,326]]],[0,115,20,0,116,137,106,0,[1,20084,2],[[0,63,20,0,64,106,0,0,[1,20085,0],[],[]]],[[20086,2,326]]],[0,46,20,0,47,0,138,0,[1,20086,0],[],[[20086,2,139]]],[0,140,20,0,141,142,143,0,[1,20087,0],[],[[20087,2,144]]],[3,145,0,0,0,0,0,0,[1,20087,24],[[4,327,0,0,0,0,0,0,[1,20088,23],[[0,108,20,0,109,147,148,0,[1,20088,1],[[0,40,41,0,42,149,0,0,[1,20088,1],[],[]]],[[20089,2,113],[20089,2,328]]],[0,151,152,0,153,154,154,0,[1,20090,0],[],[[20090,2,329]]],[0,115,20,0,116,156,154,0,[1,20090,2],[[0,63,20,0,64,154,0,0,[1,20091,0],[],[]]],[[20092,2,329]]],[0,115,20,0,116,157,154,0,[1,20092,1],[[0,63,20,0,64,154,0,0,[1,20092,1],[],[]]],[[20093,2,329]]],[0,115,20,0,116,158,106,0,[1,20094,1],[[0,118,119,0,120,159,0,0,[1,20094,1],[],[]]],[[20095,2,326]]],[0,118,119,0,120,160,106,0,[1,20095,1],[],[[20096,2,326]]],[0,161,152,0,162,106,163,0,[1,20096,1],[],[[20097,2,330]]],[0,165,166,0,167,168,0,0,[1,20107,4],[[0,59,20,0,60,169,0,0,[1,20108,0],[],[]],[0,59,20,0,60,170,0,0,[1,20108,0],[],[]],[3,171,0,0,0,0,0,0,[1,20109,1],[[4,331,0,0,0,0,0,0,[1,20109,1],[[0,173,41,0,174,175,0,0,[1,20109,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,20111,1],[],[[20112,2,332]]],[0,183,90,0,0,97,184,0,[1,20112,227],[[0,59,20,0,60,185,0,0,[1,20113,0],[],[]],[0,59,20,0,60,186,0,0,[1,20113,0],[],[]],[0,40,41,0,42,187,188,0,[1,20114,0],[],[[20114,2,189]]],[0,151,152,0,153,190,191,0,[1,20114,1],[],[[20115,2,333]]],[0,193,166,0,0,194,195,0,[1,20115,212],[[0,63,20,0,64,196,197,0,[1,20116,0],[],[[20116,2,198]]],[0,199,200,0,201,202,0,0,[1,20116,1],[],[[20117,2,203]]],[0,204,200,0,205,206,195,0,[1,20118,205],[],[[20118,2,334],[20323,2,208]]],[0,19,20,0,21,209,0,0,[1,20323,1],[],[[20324,2,210]]],[0,211,20,0,212,213,0,0,[1,20324,1],[],[[20325,2,214]]],[0,215,200,0,216,217,195,0,[1,20325,1],[],[[20326,2,925],[20326,2,219],[20326,2,926]]]],[[20327,2,926]]],[0,115,20,0,116,221,48,0,[1,20327,9],[[0,222,223,0,224,195,0,0,[1,20328,8],[[0,19,20,0,21,225,0,0,[1,20329,0],[],[[20329,2,225]]],[0,46,20,0,47,0,48,0,[1,20330,1],[],[[20330,2,49]]],[0,63,20,0,64,226,227,0,[1,20331,0],[],[[20331,2,228]]],[0,108,20,0,109,229,230,0,[1,20332,1],[[0,40,41,0,42,231,0,0,[1,20332,1],[],[]]],[[20333,2,113],[20333,2,927]]],[0,233,20,0,234,235,0,0,[1,20334,0],[],[]],[3,236,0,0,0,0,0,0,[1,20334,2],[[4,928,0,0,0,0,0,0,[1,20335,0],[[0,173,41,0,174,238,0,0,[1,20335,0],[],[]]],[]]],[]]],[]]],[[20336,2,929]]],[0,63,20,0,64,240,241,0,[1,20337,0],[],[[20337,2,242]]],[0,211,20,0,212,243,0,0,[1,20338,0],[],[[20338,2,214]]]],[[20338,2,242],[20339,2,929]]],[0,211,20,0,212,243,0,0,[1,20339,0],[],[[20339,2,214]]],[0,115,20,0,116,244,87,0,[1,20340,1],[[0,63,20,0,64,87,0,0,[1,20340,1],[],[]]],[[20341,2,321]]],[0,46,20,0,47,0,245,0,[1,20341,1],[],[[20341,2,246]]],[3,247,0,0,0,0,0,0,[1,20342,2],[[4,930,0,0,0,0,0,0,[1,20342,2],[[0,179,20,0,180,249,250,0,[1,20342,1],[],[[20343,2,931]]],[0,173,41,0,174,252,0,0,[1,20343,0],[],[]]],[]]],[]]],[[20344,2,929],[20344,2,931]]],[0,115,20,0,116,254,250,0,[1,20345,2],[[0,63,20,0,64,250,0,0,[1,20345,1],[],[]]],[[20346,2,931]]]],[[20347,2,929],[20347,2,931]]],[0,255,20,0,256,82,257,0,[1,20348,1],[],[[20349,2,768],[20349,2,769]]],[0,115,20,0,116,260,82,0,[1,20349,16],[[0,165,166,0,167,292,0,0,[1,20361,3],[[0,59,20,0,60,169,0,0,[1,20361,0],[],[]],[0,59,20,0,60,170,0,0,[1,20362,0],[],[]],[3,171,0,0,0,0,0,0,[1,20362,2],[[4,932,0,0,0,0,0,0,[1,20362,1],[[0,173,41,0,174,175,0,0,[1,20363,0],[],[]]],[]]],[]]],[]]],[[20364,2,933]]],[0,115,20,0,116,262,0,0,[1,20365,1],[[0,173,41,0,174,263,0,0,[1,20366,0],[],[]]],[]]],[]],[4,345,0,0,0,0,0,0,[1,20367,1017],[[0,40,41,0,42,86,87,0,[1,20367,1],[],[[20367,2,346]]],[0,89,90,0,91,92,93,0,[1,20368,996],[[0,59,20,0,60,94,0,0,[1,20368,1],[],[]],[0,40,41,0,42,95,87,0,[1,20369,0],[],[[20369,2,346]]],[0,96,90,0,91,97,93,0,[1,20370,992],[[0,59,20,0,60,94,0,0,[1,20370,0],[],[]],[0,40,41,0,42,95,87,0,[1,20371,0],[],[[20371,2,346]]],[0,40,41,0,42,98,99,0,[1,20371,1],[],[[20372,2,347]]],[0,59,20,0,60,101,0,0,[1,20372,0],[],[]],[0,63,20,0,64,102,103,0,[1,20373,0],[],[[20373,2,104]]],[0,63,20,0,64,105,106,0,[1,20373,1],[],[[20374,2,107]]],[0,108,20,0,109,110,111,0,[1,20374,1],[[0,40,41,0,42,112,0,0,[1,20375,0],[],[]]],[[20375,2,113],[20375,2,323]]],[0,115,20,0,116,117,106,0,[1,20376,1],[[0,118,119,0,120,121,0,0,[1,20376,1],[],[]]],[[20377,2,324]]],[0,108,20,0,109,123,124,0,[1,20377,2],[[0,40,41,0,42,125,0,0,[1,20378,0],[],[]]],[[20378,2,113],[20378,2,348]]],[0,115,20,0,116,127,106,0,[1,20379,1],[[0,118,119,0,120,128,0,0,[1,20379,1],[],[]]],[[20380,2,349]]],[0,108,20,0,109,130,131,0,[1,20381,2],[[0,40,41,0,42,132,0,0,[0,20381,1],[],[[20382,5,133]]]],[[20382,2,134],[20382,2,135]]],[0,115,20,0,116,136,106,0,[1,20383,1],[[0,63,20,0,64,106,0,0,[1,20384,0],[],[]]],[[20384,2,349]]],[0,115,20,0,116,137,106,0,[1,20385,1],[[0,63,20,0,64,106,0,0,[1,20385,0],[],[]]],[[20386,2,349]]],[0,46,20,0,47,0,138,0,[1,20386,0],[],[[20386,2,139]]],[0,140,20,0,141,142,143,0,[1,20387,0],[],[[20387,2,144]]],[3,145,0,0,0,0,0,0,[1,20388,27],[[4,350,0,0,0,0,0,0,[1,20388,26],[[0,108,20,0,109,147,148,0,[1,20388,1],[[0,40,41,0,42,149,0,0,[1,20388,1],[],[]]],[[20389,2,113],[20389,2,351]]],[0,151,152,0,153,154,154,0,[1,20390,0],[],[[20390,2,352]]],[0,115,20,0,116,156,154,0,[1,20390,2],[[0,63,20,0,64,154,0,0,[1,20391,0],[],[]]],[[20392,2,352]]],[0,115,20,0,116,157,154,0,[1,20392,2],[[0,63,20,0,64,154,0,0,[1,20392,1],[],[]]],[[20393,2,352]]],[0,115,20,0,116,158,106,0,[1,20394,2],[[0,118,119,0,120,159,0,0,[1,20395,0],[],[]]],[[20396,2,349]]],[0,118,119,0,120,160,106,0,[1,20396,1],[],[[20396,2,349]]],[0,161,152,0,162,106,163,0,[1,20397,0],[],[[20397,2,353]]],[0,165,166,0,167,168,0,0,[1,20411,3],[[0,59,20,0,60,169,0,0,[1,20412,0],[],[]],[0,59,20,0,60,170,0,0,[1,20412,0],[],[]],[3,171,0,0,0,0,0,0,[1,20413,1],[[4,354,0,0,0,0,0,0,[1,20413,1],[[0,173,41,0,174,175,0,0,[1,20413,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,20415,0],[],[[20415,2,355]]],[0,183,90,0,0,97,184,0,[1,20416,939],[[0,59,20,0,60,185,0,0,[1,20416,1],[],[]],[0,59,20,0,60,186,0,0,[1,20417,0],[],[]],[0,40,41,0,42,187,188,0,[1,20417,1],[],[[20418,2,189]]],[0,151,152,0,153,190,191,0,[1,20418,1],[],[[20419,2,356]]],[0,193,166,0,0,194,195,0,[1,20419,919],[[0,63,20,0,64,196,197,0,[1,20419,1],[],[[20420,2,198]]],[0,199,200,0,201,202,0,0,[1,20420,1],[],[[20421,2,203]]],[0,204,200,0,205,206,195,0,[1,20421,904],[],[[20422,2,357],[21324,2,208]]],[0,19,20,0,21,209,0,0,[1,21327,3],[],[[21329,2,210]]],[0,211,20,0,212,213,0,0,[1,21332,1],[],[[21333,2,214]]],[0,215,200,0,216,217,195,0,[1,21334,3],[],[[21335,2,934],[21336,2,219],[21337,2,926]]]],[[21338,2,926]]],[0,115,20,0,116,221,48,0,[1,21339,13],[[0,222,223,0,224,195,0,0,[1,21340,12],[[0,19,20,0,21,225,0,0,[1,21341,1],[],[[21342,2,225]]],[0,46,20,0,47,0,48,0,[1,21343,1],[],[[21343,2,49]]],[0,63,20,0,64,226,227,0,[1,21344,1],[],[[21345,2,228]]],[0,108,20,0,109,229,230,0,[1,21346,2],[[0,40,41,0,42,231,0,0,[1,21346,1],[],[]]],[[21347,2,113],[21348,2,927]]],[0,233,20,0,234,235,0,0,[1,21348,1],[],[]],[3,236,0,0,0,0,0,0,[1,21349,2],[[4,928,0,0,0,0,0,0,[1,21350,1],[[0,173,41,0,174,238,0,0,[1,21350,1],[],[]]],[]]],[]]],[]]],[[21352,2,935]]],[0,63,20,0,64,240,241,0,[1,21352,1],[],[[21353,2,242]]],[0,211,20,0,212,243,0,0,[1,21354,0],[],[[21354,2,214]]]],[[21355,2,242],[21355,2,935]]],[0,211,20,0,212,243,0,0,[1,21355,1],[],[[21356,2,214]]],[0,115,20,0,116,244,87,0,[1,21356,2],[[0,63,20,0,64,87,0,0,[1,21357,0],[],[]]],[[21358,2,346]]],[0,46,20,0,47,0,245,0,[1,21358,1],[],[[21358,2,246]]],[3,247,0,0,0,0,0,0,[1,21359,2],[[4,936,0,0,0,0,0,0,[1,21359,2],[[0,179,20,0,180,249,250,0,[1,21359,1],[],[[21360,2,937]]],[0,173,41,0,174,252,0,0,[1,21360,1],[],[]]],[]]],[]]],[[21362,2,935],[21362,2,937]]],[0,115,20,0,116,254,250,0,[1,21362,2],[[0,63,20,0,64,250,0,0,[1,21363,0],[],[]]],[[21364,2,937]]]],[[21364,2,935],[21364,2,937]]],[0,255,20,0,256,82,257,0,[1,21365,0],[],[[21365,2,316],[21365,2,317]]],[0,115,20,0,116,260,82,0,[1,21366,16],[[0,165,166,0,167,292,0,0,[1,21378,4],[[0,59,20,0,60,169,0,0,[1,21379,0],[],[]],[0,59,20,0,60,170,0,0,[1,21380,0],[],[]],[3,171,0,0,0,0,0,0,[1,21380,2],[[4,938,0,0,0,0,0,0,[1,21380,1],[[0,173,41,0,174,175,0,0,[1,21381,0],[],[]]],[]]],[]]],[]]],[[21382,2,939]]],[0,115,20,0,116,262,0,0,[1,21382,2],[[0,173,41,0,174,263,0,0,[1,21383,1],[],[]]],[]]],[]],[4,369,0,0,0,0,0,0,[1,21384,209],[[0,40,41,0,42,86,87,0,[1,21385,0],[],[[21385,2,370]]],[0,89,90,0,91,92,93,0,[1,21385,191],[[0,59,20,0,60,94,0,0,[1,21386,0],[],[]],[0,40,41,0,42,95,87,0,[1,21386,1],[],[[21387,2,370]]],[0,96,90,0,91,97,93,0,[1,21387,187],[[0,59,20,0,60,94,0,0,[1,21388,0],[],[]],[0,40,41,0,42,95,87,0,[1,21388,1],[],[[21388,2,370]]],[0,40,41,0,42,98,99,0,[1,21389,0],[],[[21389,2,371]]],[0,59,20,0,60,101,0,0,[1,21390,0],[],[]],[0,63,20,0,64,102,103,0,[1,21391,0],[],[[21391,2,104]]],[0,63,20,0,64,105,106,0,[1,21392,0],[],[[21392,2,107]]],[0,108,20,0,109,110,111,0,[1,21392,2],[[0,40,41,0,42,112,0,0,[1,21393,0],[],[]]],[[21393,2,113],[21393,2,372]]],[0,115,20,0,116,117,106,0,[1,21394,1],[[0,118,119,0,120,121,0,0,[1,21394,1],[],[]]],[[21395,2,373]]],[0,108,20,0,109,123,124,0,[1,21395,2],[[0,40,41,0,42,125,0,0,[1,21396,0],[],[]]],[[21396,2,113],[21396,2,374]]],[0,115,20,0,116,127,106,0,[1,21397,1],[[0,118,119,0,120,128,0,0,[1,21398,0],[],[]]],[[21398,2,375]]],[0,108,20,0,109,130,131,0,[1,21399,2],[[0,40,41,0,42,132,0,0,[0,21399,1],[],[[21399,5,133]]]],[[21400,2,134],[21400,2,135]]],[0,115,20,0,116,136,106,0,[1,21401,1],[[0,63,20,0,64,106,0,0,[1,21401,1],[],[]]],[[21402,2,375]]],[0,115,20,0,116,137,106,0,[1,21402,2],[[0,63,20,0,64,106,0,0,[1,21403,0],[],[]]],[[21403,2,375]]],[0,46,20,0,47,0,138,0,[1,21404,0],[],[[21404,2,139]]],[0,140,20,0,141,142,143,0,[1,21404,2],[],[[21405,2,144]]],[3,145,0,0,0,0,0,0,[1,21406,22],[[4,376,0,0,0,0,0,0,[1,21406,22],[[0,108,20,0,109,147,148,0,[1,21406,1],[[0,40,41,0,42,149,0,0,[1,21407,0],[],[]]],[[21407,2,113],[21407,2,377]]],[0,151,152,0,153,154,154,0,[1,21408,0],[],[[21408,2,378]]],[0,115,20,0,116,156,154,0,[1,21408,2],[[0,63,20,0,64,154,0,0,[1,21409,0],[],[]]],[[21410,2,378]]],[0,115,20,0,116,157,154,0,[1,21410,1],[[0,63,20,0,64,154,0,0,[1,21410,1],[],[]]],[[21411,2,378]]],[0,115,20,0,116,158,106,0,[1,21411,2],[[0,118,119,0,120,159,0,0,[1,21412,0],[],[]]],[[21413,2,375]]],[0,118,119,0,120,160,106,0,[1,21413,1],[],[[21413,2,375]]],[0,161,152,0,162,106,163,0,[1,21414,0],[],[[21414,2,379]]],[0,165,166,0,167,168,0,0,[1,21424,4],[[0,59,20,0,60,169,0,0,[1,21425,0],[],[]],[0,59,20,0,60,170,0,0,[1,21425,1],[],[]],[3,171,0,0,0,0,0,0,[1,21426,1],[[4,380,0,0,0,0,0,0,[1,21426,1],[[0,173,41,0,174,175,0,0,[1,21426,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,21428,1],[],[[21429,2,381]]],[0,183,90,0,0,97,184,0,[1,21429,139],[[0,59,20,0,60,185,0,0,[1,21430,0],[],[]],[0,59,20,0,60,186,0,0,[1,21430,1],[],[]],[0,40,41,0,42,187,188,0,[1,21431,0],[],[[21431,2,189]]],[0,151,152,0,153,190,191,0,[1,21432,0],[],[[21432,2,382]]],[0,193,166,0,0,194,195,0,[1,21432,126],[[0,63,20,0,64,196,197,0,[1,21433,0],[],[[21433,2,198]]],[0,199,200,0,201,202,0,0,[1,21434,1],[],[[21434,2,203]]],[0,204,200,0,205,206,195,0,[1,21435,120],[],[[21435,2,383],[21555,2,208]]],[0,19,20,0,21,209,0,0,[1,21555,1],[],[[21556,2,210]]],[0,211,20,0,212,213,0,0,[1,21556,1],[],[[21556,2,214]]],[0,215,200,0,216,217,195,0,[1,21557,1],[],[[21557,2,940],[21558,2,219],[21558,2,941]]]],[[21558,2,941]]],[0,115,20,0,116,221,48,0,[1,21559,7],[[0,222,223,0,224,195,0,0,[1,21559,6],[[0,19,20,0,21,225,0,0,[1,21560,0],[],[[21560,2,225]]],[0,46,20,0,47,0,48,0,[1,21560,1],[],[[21561,2,49]]],[0,63,20,0,64,226,227,0,[1,21561,0],[],[[21561,2,228]]],[0,108,20,0,109,229,230,0,[1,21562,1],[[0,40,41,0,42,231,0,0,[1,21562,0],[],[]]],[[21563,2,113],[21563,2,942]]],[0,233,20,0,234,235,0,0,[1,21563,1],[],[]],[3,236,0,0,0,0,0,0,[1,21564,1],[[4,943,0,0,0,0,0,0,[1,21564,1],[[0,173,41,0,174,238,0,0,[1,21564,1],[],[]]],[]]],[]]],[]]],[[21566,2,944]]],[0,63,20,0,64,240,241,0,[1,21566,1],[],[[21566,2,242]]],[0,211,20,0,212,243,0,0,[1,21567,0],[],[[21567,2,214]]]],[[21568,2,242],[21568,2,944]]],[0,211,20,0,212,243,0,0,[1,21568,1],[],[[21568,2,214]]],[0,115,20,0,116,244,87,0,[1,21569,1],[[0,63,20,0,64,87,0,0,[1,21569,1],[],[]]],[[21570,2,370]]],[0,46,20,0,47,0,245,0,[1,21570,1],[],[[21571,2,246]]],[3,247,0,0,0,0,0,0,[1,21571,2],[[4,945,0,0,0,0,0,0,[1,21571,2],[[0,179,20,0,180,249,250,0,[1,21571,1],[],[[21572,2,946]]],[0,173,41,0,174,252,0,0,[1,21572,1],[],[]]],[]]],[]]],[[21573,2,944],[21574,2,946]]],[0,115,20,0,116,254,250,0,[1,21574,2],[[0,63,20,0,64,250,0,0,[1,21575,0],[],[]]],[[21575,2,946]]]],[[21576,2,944],[21576,2,946]]],[0,255,20,0,256,82,257,0,[1,21576,1],[],[[21577,2,341],[21577,2,342]]],[0,115,20,0,116,260,82,0,[1,21577,15],[[0,165,166,0,167,292,0,0,[1,21588,3],[[0,59,20,0,60,169,0,0,[1,21589,0],[],[]],[0,59,20,0,60,170,0,0,[1,21590,0],[],[]],[3,171,0,0,0,0,0,0,[1,21590,1],[[4,947,0,0,0,0,0,0,[1,21590,1],[[0,173,41,0,174,175,0,0,[1,21590,1],[],[]]],[]]],[]]],[]]],[[21592,2,948]]],[0,115,20,0,116,262,0,0,[1,21592,1],[[0,173,41,0,174,263,0,0,[1,21593,0],[],[]]],[]]],[]],[4,395,0,0,0,0,0,0,[1,21594,120],[[0,40,41,0,42,86,87,0,[1,21594,0],[],[[21594,2,265]]],[0,89,90,0,91,92,93,0,[1,21595,102],[[0,59,20,0,60,94,0,0,[1,21595,1],[],[]],[0,40,41,0,42,95,87,0,[1,21596,0],[],[[21596,2,265]]],[0,96,90,0,91,97,93,0,[1,21597,98],[[0,59,20,0,60,94,0,0,[1,21597,0],[],[]],[0,40,41,0,42,95,87,0,[1,21598,0],[],[[21598,2,265]]],[0,40,41,0,42,98,99,0,[1,21598,1],[],[[21599,2,396]]],[0,59,20,0,60,101,0,0,[1,21599,0],[],[]],[0,63,20,0,64,102,103,0,[1,21600,0],[],[[21600,2,104]]],[0,63,20,0,64,105,106,0,[1,21600,1],[],[[21601,2,107]]],[0,108,20,0,109,110,111,0,[1,21601,1],[[0,40,41,0,42,112,0,0,[1,21602,0],[],[]]],[[21602,2,113],[21602,2,267]]],[0,115,20,0,116,117,106,0,[1,21603,1],[[0,118,119,0,120,121,0,0,[1,21603,0],[],[]]],[[21604,2,268]]],[0,108,20,0,109,123,124,0,[1,21604,1],[[0,40,41,0,42,125,0,0,[1,21604,1],[],[]]],[[21605,2,113],[21605,2,397]]],[0,115,20,0,116,127,106,0,[1,21605,2],[[0,118,119,0,120,128,0,0,[1,21606,1],[],[]]],[[21607,2,398]]],[0,108,20,0,109,130,131,0,[1,21607,2],[[0,40,41,0,42,132,0,0,[0,21608,0],[],[[21608,5,133]]]],[[21608,2,134],[21609,2,135]]],[0,115,20,0,116,136,106,0,[1,21609,1],[[0,63,20,0,64,106,0,0,[1,21610,0],[],[]]],[[21610,2,398]]],[0,115,20,0,116,137,106,0,[1,21611,1],[[0,63,20,0,64,106,0,0,[1,21611,0],[],[]]],[[21612,2,398]]],[0,46,20,0,47,0,138,0,[1,21612,0],[],[[21612,2,139]]],[0,140,20,0,141,142,143,0,[1,21613,0],[],[[21613,2,144]]],[3,145,0,0,0,0,0,0,[1,21614,23],[[4,399,0,0,0,0,0,0,[1,21614,23],[[0,108,20,0,109,147,148,0,[1,21614,1],[[0,40,41,0,42,149,0,0,[1,21615,0],[],[]]],[[21615,2,113],[21615,2,400]]],[0,151,152,0,153,154,154,0,[1,21616,0],[],[[21616,2,401]]],[0,115,20,0,116,156,154,0,[1,21616,2],[[0,118,119,0,120,402,0,0,[1,21617,0],[],[]]],[[21617,2,403]]],[0,115,20,0,116,157,154,0,[1,21618,1],[[0,118,119,0,120,404,0,0,[1,21618,1],[],[]]],[[21619,2,405]]],[0,115,20,0,116,158,106,0,[1,21619,2],[[0,118,119,0,120,406,0,0,[1,21620,0],[],[]]],[[21621,2,398]]],[0,118,119,0,120,160,106,0,[1,21621,1],[],[[21621,2,398]]],[0,161,152,0,162,106,163,0,[1,21622,0],[],[[21622,2,407]]],[0,165,166,0,167,168,0,0,[1,21633,4],[[0,59,20,0,60,169,0,0,[1,21634,0],[],[]],[0,59,20,0,60,170,0,0,[1,21635,0],[],[]],[3,171,0,0,0,0,0,0,[1,21635,2],[[4,408,0,0,0,0,0,0,[1,21636,0],[[0,173,41,0,174,175,0,0,[1,21636,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,21637,1],[],[[21638,2,409]]],[0,183,90,0,0,97,184,0,[1,21638,51],[[0,59,20,0,60,185,0,0,[1,21639,0],[],[]],[0,59,20,0,60,186,0,0,[1,21640,0],[],[]],[0,40,41,0,42,187,188,0,[1,21640,1],[],[[21641,2,189]]],[0,151,152,0,153,190,191,0,[1,21641,0],[],[[21641,2,410]]],[0,193,166,0,0,194,195,0,[1,21642,37],[[0,63,20,0,64,196,197,0,[1,21642,1],[],[[21643,2,198]]],[0,199,200,0,201,202,0,0,[1,21643,1],[],[[21644,2,203]]],[0,204,200,0,205,206,195,0,[1,21644,31],[],[[21645,2,411],[21675,2,208]]],[0,19,20,0,21,209,0,0,[1,21675,1],[],[[21676,2,210]]],[0,211,20,0,212,213,0,0,[1,21676,1],[],[[21677,2,214]]],[0,215,200,0,216,217,195,0,[1,21678,0],[],[[21678,2,949],[21678,2,219],[21678,2,413]]]],[[21679,2,413]]],[0,115,20,0,116,221,48,0,[1,21679,7],[[0,222,223,0,224,195,0,0,[1,21680,6],[[0,19,20,0,21,225,0,0,[1,21680,1],[],[[21680,2,225]]],[0,46,20,0,47,0,48,0,[1,21681,0],[],[[21681,2,49]]],[0,63,20,0,64,226,227,0,[1,21682,0],[],[[21682,2,228]]],[0,108,20,0,109,229,230,0,[1,21682,2],[[0,40,41,0,42,231,0,0,[1,21683,0],[],[]]],[[21683,2,113],[21684,2,414]]],[0,233,20,0,234,235,0,0,[1,21684,0],[],[]],[3,236,0,0,0,0,0,0,[1,21685,1],[[4,415,0,0,0,0,0,0,[1,21685,1],[[0,173,41,0,174,238,0,0,[1,21685,1],[],[]]],[]]],[]]],[]]],[[21686,2,950]]],[0,63,20,0,64,240,241,0,[1,21687,0],[],[[21687,2,242]]],[0,211,20,0,212,243,0,0,[1,21688,0],[],[[21688,2,214]]]],[[21688,2,242],[21689,2,950]]],[0,211,20,0,212,243,0,0,[1,21689,0],[],[[21689,2,214]]],[0,115,20,0,116,244,87,0,[1,21690,1],[[0,63,20,0,64,87,0,0,[1,21690,1],[],[]]],[[21691,2,265]]],[0,46,20,0,47,0,245,0,[1,21691,1],[],[[21691,2,246]]],[3,247,0,0,0,0,0,0,[1,21692,2],[[4,951,0,0,0,0,0,0,[1,21692,2],[[0,179,20,0,180,249,250,0,[1,21692,1],[],[[21693,2,952]]],[0,173,41,0,174,252,0,0,[1,21693,1],[],[]]],[]]],[]]],[[21694,2,950],[21695,2,952]]],[0,115,20,0,116,254,250,0,[1,21695,1],[[0,63,20,0,64,250,0,0,[1,21696,0],[],[]]],[[21696,2,952]]]],[[21697,2,950],[21697,2,952]]],[0,255,20,0,256,82,257,0,[1,21697,1],[],[[21698,2,365],[21698,2,366]]],[0,115,20,0,116,260,82,0,[1,21698,14],[[0,165,166,0,167,292,0,0,[1,21709,3],[[0,59,20,0,60,169,0,0,[1,21709,1],[],[]],[0,59,20,0,60,170,0,0,[1,21710,0],[],[]],[3,171,0,0,0,0,0,0,[1,21711,1],[[4,953,0,0,0,0,0,0,[1,21711,1],[[0,173,41,0,174,175,0,0,[1,21711,0],[],[]]],[]]],[]]],[]]],[[21712,2,954]]],[0,115,20,0,116,262,0,0,[1,21713,1],[[0,173,41,0,174,263,0,0,[1,21714,0],[],[]]],[]]],[]],[4,423,0,0,0,0,0,0,[1,21714,673],[[0,40,41,0,42,86,87,0,[1,21715,0],[],[[21715,2,424]]],[0,89,90,0,91,92,93,0,[1,21715,655],[[0,59,20,0,60,94,0,0,[1,21716,0],[],[]],[0,40,41,0,42,95,87,0,[1,21717,0],[],[[21717,2,424]]],[0,96,90,0,91,97,93,0,[1,21717,650],[[0,59,20,0,60,94,0,0,[1,21718,0],[],[]],[0,40,41,0,42,95,87,0,[1,21719,0],[],[[21719,2,424]]],[0,40,41,0,42,98,99,0,[1,21719,1],[],[[21720,2,425]]],[0,59,20,0,60,101,0,0,[1,21720,0],[],[]],[0,63,20,0,64,102,103,0,[1,21720,1],[],[[21721,2,104]]],[0,63,20,0,64,105,106,0,[1,21721,1],[],[[21721,2,107]]],[0,108,20,0,109,110,111,0,[1,21722,1],[[0,40,41,0,42,112,0,0,[0,21722,1],[],[[21723,5,426]]]],[[21723,2,134],[21723,2,427]]],[0,115,20,0,116,117,106,0,[1,21724,1],[[0,63,20,0,64,106,0,0,[1,21724,1],[],[]]],[[21725,2,107]]],[0,108,20,0,109,123,124,0,[1,21725,2],[[0,40,41,0,42,125,0,0,[0,21726,0],[],[[21726,5,428]]]],[[21726,2,134],[21727,2,429]]],[0,115,20,0,116,127,106,0,[1,21727,1],[[0,63,20,0,64,106,0,0,[1,21728,0],[],[]]],[[21728,2,107]]],[0,108,20,0,109,130,131,0,[1,21729,1],[[0,40,41,0,42,132,0,0,[0,21729,1],[],[[21730,5,133]]]],[[21730,2,134],[21730,2,135]]],[0,115,20,0,116,136,106,0,[1,21731,1],[[0,63,20,0,64,106,0,0,[1,21731,0],[],[]]],[[21732,2,107]]],[0,115,20,0,116,137,106,0,[1,21732,2],[[0,63,20,0,64,106,0,0,[1,21733,0],[],[]]],[[21734,2,107]]],[0,46,20,0,47,0,138,0,[1,21734,0],[],[[21734,2,139]]],[0,140,20,0,141,142,143,0,[1,21735,0],[],[[21735,2,144]]],[3,145,0,0,0,0,0,0,[1,21735,23],[[4,430,0,0,0,0,0,0,[1,21736,22],[[0,108,20,0,109,147,148,0,[1,21736,1],[[0,40,41,0,42,149,0,0,[1,21736,1],[],[]]],[[21737,2,113],[21737,2,431]]],[0,151,152,0,153,154,154,0,[1,21737,1],[],[[21738,2,432]]],[0,115,20,0,116,156,154,0,[1,21738,1],[[0,63,20,0,64,154,0,0,[1,21739,0],[],[]]],[[21739,2,432]]],[0,115,20,0,116,157,154,0,[1,21740,1],[[0,63,20,0,64,154,0,0,[1,21741,0],[],[]]],[[21741,2,432]]],[0,115,20,0,116,158,106,0,[1,21742,1],[[0,118,119,0,120,159,0,0,[1,21742,1],[],[]]],[[21743,2,107]]],[0,118,119,0,120,160,106,0,[1,21743,1],[],[[21744,2,107]]],[0,161,152,0,162,106,163,0,[1,21744,0],[],[[21744,2,274]]],[0,165,166,0,167,168,0,0,[1,21755,3],[[0,59,20,0,60,169,0,0,[1,21756,0],[],[]],[0,59,20,0,60,170,0,0,[1,21756,0],[],[]],[3,171,0,0,0,0,0,0,[1,21757,1],[[4,275,0,0,0,0,0,0,[1,21757,1],[[0,173,41,0,174,175,0,0,[1,21757,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,21759,1],[],[[21759,2,279]]],[0,183,90,0,0,97,184,0,[1,21760,600],[[0,59,20,0,60,185,0,0,[1,21760,1],[],[]],[0,59,20,0,60,186,0,0,[1,21761,0],[],[]],[0,40,41,0,42,187,188,0,[1,21762,0],[],[[21762,2,189]]],[0,151,152,0,153,190,191,0,[1,21763,0],[],[[21763,2,280]]],[0,193,166,0,0,194,195,0,[1,21763,579],[[0,63,20,0,64,196,197,0,[1,21764,1],[],[[21765,2,198]]],[0,199,200,0,201,202,0,0,[1,21765,1],[],[[21766,2,203]]],[0,204,200,0,205,206,195,0,[1,21766,562],[],[[21767,2,433],[22327,2,208]]],[0,19,20,0,21,209,0,0,[1,22330,3],[],[[22332,2,210]]],[0,211,20,0,212,213,0,0,[1,22334,3],[],[[22336,2,214]]],[0,215,200,0,216,217,195,0,[1,22338,3],[],[[22339,2,955],[22340,2,219],[22340,2,435]]]],[[22342,2,435]]],[0,115,20,0,116,221,48,0,[1,22343,14],[[0,222,223,0,224,195,0,0,[1,22344,12],[[0,19,20,0,21,225,0,0,[1,22345,1],[],[[22346,2,225]]],[0,46,20,0,47,0,48,0,[1,22347,1],[],[[22348,2,49]]],[0,63,20,0,64,226,227,0,[1,22349,0],[],[[22349,2,228]]],[0,108,20,0,109,229,230,0,[1,22350,3],[[0,40,41,0,42,231,0,0,[1,22351,1],[],[]]],[[22352,2,113],[22352,2,436]]],[0,233,20,0,234,235,0,0,[1,22353,0],[],[]],[3,236,0,0,0,0,0,0,[1,22354,2],[[4,437,0,0,0,0,0,0,[1,22354,2],[[0,173,41,0,174,238,0,0,[1,22355,0],[],[]]],[]]],[]]],[]]],[[22357,2,956]]],[0,63,20,0,64,240,241,0,[1,22357,1],[],[[22358,2,242]]],[0,211,20,0,212,243,0,0,[1,22358,1],[],[[22359,2,214]]]],[[22360,2,242],[22360,2,956]]],[0,211,20,0,212,243,0,0,[1,22361,0],[],[[22361,2,214]]],[0,115,20,0,116,244,87,0,[1,22362,1],[[0,63,20,0,64,87,0,0,[1,22362,1],[],[]]],[[22363,2,424]]],[0,46,20,0,47,0,245,0,[1,22363,1],[],[[22364,2,246]]],[3,247,0,0,0,0,0,0,[1,22364,3],[[4,957,0,0,0,0,0,0,[1,22364,3],[[0,179,20,0,180,249,250,0,[1,22365,1],[],[[22365,2,958]]],[0,173,41,0,174,252,0,0,[1,22366,0],[],[]]],[]]],[]]],[[22367,2,956],[22367,2,958]]],[0,115,20,0,116,254,250,0,[1,22368,1],[[0,63,20,0,64,250,0,0,[1,22369,0],[],[]]],[[22369,2,958]]]],[[22370,2,956],[22370,2,958]]],[0,255,20,0,256,82,257,0,[1,22370,1],[],[[22371,2,391],[22371,2,392]]],[0,115,20,0,116,260,82,0,[1,22371,14],[[0,165,166,0,167,292,0,0,[1,22381,4],[[0,59,20,0,60,169,0,0,[1,22382,0],[],[]],[0,59,20,0,60,170,0,0,[1,22383,0],[],[]],[3,171,0,0,0,0,0,0,[1,22383,1],[[4,959,0,0,0,0,0,0,[1,22383,1],[[0,173,41,0,174,175,0,0,[1,22384,0],[],[]]],[]]],[]]],[]]],[[22385,2,960]]],[0,115,20,0,116,262,0,0,[1,22386,1],[[0,173,41,0,174,445,0,0,[1,22386,1],[],[]]],[]]],[]],[4,446,0,0,0,0,0,0,[1,22388,1644],[[0,40,41,0,42,86,87,0,[1,22388,0],[],[[22388,2,447]]],[0,89,90,0,91,92,93,0,[1,22389,1624],[[0,59,20,0,60,94,0,0,[1,22389,1],[],[]],[0,40,41,0,42,95,87,0,[1,22390,0],[],[[22390,2,447]]],[0,96,90,0,91,97,93,0,[1,22391,1619],[[0,59,20,0,60,94,0,0,[1,22392,0],[],[]],[0,40,41,0,42,95,87,0,[1,22392,1],[],[[22393,2,447]]],[0,40,41,0,42,98,99,0,[1,22393,1],[],[[22394,2,448]]],[0,59,20,0,60,101,0,0,[1,22394,1],[],[]],[0,63,20,0,64,102,103,0,[1,22395,0],[],[[22395,2,104]]],[0,63,20,0,64,105,106,0,[1,22396,0],[],[[22396,2,107]]],[0,108,20,0,109,110,111,0,[1,22396,2],[[0,40,41,0,42,112,0,0,[0,22397,0],[],[[22397,5,426]]]],[[22398,2,134],[22398,2,427]]],[0,115,20,0,116,117,106,0,[1,22398,2],[[0,63,20,0,64,106,0,0,[1,22399,0],[],[]]],[[22400,2,107]]],[0,108,20,0,109,123,124,0,[1,22400,1],[[0,40,41,0,42,125,0,0,[1,22401,0],[],[]]],[[22401,2,113],[22401,2,299]]],[0,115,20,0,116,127,106,0,[1,22402,0],[[0,118,119,0,120,128,0,0,[1,22402,0],[],[]]],[[22402,2,449]]],[0,108,20,0,109,130,131,0,[1,22402,2],[[0,40,41,0,42,132,0,0,[0,22403,0],[],[[22403,5,133]]]],[[22403,2,134],[22404,2,135]]],[0,115,20,0,116,136,106,0,[1,22404,2],[[0,63,20,0,64,106,0,0,[1,22404,2],[],[]]],[[22406,2,449]]],[0,115,20,0,116,137,106,0,[1,22406,2],[[0,63,20,0,64,106,0,0,[1,22406,2],[],[]]],[[22408,2,449]]],[0,46,20,0,47,0,138,0,[1,22408,0],[],[[22408,2,139]]],[0,140,20,0,141,142,143,0,[1,22408,1],[],[[22409,2,144]]],[3,145,0,0,0,0,0,0,[1,22409,23],[[4,450,0,0,0,0,0,0,[1,22409,23],[[0,108,20,0,109,147,148,0,[1,22409,2],[[0,40,41,0,42,149,0,0,[1,22410,0],[],[]]],[[22410,2,113],[22410,2,451]]],[0,151,152,0,153,154,154,0,[1,22411,0],[],[[22411,2,452]]],[0,115,20,0,116,156,154,0,[1,22412,1],[[0,63,20,0,64,154,0,0,[1,22412,0],[],[]]],[[22413,2,452]]],[0,115,20,0,116,157,154,0,[1,22413,1],[[0,63,20,0,64,154,0,0,[1,22414,0],[],[]]],[[22414,2,452]]],[0,115,20,0,116,158,106,0,[1,22415,1],[[0,118,119,0,120,159,0,0,[1,22415,1],[],[]]],[[22416,2,449]]],[0,118,119,0,120,160,106,0,[1,22417,0],[],[[22417,2,449]]],[0,161,152,0,162,106,163,0,[1,22417,1],[],[[22418,2,304]]],[0,165,166,0,167,168,0,0,[1,22428,3],[[0,59,20,0,60,169,0,0,[1,22429,0],[],[]],[0,59,20,0,60,170,0,0,[1,22429,1],[],[]],[3,171,0,0,0,0,0,0,[1,22430,1],[[4,305,0,0,0,0,0,0,[1,22430,1],[[0,173,41,0,174,175,0,0,[1,22430,1],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,22432,1],[],[[22433,2,306]]],[0,183,90,0,0,97,184,0,[1,22433,1570],[[0,59,20,0,60,185,0,0,[1,22433,1],[],[]],[0,59,20,0,60,186,0,0,[1,22434,0],[],[]],[0,40,41,0,42,187,188,0,[1,22435,0],[],[[22435,2,189]]],[0,151,152,0,153,190,191,0,[1,22435,1],[],[[22436,2,307]]],[0,193,166,0,0,194,195,0,[1,22436,1550],[[0,63,20,0,64,196,197,0,[1,22436,1],[],[[22437,2,198]]],[0,199,200,0,201,202,0,0,[1,22437,1],[],[[22438,2,203]]],[0,204,200,0,205,206,195,0,[1,22439,1535],[],[[22439,2,453],[23973,2,208]]],[0,19,20,0,21,209,0,0,[1,23975,2],[],[[23976,2,210]]],[0,211,20,0,212,213,0,0,[1,23978,3],[],[[23980,2,214]]],[0,215,200,0,216,217,195,0,[1,23982,3],[],[[23983,2,961],[23983,2,219],[23984,2,962]]]],[[23985,2,962]]],[0,115,20,0,116,221,48,0,[1,23987,13],[[0,222,223,0,224,195,0,0,[1,23988,11],[[0,19,20,0,21,225,0,0,[1,23989,1],[],[[23990,2,225]]],[0,46,20,0,47,0,48,0,[1,23991,1],[],[[23991,2,49]]],[0,63,20,0,64,226,227,0,[1,23992,1],[],[[23993,2,228]]],[0,108,20,0,109,229,230,0,[1,23993,3],[[0,40,41,0,42,231,0,0,[1,23994,1],[],[]]],[[23995,2,113],[23995,2,963]]],[0,233,20,0,234,235,0,0,[1,23996,1],[],[]],[3,236,0,0,0,0,0,0,[1,23997,2],[[4,964,0,0,0,0,0,0,[1,23997,2],[[0,173,41,0,174,238,0,0,[1,23998,0],[],[]]],[]]],[]]],[]]],[[24000,2,965]]],[0,63,20,0,64,240,241,0,[1,24000,1],[],[[24001,2,242]]],[0,211,20,0,212,243,0,0,[1,24001,1],[],[[24002,2,214]]]],[[24003,2,242],[24003,2,965]]],[0,211,20,0,212,243,0,0,[1,24003,1],[],[[24004,2,214]]],[0,115,20,0,116,244,87,0,[1,24004,2],[[0,63,20,0,64,87,0,0,[1,24005,0],[],[]]],[[24006,2,447]]],[0,46,20,0,47,0,245,0,[1,24006,1],[],[[24006,2,246]]],[3,247,0,0,0,0,0,0,[1,24007,2],[[4,966,0,0,0,0,0,0,[1,24007,2],[[0,179,20,0,180,249,250,0,[1,24007,1],[],[[24008,2,967]]],[0,173,41,0,174,252,0,0,[1,24009,0],[],[]]],[]]],[]]],[[24010,2,965],[24010,2,967]]],[0,115,20,0,116,254,250,0,[1,24010,2],[[0,63,20,0,64,250,0,0,[1,24011,1],[],[]]],[[24012,2,967]]]],[[24012,2,965],[24012,2,967]]],[0,255,20,0,256,82,257,0,[1,24013,0],[],[[24013,2,419],[24013,2,420]]],[0,115,20,0,116,260,82,0,[1,24014,16],[[0,165,166,0,167,292,0,0,[1,24026,3],[[0,59,20,0,60,169,0,0,[1,24027,0],[],[]],[0,59,20,0,60,170,0,0,[1,24028,0],[],[]],[3,171,0,0,0,0,0,0,[1,24028,1],[[4,968,0,0,0,0,0,0,[1,24028,1],[[0,173,41,0,174,175,0,0,[1,24028,1],[],[]]],[]]],[]]],[]]],[[24030,2,969]]],[0,115,20,0,116,262,0,0,[1,24030,2],[[0,173,41,0,174,445,0,0,[1,24031,1],[],[]]],[]]],[]],[4,465,0,0,0,0,0,0,[1,24033,680],[[0,40,41,0,42,86,87,0,[1,24033,0],[],[[24033,2,424]]],[0,89,90,0,91,92,93,0,[1,24034,662],[[0,59,20,0,60,94,0,0,[1,24034,1],[],[]],[0,40,41,0,42,95,87,0,[1,24035,0],[],[[24035,2,424]]],[0,96,90,0,91,97,93,0,[1,24036,657],[[0,59,20,0,60,94,0,0,[1,24037,0],[],[]],[0,40,41,0,42,95,87,0,[1,24037,1],[],[[24037,2,424]]],[0,40,41,0,42,98,99,0,[1,24038,0],[],[[24038,2,396]]],[0,59,20,0,60,101,0,0,[1,24039,0],[],[]],[0,63,20,0,64,102,103,0,[1,24039,1],[],[[24040,2,104]]],[0,63,20,0,64,105,106,0,[1,24040,0],[],[[24040,2,107]]],[0,108,20,0,109,110,111,0,[1,24041,1],[[0,40,41,0,42,112,0,0,[0,24041,1],[],[[24041,5,426]]]],[[24042,2,134],[24042,2,427]]],[0,115,20,0,116,117,106,0,[1,24042,1],[[0,63,20,0,64,106,0,0,[1,24043,0],[],[]]],[[24043,2,107]]],[0,108,20,0,109,123,124,0,[1,24044,1],[[0,40,41,0,42,125,0,0,[1,24044,1],[],[]]],[[24045,2,113],[24045,2,397]]],[0,115,20,0,116,127,106,0,[1,24045,2],[[0,118,119,0,120,128,0,0,[1,24046,0],[],[]]],[[24046,2,466]]],[0,108,20,0,109,130,131,0,[1,24047,1],[[0,40,41,0,42,132,0,0,[0,24047,1],[],[[24048,5,133]]]],[[24048,2,134],[24048,2,135]]],[0,115,20,0,116,136,106,0,[1,24049,1],[[0,63,20,0,64,106,0,0,[1,24049,1],[],[]]],[[24050,2,466]]],[0,115,20,0,116,137,106,0,[1,24051,1],[[0,63,20,0,64,106,0,0,[1,24051,1],[],[]]],[[24052,2,466]]],[0,46,20,0,47,0,138,0,[1,24052,1],[],[[24053,2,139]]],[0,140,20,0,141,142,143,0,[1,24054,0],[],[[24054,2,144]]],[3,145,0,0,0,0,0,0,[1,24055,29],[[4,399,0,0,0,0,0,0,[1,24055,29],[[0,108,20,0,109,147,148,0,[1,24055,2],[[0,40,41,0,42,149,0,0,[1,24056,0],[],[]]],[[24056,2,113],[24056,2,400]]],[0,151,152,0,153,154,154,0,[1,24057,0],[],[[24057,2,401]]],[0,115,20,0,116,156,154,0,[1,24058,1],[[0,118,119,0,120,402,0,0,[1,24058,1],[],[]]],[[24059,2,403]]],[0,115,20,0,116,157,154,0,[1,24060,1],[[0,118,119,0,120,404,0,0,[1,24060,0],[],[]]],[[24061,2,405]]],[0,115,20,0,116,158,106,0,[1,24061,1],[[0,118,119,0,120,406,0,0,[1,24062,0],[],[]]],[[24062,2,466]]],[0,118,119,0,120,160,106,0,[1,24063,1],[],[[24063,2,466]]],[0,161,152,0,162,106,163,0,[1,24064,0],[],[[24064,2,407]]],[0,165,166,0,167,168,0,0,[1,24080,4],[[0,59,20,0,60,169,0,0,[1,24081,0],[],[]],[0,59,20,0,60,170,0,0,[1,24082,0],[],[]],[3,171,0,0,0,0,0,0,[1,24082,2],[[4,408,0,0,0,0,0,0,[1,24082,1],[[0,173,41,0,174,175,0,0,[1,24083,0],[],[]]],[]]],[]]],[]]],[]]],[]],[0,179,20,0,180,181,97,0,[1,24085,0],[],[[24085,2,409]]],[0,183,90,0,0,97,184,0,[1,24086,602],[[0,59,20,0,60,185,0,0,[1,24086,0],[],[]],[0,59,20,0,60,186,0,0,[1,24087,0],[],[]],[0,40,41,0,42,187,188,0,[1,24087,1],[],[[24088,2,189]]],[0,151,152,0,153,190,191,0,[1,24088,1],[],[[24088,2,410]]],[0,193,166,0,0,194,195,0,[1,24089,589],[[0,63,20,0,64,196,197,0,[1,24089,1],[],[[24090,2,198]]],[0,199,200,0,201,202,0,0,[1,24090,1],[],[[24091,2,203]]],[0,204,200,0,205,206,195,0,[1,24091,582],[],[[24092,2,411],[24673,2,208]]],[0,19,20,0,21,209,0,0,[1,24674,1],[],[[24674,2,210]]],[0,211,20,0,212,213,0,0,[1,24675,1],[],[[24675,2,214]]],[0,215,200,0,216,217,195,0,[1,24676,1],[],[[24677,2,970],[24677,2,219],[24677,2,413]]]],[[24678,2,413]]],[0,115,20,0,116,221,48,0,[1,24678,7],[[0,222,223,0,224,195,0,0,[1,24679,6],[[0,19,20,0,21,225,0,0,[1,24679,0],[],[[24679,2,225]]],[0,46,20,0,47,0,48,0,[1,24680,0],[],[[24680,2,49]]],[0,63,20,0,64,226,227,0,[1,24680,1],[],[[24681,2,228]]],[0,108,20,0,109,229,230,0,[1,24681,1],[[0,40,41,0,42,231,0,0,[1,24682,0],[],[]]],[[24682,2,113],[24682,2,414]]],[0,233,20,0,234,235,0,0,[1,24683,0],[],[]],[3,236,0,0,0,0,0,0,[1,24683,2],[[4,415,0,0,0,0,0,0,[1,24684,0],[[0,173,41,0,174,238,0,0,[1,24684,0],[],[]]],[]]],[]]],[]]],[[24685,2,971]]],[0,63,20,0,64,240,241,0,[1,24685,1],[],[[24686,2,242]]],[0,211,20,0,212,243,0,0,[1,24687,0],[],[[24687,2,214]]]],[[24687,2,242],[24688,2,971]]],[0,211,20,0,212,243,0,0,[1,24688,1],[],[[24688,2,214]]],[0,115,20,0,116,244,87,0,[1,24689,1],[[0,63,20,0,64,87,0,0,[1,24689,1],[],[]]],[[24690,2,424]]],[0,46,20,0,47,0,245,0,[1,24690,1],[],[[24691,2,246]]],[3,247,0,0,0,0,0,0,[1,24691,2],[[4,972,0,0,0,0,0,0,[1,24691,2],[[0,179,20,0,180,249,250,0,[1,24691,1],[],[[24692,2,973]]],[0,173,41,0,174,252,0,0,[1,24692,1],[],[]]],[]]],[]]],[[24693,2,971],[24693,2,973]]],[0,115,20,0,116,254,250,0,[1,24694,1],[[0,63,20,0,64,250,0,0,[1,24694,1],[],[]]],[[24695,2,973]]]],[[24695,2,971],[24696,2,973]]],[0,255,20,0,256,82,257,0,[1,24696,1],[],[[24696,2,441],[24696,2,442]]],[0,115,20,0,116,260,82,0,[1,24697,14],[[0,165,166,0,167,292,0,0,[1,24707,3],[[0,59,20,0,60,169,0,0,[1,24708,0],[],[]],[0,59,20,0,60,170,0,0,[1,24708,1],[],[]],[3,171,0,0,0,0,0,0,[1,24709,1],[[4,974,0,0,0,0,0,0,[1,24709,1],[[0,173,41,0,174,175,0,0,[1,24709,1],[],[]]],[]]],[]]],[]]],[[24711,2,975]]],[0,115,20,0,116,262,0,0,[1,24711,2],[[0,173,41,0,174,445,0,0,[1,24712,0],[],[]]],[]]],[]]]; +</script> +<script type="text/javascript"> +window.sPart3 = [[4,53,0,0,0,0,0,0,[1,2073,9754],[[0,19,20,0,21,54,0,0,[1,2074,0],[],[[2074,2,54]]],[0,55,24,0,56,57,58,0,[1,2079,9700],[[0,59,20,0,60,61,0,0,[1,2080,0],[],[]],[0,59,20,0,60,62,0,0,[1,2080,1],[],[]],[0,63,20,0,64,65,66,0,[1,2081,1],[],[[2082,2,67]]],[0,59,20,0,60,68,0,0,[1,2082,1],[],[]],[0,40,41,0,42,69,70,0,[1,2083,1],[],[[2084,2,71]]],[0,72,24,0,73,70,74,0,[1,2084,9361],[[0,59,20,0,60,75,0,0,[1,2084,1],[],[]],[0,46,20,0,47,0,76,0,[1,2085,0],[],[[2085,2,77]]],[0,46,20,0,47,0,78,0,[1,2086,0],[],[[2086,2,79]]],[0,46,20,0,47,0,80,0,[1,2086,1],[],[[2087,2,81]]],[0,46,20,0,47,0,82,0,[1,2087,1],[],[[2087,2,83]]],[3,84,0,0,0,0,0,0,[1,2088,9356],window.sPart0,[]]],[[11444,2,535],[11444,2,536],[11445,2,537],[11445,2,538]]],[0,151,152,0,153,76,76,0,[1,11445,1],[],[[11445,2,539]]],[0,151,152,0,153,78,78,0,[1,11446,0],[],[[11446,2,540]]],[0,151,152,0,153,80,80,0,[1,11447,0],[],[[11447,2,541]]],[0,118,119,0,120,542,66,0,[1,11448,0],[],[[11448,2,67]]],[0,118,119,0,120,543,66,0,[1,11448,1],[],[[11449,2,67]]],[0,118,119,0,120,544,66,0,[1,11449,1],[],[[11450,2,67]]],[0,59,20,0,60,545,0,0,[1,11450,0],[],[]],[0,108,20,0,109,546,547,0,[1,11451,1],[[0,40,41,0,42,548,0,0,[1,11451,0],[],[]]],[[11452,2,113],[11452,2,549]]],[0,115,20,0,116,550,66,0,[1,11452,1],[[0,118,119,0,120,551,0,0,[1,11453,0],[],[]]],[[11453,2,67]]],[0,108,20,0,109,552,553,0,[1,11454,2],[[0,40,41,0,42,554,0,0,[1,11455,0],[],[]]],[[11455,2,113],[11455,2,189]]],[0,115,20,0,116,555,66,0,[1,11456,1],[[0,118,119,0,120,556,0,0,[1,11457,0],[],[]]],[[11457,2,557]]],[0,108,20,0,109,558,559,0,[1,11458,1],[[0,40,41,0,42,560,0,0,[1,11458,0],[],[]]],[[11459,2,113],[11459,2,561]]],[0,115,20,0,116,562,66,0,[1,11459,1],[[0,118,119,0,120,563,0,0,[1,11460,0],[],[]]],[[11460,2,564]]],[0,108,20,0,109,565,566,0,[1,11461,1],[[0,40,41,0,42,567,0,0,[1,11461,0],[],[]]],[[11462,2,113],[11462,2,568]]],[0,115,20,0,116,569,66,0,[1,11462,1],[[0,118,119,0,120,570,0,0,[1,11463,0],[],[]]],[[11463,2,564]]],[0,108,20,0,109,571,572,0,[1,11464,1],[[0,40,41,0,42,573,0,0,[1,11464,1],[],[]]],[[11465,2,113],[11465,2,574]]],[0,115,20,0,116,575,66,0,[1,11465,2],[[0,118,119,0,120,576,0,0,[1,11466,0],[],[]]],[[11467,2,577]]],[0,108,20,0,109,578,579,0,[1,11467,1],[[0,40,41,0,42,580,0,0,[0,11467,1],[],[[11468,5,581]]]],[[11468,2,134],[11468,2,582]]],[0,108,20,0,109,583,584,0,[1,11469,1],[[0,40,41,0,42,585,0,0,[1,11469,0],[],[]]],[[11470,2,113],[11470,2,586]]],[0,115,20,0,116,587,66,0,[1,11470,2],[[0,118,119,0,120,588,0,0,[1,11471,0],[],[]]],[[11471,2,577]]],[0,108,20,0,109,589,590,0,[1,11472,1],[[0,40,41,0,42,591,0,0,[1,11472,1],[],[]]],[[11473,2,113],[11473,2,592]]],[0,115,20,0,116,593,66,0,[1,11474,1],[[0,118,119,0,120,594,0,0,[1,11474,1],[],[]]],[[11475,2,577]]],[0,108,20,0,109,595,596,0,[1,11475,2],[[0,40,41,0,42,597,0,0,[1,11476,0],[],[]]],[[11476,2,113],[11476,2,598]]],[0,115,20,0,116,599,66,0,[1,11477,1],[[0,118,119,0,120,600,0,0,[1,11477,1],[],[]]],[[11478,2,577]]],[0,108,20,0,109,601,602,0,[1,11478,2],[[0,40,41,0,42,603,0,0,[1,11479,0],[],[]]],[[11479,2,113],[11479,2,604]]],[0,115,20,0,116,605,66,0,[1,11480,1],[[0,118,119,0,120,606,0,0,[1,11480,1],[],[]]],[[11481,2,577]]],[0,108,20,0,109,607,608,0,[1,11481,2],[[0,40,41,0,42,609,0,0,[1,11482,0],[],[]]],[[11482,2,113],[11482,2,610]]],[0,115,20,0,116,611,66,0,[1,11483,1],[[0,118,119,0,120,612,0,0,[1,11483,1],[],[]]],[[11484,2,577]]],[0,108,20,0,109,613,614,0,[1,11485,1],[[0,40,41,0,42,615,0,0,[1,11485,1],[],[]]],[[11486,2,113],[11486,2,616]]],[0,108,20,0,109,617,618,0,[1,11487,1],[[0,40,41,0,42,619,0,0,[0,11487,0],[],[[11487,5,620]]]],[[11488,2,134],[11488,2,621]]],[0,108,20,0,109,622,623,0,[1,11488,2],[[0,40,41,0,42,624,0,0,[0,11489,0],[],[[11489,5,625]]]],[[11490,2,134],[11490,2,626]]],[0,108,20,0,109,627,628,0,[1,11490,2],[[0,40,41,0,42,629,0,0,[0,11491,0],[],[[11491,5,630]]]],[[11491,2,134],[11491,2,631]]],[0,115,20,0,116,632,633,0,[1,11492,1],[[0,63,20,0,64,633,0,0,[1,11492,1],[],[]]],[[11493,2,626]]],[0,115,20,0,116,634,635,0,[1,11493,1],[[0,63,20,0,64,636,0,0,[1,11494,0],[],[]]],[[11494,2,637]]],[0,108,20,0,109,638,639,0,[1,11495,1],[[0,40,41,0,42,640,0,0,[0,11495,1],[],[[11496,5,641]]]],[[11496,2,134],[11496,2,642]]],[0,115,20,0,116,643,644,0,[1,11497,1],[[0,63,20,0,64,645,0,0,[1,11497,1],[],[]]],[[11498,2,646]]],[0,108,20,0,109,647,648,0,[1,11498,2],[[0,40,41,0,42,649,0,0,[0,11499,0],[],[[11499,5,650]]]],[[11499,2,134],[11499,2,651]]],[0,115,20,0,116,652,653,0,[1,11500,1],[[0,63,20,0,64,645,0,0,[1,11500,1],[],[]]],[[11501,2,654]]],[0,108,20,0,109,655,656,0,[1,11501,2],[[0,40,41,0,42,657,0,0,[0,11502,0],[],[[11502,5,658]]]],[[11503,2,134],[11503,2,659]]],[0,115,20,0,116,660,661,0,[1,11503,1],[[0,63,20,0,64,645,0,0,[1,11504,0],[],[]]],[[11504,2,662]]],[0,151,152,0,153,661,661,0,[1,11505,0],[],[[11505,2,663]]],[0,108,20,0,109,664,665,0,[1,11505,2],[[0,40,41,0,42,666,0,0,[1,11506,0],[],[]]],[[11507,2,113],[11507,2,667]]],[0,46,20,0,47,0,668,0,[1,11507,0],[],[[11507,2,669]]],[0,59,20,0,60,670,0,0,[1,11508,0],[],[]],[0,63,20,0,64,0,671,0,[1,11508,1],[],[[11509,2,672]]],[3,673,0,0,0,0,0,0,[1,11509,3],[[4,674,0,0,0,0,0,0,[1,11509,3],[[0,40,41,0,42,675,676,0,[1,11509,1],[],[[11510,2,677]]],[0,173,41,0,174,678,0,0,[1,11510,1],[],[]],[0,115,20,0,116,679,671,0,[1,11511,1],[[0,63,20,0,64,680,0,0,[1,11511,1],[],[]]],[[11512,2,681]]]],[]]],[]],[0,115,20,0,116,682,66,0,[1,11513,1],[[0,118,119,0,120,683,0,0,[1,11513,1],[],[]]],[[11514,2,577]]],[0,118,119,0,120,684,66,0,[1,11514,1],[],[[11515,2,577]]],[0,118,119,0,120,685,66,0,[1,11515,1],[],[[11515,2,577]]],[0,108,20,0,109,686,687,0,[1,11516,2],[[0,40,41,0,42,688,0,0,[1,11516,1],[],[]]],[[11517,2,113],[11517,2,689]]],[0,115,20,0,116,690,691,0,[1,11518,2],[[0,63,20,0,64,691,0,0,[1,11518,1],[],[]]],[[11519,2,689]]],[0,115,20,0,116,692,66,0,[1,11520,1],[[0,63,20,0,64,66,0,0,[1,11520,1],[],[]]],[[11521,2,577]]],[0,108,20,0,109,693,694,0,[1,11522,1],[[0,40,41,0,42,695,0,0,[1,11522,0],[],[]]],[[11523,2,113],[11523,2,696]]],[0,115,20,0,116,697,691,0,[1,11523,2],[[0,63,20,0,64,698,0,0,[1,11524,0],[],[]]],[[11525,2,699]]],[0,115,20,0,116,700,66,0,[1,11525,1],[[0,118,119,0,120,701,0,0,[1,11526,0],[],[]]],[[11526,2,577]]],[0,108,20,0,109,702,703,0,[1,11527,1],[[0,40,41,0,42,704,0,0,[1,11527,1],[],[]]],[[11528,2,113],[11528,2,705]]],[0,115,20,0,116,706,707,0,[1,11528,2],[[0,63,20,0,64,707,0,0,[1,11529,0],[],[]]],[[11530,2,705]]],[0,115,20,0,116,708,66,0,[1,11530,2],[[0,63,20,0,64,66,0,0,[1,11531,0],[],[]]],[[11531,2,577]]],[0,118,119,0,120,709,66,0,[1,11532,1],[],[[11533,2,577]]],[0,161,152,0,162,66,66,0,[1,11533,1],[],[[11534,2,710]]],[0,711,24,0,712,66,50,0,[1,11537,241],[[0,59,20,0,60,713,0,0,[1,11537,0],[],[]],[0,59,20,0,60,714,0,0,[1,11538,0],[],[]],[0,40,41,0,42,715,188,0,[1,11538,1],[],[[11539,2,189]]],[0,151,152,0,153,44,191,0,[1,11539,1],[],[[11539,2,716]]],[0,193,166,0,0,717,195,0,[1,11540,219],[[0,63,20,0,64,196,197,0,[1,11540,1],[],[[11541,2,198]]],[0,199,200,0,201,202,0,0,[1,11541,1],[],[[11541,2,718]]],[0,204,200,0,205,206,195,0,[1,11542,208],[],[[11543,2,719],[11749,2,208]]],[0,19,20,0,21,209,0,0,[1,11750,2],[],[[11751,2,210]]],[0,211,20,0,212,213,0,0,[1,11753,1],[],[[11754,2,214]]],[0,215,200,0,216,217,195,0,[1,11755,3],[],[[11756,2,720],[11757,2,219],[11758,2,721]]]],[[11759,2,721]]],[0,115,20,0,116,722,50,0,[1,11760,14],[[0,723,724,0,725,195,0,0,[1,11762,12],[[0,46,20,0,47,0,50,0,[1,11763,1],[],[[11764,2,51]]],[3,726,0,0,0,0,0,0,[1,11765,7],[[4,727,0,0,0,0,0,0,[1,11766,6],[[0,46,20,0,47,728,729,0,[1,11766,2],[],[[11767,2,730]]],[0,179,20,0,180,731,732,0,[1,11768,2],[],[[11769,2,733]]],[0,173,41,0,174,734,0,0,[1,11770,1],[],[]]],[]]],[]],[0,19,20,0,21,50,0,0,[1,11772,1],[],[[11773,2,735]]]],[]]],[[11774,2,736]]],[0,63,20,0,64,240,241,0,[1,11775,1],[],[[11776,2,242]]],[0,211,20,0,212,243,0,0,[1,11776,1],[],[[11777,2,214]]]],[[11778,2,736]]]],[[11778,2,737],[11778,2,738]]],[0,165,166,0,167,739,0,0,[1,11791,18],[[0,59,20,0,60,169,0,0,[1,11791,1],[],[]],[0,59,20,0,60,170,0,0,[1,11792,0],[],[]],[3,171,0,0,0,0,0,0,[1,11792,17],[[4,740,0,0,0,0,0,0,[1,11793,0],[[0,173,41,0,174,175,0,0,[1,11793,0],[],[]]],[]],[4,741,0,0,0,0,0,0,[1,11794,0],[[0,173,41,0,174,175,0,0,[1,11794,0],[],[]]],[]],[4,293,0,0,0,0,0,0,[1,11795,0],[[0,173,41,0,174,175,0,0,[1,11795,0],[],[]]],[]],[4,294,0,0,0,0,0,0,[1,11796,0],[[0,173,41,0,174,175,0,0,[1,11796,0],[],[]]],[]],[4,318,0,0,0,0,0,0,[1,11796,1],[[0,173,41,0,174,175,0,0,[1,11797,0],[],[]]],[]],[4,343,0,0,0,0,0,0,[1,11797,1],[[0,173,41,0,174,175,0,0,[1,11798,0],[],[]]],[]],[4,367,0,0,0,0,0,0,[1,11798,1],[[0,173,41,0,174,175,0,0,[1,11799,0],[],[]]],[]],[4,393,0,0,0,0,0,0,[1,11799,1],[[0,173,41,0,174,175,0,0,[1,11800,0],[],[]]],[]],[4,421,0,0,0,0,0,0,[1,11800,1],[[0,173,41,0,174,175,0,0,[1,11801,0],[],[]]],[]],[4,443,0,0,0,0,0,0,[1,11801,2],[[0,173,41,0,174,175,0,0,[1,11802,1],[],[]]],[]],[4,463,0,0,0,0,0,0,[1,11803,1],[[0,173,41,0,174,175,0,0,[1,11803,1],[],[]]],[]],[4,473,0,0,0,0,0,0,[1,11804,1],[[0,173,41,0,174,175,0,0,[1,11804,1],[],[]]],[]],[4,510,0,0,0,0,0,0,[1,11805,1],[[0,173,41,0,174,175,0,0,[1,11806,0],[],[]]],[]],[4,511,0,0,0,0,0,0,[1,11806,1],[[0,173,41,0,174,175,0,0,[1,11806,1],[],[]]],[]],[4,532,0,0,0,0,0,0,[1,11807,1],[[0,173,41,0,174,175,0,0,[1,11807,1],[],[]]],[]],[4,533,0,0,0,0,0,0,[1,11808,1],[[0,173,41,0,174,175,0,0,[1,11808,1],[],[]]],[]]],[]]],[]],[0,165,166,0,167,742,0,0,[1,11823,3],[[0,59,20,0,60,169,0,0,[1,11824,0],[],[]],[0,59,20,0,60,170,0,0,[1,11825,0],[],[]],[3,171,0,0,0,0,0,0,[1,11825,1],[[4,743,0,0,0,0,0,0,[1,11825,1],[[0,173,41,0,174,175,0,0,[1,11826,0],[],[]]],[]]],[]]],[]]],[]],[4,744,0,0,0,0,0,0,[1,11827,6825],[[0,19,20,0,21,54,0,0,[1,11827,1],[],[[11828,2,54]]],[0,55,24,0,56,57,58,0,[1,11834,6777],[[0,59,20,0,60,61,0,0,[1,11834,0],[],[]],[0,59,20,0,60,62,0,0,[1,11835,0],[],[]],[0,63,20,0,64,65,66,0,[1,11835,1],[],[[11836,2,67]]],[0,59,20,0,60,68,0,0,[1,11836,0],[],[]],[0,40,41,0,42,69,70,0,[1,11837,0],[],[[11837,2,745]]],[0,72,24,0,73,70,74,0,[1,11837,5982],[[0,59,20,0,60,75,0,0,[1,11838,0],[],[]],[0,46,20,0,47,0,76,0,[1,11838,1],[],[[11839,2,77]]],[0,46,20,0,47,0,78,0,[1,11839,0],[],[[11839,2,79]]],[0,46,20,0,47,0,80,0,[1,11840,0],[],[[11840,2,81]]],[0,46,20,0,47,0,82,0,[1,11841,0],[],[[11841,2,83]]],[3,84,0,0,0,0,0,0,[1,11841,5977],window.sPart1,[]]],[[17818,2,874],[17818,2,875],[17819,2,876],[17819,2,877]]],[0,151,152,0,153,76,76,0,[1,17819,1],[],[[17820,2,878]]],[0,151,152,0,153,78,78,0,[1,17820,0],[],[[17820,2,879]]],[0,151,152,0,153,80,80,0,[1,17821,0],[],[[17821,2,880]]],[0,118,119,0,120,542,66,0,[1,17821,1],[],[[17822,2,67]]],[0,118,119,0,120,543,66,0,[1,17822,1],[],[[17823,2,67]]],[0,118,119,0,120,544,66,0,[1,17823,1],[],[[17823,2,67]]],[0,59,20,0,60,545,0,0,[1,17824,0],[],[]],[0,108,20,0,109,546,547,0,[1,17825,1],[[0,40,41,0,42,548,0,0,[1,17825,0],[],[]]],[[17825,2,113],[17826,2,549]]],[0,115,20,0,116,550,66,0,[1,17826,1],[[0,118,119,0,120,551,0,0,[1,17827,0],[],[]]],[[17827,2,67]]],[0,108,20,0,109,552,553,0,[1,17828,2],[[0,40,41,0,42,554,0,0,[1,17828,0],[],[]]],[[17829,2,113],[17829,2,189]]],[0,115,20,0,116,555,66,0,[1,17830,1],[[0,118,119,0,120,556,0,0,[1,17831,0],[],[]]],[[17831,2,557]]],[0,108,20,0,109,558,559,0,[1,17832,1],[[0,40,41,0,42,560,0,0,[1,17832,0],[],[]]],[[17833,2,113],[17833,2,881]]],[0,115,20,0,116,562,66,0,[1,17833,2],[[0,118,119,0,120,563,0,0,[1,17834,0],[],[]]],[[17834,2,882]]],[0,108,20,0,109,565,566,0,[1,17835,1],[[0,40,41,0,42,567,0,0,[1,17835,1],[],[]]],[[17836,2,113],[17836,2,568]]],[0,115,20,0,116,569,66,0,[1,17837,1],[[0,118,119,0,120,570,0,0,[1,17837,1],[],[]]],[[17838,2,882]]],[0,108,20,0,109,571,572,0,[1,17838,1],[[0,40,41,0,42,573,0,0,[1,17839,0],[],[]]],[[17839,2,113],[17839,2,883]]],[0,115,20,0,116,575,66,0,[1,17840,1],[[0,118,119,0,120,576,0,0,[1,17840,1],[],[]]],[[17841,2,884]]],[0,108,20,0,109,578,579,0,[1,17841,1],[[0,40,41,0,42,580,0,0,[1,17842,0],[],[]]],[[17842,2,113],[17842,2,885]]],[0,108,20,0,109,583,584,0,[1,17843,1],[[0,40,41,0,42,585,0,0,[1,17843,0],[],[]]],[[17844,2,113],[17844,2,586]]],[0,115,20,0,116,587,66,0,[1,17845,1],[[0,118,119,0,120,588,0,0,[1,17845,0],[],[]]],[[17846,2,884]]],[0,108,20,0,109,589,590,0,[1,17846,1],[[0,40,41,0,42,591,0,0,[1,17847,0],[],[]]],[[17847,2,113],[17847,2,592]]],[0,115,20,0,116,593,66,0,[1,17848,1],[[0,118,119,0,120,594,0,0,[1,17848,0],[],[]]],[[17849,2,884]]],[0,108,20,0,109,595,596,0,[1,17849,1],[[0,40,41,0,42,597,0,0,[1,17849,1],[],[]]],[[17850,2,113],[17850,2,598]]],[0,115,20,0,116,599,66,0,[1,17851,1],[[0,118,119,0,120,600,0,0,[1,17851,0],[],[]]],[[17852,2,884]]],[0,108,20,0,109,601,602,0,[1,17852,1],[[0,40,41,0,42,603,0,0,[1,17853,0],[],[]]],[[17853,2,113],[17853,2,604]]],[0,115,20,0,116,605,66,0,[1,17854,1],[[0,118,119,0,120,606,0,0,[1,17854,1],[],[]]],[[17855,2,884]]],[0,108,20,0,109,607,608,0,[1,17855,1],[[0,40,41,0,42,609,0,0,[1,17856,0],[],[]]],[[17856,2,113],[17856,2,610]]],[0,115,20,0,116,611,66,0,[1,17857,1],[[0,118,119,0,120,612,0,0,[1,17857,1],[],[]]],[[17858,2,884]]],[0,108,20,0,109,613,614,0,[1,17858,2],[[0,40,41,0,42,615,0,0,[1,17859,0],[],[]]],[[17860,2,113],[17860,2,616]]],[0,108,20,0,109,617,618,0,[1,17860,2],[[0,40,41,0,42,619,0,0,[1,17861,0],[],[]]],[[17862,2,113],[17862,2,886]]],[0,108,20,0,109,622,623,0,[1,17862,3],[[0,40,41,0,42,624,0,0,[0,17863,1],[],[[17864,5,625]]]],[[17864,2,134],[17865,2,626]]],[0,108,20,0,109,627,628,0,[1,17865,1],[[0,40,41,0,42,629,0,0,[1,17866,0],[],[]]],[[17866,2,113],[17866,2,887]]],[0,115,20,0,116,632,633,0,[1,17867,1],[[0,63,20,0,64,888,0,0,[1,17867,1],[],[]]],[[17868,2,889]]],[0,115,20,0,116,634,635,0,[1,17868,2],[[0,63,20,0,64,890,0,0,[1,17869,0],[],[]]],[[17869,2,891]]],[0,108,20,0,109,638,639,0,[1,17870,1],[[0,40,41,0,42,640,0,0,[0,17870,1],[],[[17871,5,641]]]],[[17871,2,134],[17871,2,642]]],[0,115,20,0,116,643,644,0,[1,17872,1],[[0,63,20,0,64,645,0,0,[1,17872,1],[],[]]],[[17873,2,646]]],[0,108,20,0,109,647,648,0,[1,17873,2],[[0,40,41,0,42,649,0,0,[0,17874,0],[],[[17874,5,650]]]],[[17874,2,134],[17874,2,651]]],[0,115,20,0,116,652,653,0,[1,17875,1],[[0,63,20,0,64,645,0,0,[1,17875,1],[],[]]],[[17876,2,654]]],[0,108,20,0,109,655,656,0,[1,17876,2],[[0,40,41,0,42,657,0,0,[0,17877,0],[],[[17877,5,658]]]],[[17878,2,134],[17878,2,659]]],[0,115,20,0,116,660,661,0,[1,17878,2],[[0,63,20,0,64,645,0,0,[1,17879,0],[],[]]],[[17880,2,662]]],[0,151,152,0,153,661,661,0,[1,17880,1],[],[[17881,2,663]]],[0,108,20,0,109,664,665,0,[1,17881,2],[[0,40,41,0,42,666,0,0,[1,17882,0],[],[]]],[[17882,2,113],[17882,2,667]]],[0,46,20,0,47,0,668,0,[1,17883,0],[],[[17883,2,669]]],[0,59,20,0,60,670,0,0,[1,17884,0],[],[]],[0,63,20,0,64,0,671,0,[1,17884,1],[],[[17885,2,672]]],[3,673,0,0,0,0,0,0,[1,17885,7],[[4,674,0,0,0,0,0,0,[1,17886,6],[[0,40,41,0,42,675,676,0,[1,17886,2],[],[[17887,2,677]]],[0,173,41,0,174,678,0,0,[1,17888,1],[],[]],[0,115,20,0,116,679,671,0,[1,17889,2],[[0,63,20,0,64,892,0,0,[1,17890,1],[],[]]],[[17891,2,893]]]],[]]],[]],[0,115,20,0,116,682,66,0,[1,17892,2],[[0,118,119,0,120,683,0,0,[1,17893,0],[],[]]],[[17893,2,884]]],[0,118,119,0,120,684,66,0,[1,17894,0],[],[[17894,2,884]]],[0,118,119,0,120,685,66,0,[1,17895,0],[],[[17895,2,884]]],[0,108,20,0,109,686,687,0,[1,17896,1],[[0,40,41,0,42,688,0,0,[1,17896,0],[],[]]],[[17897,2,113],[17897,2,689]]],[0,115,20,0,116,690,691,0,[1,17897,1],[[0,63,20,0,64,691,0,0,[1,17898,0],[],[]]],[[17898,2,689]]],[0,115,20,0,116,692,66,0,[1,17899,1],[[0,63,20,0,64,66,0,0,[1,17899,0],[],[]]],[[17900,2,884]]],[0,108,20,0,109,693,694,0,[1,17900,1],[[0,40,41,0,42,695,0,0,[1,17900,1],[],[]]],[[17901,2,113],[17901,2,696]]],[0,115,20,0,116,697,691,0,[1,17902,1],[[0,63,20,0,64,698,0,0,[1,17902,0],[],[]]],[[17903,2,699]]],[0,115,20,0,116,700,66,0,[1,17903,1],[[0,118,119,0,120,701,0,0,[1,17904,0],[],[]]],[[17904,2,884]]],[0,108,20,0,109,702,703,0,[1,17905,1],[[0,40,41,0,42,704,0,0,[1,17905,1],[],[]]],[[17906,2,113],[17906,2,705]]],[0,115,20,0,116,706,707,0,[1,17907,1],[[0,63,20,0,64,707,0,0,[1,17907,0],[],[]]],[[17908,2,705]]],[0,115,20,0,116,708,66,0,[1,17908,1],[[0,63,20,0,64,66,0,0,[1,17909,0],[],[]]],[[17909,2,884]]],[0,118,119,0,120,709,66,0,[1,17910,0],[],[[17910,2,884]]],[0,161,152,0,162,66,66,0,[1,17910,1],[],[[17911,2,894]]],[0,711,24,0,712,66,50,0,[1,17913,698],[[0,59,20,0,60,713,0,0,[1,17914,0],[],[]],[0,59,20,0,60,714,0,0,[1,17915,0],[],[]],[0,40,41,0,42,715,188,0,[1,17915,0],[],[[17915,2,189]]],[0,151,152,0,153,44,191,0,[1,17915,0],[],[[17915,2,895]]],[0,193,166,0,0,717,195,0,[1,17916,686],[[0,63,20,0,64,196,197,0,[1,17916,1],[],[[17917,2,198]]],[0,199,200,0,201,202,0,0,[1,17917,1],[],[[17917,2,718]]],[0,204,200,0,205,206,195,0,[1,17918,681],[],[[17919,2,896],[18599,2,208]]],[0,19,20,0,21,209,0,0,[1,18599,1],[],[[18600,2,210]]],[0,211,20,0,212,213,0,0,[1,18600,1],[],[[18600,2,214]]],[0,215,200,0,216,217,195,0,[1,18601,1],[],[[18601,2,897],[18601,2,219],[18602,2,898]]]],[[18602,2,898]]],[0,115,20,0,116,722,50,0,[1,18603,5],[[0,723,724,0,725,195,0,0,[1,18603,5],[[0,46,20,0,47,0,50,0,[1,18603,1],[],[[18604,2,51]]],[3,726,0,0,0,0,0,0,[1,18604,3],[[4,899,0,0,0,0,0,0,[1,18604,3],[[0,46,20,0,47,728,729,0,[1,18605,0],[],[[18605,2,900]]],[0,179,20,0,180,731,732,0,[1,18605,1],[],[[18606,2,901]]],[0,173,41,0,174,734,0,0,[1,18606,1],[],[]]],[]]],[]],[0,19,20,0,21,50,0,0,[1,18607,1],[],[[18608,2,902]]]],[]]],[[18608,2,903]]],[0,63,20,0,64,240,241,0,[1,18609,0],[],[[18609,2,242]]],[0,211,20,0,212,243,0,0,[1,18610,0],[],[[18610,2,214]]]],[[18611,2,903]]]],[[18611,2,904],[18611,2,905]]],[0,165,166,0,167,739,0,0,[1,18621,17],[[0,59,20,0,60,169,0,0,[1,18622,0],[],[]],[0,59,20,0,60,170,0,0,[1,18622,0],[],[]],[3,171,0,0,0,0,0,0,[1,18623,15],[[4,906,0,0,0,0,0,0,[1,18623,1],[[0,173,41,0,174,175,0,0,[1,18623,0],[],[]]],[]],[4,907,0,0,0,0,0,0,[1,18624,1],[[0,173,41,0,174,175,0,0,[1,18624,0],[],[]]],[]],[4,759,0,0,0,0,0,0,[1,18625,1],[[0,173,41,0,174,175,0,0,[1,18625,0],[],[]]],[]],[4,770,0,0,0,0,0,0,[1,18626,0],[[0,173,41,0,174,175,0,0,[1,18626,0],[],[]]],[]],[4,776,0,0,0,0,0,0,[1,18627,0],[[0,173,41,0,174,175,0,0,[1,18627,0],[],[]]],[]],[4,784,0,0,0,0,0,0,[1,18628,0],[[0,173,41,0,174,175,0,0,[1,18628,0],[],[]]],[]],[4,790,0,0,0,0,0,0,[1,18629,0],[[0,173,41,0,174,175,0,0,[1,18629,0],[],[]]],[]],[4,796,0,0,0,0,0,0,[1,18630,0],[[0,173,41,0,174,175,0,0,[1,18630,0],[],[]]],[]],[4,805,0,0,0,0,0,0,[1,18631,1],[[0,173,41,0,174,175,0,0,[1,18631,1],[],[]]],[]],[4,811,0,0,0,0,0,0,[1,18632,1],[[0,173,41,0,174,175,0,0,[1,18633,0],[],[]]],[]],[4,841,0,0,0,0,0,0,[1,18633,1],[[0,173,41,0,174,175,0,0,[1,18634,0],[],[]]],[]],[4,842,0,0,0,0,0,0,[1,18635,1],[[0,173,41,0,174,175,0,0,[1,18635,0],[],[]]],[]],[4,871,0,0,0,0,0,0,[1,18636,1],[[0,173,41,0,174,175,0,0,[1,18636,1],[],[]]],[]],[4,872,0,0,0,0,0,0,[1,18637,1],[[0,173,41,0,174,175,0,0,[1,18637,1],[],[]]],[]]],[]]],[]],[0,165,166,0,167,742,0,0,[1,18648,4],[[0,59,20,0,60,169,0,0,[1,18649,0],[],[]],[0,59,20,0,60,170,0,0,[1,18650,0],[],[]],[3,171,0,0,0,0,0,0,[1,18650,1],[[4,908,0,0,0,0,0,0,[1,18650,1],[[0,173,41,0,174,175,0,0,[1,18651,0],[],[]]],[]]],[]]],[]]],[]],[4,909,0,0,0,0,0,0,[1,18652,6904],[[0,19,20,0,21,54,0,0,[1,18652,1],[],[[18653,2,54]]],[0,55,24,0,56,57,58,0,[1,18657,6860],[[0,59,20,0,60,61,0,0,[1,18658,0],[],[]],[0,59,20,0,60,62,0,0,[1,18658,1],[],[]],[0,63,20,0,64,65,66,0,[1,18659,0],[],[[18659,2,67]]],[0,59,20,0,60,68,0,0,[1,18660,0],[],[]],[0,40,41,0,42,69,70,0,[1,18660,1],[],[[18660,2,745]]],[0,72,24,0,73,70,74,0,[1,18661,6053],[[0,59,20,0,60,75,0,0,[1,18661,1],[],[]],[0,46,20,0,47,0,76,0,[1,18662,1],[],[[18662,2,77]]],[0,46,20,0,47,0,78,0,[1,18663,0],[],[[18663,2,79]]],[0,46,20,0,47,0,80,0,[1,18664,0],[],[[18664,2,81]]],[0,46,20,0,47,0,82,0,[1,18664,1],[],[[18665,2,83]]],[3,84,0,0,0,0,0,0,[1,18665,6048],window.sPart2,[]]],[[24713,2,976],[24713,2,977],[24714,2,978],[24714,2,81]]],[0,151,152,0,153,76,76,0,[1,24714,1],[],[[24715,2,979]]],[0,151,152,0,153,78,78,0,[1,24715,1],[],[[24715,2,980]]],[0,151,152,0,153,80,80,0,[1,24716,0],[],[[24716,2,81]]],[0,118,119,0,120,542,66,0,[1,24717,0],[],[[24717,2,67]]],[0,118,119,0,120,543,66,0,[1,24718,1],[],[[24719,2,67]]],[0,118,119,0,120,544,66,0,[1,24720,0],[],[[24720,2,67]]],[0,59,20,0,60,545,0,0,[1,24721,0],[],[]],[0,108,20,0,109,546,547,0,[1,24721,2],[[0,40,41,0,42,548,0,0,[1,24722,0],[],[]]],[[24722,2,113],[24722,2,549]]],[0,115,20,0,116,550,66,0,[1,24723,1],[[0,118,119,0,120,551,0,0,[1,24724,0],[],[]]],[[24724,2,67]]],[0,108,20,0,109,552,553,0,[1,24724,2],[[0,40,41,0,42,554,0,0,[1,24725,0],[],[]]],[[24725,2,113],[24726,2,189]]],[0,115,20,0,116,555,66,0,[1,24726,1],[[0,118,119,0,120,556,0,0,[1,24726,1],[],[]]],[[24727,2,557]]],[0,108,20,0,109,558,559,0,[1,24728,1],[[0,40,41,0,42,560,0,0,[1,24728,0],[],[]]],[[24728,2,113],[24729,2,981]]],[0,115,20,0,116,562,66,0,[1,24729,1],[[0,118,119,0,120,563,0,0,[1,24730,0],[],[]]],[[24730,2,982]]],[0,108,20,0,109,565,566,0,[1,24731,1],[[0,40,41,0,42,567,0,0,[1,24731,0],[],[]]],[[24732,2,113],[24732,2,568]]],[0,115,20,0,116,569,66,0,[1,24732,2],[[0,118,119,0,120,570,0,0,[1,24733,0],[],[]]],[[24733,2,982]]],[0,108,20,0,109,571,572,0,[1,24734,1],[[0,40,41,0,42,573,0,0,[1,24734,1],[],[]]],[[24735,2,113],[24735,2,983]]],[0,115,20,0,116,575,66,0,[1,24735,2],[[0,118,119,0,120,576,0,0,[1,24736,0],[],[]]],[[24737,2,984]]],[0,108,20,0,109,578,579,0,[1,24737,1],[[0,40,41,0,42,580,0,0,[0,24737,1],[],[[24738,5,581]]]],[[24738,2,134],[24738,2,582]]],[0,108,20,0,109,583,584,0,[1,24739,1],[[0,40,41,0,42,585,0,0,[1,24739,0],[],[]]],[[24740,2,113],[24740,2,586]]],[0,115,20,0,116,587,66,0,[1,24740,2],[[0,118,119,0,120,588,0,0,[1,24741,0],[],[]]],[[24741,2,984]]],[0,108,20,0,109,589,590,0,[1,24742,1],[[0,40,41,0,42,591,0,0,[1,24742,1],[],[]]],[[24743,2,113],[24743,2,592]]],[0,115,20,0,116,593,66,0,[1,24743,2],[[0,118,119,0,120,594,0,0,[1,24744,0],[],[]]],[[24744,2,984]]],[0,108,20,0,109,595,596,0,[1,24745,1],[[0,40,41,0,42,597,0,0,[1,24745,1],[],[]]],[[24746,2,113],[24746,2,598]]],[0,115,20,0,116,599,66,0,[1,24746,2],[[0,118,119,0,120,600,0,0,[1,24747,0],[],[]]],[[24748,2,984]]],[0,108,20,0,109,601,602,0,[1,24748,1],[[0,40,41,0,42,603,0,0,[1,24748,1],[],[]]],[[24749,2,113],[24749,2,604]]],[0,115,20,0,116,605,66,0,[1,24750,1],[[0,118,119,0,120,606,0,0,[1,24750,0],[],[]]],[[24751,2,984]]],[0,108,20,0,109,607,608,0,[1,24751,1],[[0,40,41,0,42,609,0,0,[1,24751,1],[],[]]],[[24752,2,113],[24752,2,610]]],[0,115,20,0,116,611,66,0,[1,24753,1],[[0,118,119,0,120,612,0,0,[1,24753,1],[],[]]],[[24754,2,984]]],[0,108,20,0,109,613,614,0,[1,24754,1],[[0,40,41,0,42,615,0,0,[1,24755,0],[],[]]],[[24755,2,113],[24755,2,616]]],[0,108,20,0,109,617,618,0,[1,24756,1],[[0,40,41,0,42,619,0,0,[0,24756,1],[],[[24756,5,620]]]],[[24757,2,134],[24757,2,621]]],[0,108,20,0,109,622,623,0,[1,24757,2],[[0,40,41,0,42,624,0,0,[0,24758,0],[],[[24758,5,625]]]],[[24759,2,134],[24759,2,626]]],[0,108,20,0,109,627,628,0,[1,24759,2],[[0,40,41,0,42,629,0,0,[0,24760,0],[],[[24760,5,630]]]],[[24761,2,134],[24761,2,631]]],[0,115,20,0,116,632,633,0,[1,24761,2],[[0,63,20,0,64,633,0,0,[1,24762,0],[],[]]],[[24763,2,626]]],[0,115,20,0,116,634,635,0,[1,24763,2],[[0,63,20,0,64,636,0,0,[1,24764,0],[],[]]],[[24764,2,637]]],[0,108,20,0,109,638,639,0,[1,24765,1],[[0,40,41,0,42,640,0,0,[1,24765,1],[],[]]],[[24766,2,113],[24766,2,985]]],[0,115,20,0,116,643,644,0,[1,24767,1],[[0,63,20,0,64,644,0,0,[1,24767,1],[],[]]],[[24768,2,985]]],[0,108,20,0,109,647,648,0,[1,24769,1],[[0,40,41,0,42,649,0,0,[1,24769,0],[],[]]],[[24770,2,113],[24770,2,986]]],[0,115,20,0,116,652,653,0,[1,24770,2],[[0,63,20,0,64,653,0,0,[1,24771,0],[],[]]],[[24771,2,986]]],[0,108,20,0,109,655,656,0,[1,24772,1],[[0,40,41,0,42,657,0,0,[1,24772,1],[],[]]],[[24773,2,113],[24773,2,987]]],[0,115,20,0,116,660,661,0,[1,24774,1],[[0,63,20,0,64,661,0,0,[1,24774,1],[],[]]],[[24775,2,987]]],[0,151,152,0,153,661,661,0,[1,24775,1],[],[[24776,2,988]]],[0,108,20,0,109,664,665,0,[1,24776,2],[[0,40,41,0,42,666,0,0,[1,24777,0],[],[]]],[[24777,2,113],[24777,2,989]]],[0,46,20,0,47,0,668,0,[1,24778,0],[],[[24778,2,669]]],[0,59,20,0,60,670,0,0,[1,24779,0],[],[]],[0,63,20,0,64,0,671,0,[1,24779,1],[],[[24780,2,672]]],[3,673,0,0,0,0,0,0,[1,24780,7],[[4,674,0,0,0,0,0,0,[1,24781,3],[[0,40,41,0,42,675,676,0,[1,24781,0],[],[[24781,2,677]]],[0,173,41,0,174,678,0,0,[1,24782,0],[],[]],[0,115,20,0,116,679,671,0,[1,24782,2],[[0,63,20,0,64,680,0,0,[1,24783,0],[],[]]],[[24784,2,681]]]],[]],[4,990,0,0,0,0,0,0,[1,24784,3],[[0,40,41,0,42,675,676,0,[1,24784,1],[],[[24785,2,991]]],[0,173,41,0,174,678,0,0,[1,24785,0],[],[]],[0,115,20,0,116,679,671,0,[1,24786,1],[[0,63,20,0,64,992,0,0,[1,24786,1],[],[]]],[[24787,2,993]]]],[]]],[]],[0,115,20,0,116,682,66,0,[1,24788,1],[[0,118,119,0,120,683,0,0,[1,24788,1],[],[]]],[[24789,2,984]]],[0,118,119,0,120,684,66,0,[1,24789,1],[],[[24790,2,984]]],[0,118,119,0,120,685,66,0,[1,24790,1],[],[[24791,2,984]]],[0,108,20,0,109,686,687,0,[1,24791,1],[[0,40,41,0,42,688,0,0,[1,24791,1],[],[]]],[[24792,2,113],[24792,2,689]]],[0,115,20,0,116,690,691,0,[1,24793,1],[[0,63,20,0,64,691,0,0,[1,24793,1],[],[]]],[[24794,2,689]]],[0,115,20,0,116,692,66,0,[1,24795,1],[[0,63,20,0,64,66,0,0,[1,24795,0],[],[]]],[[24796,2,984]]],[0,108,20,0,109,693,694,0,[1,24796,2],[[0,40,41,0,42,695,0,0,[1,24797,0],[],[]]],[[24797,2,113],[24797,2,696]]],[0,115,20,0,116,697,691,0,[1,24798,1],[[0,63,20,0,64,698,0,0,[1,24798,1],[],[]]],[[24799,2,699]]],[0,115,20,0,116,700,66,0,[1,24800,1],[[0,118,119,0,120,701,0,0,[1,24800,1],[],[]]],[[24801,2,984]]],[0,108,20,0,109,702,703,0,[1,24802,1],[[0,40,41,0,42,704,0,0,[1,24802,1],[],[]]],[[24803,2,113],[24803,2,705]]],[0,115,20,0,116,706,707,0,[1,24804,1],[[0,63,20,0,64,707,0,0,[1,24804,0],[],[]]],[[24805,2,705]]],[0,115,20,0,116,708,66,0,[1,24805,3],[[0,63,20,0,64,66,0,0,[1,24806,1],[],[]]],[[24807,2,984]]],[0,118,119,0,120,709,66,0,[1,24808,1],[],[[24809,2,984]]],[0,161,152,0,162,66,66,0,[1,24809,1],[],[[24809,2,994]]],[0,711,24,0,712,66,50,0,[1,24812,704],[[0,59,20,0,60,713,0,0,[1,24812,1],[],[]],[0,59,20,0,60,714,0,0,[1,24813,0],[],[]],[0,40,41,0,42,715,188,0,[1,24813,1],[],[[24814,2,189]]],[0,151,152,0,153,44,191,0,[1,24814,1],[],[[24815,2,995]]],[0,193,166,0,0,717,195,0,[1,24815,685],[[0,63,20,0,64,196,197,0,[1,24816,0],[],[[24816,2,198]]],[0,199,200,0,201,202,0,0,[1,24816,2],[],[[24817,2,718]]],[0,204,200,0,205,206,195,0,[1,24818,668],[],[[24818,2,996],[25485,2,208]]],[0,19,20,0,21,209,0,0,[1,25488,2],[],[[25489,2,210]]],[0,211,20,0,212,213,0,0,[1,25492,2],[],[[25493,2,214]]],[0,215,200,0,216,217,195,0,[1,25496,3],[],[[25497,2,997],[25498,2,219],[25498,2,998]]]],[[25500,2,998]]],[0,115,20,0,116,722,50,0,[1,25501,12],[[0,723,724,0,725,195,0,0,[1,25503,10],[[0,46,20,0,47,0,50,0,[1,25504,1],[],[[25504,2,51]]],[3,726,0,0,0,0,0,0,[1,25505,6],[[4,999,0,0,0,0,0,0,[1,25506,5],[[0,46,20,0,47,728,729,0,[1,25506,1],[],[[25507,2,1000]]],[0,179,20,0,180,731,732,0,[1,25508,1],[],[[25509,2,1001]]],[0,173,41,0,174,734,0,0,[1,25510,0],[],[]]],[]]],[]],[0,19,20,0,21,50,0,0,[1,25511,1],[],[[25512,2,1002]]]],[]]],[[25513,2,1003]]],[0,63,20,0,64,240,241,0,[1,25514,0],[],[[25514,2,242]]],[0,211,20,0,212,243,0,0,[1,25515,1],[],[[25515,2,214]]]],[[25516,2,1003]]]],[[25517,2,1004],[25517,2,1005]]],[0,165,166,0,167,739,0,0,[1,25529,13],[[0,59,20,0,60,169,0,0,[1,25530,0],[],[]],[0,59,20,0,60,170,0,0,[1,25531,0],[],[]],[3,171,0,0,0,0,0,0,[1,25531,11],[[4,1006,0,0,0,0,0,0,[1,25531,1],[[0,173,41,0,174,175,0,0,[1,25532,0],[],[]]],[]],[4,1007,0,0,0,0,0,0,[1,25532,1],[[0,173,41,0,174,175,0,0,[1,25533,0],[],[]]],[]],[4,923,0,0,0,0,0,0,[1,25533,1],[[0,173,41,0,174,175,0,0,[1,25533,1],[],[]]],[]],[4,932,0,0,0,0,0,0,[1,25534,1],[[0,173,41,0,174,175,0,0,[1,25535,0],[],[]]],[]],[4,938,0,0,0,0,0,0,[1,25535,2],[[0,173,41,0,174,175,0,0,[1,25536,0],[],[]]],[]],[4,947,0,0,0,0,0,0,[1,25537,1],[[0,173,41,0,174,175,0,0,[1,25537,0],[],[]]],[]],[4,953,0,0,0,0,0,0,[1,25538,1],[[0,173,41,0,174,175,0,0,[1,25538,1],[],[]]],[]],[4,959,0,0,0,0,0,0,[1,25539,1],[[0,173,41,0,174,175,0,0,[1,25539,1],[],[]]],[]],[4,968,0,0,0,0,0,0,[1,25540,1],[[0,173,41,0,174,175,0,0,[1,25540,1],[],[]]],[]],[4,974,0,0,0,0,0,0,[1,25541,1],[[0,173,41,0,174,175,0,0,[1,25541,1],[],[]]],[]]],[]]],[]],[0,165,166,0,167,742,0,0,[1,25552,3],[[0,59,20,0,60,169,0,0,[1,25553,0],[],[]],[0,59,20,0,60,170,0,0,[1,25554,0],[],[]],[3,171,0,0,0,0,0,0,[1,25554,1],[[4,1008,0,0,0,0,0,0,[1,25554,1],[[0,173,41,0,174,175,0,0,[1,25555,0],[],[]]],[]]],[]]],[]]],[]]]; +</script> +<script type="text/javascript"> +window.output["suite"] = [1,2,3,0,[],[1,0,25693],[[4,5,6,0,[],[1,1886,23678],[[7,8,9,0,[],[1,1890,23672],[[10,11,12,0,[],[1,1893,23667],[[13,14,15,0,[],[1,1896,23662],[],[[16,0,1,0,[17,18],[1,1997,23560],[[0,19,20,0,21,22,0,0,[1,1997,2],[],[[1998,2,16]]],[0,23,24,0,25,26,27,0,[1,1999,23558],[[0,28,29,0,30,31,32,0,[1,2000,1],[],[[2000,2,33],[2001,2,34]]],[0,35,36,0,37,32,38,0,[1,2001,69],[],[[2070,2,39]]],[0,40,41,0,42,43,44,0,[1,2071,0],[],[[2071,2,45]]],[0,46,20,0,47,0,48,0,[1,2072,0],[],[[2072,2,49]]],[0,46,20,0,47,0,50,0,[1,2072,1],[],[[2073,2,51]]],[3,52,0,0,0,0,0,0,[1,2073,23483],window.sPart3,[]]],[[25556,2,1009],[25557,2,1010]]]]]],[],[1,1,1,1]]],[],[],[1,1,1,1]]],[],[],[1,1,1,1]]],[],[],[1,1,1,1]]],[],[[1,1011,1012,0,0,0,0,1013,[1,1262,624],[[0,115,20,0,116,1014,0,0,[1,1262,624],[[0,1015,1016,0,0,0,0,1017,[1,1263,622],[[0,19,20,0,21,1018,0,0,[1,1263,1],[],[[1264,2,1018]]],[0,1019,1016,0,0,0,0,0,[1,1265,618],[[0,1020,1021,0,1022,1023,0,1024,[1,1265,224],[],[]],[0,1025,1021,0,1026,1027,0,1028,[1,1490,1],[],[]],[0,1029,1021,0,1030,1031,0,1028,[1,1491,30],[],[]],[0,119,1021,0,1032,1033,1034,1028,[1,1522,26],[],[[1548,2,1035]]],[0,1036,41,0,1037,1038,1039,0,[1,1549,0],[],[[1549,2,1040]]],[0,19,20,0,21,1039,0,0,[1,1550,0],[],[[1550,2,1041]]],[0,1042,20,0,1043,1044,0,0,[1,1550,1],[],[[1551,2,1045]]],[0,19,20,0,21,1046,0,0,[1,1551,1],[],[[1551,2,1041]]],[0,1047,1021,0,1048,1049,0,1024,[1,1552,16],[],[]],[0,1025,1021,0,1026,1027,0,1028,[1,1569,1],[],[]],[0,1029,1021,0,1030,1031,0,1028,[1,1570,27],[],[]],[0,1029,1021,0,1030,1050,241,1028,[1,1598,26],[],[[1624,2,1051]]],[0,19,20,0,21,241,0,0,[1,1624,1],[],[[1625,2,1052]]],[0,119,1021,0,1032,1053,1054,1028,[1,1625,47],[],[[1671,2,1055]]],[0,1036,41,0,1037,1056,1057,0,[1,1672,0],[],[[1672,2,1058]]],[0,19,20,0,21,1057,0,0,[1,1673,0],[],[[1673,2,1059]]],[0,1042,20,0,1043,1060,0,0,[1,1673,1],[],[[1674,2,1061]]],[0,19,20,0,21,1062,0,0,[1,1674,1],[],[[1675,2,1059]]],[0,1042,20,0,1043,1063,0,0,[1,1676,2],[],[[1678,2,1064]]],[0,1065,1016,0,0,0,0,0,[1,1678,180],[[0,179,20,0,180,0,1066,0,[1,1679,1],[],[[1679,2,1067]]],[0,179,20,0,180,0,1068,0,[1,1680,0],[],[[1680,2,1069]]],[0,1070,1071,0,1072,1073,0,0,[1,1681,64],[],[[1731,2,1074]]],[0,1075,1071,0,1076,1077,1078,0,[1,1748,8],[],[[1749,2,1079],[1755,2,1080]]],[0,255,20,0,256,1078,1081,0,[1,1757,3],[],[[1759,2,419],[1760,2,1082]]],[3,1083,0,0,0,0,0,0,[1,1760,36],[[4,1084,0,0,0,0,0,0,[1,1761,4],[[0,19,20,0,21,1085,0,0,[1,1761,1],[],[[1761,2,1086]]],[0,1087,41,0,1088,1089,0,0,[1,1762,0],[],[]],[0,1087,41,0,1088,1090,0,0,[1,1763,0],[],[]],[0,19,20,0,21,1066,0,0,[1,1764,0],[],[[1764,2,1091]]],[0,19,20,0,21,1068,0,0,[1,1764,1],[],[[1765,2,1092]]]],[]],[4,1093,0,0,0,0,0,0,[1,1765,5],[[0,19,20,0,21,1085,0,0,[1,1765,1],[],[[1766,2,1094]]],[0,1087,41,0,1088,1089,0,0,[1,1766,1],[],[]],[0,1087,41,0,1088,1090,0,0,[1,1767,1],[],[]],[0,19,20,0,21,1066,0,0,[1,1768,1],[],[[1768,2,1095]]],[0,19,20,0,21,1068,0,0,[1,1769,0],[],[[1769,2,1096]]]],[]],[4,1097,0,0,0,0,0,0,[1,1770,4],[[0,19,20,0,21,1085,0,0,[1,1770,0],[],[[1770,2,1098]]],[0,1087,41,0,1088,1089,0,0,[1,1771,0],[],[]],[0,1087,41,0,1088,1090,0,0,[1,1772,0],[],[]],[0,19,20,0,21,1066,0,0,[1,1772,1],[],[[1773,2,1099]]],[0,19,20,0,21,1068,0,0,[1,1773,1],[],[[1774,2,1100]]]],[]],[4,1101,0,0,0,0,0,0,[1,1774,4],[[0,19,20,0,21,1085,0,0,[1,1774,1],[],[[1775,2,1102]]],[0,1087,41,0,1088,1089,0,0,[1,1775,1],[],[]],[0,1087,41,0,1088,1090,0,0,[1,1776,0],[],[]],[0,19,20,0,21,1066,0,0,[1,1777,0],[],[[1777,2,1103]]],[0,19,20,0,21,1068,0,0,[1,1777,1],[],[[1778,2,1104]]]],[]],[4,1105,0,0,0,0,0,0,[1,1778,5],[[0,19,20,0,21,1085,0,0,[1,1778,1],[],[[1779,2,1106]]],[0,1087,41,0,1088,1089,0,0,[1,1779,1],[],[]],[0,1087,41,0,1088,1090,0,0,[1,1780,0],[],[]],[0,19,20,0,21,1066,0,0,[1,1781,1],[],[[1781,2,1107]]],[0,19,20,0,21,1068,0,0,[1,1782,1],[],[[1783,2,1108]]]],[]],[4,1109,0,0,0,0,0,0,[1,1783,4],[[0,19,20,0,21,1085,0,0,[1,1783,1],[],[[1784,2,1110]]],[0,1087,41,0,1088,1089,0,0,[1,1784,1],[],[]],[0,1087,41,0,1088,1090,0,0,[1,1785,1],[],[]],[0,19,20,0,21,1066,0,0,[1,1786,0],[],[[1786,2,1111]]],[0,19,20,0,21,1068,0,0,[1,1787,0],[],[[1787,2,1112]]]],[]],[4,1113,0,0,0,0,0,0,[1,1788,4],[[0,19,20,0,21,1085,0,0,[1,1788,0],[],[[1788,2,1114]]],[0,1087,41,0,1088,1089,0,0,[1,1789,0],[],[]],[0,1087,41,0,1088,1090,0,0,[1,1790,0],[],[]],[0,19,20,0,21,1066,0,0,[1,1790,1],[],[[1791,2,1115]]],[0,19,20,0,21,1068,0,0,[1,1791,0],[],[[1791,2,1116]]]],[]],[4,1117,0,0,0,0,0,0,[1,1792,4],[[0,19,20,0,21,1085,0,0,[1,1792,1],[],[[1792,2,1118]]],[0,1087,41,0,1088,1089,0,0,[1,1793,0],[],[]],[0,1087,41,0,1088,1090,0,0,[1,1794,0],[],[]],[0,19,20,0,21,1066,0,0,[1,1794,1],[],[[1795,2,1119]]],[0,19,20,0,21,1068,0,0,[1,1795,1],[],[[1795,2,1120]]]],[]]],[]],[0,1121,1071,0,1122,0,0,0,[1,1796,1],[],[[1796,2,1123]]],[0,1042,20,0,1043,1124,0,0,[1,1797,2],[],[[1799,2,1125]]],[0,1042,20,0,1043,1126,0,0,[1,1799,2],[],[[1801,2,1127]]],[0,1128,1016,0,0,0,0,0,[1,1802,56],[[0,40,41,0,42,1129,1130,0,[1,1802,1],[],[[1803,2,1131]]],[0,40,41,0,42,1132,1133,0,[1,1803,1],[],[[1804,2,1134]]],[0,40,41,0,42,1135,1136,0,[1,1804,0],[],[[1804,2,1137]]],[0,40,41,0,42,1138,1139,0,[1,1805,0],[],[[1805,2,1140]]],[0,40,41,0,42,1141,1142,0,[1,1806,0],[],[[1806,2,1143]]],[0,40,41,0,42,1144,1145,0,[1,1806,1],[],[[1807,2,1146]]],[0,40,41,0,42,1147,1148,0,[1,1807,0],[],[[1807,2,1149]]],[0,40,41,0,42,1150,1151,0,[1,1808,0],[],[[1808,2,1152]]],[0,1042,20,0,1043,1153,0,0,[1,1809,1],[],[[1810,2,1154]]],[0,1042,20,0,1043,1155,0,0,[1,1811,2],[],[[1812,2,1156]]],[0,1042,20,0,1043,1157,0,0,[1,1813,2],[],[[1815,2,1158]]],[0,1042,20,0,1043,1159,0,0,[1,1815,3],[],[[1817,2,1160]]],[0,1042,20,0,1043,1161,0,0,[1,1818,2],[],[[1820,2,1162]]],[0,1042,20,0,1043,1163,0,0,[1,1820,3],[],[[1823,2,1164]]],[0,1042,20,0,1043,1165,0,0,[1,1823,2],[],[[1825,2,1166]]],[0,1042,20,0,1043,1167,0,0,[1,1825,2],[],[[1827,2,1168]]],[0,40,41,0,42,1169,1170,0,[1,1827,1],[],[[1828,2,1171]]],[0,40,41,0,42,1172,1173,0,[1,1828,1],[],[[1829,2,1174]]],[0,40,41,0,42,1175,1176,0,[1,1829,0],[],[[1829,2,1177]]],[0,40,41,0,42,1178,1179,0,[1,1830,0],[],[[1830,2,1180]]],[0,40,41,0,42,1181,1182,0,[1,1830,1],[],[[1831,2,1183]]],[0,40,41,0,42,1184,1185,0,[1,1831,1],[],[[1832,2,1186]]],[0,40,41,0,42,1187,1188,0,[1,1832,0],[],[[1832,2,1189]]],[0,40,41,0,42,1190,1191,0,[1,1833,0],[],[[1833,2,1192]]],[0,1042,20,0,1043,1193,0,0,[1,1833,3],[],[[1836,2,1194]]],[0,1042,20,0,1043,1195,0,0,[1,1836,3],[],[[1839,2,1196]]],[0,1042,20,0,1043,1197,0,0,[1,1840,2],[],[[1842,2,1198]]],[0,1042,20,0,1043,1199,0,0,[1,1842,4],[],[[1846,2,1200]]],[0,1042,20,0,1043,1201,0,0,[1,1846,3],[],[[1849,2,1202]]],[0,1042,20,0,1043,1203,0,0,[1,1850,2],[],[[1852,2,1204]]],[0,1042,20,0,1043,1205,0,0,[1,1853,2],[],[[1855,2,1206]]],[0,1042,20,0,1043,1207,0,0,[1,1856,2],[],[[1858,2,1208]]]],[]]],[]],[0,1209,1016,0,0,0,0,0,[1,1859,24],[[0,28,29,0,30,1210,1211,0,[1,1860,1],[],[[1860,2,1212],[1861,2,1213]]],[0,35,36,0,37,1211,1214,0,[1,1862,5],[],[[1867,2,1215]]],[0,40,41,0,42,1216,1217,0,[1,1867,1],[],[[1868,2,1218]]],[0,40,41,0,42,1219,99,0,[1,1868,1],[],[[1868,2,1220]]],[0,151,152,0,153,1217,1221,0,[1,1869,0],[],[[1869,2,1222]]],[0,151,152,0,153,99,99,0,[1,1870,0],[],[[1870,2,1223]]],[0,1042,20,0,1043,1224,0,0,[1,1870,2],[],[[1872,2,1225]]],[0,1042,20,0,1043,1226,0,0,[1,1873,1],[],[[1874,2,1227]]],[0,40,41,0,42,1228,1229,0,[1,1875,0],[],[[1875,2,1230]]],[0,40,41,0,42,1231,44,0,[1,1876,0],[],[[1876,2,1232]]],[0,151,152,0,153,1229,1221,0,[1,1876,1],[],[[1877,2,1233]]],[0,151,152,0,153,44,44,0,[1,1877,1],[],[[1877,2,1234]]],[0,1042,20,0,1043,1235,0,0,[1,1878,2],[],[[1880,2,1236]]],[0,1042,20,0,1043,1237,0,0,[1,1880,2],[],[[1882,2,1238]]]],[]]],[]],[0,115,20,0,116,1239,0,0,[1,1883,1],[],[]],[0,19,20,0,21,1018,0,0,[1,1884,1],[],[[1884,2,1018]]],[0,115,20,0,116,1240,0,0,[1,1885,0],[],[]]],[]]],[]]],[]],[2,1241,1012,0,0,0,0,1013,[1,25565,128],[[0,115,20,0,116,1242,0,0,[1,25566,126],[[0,1243,1016,0,0,0,0,1017,[1,25567,125],[[0,19,20,0,21,1244,0,0,[1,25567,1],[],[[25567,2,1244]]],[0,19,20,0,21,1245,0,0,[1,25568,0],[],[[25568,2,1245]]],[0,115,20,0,116,1246,0,0,[1,25569,0],[],[]],[0,115,20,0,116,1247,0,0,[1,25569,0],[],[]],[0,1248,1016,0,0,0,0,1017,[1,25570,122],[[0,1047,1021,0,1048,1249,0,1024,[1,25570,47],[],[]],[0,1025,1021,0,1026,1027,0,1028,[1,25617,1],[],[]],[0,1029,1021,0,1030,1031,0,1028,[1,25618,46],[],[]],[0,1029,1021,0,1030,1050,241,1028,[1,25664,27],[],[[25691,2,1051]]]],[]]],[]]],[]]],[]]],[1,1,1,1]]; +</script> +<script type="text/javascript"> +window.output["strings"] = []; +</script> +<script type="text/javascript"> +window.output["strings"] = window.output["strings"].concat(["*","*Gap Tsg Api","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api","*.","*Case","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case","*case","*Security","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case\\security","*case/security","*Http","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case\\security\\http","*case/security/http","*Demo","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case\\security\\http\\demo.robot","*case/security/http/demo.robot","*policy_http_allow","*admission","*basic","*Log","*BuiltIn","*<p>Logs the given message with the given level.\x3c/p>","*${TEST NAME}","*PolilcysByTemplate","*policy","*<p>根据测试数据文件,使用对应公共模板,创建策略及策略相关数据:策略信息,对象信息,引用文件信息,返回本策略创建的策略及策略相关数据,用于teamdow删除\x3c/p>","*${path}/data/security/http/demo_data.yaml, ${TEST NAME}","*${objectIds}, ${policyIds}","*Get File","*OperatingSystem","*<p>Returns the contents of a specified file.\x3c/p>","*${dataFilePath}","*${yamlData}","eNq1jDEKhDAQAL8SbOxML56NB77AbiEsZk2WMyZk18Lfi+U9wG5miplJlY9gNt7JtAOaWGn7NI/21k49LEJVAH3iA74kP80FAhanEhwW/uOskSp4VASh9aysF0TVAp5Sdk/vLkx7M77zHSyObXcDwSFQhA==","*${yamlData} = #policy:{\"opAction\":\"add\",\"refuseCode\":true,\"policyList\":{\"policyId\":\"\",\"policyName\":\"dxytest\",\"policyType\":\"tsg_security\",\"action\":\"allow\",\"userTags\":\"\",\"doBlacklist\":0,\"doLog\":1,\"policyDesc\":\"\",\"eff...","*Safe Load","*yaml","*<p>Parse the first YAML document in a stream and produce the corresponding Python object.\x3c/p>","*${loadedData}","*${loadedData} = {'policy_http_allow_data': [{'opAction': 'add', 'returnData': 1, 'policyName': 'autotestmonitor', 'policyType': 'tsg_security', 'action': 'monitor', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'poli...","*Get From Dictionary","*Collections","*<p>Returns a value from the given <code>dictionary\x3c/code> based on the given <code>key\x3c/code>.\x3c/p>","*${loadedData}, ${keyword}_data","*${policyList}","*${policyList} = [{'opAction': 'add', 'returnData': 1, 'policyName': 'autotestmonitor', 'policyType': 'tsg_security', 'action': 'monitor', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotest', 'effec...","*Create List","*<p>Returns a list containing given items.\x3c/p>","*${objectIds}","*${objectIds} = []","*${policyIds}","*${policyIds} = []","*${key} IN [ @{policyList} ]","*${key} = {'opAction': 'add', 'returnData': 1, 'policyName': 'autotestmonitor', 'policyType': 'tsg_security', 'action': 'monitor', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotest', 'effect...","*passssssssss","*CreatePolicysAndObjects","*<p>组织单个策略数据${modleFilePath}策略模板文件路径 ${policyData}从数据文件中获取的单个策略数据\x3c/p>","*${key}, ${keyword}","*${objectId}, ${policyId}","*Comment","*<p>Displays the given messages in the log file as keyword arguments.\x3c/p>","*获取模板","*${policyModeJson}对象模板取自全局变量","*Set Variable","*<p>Returns the given values which can then be assigned to a variables.\x3c/p>","*${policyModeJson}","*${policyJson}","eNpdjsEKwjAQRH8lBI9S9Cp4UHqS4ql3WdKlBGO3ZDeUEPx3k1QUPc6bHd5u0kzOmnhhmp7qqJKm+WTE0qQPSsMw6K3SHiX4qQWBDPcZrJvOsmSQ3vEKD6yjICSYq89hH+faCI83RhO8lVha+Iqco6WgwOh7GLnAkgc6OzB3t6p2lXQ0/vzRIpt/cdM0L+3RRck=","*用data数据替换模板内容生成策略新增数据","*${policyData}, condation","*${condation}","eNpTqU7Oz0tJLMnMz6tVsFWIrlYvKMovyU/Oz3HLTM1JUbdS8MvPS9VRUM9PykpNLgmpLEgFiqkXlyYVJxdlJqUWZaaow2WDS5PwKPDJLC4BSgGtSExJ8SxJzUUIZKdWlucXpTgWFSVWgnSrJCYlp6rX6ijgkDI0MjZRr40FK8BqmJ6eHgBF+UnT","*CreateCondation","*<p>解析策略条件,根据key值判断其在source、destation、filter中\x3c/p>","*${objectIds}, ${sourceList}, ${destinationList}, ${filterList}","*循环读取对象list","*${sourceList}","*${sourceList} = []","*${destinationList}","*${destinationList} = []","*${filterList}","*${filterList} = []","*${objectIdsList}","*${objectIdsList} = []","*${key} IN [ @{objectListData} ]","eNpTqc5OraxVsFWoVi8oyi/JT87PcctMzUlRt1Lwy89L1VFQz0/KSk0uCaksSAWKqReXJhUnF2UmpRZlpqjDZYNLk/Ao8MksLgFKRVerJ6akeJak5iIEgJaX5xelOBYVJVaCdKskJiWnqtfqKOCQMjQyNlGvjQUrwG6Ynp4eADHUR3E=","*${key}, protocolField","*${protocolField}","*${protocolField} = None","*CreateObjectList","*object","*<p>处理对象\x3c/p>","*${key}","*${objectIds}, ${objectList}","*针对位置进行处理","*${objectData}, protocolField","*CreateObjects","*${objectData}","*${objectData}, objList","*${objList}","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK4Ei6iqJScmp6rU6CjikDI2MTdRrY8EKiDNM0UFZRTVOLTG3wFpLQzNeG4fhMINjAfUHOcE=","*${objJson}对象模板取自全局变量","*${objModeJson}","*${objJson}","*${objJson} = {\"datafomat\": \"complate\", \"opAction\": \"add\", \"returnData\": 1, \"objectList\": [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"obj...","*${objListMode}","*${objectJson}","*${objectJson} = [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"...","*Run Keyword And Ignore Error","*<p>Runs the given keyword with the given arguments and ignores possible error.\x3c/p>","*Get From Dictionary, ${objectData}, objectType","*${return}, ${objectType}","*${objectData}, objectType","*${return} = PASS","*${objectType} = subscriberid","*Run Keyword If","*<p>Runs the given keyword with the given arguments, if <code>condition\x3c/code> is true.\x3c/p>","*\"${return}\"!=\"FAIL\" and \"${objectType}\" != \"None\", Replace String, ${objectJson}, \"objectType\": \"ip\", \"objectType\":\"${objectType}\", ELSE, Set Variable, ${objectJson}","*Replace String","*String","*<p>Replaces <code>search_for\x3c/code> in the given <code>string\x3c/code> with <code>replace_with\x3c/code>.\x3c/p>","*${objectJson}, \"objectType\": \"ip\", \"objectType\":\"${objectType}\"","*${objectJson} = [{\"objectId\": null, \"objectType\":\"subscriberid\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": ...","*Get From Dictionary, ${objectData}, objectSubType","*${return}, ${objectSubType}","*${objectData}, objectSubType","*${objectSubType} = subscriberid","eNpljbEKwjAURX/l9tIxXyB0cKigFAcj7kn7kEh5CWk6SMm/Ozlo53MOh+2WpaxZK5uOp+N5IJxOYLtF/5Kx2NXf30kq0XTgNarQ4CZpdqPAlhz0afCVL0vUasCflAdQdEoxaOEe7k8G/WB7AysFD5eD87P8PT6m8j2N","*${objectJson}, \"objectSubType\": \"endpoint\", \"objectSubType\":\"${objectSubType}\"","*${objectJson} = [{\"objectId\": null, \"objectType\":\"subscriberid\", \"objectSubType\":\"subscriberid\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc...","*Get From Dictionary, ${objectData}, objectId","*${return}, ${objectId}","*${objectData}, objectId","*Dictionary does not contain key 'objectId'.","*${return} = FAIL","*${objectId} = Dictionary does not contain key 'objectId'.","*\"${return}\"!=\"FAIL\" and \"${objectId}\" != \"None\", Replace String, ${objectJson}, \"objectId\": null, \"objectId\":${objectId}, ELSE, Set Variable, ${objectJson}","*\"${return}\"!=\"FAIL\" and \"${objectId}\" != \"None\", Replace String, ${objectJson}, \"opAction\": \"add\", \"option\": \"update\", ELSE, Set Variable, ${objectJson}","*${objectJsonList}","*${objectJsonList} = []","*Evaluate","*<p>Evaluates the given expression in Python and returns the results.\x3c/p>","*type(${objList})","*${objListType}","*${objListType} = <class 'list'>","*${obj} IN [ @{objList} ]","*${obj} = {'addItemList': [{'keywordArray': '$abce'}, {'keywordArray': '$abce1234'}]}","*Get From Dictionary, ${obj}, addItemList","*${return}, ${addItemList}","*${obj}, addItemList","*${addItemList} = [{'keywordArray': '$abce'}, {'keywordArray': '$abce1234'}]","*Dumps","*json","*<p>Serialize <code>obj\x3c/code> to a JSON formatted <code>str\x3c/code>.\x3c/p>","*${addItemList}","*${addItemList} = [{\"keywordArray\": \"$abce\"}, {\"keywordArray\": \"$abce1234\"}]","*\"${return}\"!=\"FAIL\" and \"${objectSubType}\" == \"ip_learning\", Replace String, ${addItemList}, [{\", \", ELSE, Set Variable, ${addItemList}","*\"${return}\"!=\"FAIL\" and \"${objectSubType}\" == \"ip_learning\", Replace String, ${addItemList}, \"}], \", ELSE, Set Variable, ${addItemList}","eNqtjrEKwjAURX/l+eiYLxAyOLQQyWSKixRJ2odEYhrSZJCSf7cdBKmOrgfOPRerOVLK0RfccWwOQiJoPwBW82ju1CeVTfsMVBA4B7Th6khHb/0NGZwoON0TqBQXwODtHKfRFwaoh0Ekekg7JdzDxWfnum/creIHW8xaqhpEw9Yb23t/yv5KMlCU4Kyj1cbRZvgFbhpjJw==","*${objectJson}, \"addItemList\": [null], \"addItemList\": ${addItemList}","*${objectJson}, [null], []","*Loads","*<p>Deserialize <code>s\x3c/code> (a <code>str\x3c/code>, <code>bytes\x3c/code> or <code>bytearray\x3c/code> instance containing a JSON document) to a Python object.\x3c/p>","*${objDictionary}","*${objDictionary} = [{'objectId': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectId...","*AppendListToList","*common","*<p>把${addList}逐个添加到${souceList},然后返回 ${souceList} 入参:${souceList} ${addList} 出:参${souceList}\x3c/p>","*${objectJsonList}, ${objDictionary}","*参数${objids}拼接后的list;参数${objectIds}对象ids","*如果参数${objectIds}返回多个id则逐个添加","*${objdict} IN [ @{addList} ]","*${objdict} = {'objectId': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds...","*Append To List","*<p>Adds <code>values\x3c/code> to the end of <code>list\x3c/code>.\x3c/p>","*${souceList}, ${objdict}","*${obj} = {'addItemList': [{'keywordArray': '$abce!@#$%^&*()_+'}, {'keywordArray': '$1234'}]}","*${addItemList} = [{'keywordArray': '$abce!@#$%^&*()_+'}, {'keywordArray': '$1234'}]","*${addItemList} = [{\"keywordArray\": \"$abce!@#$%^&*()_+\"}, {\"keywordArray\": \"$1234\"}]","*Create Dictionary","*<p>Creates and returns a dictionary based on the given <code>items\x3c/code>.\x3c/p>","*opAction=add, returnData=1, objectList=${objectJsonList}","eNpTqc5PykpNLnFJLEmsVbBVqFbPL3BMLsnMz1O3UlBPTElR11FQL0otKS3KAykBCRqChCC6fDKLS4BC0dVQvmcKkOeXn5cKVxFSWZAK0lRcmlScXJSZlFqUmYLQH1yahEtBZnFYYk4myDxDMM8zL7MkEyhSBVJtABZyrUjOKS2GONUAbqZfYi5QiZ6eHgDfDUcd","*createObject","*${rescode}, ${objectIds}","*参数${ipList}对象dict","*创建IP","*${ipList}, returnData","*${returnData}","*${returnData} = 1","*${ipList}","*${bodyJson}","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"subscriberid\", \"objectSubType\": \"subscriberid\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\":...","*BasePostRequestForV2","*${objectUrl}, ${bodyJson}, ${version}","*${response}","*{\"Authorization\":\"${token}\",\"Content-Type\":\"application/json\"}","*${headers}","*${headers} = {\"Authorization\":\"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&\",\"Content-Type\":\"application/json\"}","*Create Session","*RequestsLibrary","*<p>Create Session: create a HTTP session to a server\x3c/p>","*api, <a href=\"http://${host}:${port}/${apiVersion}\">http://${host}:${port}/${apiVersion}\x3c/a>, ${headers}","*Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 ","*Post Request","*<p>Send a POST request on the session object found using the given `alias`\x3c/p>","*api, ${requestUri}, data=${data}","eNrtVMtu2zAQvOcrCLWogUCKrVfkuPDBcHIwUCRF4/ZSB8WKXDtMZJLlI6ls+N9Lyk6cS6499STt7OzscAjp683tnHzD3w6NJc5wsSIj4jQf95VsOG37sn5AamOiQMPajK+lwJgseYMv79A08vmXRsa1J5rxXDuPWr5G6WzHOblHYKjNeNv7blAnkxUK2xuRnmrtvRSJ3q83/ewsy88GvZj0JpSissmVoJJ5T4G82nAVE4bLBiweOaF12j8NwFQK4S1wKQL4iKgSaPjTnuz8Ks038NLGCrNiyGhyXqZFUhR5lQCwYUKHA5ZVQEuE9BOs1eciK7vnYYP13pN5qzCIgFI+pE6z/2C88I6cMLAw3kZSTTor0YhEwFgUk0ijdVpc+n4A0wDt0/3CjfXQz+2hnjFfCdc0r4ywMAwZVxuqeY2as+P8ravfI3Dzw2cQ9NKumgluuUc2gT3ooKs/tPE331kdvGpew7oTBGetv5yFK/Oy5GrhzvNB5av6AhauAlyGDuZHM5doaBgMUwH1jm4OpzLhkHdxF8jM4vp47kdsn6VmE62hDcMfoaYY7WLyTivN8iLaBSmnfOD4Vi2gDBvco2+2cirFVDZSB5kPeVrlF9P9jv+x//PY7/ynEj6Z7g/xF+bhdak=","*${response} = <Response [200]>","*return data =${response}","*return data =<Response [200]>","*Should Be Equal As Strings","*<p>Fails if objects are unequal after converting them to strings.\x3c/p>","*${response.status_code}, 200","*Argument types are:\n<class 'int'>\n<type 'unicode'>","*To Json","*<p>Convert a string to a JSON object\x3c/p>","*${response.content}","eNrtVjFPg0AY3fsryLnW5KAIbRMHU03EGB1aXYwDHF/MKXCEO2Kr6eyicXJxdTTRX1X9G94BFUqr1tU6kXuPe3zfO76XGzBtr394oKWcRmdaVyMsEhCJzeuGpiHCfEASNDBuqnXIz9QS9VNCgHOUgb4rXIWqHXLJvHMgYp9yocCTApaE6/uOgHCekRzlx25AfYXrzRJm8RGHRKGmsTGDD2iYVYYMbOjr2FrHhqabXV3vGjpqVoWdiAoqxa+y93GVk9UcuLlOlAZBjdoGThZQMIyTwSieV+O7MPRoVMcvYHTJEn8rSdxR3jdyPSK3n9a+5+TtY2yblmlXu80cndJ227IKbtxcbQ91o2X+4GN7KR9LDeRDAAKcTIfn3ypJKqejxwKW2YnWWrrd6vRQSfNtyuMgr7HasmR2hiSQM8Zme/va24XHiUIIPfi0rsTz1qZuIwFyxmpkte8aNT1A5KZCbZ3cPdD47fZm8vL4/vw6uX+qa00LQDz1OEmorElWWr603K+1+NdUmodFxXMHkMYybWA2Rk4btVn4T5rfJE3nuwmx/5NmyaTZwEv5uGJJY//FpMme4+zuw4uLkKRFkkJjrH0A0xdKnQ==","*To JSON using : pretty_print=False ","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:21', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*\"${returnData}\" == \"1\", getObjectListIds, ${response}, ELSE, Create List","*getObjectListIds","*process_object_body","*<p>获取结果中的对象ID\x3c/p>","*Call Get-ObjectIds","*${EMPTY}","*${objectIdsTemp}","*${objectIdsTemp} = ","*Get From Dictionary, ${value}, data","*${return}, ${data}","*${value}, data","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:21', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['a...","*Return From Keyword If","*<p>Returns from the enclosing user keyword if <code>condition\x3c/code> is true.\x3c/p>","*\"${return}\"==\"FAIL\", ${objectIdsTemp}","*${object} IN [ @{value['data']['objectList']} ]","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:21', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['abce'], 'itemId':...","*${objectIds}, ${object['objectId']}","*${objectIds} = [107866, 107867]","*${response['code']}","*${rescode}","*${rescode} = 200","*${rescode}, 200","*\"${protocolField}\" != \"None\", Set Variable, ${protocolField}","*${objectsList}","*${objectsList} = []","*${obj} IN [ @{objectIds} ]","*${obj} = 107866","*objectId=${objectIds}[0], protocolField=${protocolField}","*${objectList}","*${objectList} = {'objectId': 107866, 'protocolField': None}","*${objectsList}, ${objectList}","*${obj} = 107867","eNqVkEEKgzAQRa8yhC5zBRdWow1oIk4sdBXUhmIRU9LsxLsXumuxNa7nvz/8Rw7zw1lveztmgxmvC4EoAqIw18iSpubqolE2dcJ0nKY1AeuArDPCTubffa2zkEmsuBR7uRg3kYwXLNW5qjQvkYenq5MUTIumPLI6nIorQSig8XBu3dB2o6FwmG13N70vhqdfKLACGfCMBu1MGSou3m42xf8Ed9v9+IpBiyhI1043kw2jN+4r8gLDacA5","*Get Length","*<p>Returns and logs the length of the given item as an integer.\x3c/p>","*${len}","*Length is 0","*${len} = 0","*${len} != 0, AppendListToList, ${objectIdsList}, ${objectIds}, ELSE, Set Variable, ${objectIds}","*${objectIdsList} = [107866, 107867]","eNqVkcEKgzAQRH9lCT36Cx5SjTagUUw89BRaTSFFXNH0JP57sfRSiK09Drtvl5khh3kY0WGDXWJN1y4EwhCIkqmWLKorrs5aFnUVMU3juCKAIxA/I7A33+a+m1kRUcUL8S9H5U8k4RmLdapKzXPJ92+Xp0IwLer8yKr9FC0FCYAOg+lbUAiZnVwAh3nCx9iYVS2rxOvdNO4tWSYZ8CTYZTxmUnHxCutnE5vg33F/fJV+i62ZnO0vzmK/7dMH3mznzOhjnrRH1D0=","*${sourceList}, ${objectList}","*${key} = {'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'endpoint', 'objList': [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'por...","*${protocolField} = TSG_SECURITY_SOURCE_ADDR","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBDILgLS6kampHhJW11FQL8gvAilRN9A1MzU1NlWv1VEgQrUhTHUsWD0R1hnqkm65nh4AcLw2uw==","*${objectType} = ip","*${objectJson} = [{\"objectId\": null, \"objectType\":\"ip\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"s...","*${objectSubType} = endpoint","*${objectJson} = [{\"objectId\": null, \"objectType\":\"ip\", \"objectSubType\":\"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"su...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5WzywA0upGpqZ6SFhdR0G9IL8IpETdQNfM1NTYVL1WR4EI1YYw1bG1AGvZHig=","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs8sULdSUDcyNdVDwuo6CuoF+UUlICkDXTNTU2NT9VodBSJUG8JUxwIAPXUbTQ==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVsosULJSUDIyNdVDwko6CkoF+UUlICkDXTNTU2NTpVodBSJUG8JUxwIALsUa/Q==","*${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...","*${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5WzywA0upGpqZ6MGyoi8wDYnUdBfWC/CKQBnUDXTNTU2NT9VodBWx6jfSNTJCVG8KUx9YCABxlIQ8=","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs8sULdSUDcyNdWDYUNdZB4Qq+soqBfkF5WAFBrompmaGpuq1+ooYNNrpG9kgqzcEKY8FgDHiR40","eNpTqU5MSfEsSc31ySwuqVWwVYiuVsosULJSUDIyNdWDYUNdZB4QK+koKBXkF5WAFBrompmaGpsq1eooYNNrpG9kgqzcEKY8FgC30B3k","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u535...","eNrtVE1vGjEQvedXWFupSNEu7AebJVQcEMkBqUqqhvZSosrYA3FqbNcfaQHlv9ezQODYYw89rHbnzZs3bzzyfrp/mJHP8DOA8yQ4oVZkSIIVo57RUrBNTy+egfmUGGrp2o3utIKULIWE4zeVUv/6boELG4luNLMhol6sQQffci6egHKwbrTrfHFgs/EKlO8MScds/JNWmd23d72yW1bdvJOSzpgxMD67VUzz6AnJq60wKeGwlNTDiYOpy94lAhOtVLQgtELwB4DJqBQve3KIrazY0mMaGij7A86yq7roZ/1+1WSU8kHGBjkvG8pqoMV7ujYf+mXdvg8dfPSezTYGUIQaEw+p1ew9uyj8Si449XS0S7QZt1aSIUko50lKEgs+WHUT8wgWCO1P96NwPkLfdod4ymOkgpRvDGyIRcKcqh7C4giD4kYL5TEp3Nc4NSoUbTRVwouIbJGZt9Dtbybjrltz+ZveHV23YjR4H9cxD3VV18LMw1WVNzFaXNN5aCgsMQPVycgNOIaFWIWoC4v7wxwOx3pM2yOYelifJo2TxJKyrrtnD1YbbZGS5HEz0UHympK/YBdHNjYLJi4BzvshykHCHj3zJZhWEy21RZF3VdFU15N9y/+r+CdW8RivFF6t9k/yB03Abmc=","eNrtWDGP0zAU3u9XWGZtT7bbtNdKTC1IQegO0cJCbkgTqzIksRU7iOPUmYUTEwsrIxL8qsLfwHGSJk3SuxsYODWqosrv+/ye7fc95ylLDp4tLs5BIlm0BlPg8UjRSD2+PgEAetynUBsJQr10HMp1OoSLxPOolNAYfVe5qTWdoYd89ZZ66jmTKjW+yc0acH3fVjRsIhkWL6+ECTbslXYvYHoxtsAmLLGs08oDW4jEEAekDXvK49A1seHMnr9sUl7wWGWRUDuYeR9Z1sBqJ1RCxG60plWWz2J9MIxHKYwqABN37Y5JO2KKuQH7SBuz5UKnIncLaeQLziK1P/u1numnOK6adTLmVHpm3jVw9DocOHXq63Ag6DlQ6M0ZFPXN9h24gTVfdhYBofFwZNUDnbuhWXmUBEENKvKenkMFynRUOB2fjc6qoFiyzCEkiOA+GvURAXg4xXhKhntuxCtJY6MrYlXs6YayVPcb+RQxV9zjQf2otaP3NC7UiE7ND7YQyF0JLYgVvYSufNekHJBkCR6QZEmoh8g5m97/XH+4q78D9YfvV3/kwdQfPtL6A5cFHfo0oIraJocyezeWINNv5BkPuDlD+GiAx4PJDJawnDMpAveqnl2NPPngBYmsK/6wmluVCkMarujudijtmUB2ClZUlqq/RT05VAgSuolKp25vvjLx+/On7c9vf3782n75Xve1SFY7pTaqLOe0Sfl2reIqr0WpUCari3wvjdQkQvc+dL+puTyp3a5d33NMfc/g39+7k67v6fqeru+5X/0NH0z9dX3PUfQ9k+Pqe8z/xnwXkvlHIg2rOKEnG/AXrY1teg==","eNpVjLEKAjEMQH+lg5BFSq3eIjgpQsFB1M2ptkFO7LU0dZDiv5u6eDcEkvfIm9WMlOJA+BEbUcFFj7AWWqm5gEB33uH8cg6JgIm3xTKqEG8PdOXQU+HzWsF6bwqGCciXd2qxFT+6Z49DMWnRgrrr5Ghg5HXzSz1G+5iDbVXYmt3pb44xl19OTRknpJRfJABAdg==","eNpTqU5JLEmsVbBVqFbPT8pKTS7xySwuUbdSiK5WT0xJ8SxJzUURKAqpLEgF8kx0FNSTczJT80o8CwyBfHUjU1M9JKyOJG8Ekjc2QhZyyy/KTQSZqu7s6RKEkAnILyoBG2eAKgY2wszU1NgUVRxhTlFiXnoqSFJPTw8ABQ4/Jg==","eNpTqc5PykpNLqlVsFWoVk9MSfEsSc31ySwuUbdSiAYLFIVUFqQCeSY6CurJOZmpeSWeBYZAvrqRqakeElZHkjcCyRsbIQu55RflJoJMVXf2dAlCyATkF5WAjTNAFQMbYWZqamyKKo4wpygxLz0VJJmSWQT0QWZ+HlDUAMjX09MDABf7P1c=","*${objectIds} = [107868, 107869]","*${obj} = 107868","*${objectList} = {'objectId': 107868, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}","*${obj} = 107869","*Length is 2","*${len} = 2","*${objectIdsList}, ${objectIds}","*${objdict} = 107868","*${objdict} = 107869","*${objectIdsList} = [107866, 107867, 107868, 107869]","*${key} = {'protocolField': 'TSG_SECURITY_SOURCE_LOCATION', 'objectType': 'ip', 'objectSubType': 'geo_location', 'objList': [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}...","*${protocolField} = TSG_SECURITY_SOURCE_LOCATION","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK0Ei6o456alFmYl6WuqxtToKWBQ4Z2TmJeq5lFaW5hGvCAgBDEkvdA==","*${objectSubType} = geo_location","*${objectJson} = [{\"objectId\": null, \"objectType\":\"ip\", \"objectSubType\":\"geo_location\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\",...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImoO+akpxZlJuppqcfW6ihgUeCckZmXqOdSWlmaR7yi2FoA0qYtIA==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohWd8xJTy3KTNTTUo+t1VHAosA5IzMvUc+ltLI0j3hFsQBxyCpF","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohWcsxJTy3KTNTTUoqt1VHAosA5IzMvUc+ltLI0j3hFsQBktyoJ","*${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'a...","*${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad...","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"geo_location\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\...","eNqNkk1vGjEQhu/5FdZWKhLa5WvZLKHigCAHpCqpGtpLiaLBHsCJsV1/JF0Q/732AiGHHnpi55l3Zt7x8O3+YU6+42+P1hFvuVyTIfGGj9paCU6rtlo+I3Up0WBga0d3SmJKVlzg+RuEUG9PBhk3QWhHc+MDdXyLyrtac7VBYGjsaN/4YdFk4zVK1xiShq7cRsnMHMfbdq/Vy1udRkoaY0pRu+xWUsWCpyhe77hOCcOVAIcXTUw1280IJkrKYIErGeELos5A8Nej2IdRhu/gnMYSe/0Bo9l10e1n/X5eZgBskNFBh/VKoAVC9zNs9Zd+r6h/TxNc8J7NK42xCWgdHqnu2X62ofGBXDFwMNonSo9rK8mQJMBYkpLEoPNGTkM+wm5Ex9f9yq0L6Nf+FM9YiKQX4l0RB8Yiri9VD355xmtUT0IdjUQBtz/D5rFLt45mkjseyC6qOzW6/UNFuHdtsPPe8w62dUPwzoWTLHyRFwXXC3+dd8oQLW9g4UvAVcxgfjEzRUtjYayK1Prl/WkXG1d7TOtnmDncXrZ9wepNGTY2BqpIkrFYo+HQaiaPh5T8QzDZcAmtqa+8/H9RnO11uAt+HB8pQ4FH+sEmp0pOlFAm7vMp75b5zSQ5PIbTxhPX/+i/ZkkKdA==","eNrtVUFP2zAYvedXWOZakBPaBipxQO0kilB7aOGCEHKST8WbE0exLdpNPe+yaScuXDkibb+q8Dewk5akaREcdtuOfs9+/t77nC9jgU5HwwHSkiUT1EGhSBQk6uibgxAORQTYgB4hDbuO5cQu8UiHIUiJczCiilrUnjBLEXyGUJ0xqSx4uYQNQaOoryDeZAzH5AXlLLK42yhhkZ5LyCza9Fpr+JjFeWXYI567S9q7xENus+O6Ha+JG1XhfsIUM+Jf8/2kyplqBrTQSTTnNaoHMtxCwTTNxrN0U02ewDRgSR3/ArNbkUXHWUZnhW98zCeQMbqH0VXtzn4RASF+s91ac5ynuqL9A58suXnj382xe8MSutfTM528l2X7f5Z/LUv/Q1mWGjgCDgr6uY4s7itJZiZOV3CRR4p39l1//7CLS1r2mEx5UWfVtmE+TUNu5pZY9/d2vltbimOIA3iNr8QLa6vEsQIzt2pk1XeNWjURU63s0cXPO5Y+/fi++H3//Phn8euhrjXSwaoGPAFxzUVIlfVW2/e6iaUV6mOPb/vjxVIHw6Wfjfbo1Mx3WB/cV86yw479ZpxcofghGFplGpw5egHQG45N","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item...","*${objectIds} = [107870]","*${obj} = 107870","*${objectList} = {'objectId': 107870, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}","*Length is 4","*${len} = 4","*${objdict} = 107870","*${objectIdsList} = [107866, 107867, 107868, 107869, 107870]","*${key} = {'protocolField': 'TSG_FILED_GTP_IMSI', 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'objList': [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ...","*${protocolField} = TSG_FILED_GTP_IMSI","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK0Ei6oZGxlrqsbU6CljkTEzNcMoB9QGlzS0swQyQMiAEAHvgJ/o=","*${objectType} = mobile_identity","*${objectJson} = [{\"objectId\": null, \"objectType\":\"mobile_identity\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc...","*${objectSubType} = imsi","*${objectJson} = [{\"objectId\": null, \"objectType\":\"mobile_identity\", \"objectSubType\":\"imsi\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"t...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImoGxoZa6nH1uooYJEzMTXDKQfUB5Q2t7AEM0DKYmsBYVolpg==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohWNzQy1lKPrdVRwCJnYmqGUw6oDyhtbmEJZoCUxQIAJF4iyw==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohWMjQy1lKKrdVRwCJnYmqGUw6oDyhtbmEJZoCUxQIAGGUijw==","*${objDictionary} = [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [...","*${objdict} = {'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': []...","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'aut...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"mobile_identity\", \"objectSubType\": \"imsi\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"aut...","eNp1Uk1v2kAQvedXrFypSMgO+AsDFQdEckCqkqqhvRQULd6BbGLvbvcjqUH89+4YCDm0J++892bmzYy/3T8syHf47cBY4gwXWzImTvNJT8mKl01Prp+htCFRVNPaTO6kgJBseAXnN60q+faogXHthWay0M6jltcgnW01V09AGWgz2Xd+GNDRdAvCdsakoxr7JEWkj+1NL7lO0ut+JySdaVmCstGtKCXznlC83XEVEgabilq4aJDq9roIzKQQ3gKXAsEXABXRir8exc630nxHzzQUkGRDVkaDPM6iLEuLiFI2jMphnyUFLXOg8Wdaqy9ZkrffUwfrvUeLRgEWoUr5JbU1e8/GFz6QK0YtnewDqaatlWBMAspYEJJAg3Va3HgewRih43a/cmM99Gt/iufMR8JV1bsCG2JSLdd+9Y+ceRfcNpcSD2591vDacCS4+enHx1JxG80Ft9wjO1T1W+j2T1n5o7cu+++17mjdFqLOWn+XpcvTPOdq6QZpv/DRekSXrqCwQQbSi4kbMCUmYhaixq3vTwMZnG8VtruYW6gvI79A8yY1m2pNG0SCOEm7weoQkn9wWT74L+fzPF0MR+0DZdjPKX8Q+NgSUQYVHNEP1ngpxUxWUuMMn9K4SEez4LDyN8Xbtr/yX2owBSE=","eNrtVT1PwzAU3PMrLLO2kpOmTVuJAbVIFKF2aGFBCOXjqTIkcRQ7ogUxs4CYWFgZkeBXFf4GdtKSNC20O2zxnXN+d895GTF0OBz0UcJpOEZt5LJQQCh2bzSEsMs8wBI0CKmodcDHaomHiesC5zgFPVvYClVvyCVzLsAVR5QLBZ7OYUnYntcTEKwykqP8xPapp3C9ksMsOuYQK9Q06kv4iAZpZdgghl4ljSoxkG62db1tmLhSFO6FVFApfp3uJ0VOVtO3M50w8f0S1QXurqFgEsWjabSqxg9g4tCwjF/C9IrF3l4c29PMN9aNGkZnpeN6mXtCLLNRbxbNpoEuaKtp6XPutvJ3IzTrjQ0Rtv4j3HgLZYpWs5U+/J5mg2yVZq6BPfBBQC/V4dmJOUnllOkwn6Wh4p2abtVaHZzTvEt55GeVFo1LZn/i+nJWsWWHPye8tqk4gMCB7wBzPLO2yBwLkLOqRBZ9l6hFG7GdCPXq7OGJRh/3d7O358/X99njS1lrmDiLGjANOC3z32TAHOrDOfXkaKZiWti33R1cf4cxT5zB3NRKj5JIDnZYnthn2rzNmvp0tFQh+xNIWsQJaLfoC2r/iP4=","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ...","*${objectIds} = [107871]","*${obj} = 107871","*${objectList} = {'objectId': 107871, 'protocolField': 'TSG_FILED_GTP_IMSI'}","*Length is 5","*${len} = 5","*${objdict} = 107871","*${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871]","*${key} = {'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER', 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'objList': [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789...","*${protocolField} = TSG_FILED_GTP_PHONE_NUMBER","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK0Ei6oZGxlrqsbU6CljkVICSJqZm5haWBmAWLnUwSSAEAKN0KFo=","*${objectSubType} = phone_number","*${objectJson} = [{\"objectId\": null, \"objectType\":\"mobile_identity\", \"objectSubType\":\"phone_number\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectD...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImoGxoZa6nH1uooYJFTAUqamJqZW1gagFm41MEkY2sBhKAmBg==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohWNzQy1lKPrdVRwCKnApQ0MTUzt7A0ALNwqYNJxgIAQogjKw==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohWMjQy1lKKrdVRwCKnApQ0MTUzt7A0ALNwqYNJxgIANxEi7w==","*${objDictionary} = [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjec...","*${objdict} = {'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObject...","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectNam...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"mobile_identity\", \"objectSubType\": \"phone_number\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectNam...","eNp1Uk1vGjEQvedXWNuqSGg37CcLVBwQySFSlVQN7aUg5F0PxInXdv3RdEH899oLhBza03revHnzZma/Pjwu0Df4ZUEbZDXlWzRBVtHpQApG63YgqmeoTYgkVrjR03vBIUQbyuD8xoyJ17UCQpUj6ulCWYca2oCwpuNcPQEmoPR03/uuQUWzLXDTm6CebM2T4JE6tteD9DrNruNeiHqzugZpolteC+I8efJ2R2WICGwYNnDh+FR/0PfAXHDuLFDBPfgCICPM6O8j2bpWiu7wOQ0lpPmI1NGwSPIoz7MywpiMonoUk7TEdQE4+YQb+TlPi+576mCc92jRSvAiWEq3pE5z8Kyd8AFdEWzwdB8IOeusBBMUYEKCEAUKjFX8xuU9mHjouN0vVBsH/dyf4jviIm4Ze2P4hr6oEZVb/ZoS54Ka9iLxaKszR7qdwprbpgLlCVT/cGvwkkkX3XFqqEN2nh130O2fmrnjd27jN8173HSC2Brj7rO0RVYUVC7tMItLF1VjvLQlho3PQHYxcwO69oW+yqPaVg+nwbSfcxV2O7kz0FxGf4H2VSgyUwq3HgmSNOsHq0OI/pH76JJ5MSxH47h7/Y93TvqOVrrTwPumHiXA4Ii+M0drweeCCeWn+JAlZTaeB4eVu66/cvdT/wWW3wjR","eNrtVT1PwzAQ3fMrLLMWyXE/QisxIECiCMHQwoIQysepGJI4im3RgphZQEwsrIxI8KsKfwM7aZs0LaI7bPF75+e7d865z9F+7+gQKcHiAeogn8cSYrl5ayGEfR4A1iAlpGbWkRiYJe4p3wchcAYGrnQNanboJfcuwZcHTEgDnk5gTbhB0JUQLTKaY+LEDVlgcLtWwDw5FpAatEGbc3ifRVlmmBJqr5PWOqHIbnRsu0ObuFYW7sZMMi1+k8WTMqezOXRznViFYYXaAeEvoWCYpP1Rsqgm9mDosbiKX8HomqfBVpq6o7xubNM6RmeV47p59YQ4jVZrzoTM0CntbDh0wt3V/rSFjWbL2WiT7OsXO+m/nSvY+YuJ9ZVMLDRwACFI6GY6Ij+oIJkeNNs85JmXeK1uO/X2Ni5oscNEEuYJluvVzO7QD/W44vOF/Wzs0l7iCCIPZr4VeF7a1GosQY+rClmuu0JNu4ddJc3W8eMzSz4f7sfvL19vH+On16pWT3nTHHBywWM4j5VJrBo3C4q4x0I4Z4Ge0kyOSnGrXcHlVxgL5R1NilvolUr0jIf54X1mTdptmT/HyhTyR0HTMlVg3aFvbeyM3Q==","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:25', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:25', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:25', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ...","*${objectIds} = [107872]","*${obj} = 107872","*${objectList} = {'objectId': 107872, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}","*Length is 6","*${len} = 6","*${objdict} = 107872","*${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872]","eNpTqc5OraxVsFWoVi8oyi/JT87PcctMzUlRt1JQDwl2j3fz9HF1iXcPCYh3DPBT11FQz0/KSk0uCaksSAUpSSzIQwgGlybBxKGCPpnFJUBudLV6YkqKZ0lqLkIAaG15flGKY1FRYiVIRF2rNLE8NVMvvyhdPbZWRwGLCpUMiJLk/FycSsr19PQAxsVFgw==","*${protocolField} = TSG_FILED_GTP_APN","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK0Ei6lqlieWpmXr5RenqsbU6ClhUqGRAlCTn5+JUUl5eroeiDAgBZ1sw4Q==","*${objectType} = apn","*${objectJson} = [{\"objectId\": null, \"objectType\":\"apn\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"...","*${objectSubType} = ","*${objectJson} = [{\"objectId\": null, \"objectType\":\"apn\", \"objectSubType\":\"\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"subObject...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImoa5Umlqdm6uUXpavH1uooYFGhkgFRkpyfi1NJeXm5Hoqy2FoAKmMujQ==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohW1ypNLE/N1MsvSlePrdVRwKJCJQOiJDk/F6eS8vJyPRRlsQDFqyuy","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohW0ipNLE/N1MsvSleKrdVRwKJCJQOiJDk/F6eS8vJyPRRlsQC4Yyt2","*${objDictionary} = [{'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'...","*${objdict} = {'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList':...","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'o...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"apn\", \"objectSubType\": \"\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u63...","eNp1kk1v2kAQhu/5FSu3KhKy+bIdEyoOiOSAVCVVQ3opqFp2B9hkvbvdj7qA+O/ZtSGkUnuy55l3Zt7x+OvD4xx9g18OjEXOMLFBI+Q0G3eV5IzsunL1DMTGSGGNSzO+lwJitGYczu+Yc1n91ECZ9kIznmvnqWUlSGdrzdUWMAVtxofWkwGdTDYgbGuEWmpnt1IkuhlvuoPOIO30WjFqTQgBZZM7QST1noJ4s2cqRhTWHFu4aEKq3W0HMJVCeAtMigBfAFSCOfvdiJ0fpdken9NQwCAbUpJc5/0sybK0SDCmw4QMe3RQYJID7n/CpfqcDfL6eZpgvfdkvlMQmmCl/Eeqe3afjW98RFcUWzw+RFJNaivRCEWY0ihGkQbrtLj1+QD7ATVf9wsz1qMfh1M8oz4SjvM3RRhYd1LiUvboVmceIDPf/bqhtF9HM8Es82QfFL0a3f0h3B+5dtV763OPy6a5s9bfYeHyNM+ZWrjrtFf4aHWDF67AsA4ZSC8GbsGQUBiqAjVu9XBawIR9lnG9+8xCeVnxBXaV1HSiNd4FErUdroB1pN5Ey2OM/qH4uG0kRJb/lVRV1flLFoY75a8B7+cHSoFDQ9/5ZESKqeRSh4U+pP0ivZlGx6U/aDhs/R+/AiiTB1Q=","eNrtlDFPwkAYhvf+iuZcC2lLKUriYNBEjIEBdDEMR/sFT9te07umoGF20Ti5uDqa6K9C/4Z3LdhSENl1vPe9e/t9z12/PlVPet2OGjMSjNSm6tCAQ8D3bxVVRQ51AQnR1HVNrn02kkvUix0HGEOp6GKOpSpPiCUdXoHDTwnjUryYy8LArtvm4K86wiPsHHvElbqh5TINzxhEUrXM+pLeJ35aGTJ106jodkU3VcNqGkbTtJFWDG4HhBMRfpPu14ueqKaDs5wg9rySdQjMWWPBOIz6k3A1jR3DeEiCsn4Nk4RG7kEU4UnWN4pxAqRKIwFzUPpoO2Og6w3Ltq1iyynWhd3YbdTm3lT7uyAvM5IO9X8hWf8nuZlkkiTVrWnaW9HMM5ALHnBopzks+2JuEjFyWtSjKVS0UzMatb0Wym12SFjoZZUWGxfO0djxxOCiyx3+THjtpSIf/CF8A8z1rLUFc8RBDK6SWey7ZC2uEeGYy6OzhycSftzfzd6eP1/fZ48v5axFAQiHQcHb9K7qxX1r3iVi8bA7L3SFexyKyQ3LI3mgzK9Okb+DkiZko17YPIpBmapfD1OEEQ==","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:26', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:26', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['u...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:26', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['uawei.org'], 'ite...","*${objectIds} = [107873]","*${obj} = 107873","*${objectList} = {'objectId': 107873, 'protocolField': 'TSG_FILED_GTP_APN'}","*Length is 7","*${len} = 7","*${objdict} = 107873","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLcwM9NRANPmUNoCSltCaHMDKG0IpY2gtHEsAJXSE3E=","*${key} = {'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'ip_learning', 'objList': [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', ...","*${objList} = [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}]","*${objectSubType} = ip_learning","*${objectJson} = [{\"objectId\": null, \"objectType\":\"ip\", \"objectSubType\":\"ip_learning\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", ...","*${obj} = {'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}","*${addItemList} = [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]","*${addItemList} = [{\"fromFqdns\": [\"$www.baidu.com\", \"*jd.com\"], \"fromProtocol\": \"HTTP,SSL\", \"learningDepth\": \"2\", \"agingTime\": \"12\", \"voteClientNum\": \"10\", \"learnedIpLimit\": \"1000\"}]","*${addItemList}, [{\", \"","*${addItemList} = \"fromFqdns\": [\"$www.baidu.com\", \"*jd.com\"], \"fromProtocol\": \"HTTP,SSL\", \"learningDepth\": \"2\", \"agingTime\": \"12\", \"voteClientNum\": \"10\", \"learnedIpLimit\": \"1000\"}]","*${addItemList}, \"}], \"","*${addItemList} = \"fromFqdns\": [\"$www.baidu.com\", \"*jd.com\"], \"fromProtocol\": \"HTTP,SSL\", \"learningDepth\": \"2\", \"agingTime\": \"12\", \"voteClientNum\": \"10\", \"learnedIpLimit\": \"1000\"","*${objectJson}, \"addItemList\": [null], \"addItemList\": [], ${addItemList}","*${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad...","*${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'add...","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单i...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"ip_learning\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u...","eNpdk11v2jAUhu/7K6JsGlKVQCCktExcVNBpSIhWg+1mVJWxD9TMsV1/lFLU/z4fU8q0q9jPec+3c3c7myc/4MmDdYm3XK6TfuINH7S0EpzuWmq5AeqyRBNDajuYKglZsuICjmcihNo+GGDcBKEdzI0P1PEalHdRc/YIhIGxg33jpwWTX69BukY/aeide1QyN4f0ttVpdspm0ciSxjWloF1+I6lioSYUr1+5zhIGK0EcnDRoOm+dIxgqKUMJXEmEfwB0TgR/Poh9SGX4KzmaoQed7iWj+UXV7ubdbtnLCWGXOb0sWKdHaAWk/YXU+mu3U8XvewYXas/nOw0YhGgdhhRjtjY2BH5LzhhxZLBPlb6OpaT9JCWMpVmSGnDeyFGwI2wjOkx3wq0L6Pf+/T5m4Sa9EB8KTIhOXJ+8Zn55wg8CiJFhVGjn9ldoHIO0420sueOBvKK4iOjmhYqw7lhf8RFySuoYj3jnwkYWviqriuuFvyiLXrgtr8jC9wis0ALlqZYRWIqO6IXU+uXteysWO7vP4hTGDupjs4hWRtXfnpiMmvTzdrttLglnvklVjWHONywej9o7o5yiSmCq7/P5XTabTVB3bH4UHsQjGjtIyTqgOT+01I7oWTkYCh52OPV1xMWHP7CxnvCauwMvosXrsE/4v24GAg70n/44VXKohDLo/6ls98qrYfp2H54EPo34J/wFdkMXFQ==","eNp1kkFv0zAUx+/7FJbhhLrJScsKlTi1IIKqblIyLtOEHPtRPNlxiG3KQD1zAXHahStHpPGpun0NbLfNQhCnxP/fe37P7/0LjV7lJwvkjKiWaIKYrixU9tnnA4Qw0xywF1NCBuGszDIcce4YA2NwFDm1NKghwx91eQnMzoWxQTzfyR5QzjML6p5cDFq09MULoWKxJG11DhIshKyMm37S20arF+95tQP44Wq1Oiqp4O6IaYUHCD+65PG3l3TaaKuZlvEpL4vidJDnc9yGCD+CqZa6ifzBMBkPn0472MyEqSW9CrhyUnbI849M+kHqKjDSAVklrKBSfII+ee1VHp/dihJoUwHP6rlQIs4qIYT8jf28ZlDbd7HH9L47BaqEpriqY6Fhq2+3MgPDYoYFv4QezLZtkPGT8aiHFnS7GkydDambb9eivv36ZXPz4+7X7833n/27clfue8CifrNvuR/Wiemgeu8EnJI0OSTHhyRFyWiSJJP0uBt3ZiAuaZQ+blXjypPdc/5xjKu9V+F/JvygLUyl8OZfOLUdRURrdOG/6+h1szO+p7ZxcLBGfwBmKt4u","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...","*${data} = {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusio...","*${object} = {'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusion': 0, 'isInitia...","*${objectIds} = [107874]","*${obj} = 107874","*${objectList} = {'objectId': 107874, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}","*Length is 8","*${len} = 8","*${objdict} = 107874","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLcwM9NRANPmUNoCSltCaHMDKG0IpY2gtDGUNokFADaEFPg=","*${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_ADDR', 'objList': [{'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}]}","*${protocolField} = TSG_SECURITY_DESTINATION_ADDR","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBDILgLS6kampHgKbqOsoqBfkF4GUqJuZmhqbqtfqKBCh1lC9NrY2FgCFpR7o","*Dictionary does not contain key 'objectType'.","*${objectType} = Dictionary does not contain key 'objectType'.","*Dictionary does not contain key 'objectSubType'.","*${objectSubType} = Dictionary does not contain key 'objectSubType'.","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5WzywA0upGpqZ6CGyirqOgXpBfBFKibmZqamyqXqujQIRaQ/Xa2FoAic4clA==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs8sULdSUDcyNdVDYBN1HQX1gvyiEpCUmampsal6rY4CEWoN1WtjAW/uGbk=","eNpTqU5MSfEsSc31ySwuqVWwVYiuVsosULJSUDIyNdVDYBMlHQWlgvyiEpCUmampsalSrY4CEWoNlWpjAWNGGWk=","eNqNUk1vGjEQvedXWFupSNEusF8soeKASA5IVVI1JJdSVcYeiFNju/5oC4j/Xs8CIcceVrvz5s28NzP75eFxTr7CrwDOk+CEWpMRCVaMe0ZLwbY9vXwF5lNiqKUbN77XClKyEhLO31RK/eeHBS5sJLrx3IaIerEBHXzLuXoBysG68b7z5MBmkzUo3xmRjtn6F60ye5R3vaJblN1+JyWdCWNgfHanmObRE5LXO2FSwmElqYcLB1PXvWsEplqpaEFoheBPAJNRKX4fySFKWbGj5zQ0UFRDzrJBnVdZVZVNRikfZmzY50VDWQ00/0g35lNV1O37pOCj92y+NYBNqDFxSW3P3quLjQ/kilNPx/tEm0lrJRmRhHKepCSx4INVtzGPYI7QcbufhfMR+rY/xTMeIxWkfGOgIBYJc6l6DMszDIobLZTHpHDPcWrskLfRTAkvIrJDZr+F7v4yGW/dmuu/9bunm7YZDd7HcyxCXda1MIswKPtNjJY3dBEaCivMQHkxcguOYSFWIerC8uE0h8OxvqftCmYeNpdJ4ySxpKjr7uWpsNpoi5RkUEf95JCS/+DmyQFFgonLh/c6iHKQcETf+RFMq6mW2mL5hzJvyptpbBLvh3dsf9t/1qH4Mw==","eNrlVkFv0zAUvvdXWObaTbHbNFslTi1IQWhDtHAhO6SJVRmS2IodxJh65sLEiQvXHSfBryr8DWwnadLEa6+gKcrB7/vee35+30u8ZODF4vICFIJmazAFEcskyeTTmwEAMGIxgcqIHWeo16lY6yVcFFFEhIDGGIcy1FbtoZZs9Z5E8iUVUhvfVWYFhHHsS5L2kRLLl9fcJBsPG3uUULUZnyOTFrvuafOOoYWIDXGEbdhzlqehyQ1n/vx1n/KK5bLMNHHdkWsn4GOEVpo8zNakzYpprg6HskzDTgug/FiFVPgZlTRM6GfS8xYL1Y4qLCRZzBnN5L73W+UZaxy1zaohcyIi43cDArWPAE6D7j4CCIYB5Ko4g5riA7iBnUh+Gd9xvPFk4nXAizA1+86KJOlAdef1KbSgUkl1UO/Mc9sgX9IyIMQORifO5MTBAI2nCE3x+V4Y/kaQ3CgLtyPocuy95DmTLGJJ95hVmI8kr9XonJoHWgjY0kzXRmxpJQ3Fhz6lkaRjBx+QY0Popqg4m+G/PH/o0Oyhxzp36NjMnf03M4ce3byBq5oOY5IQSXzTPVH+CxuQqj/wjCXMnB58MkLe6HwGG1jMqeBJeN3tq0KefYqSQnRV/rCCreqEKUlXZPc1aOylNHaqlUQ0Sj+gmwqqpQjDQmrX7e13yn9//bL9+ePP/a/tt7turEWx2mm0N1kVxybiwyr12jyLRqEoVpdVLb3WFFzddcj+JeZqUHV3oL+pAxOhvBwpWOYFGWzAXyEURK0=","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPor...","eNpTqU5JLEmsVbBVqFbPT8pKTS7xySwuUbdSiK5WT0xJ8SxJzUURKAqpLEgF8kx0FNSTczJT80o8CwyBfHUjU1M9BDZRR5I3AskbGyELueUX5SaCTFV39nQJQsgE5BeVgI0zMzU1NkUVN8IhjjCrKDEvPVVPTw8A8Kg/Yw==","eNpTqc5PykpNLqlVsFWoVk9MSfEsSc31ySwuUbdSiAYLFIVUFqQCeSY6CurJOZmpeSWeBYZAvrqRqakeApuoI8kbgeSNjZCF3PKLchNBpqo7e7oEIWQC8otKwMaZmZoam6KKG+EQR5hVlJiXngqSTMksAvoiMz8PKKqnpwcA/VY/iw==","*${objectIds} = [107875]","*${obj} = 107875","*${objectList} = {'objectId': 107875, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}","*Length is 9","*${len} = 9","*${objdict} = 107875","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLcwM9NRANPmUNoCSltCaHMDKG0IpY2gtDGUNoHSprEA42EWgA==","*${destinationList}, ${objectList}","*${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION', 'objectSubType': 'geo_location', 'objList': [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}]}","*${protocolField} = TSG_SECURITY_DESTINATION_LOCATION","*${objList} = [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}]","*${objectJson} = [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\":\"geo_location\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\"...","*${obj} = {'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}","*${addItemList} = [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]","*${addItemList} = [{\"keywordArray\": [\"Algeria.*\"]}, {\"keywordArray\": [\"China.Duyun.*\"]}]","eNptUk1vGjEQvedXWFupSGiXr2WzhIoDghyQqqRqaC8FRcN6ACfGdv3RdEH899oGQg49refNmzdvZvbb49OcfMffDo0lzjCxIUPiNBu1leSsqtty9YKVTYkCDTszepACU7JmHC9v4Fy+PWukTHuiGc2186hlO5TORs7NFoGiNqND44dBnY03KGxjSBqqtlspMn1qb9q9Vi9vdRopaYyrCpXN7kUlqfcUyJs9UymhuOZg8coJqWa7GYCJFMJbYFIE8BVRZcDZnxPZ+Vaa7eGSxhJ7/QGtstui28/6/bzMAOggqwYd2iuhKhC6n2GnvvR7RfyeO1jvPZvXCoMIKOWXFDXbL8YLH8kNBQujQyLVOFpJhiQBSpOUJBqt02Lq8wHsBui03a/MWA/9OpzjGfWRcJy/M0LDUMTUterJrS7wBuUzlycjgcDMTz95UOnGaCaYZR7ZB3YnQvd/K+7vHQ123jUfYBcFwVnrT7JwRV4UTC3cbd4pfbS6g4UrAdchg/nVzBRNFQpDVUCNWz2eZzFhtGUa1zCzuLtO+4r1m9R0rDXUAUnGfIOaQauZLI8p+Q9hsmUCWlNXOxFJQdYpv3L8qBxQihxP6AcHrJJiIrnUweqnvFvmd5PkuPRXC9eLP+s/gnL+BQ==","eNrlVLFO6zAU3fMVllkLckJpaCUG1CJRhGBoYUEIOclVMThxFNuifU/Mb3mIiYWVEQm+qvAb2ElL0rQIdkafYx/fc66vhwIdDI6PkJYsGaEOCkWiIFE7fx2EcCgiwAb0CGnYdSxHdokHOgxBSpyDEVXUovaEWYrgCkJ1yKSy4NkMNgSNor6CeJkxHJOnlLPI4m6jhEV6IiGzaNPbWsCHLM4rwx7x3HXSWicecpsd1+14bdyoCvcTppgR/5PvJ1XOVHNEC51Ec16jeiDDFRSM02w4SZfV5D6MA5bU8WuY3Igs2s0yOil8410+gozRDYzOa3f2iwgI8ZutVrvqOE91TvvbfmvG3TZ+b47dS5bQjZ6e6OSbLH3yoyxLDRwBBwX9XEcW95UkM1PSFVzkkeK1TdffbHdxScsekykv6qzaNszeOORm1sSiv6/zXdlSHEMcwGd8JV5YmyeOFZhZq5FV3zVq3kRMtbJHp3cPLH37/2/68vj+/Dq9f6prDXQwrwGPQFxwEVJlvdX2fW5iaYX62eNb/Xix1MHxzM9Se3Rq/iRY/GzOnVmHHTszTq5QfGKGVpkG5xZ9AFpMQcs=","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:29', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:29', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:29', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item...","*${objectIds} = [107876]","*${obj} = 107876","*${objectList} = {'objectId': 107876, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}","*Length is 10","*${len} = 10","*${objdict} = 107876","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLcwM9NRANPmUNoCSltCaHMDKG0IpY2gtDGUNoHSplDaLBYAnI8YCQ==","*${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_ADDR', 'objectSubType': 'ip_learning', 'objList': [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth'...","*${objectJson} = [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\":\"ip_learning\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\",...","eNp1kkFv0zAUx+/7FJbhhLrJSQdllXZqQQRV3aSEXdCEHPtRPNlxiG3KQD1zAe20C9cdJ41PVfga2G6bZUGcEv9/7/k9v/cvNHqdn8yRM6JaoDFiurJQ2eOvewhhpjlgL6aEDMJZmUU44twxBsbgKHJqaVBDhj/q8gKYnQljg/h2K3tAOc8sqHtyPmjRwhcvhIrFkrTVOUiwELIybvpJ7xutXn7k1Rbgx8vl8qCkgrsDphUeIPzkgsffXtJpo61mWsanvCqK00Gez3AbIvwIJlrqJvJHw2Q0PJp0sJkKU0t6GXDlpOyQF5+Z9IPUVWCkA7JKWEGl+AJ9cuZVHp/dihJoUwHP6plQIs4qIYQ8xH5eU6jth9hjet+dAlVCU1zWsdCw1TdbmYJhMcOCX0IPZps2yOj5aNRDc7pZDabOhtT1j2tR//7+bX3388/tr/XVTf+u3JW7HrCo3+1a7od1Yjqo3jkBpyRN9smzfZKi5HCcJOP0qBv3xkBc0mH6tFWNK0+2z/nHMa72XoX/mfCTtjCRwpt/7tRmFBGt0Ln/rqLXzdb4ntrGwd4K/QVrXt40","*${objectIds} = [107877]","*${obj} = 107877","*${objectList} = {'objectId': 107877, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}","*Length is 11","*${len} = 11","*${objdict} = 107877","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLcwM9NRANPmUNoCSltCaHMDKG0IpY2gtDGUNoHSplAaap65eSwAYgcZkw==","*${key} = {'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT', 'objectType': 'keywords', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['dongxiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keyw...","*${protocolField} = TSG_FIELD_HTTP_RES_CONTENT","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK0Ei6in5eekVmYn5lYl5DlrqsbU6ClgUaTkYmhnrJefn4lIAlsclqVKSWlyCZAJEGWGngbUB3aSnpwcA7/hHsg==","*${objectType} = keywords","*${objectJson} = [{\"objectId\": null, \"objectType\":\"keywords\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"tes...","*${objectJson} = [{\"objectId\": null, \"objectType\":\"keywords\", \"objectSubType\":\"\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"subO...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImop+TnpVdkJuZXJuY5aKnH1uooYFGk5WBoZqyXnJ+LSwFYHpekSklqcQmSCbG1AGYxNbw=","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohWT8nPS6/ITMyvTMxz0FKPrdVRwKJIy8HQzFgvOT8XlwKwPC5JlZLU4hIkE2IBuAIy4Q==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohWSsnPS6/ITMyvTMxz0FKKrdVRwKJIy8HQzFgvOT8XlwKwPC5JlZLU4hIkE2IBosIykQ==","*${objDictionary} = [{'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItem...","*${objdict} = {'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemL...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImol6QWlzhoqcfW6ihgkdVyAMnrJefn4lIBUYBLVgVsvKGZMdSI2FoAf1g1Jw==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohWL0ktLnHQUo+t1VHAIqvlAJLXS87PxaUCogCXrArYeEMzY6gRsQDdlDJM","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohWKkktLnHQUoqt1VHAIqvlAJLXS87PxaUCogCXrArYeEMzY6gRsQDIYzH8","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"keywords\", \"objectSubType\": \"\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355i...","eNrtVE1vGjEQvedXWJuqSGgXWJZlCRVSEMkBKUqqhvRSUGXsgTjZtV1/NFlQ/nttA4FD8wMq9bSe997MvPHI+/Xufoa+wS8L2iCrGV+jIbKKjdpSlIzUbbF8AmJiJLHClR7dCg4xWrESDmdcluLlpwLKlBPq0UxZhxpWgbAmaM4eAVNQerRtPGhQyXgN3DSGqCFr8yh4onbtdbvb6matTiNGjTEhIE1yzYmgzpMXrzdMxojCqsQGjhpPNdtND0wE584CE9yDzwAywSX7vRNb10qxDT7QUEC3N6Ak6edpL+n1siLBmA4SMujQboFJDjj9jCv5pdfNw3ffwTjvyayW4ItgKd0lhZrtJ+0Kv6Ezig0ebSMhx8FKNEQRpjSKUaTAWMWvHO/B1EO7271h2jjox3YfT6mLuC3Ld4Vv6JOeoX4Riupj7r1dHkgPMv3dzezz0xBNOTPMIRuv6ATo+pWUbtPBWue9zi2uQhFsjXHLmNs8y3Mm57afdQoXLS/w3BYYVp6B7GjgCjTxiT7Lo9ou7/ZTaD/UIg4XMDVQHefczzFWCtceiajg61eGRY35ZTNavMXoL6LmZdrPWkRUHwkC/xH5yTs8qeCNWenWBafePEqhhB16MgMjgk9EKZQf9jxLi+xiEoVO/5f2jy1t4Z6pf67h7/QHmsOcCw==","eNrtl0FP2zAUx+/9FJa5lslJStNWQgKVSes0wYGOC+LgJk+VIYmj2NHaTT3vsokTF647IsGnKnwNHKchaVpoBJxGTpH/f/vlvZ8dP2XI0dfjo0MUCxaMUQ85PJAQyN1fDYSww13ASjQJaSZjX4yTIT6OHQeEwFp0qaSJmqxQQz46B0d+Y0Im4ulCVgZ13YEEf9VRHhMn1GNuohvNXObhdwFRorbMnSV9yHydGTaJaWyT9jYxkdHqGUbPIrhZDDwImGQq+E89nxQ9lc0hTeMEseeVrAMQzhoLJmE0nIar0cQXmIxYUNYvYPqDR+5+FNFpWjd2eTCeMMqnNNjD6Kz03kGKgRC71baXaGiymW137M7CmzU/Lss9o219cri/gaNZc6zAcQNEq4b4MkQJQlY8kK1KLPMY2AUPJAx0HJG+LzeZurb73OMaKd6yDNvq9nFuiwMmQi/Ns1i2cj5PHE9d/ny5vuf5rt1S7IM/gid8uZ6WlhHXgHDJLNZdsrJNxDSWydL53ysW3v/5Pb+9fri5m1/+K8fKEsg2RxQmVDta648mFvHoaJHtCvw4VC0QlnvbWaP0LdTt7zXtb+elr6Rb3zhV21+75vj29mfXEN+t/XUqsfxg7a/7v7U//Zzpv0Sx+GVUtoxiaMzQI1xfebM=","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['d...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['dongxiaoyan@'], '...","*${objectIds} = [107878, 107879]","*${obj} = 107878","*${objectList} = {'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}","*${obj} = 107879","*OrangeFilter","*<p>filer对象处理,把一个filter的list处理为一个filter\x3c/p>","*${list}","*${list} = [{'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]","*filter=${list}","*${filter}","*${filter} = {'filter': [{'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}","*${objectList} = {'filter': [{'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}","*Length is 12","*${len} = 12","*${objdict} = 107878","*${objdict} = 107879","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLcwM9NRANPmUNoCSltCaHMDKG0IpY2gtDGUNoHSplAaap451DxzqHnmlrEAEfUcqg==","*${filterList}, ${objectList}","*${key} = {'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT', 'objectType': 'keywords', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['xiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keywordA...","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK0Ei6hWZifmViXkOWuqxtToKWBRoORiaGesl5+fiUgCWxyWpUpJaXIJkAkQZYWeBtUHdpKenBwC3a0dO","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImoV2Qm5lcm5jloqcfW6ihgUaDlYGhmrJecn4tLAVgel6RKSWpxCZIJsbUAaZo0FA==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohWr8hMzK9MzHPQUo+t1VHAokDLwdDMWC85PxeXArA8LkmVktTiEiQTYgHGizE5","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohWqshMzK9MzHPQUoqt1VHAokDLwdDMWC85PxeXArA8LkmVktTiEiQTYgGxhzDp","eNrtVE1vGjEQvedXWJuqSGgXWJZlCRVSEMkBKUqqhvRSUGXsgTjZtV1/NFlQ/nttA4FD8wMq9bSe997MvPHI+/Xufoa+wS8L2iCrGV+jIbKKjdpSlIzUbbF8AmJiJLHClR7dCg4xWrESDmdcluLlpwLKlBPq0UxZhxpWgbAmaM4eAVNQerRtPGhQyXgN3DSGqCFr8yh4onbtdbvb6matTiNGjTEhIE1yzYmgzpMXrzdMxojCqsQGjhpPNdtND0wE584CE9yDzwAywSX7vRNb10qxDT7QUEC3N6Ak6edpL+n1siLBmA4SMujQboFJDjj9jCv5pdfNw3ffwTjvyayW4ItgKd0lhZrtJ+0Kv6Ezig0ebSMhx8FKNEQRpjSKUaTAWMWvHO/B1EO7271h2jjox3YfT6mLuC3Ld4Vv6JOeoX4Riupj7r1dHkgPMv3dzezz0xBNOTPMIRuv6ATo+pWUbtPBWue9zi2uQhFsjXHLmNs8y3Mm57afdQoXLS/w3BYYVp6B7GjgCjTxiT7Lo9ou7/ZTaD/UIg4XMDVQHefczzFWCtceiV4ZFjXml81o8Rajvwial2k/axFRfSQI/EfkJ+/upII3ZaVbFZz68iiFEnboiX9GBJ+IUig/6HmWFtnFJAqd/i/sH1rYwj1P/0zDX+kPi02Yuw==","eNrtl89P2zAUx+/9KyxzLZOd9BeVkEAwaZ0mOFC4IA5u8oTMkjiKHa3d1PMum3bahStHJPirCv8GjtOQNC0lE5zWnCJ/v/bLex87fspQoM8nx0coljy4RH3kiEBBoHZ/NBDCjnABa9EipJmMfXmZDPFJ7DggJTaiyxRL1GSFHorRFTjqC5cqEc/nsjaY6w4U+MuO9rg8Yx53E502c1mEpxKiRG1Z7QV9yH2TGbaIRbdJZ5tYiLb6lPZtgpvFwIOAK66DfzfzSdHT2RyxNE4Qe17JOgTprLBgHEbDSbgcTX6C8YgHZf0rTL6JyN2PIjZJ68ZjzsSEBXsYXZTeOUgRENJtdbo7xYoN1czu9npk7k2bm8txj3bsD47w13PskZpjBY6vQKQ1xPUQFUhV8UBalVjmMbALHigYmDgyfV9ucn1lHwhPGKR4y6Zde+cA57Y85DL00jyLZWvn49jx9MUvFut7me/KLcU++CN4xpfraWkZcQMIl8xi3SUr20TMYpUsnf3+y8OHXz9nd9ePt/ezPzflWFkC2ebIwoRqR2v10cQyHh3Ps12CH4e6/cFiX7tolL6FuvX9Y+vr2eu+EFrfNlVbX6vm+PbW164hvlvr61RiuWGtj/5vrc88p+bvUM5/FbWtohgaU/QEsFF2Hg==","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['x...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['xiaoyan@'], 'item...","*${objectIds} = [107880, 107881]","*${obj} = 107880","*${objectList} = {'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}","*${obj} = 107881","*${list} = [{'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]","*${filter} = {'filter': [{'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}","*${objectList} = {'filter': [{'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}","*Length is 14","*${len} = 14","*${objdict} = 107880","*${objdict} = 107881","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLcwM9NRANPmUNoCSltCaHMDKG0IpY2gtDGUNoHSplAaap451DxzqHnmUPMsoOZZGMYCAPLyH7M=","eNpTqc5PykpNLvFMKa5VsFWINjQwtzAz01EA0+ZQ2gJKW0JocwMobQiljaC0MZQ2gdKmUBpqnjnUPHOoeeZQ8yyg5lkYxgIACeEeFw==","eNpTqS7OLy1KTvXJLC6pVbBViK5Wz0/KSk0u8UxRt1IwNDC3MDPTUVAvKMovyU/Oz3HLTM0BSfjl56XW6ihgKrbAolg9JNg9PtjVOTTIMyQyPtg/NMjZNd7RxSVIHZsR5gbEGuHj7+wY4unvh80YPT09ANhVQ5I=","eNpTqU5JLS7JzEssyczP88ksLqlVsFWIrlbPT8pKTS7xTFG3UjA0MLcwN9VRUC8oyi/JT87PcctMzQFJqIcEu8cHuzqHBnmGRMa7uAaHePo5hnj6+8U7urgEqdfqKGCaY0aSOT7+zmAGdrPMCZmlp6cHAEFZRT8=","eNpTqU7LzClJLfLJLC6pVbBViK5WhwioW4HY+UlZqcklnilAnqGBuYW5hY6CekFRfkl+cn6OW2ZqDkhCPSTYPd7N09XHJd4jJCQgPsg1ON7Z3y/E1S9EvTa2VkcBr5EWBqQbGQsA8rk50Q==","eNpTqS7OLy1KTvXJLC6pVbBViK5Wyk/KSk0u8UxRslIwNDC3MDPTUVAqKMovyU/Oz3HLTM0BSeSV5uTU6ihgKrbAolgpJNg9PtjVOTTIMyQyPtg/NMjZNd7RxSVICZsR5gbEGuHj7+wY4unvh80YPT09AM58Q2M=","eNpTqU5JLS7JzEssyczP88ksLqlVsFWIrlbKT8pKTS7xTFGyUjA0MLcwN9VRUCooyi/JT87PcctMzQFJKIUEu8cHuzqHBnmGRMa7uAaHePo5hnj6+8U7urgEKdXqKGCaY0aSOT7+zmAGdrPMCZmlp6cHAB4OROo=","eNpTqU7LzClJLfLJLC6pVbBViK5WgggoWYHY+UlZqcklnilAnqGBuYW5hY6CUkFRfkl+cn6OW2ZqDkhCKSTYPd7N09XHJd4jJCQgPsg1ON7Z3y/E1S9EqTa2VkcBr5EWBqQbGQsA1e85gQ==","*${policyJson}, \"source\": null, \"source\":${sourceList}","*${policyJson}, \"destination\": null, \"destination\":${destinationList}","*${policyJson}, \"filterList\": null, \"filterList\":${filterList}","*处理策略数据:, \"opAction\": \"add\", \"returnData\": 1, \"policyName\": \"autotest\", \"policyType\": \"tsg_security\", \"action\": \"allow\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"autotest\", \"effectiveRange\":, \"userRegion\":, \"appIdObjects\":, \"appSelectorObjects\":, \"isValid\": 1, \"scheduleId\":","*Get From Dictionary, ${policyData}, opAction","*${return}, ${opAction}","*${policyData}, opAction","*${opAction} = add","*\"${return}\"!=\"FAIL\" and \"${opAction}\" != \"${EMPTY}\", Replace String, ${policyJson}, \"opAction\": \"add\", \"opAction\": \"${opAction}\", ELSE, Set Variable, ${policyJson}","*${policyJson}, \"opAction\": \"add\", \"opAction\": \"${opAction}\"","*Get From Dictionary, ${policyData}, returnData","*${return}, ${returnData}","*${policyData}, returnData","*\"${return}\"!=\"FAIL\" and \"${returnData}\" != \"${EMPTY}\", Replace String, ${policyJson}, \"returnData\": 1, \"returnData\": \"${returnData}\", ELSE, Set Variable, ${policyJson}","*${policyJson}, \"returnData\": 1, \"returnData\": \"${returnData}\"","*${policyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotest\", \"policyType\": \"tsg_security\", \"action\": \"allow\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"autotest\",...","*Get From Dictionary, ${policyData}, policyName","*${return}, ${policyName}","*${policyData}, policyName","*${policyName} = autotestmonitor","eNpTUqkuSi0pLcqrVVK0VXJz9PRRUkjMS1FQUqkuyM/JTK70S8xNrVVSULRVUPLLz0tV0lEISi3ISUxOVQguKcrMS9dRgKn0Ks7Pq9VRUELoU7JSUEosLckvSS0uUcKQQbVBR8HVJ9iVmqaDxCFmAwDP2kxk","*${policyJson}, \"policyName\": \"autotest\", \"policyName\": \"${policyName}\"","*${policyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotestmonitor\", \"policyType\": \"tsg_security\", \"action\": \"allow\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"aut...","*Get From Dictionary, ${policyData}, policyType","*${return}, ${policyType}","*${policyData}, policyType","*${policyType} = tsg_security","*\"${return}\"!=\"FAIL\" and \"${policyType}\" != \"None\", Replace String, ${policyJson}, \"policyType\": \"tsg_security\", \"policyType\": \"${policyType}\", ELSE, Set Variable, ${policyJson}","*${policyJson}, \"policyType\": \"tsg_security\", \"policyType\": \"${policyType}\"","*Get From Dictionary, ${policyData}, action","*${return}, ${action}","*${policyData}, action","*${action} = monitor","*\"${return}\"!=\"FAIL\" and \"${action}\" != \"None\", Replace String, ${policyJson}, \"action\": \"allow\", \"action\": \"${action}\", ELSE, Set Variable, ${policyJson}}","*${policyJson}, \"action\": \"allow\", \"action\": \"${action}\"","*${policyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotestmonitor\", \"policyType\": \"tsg_security\", \"action\": \"monitor\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"a...","*Get From Dictionary, ${policyData}, method","*${return}, ${method}","*${policyData}, method","*Dictionary does not contain key 'method'.","*${method} = Dictionary does not contain key 'method'.","*Get From Dictionary, ${policyData}, userTags","*${return}, ${userTags}","*${policyData}, userTags","*${userTags} = ","*\"${return}\"!=\"FAIL\" and \"${userTags}\" != \"None\", Replace String, ${policyJson}, \"userTags\": null, \"userTags\": ${userTags}, ELSE, Set Variable, ${policyJson}","*${policyJson}, \"userTags\": null, \"userTags\": ${userTags}","*Get From Dictionary, ${policyData}, doBlacklist","*${return}, ${doBlacklist}","*${policyData}, doBlacklist","*${doBlacklist} = 0","*\"${return}\"!=\"FAIL\" and \"${doBlacklist}\" != \"None\", Replace String, ${policyJson}, \"doBlacklist\": 0, \"doBlacklist\": ${doBlacklist}, ELSE, Set Variable, ${policyJson}","*${policyJson}, \"doBlacklist\": 0, \"doBlacklist\": ${doBlacklist}","*Get From Dictionary, ${policyData}, doLog","*${return}, ${doLog}","*${policyData}, doLog","*${doLog} = 1","*\"${return}\"!=\"FAIL\" and \"${doLog}\" != \"None\", Replace String, ${policyJson}, \"doLog\": 1, \"doLog\": ${doLog}, ELSE, Set Variable, ${policyJson}","*${policyJson}, \"doLog\": 1, \"doLog\": ${doLog}","*Get From Dictionary, ${policyData}, policyDesc","*${return}, ${policyDesc}","*${policyData}, policyDesc","*${policyDesc} = autotest","*\"${return}\"!=\"FAIL\" and \"${policyDesc}\" != \"None\", Replace String, ${policyJson}, \"policyDesc\": \"autotest\", \"policyDesc\": \"${policyDesc}\", ELSE, Set Variable, ${policyJson}","*${policyJson}, \"policyDesc\": \"autotest\", \"policyDesc\": \"${policyDesc}\"","*Get From Dictionary, ${policyData}, effectiveRange","*${return}, ${effectiveRange}","*${policyData}, effectiveRange","*${effectiveRange} = None","eNqtzUEKwjAURdGtvD4yzAqEDhxUUIqDdgUh/pZA+CkxLUjI3h2LDp1euByamqXsWRu7npfzdSScPkBTZVnEl3DI5HSVRnQ9eE8qtJhki84L5pKDrhambikG/7o9kzYLfr48QfcYf/UvxmIY5+GPQm1vID9NwQ==","*${policyJson}, \"effectiveRange\": null, \"effectiveRange\": {}","*Get From Dictionary, ${policyData}, userRegion","*${return}, ${userRegion}","*${policyData}, userRegion","*${userRegion} = None","*Get From Dictionary, ${policyData}, code","*${return}, ${code}","*${policyData}, code","*Dictionary does not contain key 'code'.","*${code} = Dictionary does not contain key 'code'.","*Get From Dictionary, ${policyData}, message","*${return}, ${message}","*${policyData}, message","*Dictionary does not contain key 'message'.","*${message} = Dictionary does not contain key 'message'.","*Get From Dictionary, ${policyData}, html_profile","*${return}, ${html_profile}","*${policyData}, html_profile","*Dictionary does not contain key 'html_profile'.","*${html_profile} = Dictionary does not contain key 'html_profile'.","*\"${return}\"!=\"FAIL\" and \"${html_profile}\" != \"None\", Set Variable, ${html_profile}, ELSE, Set Variable, ${message}","*${message}","*\"${return}\"!=\"FAIL\" and \"${html_profile}\" != \"None\", Set Variable, html_profile, ELSE, Set Variable, message","*${messageKey}","*message","*${messageKey} = message","*Get From Dictionary, ${policyData}, keyring","*${return}, ${keyring}","*${policyData}, keyring","*Dictionary does not contain key 'keyring'.","*${keyring} = Dictionary does not contain key 'keyring'.","*\"${return}\"!=\"FAIL\" and \"${keyring}\" != \"None\", Set Variable, ${keyring}, ELSE, Set Variable, \"\"","*${keyring}","*\"\"","*${keyring} = \"\"","*Get From Dictionary, ${policyData}, decryption","*${return}, ${decryption}","*${policyData}, decryption","*Dictionary does not contain key 'decryption'.","*${decryption} = Dictionary does not contain key 'decryption'.","*\"${return}\"!=\"FAIL\" and \"${decryption}\" != \"None\", Set Variable, ${decryption}, ELSE, Set Variable, \"\"","*${decryption}","*${decryption} = \"\"","*Get From Dictionary, ${policyData}, decrypt_mirror","*${return}, ${decrypt_mirror}","*${policyData}, decrypt_mirror","*Dictionary does not contain key 'decrypt_mirror'.","*${decrypt_mirror} = Dictionary does not contain key 'decrypt_mirror'.","*\"${return}\"!=\"FAIL\" and \"${decrypt_mirror}\" != \"None\", Set Variable, ${decrypt_mirror}, ELSE, Set Variable, \"\"","*${decrypt_mirror}","*${decrypt_mirror} = \"\"","*${decrypt_mirror} = \"\\\"\\\"\"","*Get From Dictionary, ${policyData}, appIdObjects","*${return}, ${appIdObjects}","*${policyData}, appIdObjects","*${appIdObjects} = ['http']","*${appIdObjectIds}","*${appIdObjectIds} = []","*userRegionStr由:动作,协议,动作参数等决定,待完成;userregion在allow,monitor动作时多个协议为空;deny,多个协议时为子动作;Intercept,多个协议为空;http为,ssl为,判断appid对象的个数。","*${userRegionStr}","*${userRegionStr} = ","*${key} IN [ @{appIdObjects} ]","*${key} = http","*${objprotol}, ${key}","*${appObjId}","*${appObjId} = 75744","*${appIdObjectIds}, ${appObjId}","eNqlkMEKwjAMhl8lBI99goFHRdGDMPEqtQ1arM3Iehmj7247nRMPu3hK0p/v/5Pion9QvLFNCMsl4MWzuSOwAP4o2pNEVFBThJMWpy+eFPTYCEc27LHKxJ26hApfIFbfJgoNW8Jq0Zea1CC1rb7SrkDVZ0xJwWpfr2C7VsVAm+g4vLewFLo/lpizdiGSGGoigg4WRqNBa1s/n1rX+xyZAXHhmjMHuPT5UEtGuqYklSunaZLODyfC8iW/X8a/mM3eHI8HTE+W9pfH","*{\"protocol\":\"HTTP\"}","*${userRegionStr} = {\"protocol\":\"HTTP\"}","*\"${return}\"!=\"FAIL\" and \"${appIdObjects}\" != \"None\", Replace String, ${policyJson}, \"appIdObjects\": [null], \"appIdObjects\": ${appIdObjectIds}, ELSE, Set Variable, ${policyJson}","*${policyJson}, \"appIdObjects\": [null], \"appIdObjects\": ${appIdObjectIds}","*${policyJson}, \"userRegion\": null, \"userRegion\": ${userRegionStr}","*${policyJson}, \"userRegion\": null, \"userRegion\": {}","*Get From Dictionary, ${policyData}, appSelectorObjects","*${return}, ${appSelectorObjects}","*${policyData}, appSelectorObjects","*${appSelectorObjects} = None","*\"${return}\"!=\"FAIL\", Set Variable, ${appSelectorObjects}, ELSE, Set Variable, ${EMPTY}","*${appSelectorObjects}","eNp1jbsKAjEQRX/l7pAyXyBsYbGCsigYsM8mg0TCJGRjISH/7tY+qgP3cDmkWuH6LNJpGOmwP84EKx6kms3ZcGRXU7ksj41rJwwj6JyESePKOVrHMLUEuWuollMM7nVak3QN+v7Tblu9p3/yZ1Njms2kYbjiZkuwS+SP2BuITUOH","*Get From Dictionary, ${policyData}, isValid","*${return}, ${isValid}","*${policyData}, isValid","*${isValid} = 1","*\"${return}\"!=\"FAIL\", Set Variable, ${isValid}, ELSE, Set Variable, ${EMPTY}","*${isValid}","*${appSelectorObjects} = 1","*\"${return}\"!=\"FAIL\" and \"${isValid}\" != \"None\", Replace String, ${policyJson}, \"isValid\": 1, \"isValid\": ${isValid}, ELSE, Set Variable, ${policyJson}","*${policyJson}, \"isValid\": 1, \"isValid\": ${isValid}","*Get From Dictionary, ${policyData}, scheduleId","*${return}, ${scheduleId}","*${policyData}, scheduleId","*${scheduleId} = None","*\"${return}\"!=\"FAIL\", Set Variable, ${scheduleId}, ELSE, Set Variable, ${EMPTY}","*${scheduleId}","*\"${return}\"!=\"FAIL\" and \"${scheduleId}\" != \"None\", Replace String, ${policyJson}, \"scheduleId\": [null], \"scheduleId\": ${scheduleId}, ELSE, Set Variable, ${policyJson}","*${policyJson}, [null], []","*${policyJson} = {'opAction': 'add', 'returnData': '1', 'policyList': {'policyName': 'autotestmonitor', 'policyType': 'tsg_security', 'action': 'monitor', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'a...","*CreatePolilcy","*<p>场景策略:secuiryt、proxy策略 数据分离,测试数据来自对应的yaml文件 参数 ${policyList}\x3c/p>","*参数, ${filepath}读取文件路径, ${filename}读取文件名, ${keywords}获取数据关键字","*创建策略","*${policyList}, returnData","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotestmonitor\", \"policyType\": \"tsg_security\", \"action\": \"monitor\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"a...","*${policyUrl}, ${bodyJson}, ${version2}","*Creating Session using : alias=api, url=http://192.168.44.72:8080/v2, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 ","eNqdVNtuozAQfe9XIB42UhWaS0lAXeUhDbRFSkkEZKVVVSGvPaFuCWZt01Ua9d/XJvQiNWm2+wQ+M3POXOyZz+LEiOB3BUIalaBFZpwZFaejTslyitcdzFYlzaFtlIijlRiFrFCHpYJe/lGesz8pB0I5YClGCa8UKukKWCVrn6M7QAS4GG1aCwHcGmdQyNaZ0SrX8o4VFt/qi07/pH960m21jdYYYyil5ReYEZWUds6eaNk2CCxzJOHNR5uOO8camLCiUClQVmjwAaC0UE4ft86VkuL0Cb2YwYG+7RJsDQc927LtU8dCiLgWdruk7yA8ANT7hlbld7s/qL+NglS5W8m6BE2CylJ1qebs3AtF/GwcESTRaGOyclynYp4ZJiLEbBsmB1nxwlN2DfY0tO3ylAqpoE1zDNEK6rBKMqkas2IFlYy/+Wt57SBFlgrAal5yra3oVfFdSKVanqBMaFifCTvPEX7It5rdGpmyTP33XgU8EPh9BjoOlkvd3EeIUJFp+c1zwx5BtpVVBXAmGWa5Dr5KkrmpfQSrONYRN6otv+4VS0C0XNdxh0Ot2QRdUMi1oajyXMV9dHZ3OJtJfJnG/mQRBcnPNJ4toomfjj0vMndRON1/pZjOJuMkmIW7aXr7aC6Cqe+ll8k8Da7jYHdw/3Dw/GoW+mm4uD739xRyephkPN+Tvf21Pt7qO6JuAS1Qc78+DtIZHOT0/DgJwrqpnwxo+CWez6fk/EdOuli13iTw5lWqWrfn3XW7++fgT71UP4I08uN0MgsTP0yUQJ3qJ5Ru9+uUOmu1jAIyq7n0Y79xBo5tN4YYcgUz/s6sLVT8UBuSNG9f4DsgVQ51Jje3z2qZ6aVW7/C/kX/vww==","eNqtVV1vmzAUfe+vQH5OJ0PIhyLtIQukZUohAmfSNE3IA4d5IhhhUymL+t9rDA00iVqy9Q3fc+495l4fGzHta+C5WslplmgzLWKZIJn4fLjRNBCxmAAZNCAcVOsdT6olCMooIpwDFYyxwFW0ypDLnKU02q8oF1XwRxOWAI4EZZnK37GMClao/BrLcyf2fv0hkeB12mQ0MU3tZ5cRkFTirHjFaxkx4YJm+EWkVZYYUylOXAE6nEwno0EL5gUTLGLpkpJUMQAK7sLAXmx8B30PLTtAjjtHjueGc8vyQZP5NHhTYfxvCitvoT56qkw+4D+6PWQrpkasH0Nku5WS9JH4OEvUaTjITR3RR5yWqucrvCeFUsXZPkzV6gLNK+KaBj/BC3AgcC3SgluaClKcH6gjdBq+1KfpoAtf7tTSsVdWeI/QOvTtIFx4LrJdBI6JslEXh9J7F1P4sbvoDI5yR1qK4pT+PWkf5d9kNH49VJYjulNEYEBDv4XjW2houjnT9dkQgg5vw+tfM42jZRqLW4RH9bxLwYQ0Hzgh1D8+MoYmPEFc3Ii/pJ5dCDUP7fOaJ3gSchKVBRX7lsSj3yQuU1ILde8CzsoiIu9eA+M3TZqVadrLheNpfxcG3sZf2NdcJPDq4lfeIfq7AktnZVvhnTySzkPg9CxrXFF2fe+5duhuHr7YfdsyvKL8fN23F+b/TbJzBEtpHJ8kzWt0OC+rKlY+b7fWzUU4UU8cqOHa9ooCePP8SlQUJbl50p4Bt5v3Cg==","*${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'monitor', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107875, 'protocolField': 'TSG_SECURITY_DES...","*\"${returnData}\" == \"1\", GetPolicyIds, ${response}, ELSE, Create List","*GetPolicyIds","*process_policy_body","eNqzKbB70bf9af+057snP5s358mOtc9ntTxfO+351KXPN+5+Oq/7aX+Xp4sCRORZ39Kn/Ytf7J/ydPa8rOL8vCc7NilAeBDdzxbsebqn//2eWdHV6gX5OZnJlSGVBanqVgrqJcXp8cWpyaVFmSWV6joKUFnPlGKgZLShgYWJhUFsrY4C6doMydNmRJ42Y/K0mcTWxtroF9gBAGZ/lbY=","*${policy} IN [ @{value['data']['policyList']} ]","*${policy} = {'action': 'monitor', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107875, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107876, 'protocolField': '...","*${policy['policyId']}","*${policyIdList}","*${policyIdList} = [52340]","*policyType=${policy['policyType']}, policyIds=${policyIdList}","*${policyObj}","*${policyObj} = {'policyType': 'tsg_security', 'policyIds': [52340]}","*${policyIds}, ${policyObj}","*[{'policyType': 'tsg_security', 'policyIds': [52340]}]","*${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52340]}]","eNpTqc5PykpNLvFMqVWwVYg2NDC3MDPTUQDT5lDaAkpbQmhzAyhtCKWNoLQxlDaB0qZQGmqeOdQ8c6h55lDzLKDmWRjGAgDKTx2k","*${policyId} = [{'policyType': 'tsg_security', 'policyIds': [52340]}]","*${objectIds}, ${objectId}","*${objdict} = 107866","*${objdict} = 107867","*${policyIds}, ${policyId}","*${objdict} = {'policyType': 'tsg_security', 'policyIds': [52340]}","*${key} = {'opAction': 'add', 'returnData': 1, 'policyName': 'autotestdeny', 'policyType': 'tsg_security', 'action': 'deny', 'method': 'block', 'code': 403, 'html_profile': 2551, 'userTags': '', 'doBlacklist': ...","*${condation} = [{'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'endpoint', 'objList': [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'po...","eNrtWE2P0zAQvfdXWObaruyk6ZfEqQUpCO0iWriQPaSJVRmS2IodxLLqmQuIExeuHJHgVxX+Bo6TNGmSsj1wYNWoiirPe56xPW+cUVYMPFleXYJE0GgDZsBjkSSRfHjbAwB6zCdQGQ2E+uk4FJt0CJeJ5xEhoDb6rnRTazpDDdn6NfHkUypkanyVmxXg+r4tSdhEMixe3XAdbNgv7V5A1WJsjnVYw7IuKg9sIRqaaBpt2GMWh66ODef24nmT8ozFMouE2sHM+8iyTKudUAkRu9GGVFk+jdXBUBalMKoAlN+1OyrsiErqBvQ9acwWS5WK3C0kkc8ZjeTh7Jdqpp/iuGpWyVgQ4el5t8BR63DgzKmvw4Gg70CuNqdRNNDbd+AW1nzZWQSExsPRZFwDL91QrzxKgqAGFXlPz6ECZToqnI4nE6MK8hXNHEIDGXiARgNkADycYTwz8YEb/kKQWOvKsCr2dENZqgeNfPKYSeaxoH7UytFbEhdqRBf6B1sIxl0JLYgVvYSueNOkHJFkCR6RZEmoh8g52/7/XH+4q78j9YdPq7/Jvak/fKb1B64LOvRJQCSxdQ5F9m4sQareyHMWMH2G8IGJx+Z0DktYLKjggXtTz65CHr3zgkTUFX9cza1KhSEJ12R/O5T2TCB7BUsiStX/RT05VAgSuolMp+4+faH818cPux9ff3//ufv8re5rmaz3Sm1UWc5pk/KpWm1XKhTJ+irfSyM1CVe9Dzlsaq57tdu163vOqe+Z/vt71+z6nq7v6fqek+pviu5N/XV9z1n0PeZ59T36f6u/C4n8I5GCZZyQ3hb8AeoFbXc=","*${objectIds} = [107882, 107883]","*${obj} = 107882","*${objectList} = {'objectId': 107882, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}","*${obj} = 107883","*${objectIdsList} = [107882, 107883]","eNrtVT1PwzAU3PMrLLMWlKSFfkgMqEWiCMHQwoIq5CRPxeDEUWyLFsTMAmJiYWVEgl9V+BvYSUvStAgGNhh9Z5/f3XNe+hzt9g72kRI0GqIW8nkkIZKbVxZC2OcBYA26tl0x61AMzRL3lO+DEDgFAyKJQc0JveTeGfhyjwppwOMprAkSBF0J4SKjOSqOCKOBwZ1KDvP4UEBi0Jq7Pof3aZhWhl3bdVbtjVXbRU6t5TitqoMrReFuRCXV4pfpfrvI6Wr2SaYTKcZKVAeEv4SCUZz0x/GimtiBkUejMn4O4wueBFtJQsaZb7zFhpBQsobRoHRnN4vAtuu1jeZcEmmqM7reaNSm3HXl7+bYPqURWeuosYq+y9L9z/LXsqz+KMtcAwfAQEI31RHZfTlJ9cRpc8bTSPFK1alXm22c06JDRcyyOou2NbM98pmeW3ze39f5Lm0pDiH04DO+HM+szRLHEvTcKpFF3yVq1kRMlDRHJ3cPNH67vZm8PL4/v07un8paPeXNasBD4CeM+0Qab6V9n5toXKB+9viWP14slHcw9bPQHhXr+Q7zg3tgTTtsmW/GShWyH4KmZaLAukYf7RWOWQ==","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:31', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:31', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:31', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item...","*${objectIds} = [107884]","*${obj} = 107884","*${objectList} = {'objectId': 107884, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}","*${objdict} = 107884","*${objectIdsList} = [107882, 107883, 107884]","eNrtVbtOwzAU3fMVlllTKUnTp8SAWiSCUDu0sKAK5XFVGZI4ih3RgjqzgJhYWBmR4KsKv4GdtE2aFrU7bPE5zvE95zo3Q4pOB/0eShgJx6iNXBpyCPnhvYIQdqkHWICGpqlyHbCxXOJB4rrAGE5Bz+a2ROUbYkmda3D5GWFcgpcLWBC251kcgk1GcIRd2D7xJK6rOUyjcwaxRE2jtoYPSZBWhg3N0CtavaIZSDfbut6uGlgtClsh4USI36X7tSInqunZmU6Y+H6J6gJzt1AwieLhNNpUYycwcUhYxm9gektj7yiO7WnmG+tGFaNR6Tgrc69pDbPeMotm00CXdKPZrC24mfp3IzRr9R0R1v4j3HkLRYqNZit92JFmfa80cw3sgQ8crFSHZSfmJBFTpkN9moaKD6p6o9rq4JxmXcIiP6u0aFwwxxPXF7OKrjv8PeGtTcUBBA6sAszxzNoyc8xBzKoSWfRdopZtxHbC5avzpxcSfT0+zD9ev98/589vZa1B4ixrwCRgpMyvyIA6xIcr4onRTPi0sG+/O7j9DmOWOP2FqY0eJZEY7LA+sUfKos2K/HSUVCH7EwiaxwkoM/QDqOqJFw==","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ...","*${objectIds} = [107885]","*${obj} = 107885","*${objectList} = {'objectId': 107885, 'protocolField': 'TSG_FILED_GTP_IMSI'}","*Length is 3","*${len} = 3","*${objdict} = 107885","*${objectIdsList} = [107882, 107883, 107884, 107885]","eNrtVT1PwzAU3PMrLLMWyUlL01ZiQIBEEWqHFhaEUD6eiiGJo9gWLagzC4iJhZURCX5V4W9gJ22TpkXtDlt893J+d3Ze+gwd97odJDmNBqiFPBYJiMTuvYEQ9pgPWIEWIRW9DvlAL3FPeh5wjlPQd4SjUf2GWjL3GjxxQrnQ4PkUVoTj+20B4TKjOMrPnID6GjcrOcziUw6JRmvWzgLep2HaGbaIZW6T+jaxkFlrmWarauFKUbgdUUGV+F1aT4qc6qbjZDqRDIISdQDcW0HBME76o3hZjR/B0KVRGb+B0S1L/L0kcUaZb2xaVYwuStu1M/eE2LV60y6aTQOd0XajUZ9y48qfjrC2U7cbTZI+rYmz8R/nBnGuCbG5UYi5BvYhAAHtVIdnG+UkVYNmnwUszRJvVU272tzHOc0PKI+DrMGiX8UcDr1AjSu2aOz3YFeeJQ4hdGGeW45n1mZRYwFqXJXIou8SNTs97EihX508vdD46/Fh8vH6/f45eX4ra/WkO+sBx1csgstI6sbKdfOikLk0gEvqqylNxahQt9kVXH2FMZdud2pu6axkrGY8LA7vC2N63Ib+coxUIfspKFokEowx+gHpcY0E","*${objectIds} = [107886]","*${obj} = 107886","*${objectList} = {'objectId': 107886, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}","*${objdict} = 107886","*${objectIdsList} = [107882, 107883, 107884, 107885, 107886]","eNrtlLFOwzAURfd8RWTWgpy0EKjEgACJIARDCwticJInMCRxFDtKC+rMAmJiYWVEgq8q/AZ2nJI0LdAdRt8bX7937Lw+M/d7R4dmxml8bnZNn8UCYrF5Y5gm8lkASIo2xi21jvi5WqJe5vvAOSrEgAiiVLVDLpl3Cb44oFwo8bSUpUGCwBUQzTrSo/yEhDRQutWqZJYcc0iV2rFXp/Q+jYrKkI1taxmvLWPbtDpdy+q2bdSqB7sxFVSGXxff47onqzkkOifOwrBh7QD351gwSNL+MJlN43sw8Gjc1K9gmLM02EpTMtR9o4zkQFdYKmGeNQ51NQOMnY6D6zEa68R21ted0hu1/i7IC03SZ9EvJK1/kj+TzPN8ZWGa9kI0qwwUQAgC3CKH6xMrk8qRs81CVkBFS23LaW9so8rmO5Qnoa603rh0dgd+KAcXm+7we8JzLxVFEHnwBbDSdWsT5kiAHFwNs953w5pcIyKZUFvH9480eb+7Hb8+fby8jR+em1mTAhBJ4pq32Lua/y4Rz7yjstAZ7lkiJzdMj+Qzo7w6Q/0ORpGgR720RZqBMTI/AcTkg/8=","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['u...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['uawei.org'], 'ite...","*${objectIds} = [107887]","*${obj} = 107887","*${objectList} = {'objectId': 107887, 'protocolField': 'TSG_FILED_GTP_APN'}","*${objdict} = 107887","*${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887]","eNp1kkFv0zAUx+/7FJbHCXWTkwxWKnFqQQRV3aQELtOEHPtRPNlxiG3KQD1zAXHiwpUjEvtUha8x222zEMQp8f/3nt/ze/9So+fF2QI5I+olmiCmawu1ffzxACHMNAfsxZSQUTgrswxHXDjGwBgcRU4tDWrI8EddXQGzc2FsEC92sgeU89yCuiOXow4tffFSqFgsSTudgwQLISvnZpj0utXq6Vte7wC+t1qtjisquDtmWuERwvevePwdJJ232mqmZXzKs7I8HxXFHHchwo9gqqVuIz/MktPs0bSHzUyYRtLrgGsnZY88ec+kH6SuAyM9kNfCCirFBxiSl17l8dmdKIG2NfC8mQsl4qwSQsjf2M9rBo19E3tM77pToCpoy+smFso6fbuVGRgWMyz4JQxgvm2DnI7H4wFa0O1qMHU2pG6+fBPN78+fNr++//l5s/n6Y3hX4ap9D1g0r/YtD8N6MT3U7J2AU5ImR+ThEUlRcjJJkkmW9eNeGIhLOkkfdKpx1dnuOf84xjXeq/A/E77TFqZSePMvnNqOIqI1uvTfdfS62RnfU9s6OFijW2rh3jE=","*${objectIds} = [107888]","*${obj} = 107888","*${objectList} = {'objectId': 107888, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}","*${objdict} = 107888","*${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887, 107888]","eNrlVs9v0zAUvvevsMy1m+z8WLdKnFqQgtCGaNmF7JAmVmVIYit2EGPqmQuIExeuHCfBX1X4N7CdpEkTb+UImqIc/L7vvefn973ESwaeLS7OQSlovgZTELNcklw+vhkBAGOWEKiMDkJjvc7EWi/hooxjIgQ0xiSSkbZqD7Vkqzckls+pkNr4ujYrIEqSQJJsiFRYsbzmJpk3bu1xStVmAo5NWsf3j9vXgxaiY4iuY8OesiKLTG44C+Yvh5QXrJBVphPfd307wTlE6KQponxNuqyEFupwKMs1jDoA5YcqpCLIqaRRSj+QgbdYqHbUYSHJE85oLve9L5VnonHcNauGzImIjd8NCNU+QjgN+/sIIRiHkKviDGqKD+EG9iIFVXyEJt4EuT3wPMrMvvMyTXtQ03l9Ch2oUlITdHJ6etYF+ZJWAaGDHHyETo6QA7A3xXjqunth+CtBCqMsx+/YdTn2XvKCSRaztH/MKsw7UjRqRMfmgRaCY2mmbyN2tJJF4u2Q0koS2cE75NgS+ilqzmb8L88fvm/28EOdO3xo5rz/Zubwg5s3cNXQYUJSIklguieqf2ELUvUHnrGUmdODj1w8cc9msIXFnAqeRtf9virkyfs4LUVf5Xcr2KpOmJFsRXZfg9ZeSWOnWklEq/R7dFNDjRRhVErtuv38lfJfnz5uf3z7fftz++V7P9aiXO00OpismmMT8d+q1K5RKMrVRV3LoDUlV3cdsn+JuRrV3R3pb+rIRKguRwqWRUlGG/AHxshEnQ==","*${objectIds} = [107889]","*${obj} = 107889","*${objectList} = {'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}","*${objdict} = 107889","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLewMNJRANPGUNoESptCaTMobQ6lLaC0ZSwAlfYThQ==","eNrlVLFOwzAU3PMVllkLctJCaSUG1CJRhGBoYUEIOclTMThxFNuiBTGzgJhYWBmR4KsKv4GdtCRNi2Bn9J19fnfPzwOB9vqHB0hLFg9RGwUiVhCrrRsHIRyIELABPUJqdh3JoV3ivg4CkBJnYEgVtag9YZbCv4BA7TOpLHgyhQ1Bw7CnIFpkDMfkMeUstLhbK2CRHElILdrw1ufwAYuyyrBHPHeVbKwSD7mNtuu263VcKwv3YqaYEb/O9pMyZ6o5oLlOrDmvUF2QwRIKRkk6GCeLanIXRj6Lq/gljK9EGm6nKR3nvvE2H0LK6BpGp5U7e3kEhDQbTTLnOEt1Rjc3W2TK3db+b46dcxbTta4e6/i3LDf+lGWhgUPgoKCX6cj8voJkZko6gossUrxSd5v1VgcXtOwymfC8zrJtw+yMAm5mTcz7+znfpS3FEUQ+fMdX4Lm1WeJYgZm1Cln2XaFmTcRUK3t08vDEko/7u8nb8+fr++TxparV1/6sBjwEccZFQJX1Vtn3vYklJepvj2/548VS+4dTPwvt0Yn5k2D+szl1ph127Mw4mUL+iRlapRqcW/QF+29Bpw==","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:33', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:33', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:33', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item...","*${objectIds} = [107890]","*${obj} = 107890","*${objectList} = {'objectId': 107890, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}","*${objdict} = 107890","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLewMNJRANPGUNoESptCaTMobQ6lLaC0JYS2NIgFADdGFQo=","eNp1kkFv0zAUx+/7FJbhNHWTkxbGKu3UggiqukkJu6AJOfaj82THWWxTBuqZC4gTF647IsGnKnwNbLfNsqCdEv9/7/k9v/cvNHqVn86RM6JaoDFiurJQ2ZNPewhhpjlgL6aEDMJZmUU44twxBsbgKHJqaVBDhj/q8gqYnQljg/hmK3tAOc8sqDtyMWjRwhcvhIrFkrTVOUiwELIybvpJ7xqtXlzzagvw4+VyeVhSwd0h0woPEN6/4vG3l3TWaKuZlvEpL4vibJDnM9yGCD+CiZa6ifzRMDkaHk862EyFqSW9CbhyUnbI8w9M+kHqKjDSAVklrKBSfIQ+Ofcqj89uRQm0qYBn9UwoEWeVEELuYz+vKdT2MvaY3nWnQJXQFDd1LDRs9c1WpmBYzLDgl9CD2aYNcvTsOOmhOd2sBlNnQ+r663dR//nyef3rx9+fv9ffbvt35a7c9YBF/XbXcj+sE9NB9c4JOCVpckCeHpAUJaNxkoyHo27cawNxSaP0SasaV55un/OfY1ztvQoPmfC9tjCRwpt/7tRmFBGt0IX/rqLXzdb4ntrGwd4K/QNkcd4s","*${objectIds} = [107891]","*${obj} = 107891","*${objectList} = {'objectId': 107891, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}","*${objdict} = 107891","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLewMNJRANPGUNoESptCaTMobQ6lLaC0JYS2NIDShrEA5LEWkA==","*${key} = {'protocolField': 'TSG_FIELD_HTTP_URL', 'objectType': 'url', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['$cloud.tencent.com/developer/ask/202829']}, {'keywordArray': ['*tencen...","*${protocolField} = TSG_FIELD_HTTP_URL","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK0Ei6irJOfmlKXolqXnJqXklesn5ufopqWWpOfkFqUX6icXZ+kYGRhZGluqxtToKWLRrkasRSR8uJTCX6enpAQCuIkoQ","*${objectType} = url","*${objectJson} = [{\"objectId\": null, \"objectType\":\"url\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"...","*${objectJson} = [{\"objectId\": null, \"objectType\":\"url\", \"objectSubType\":\"\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"subObject...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImoqyTn5Jem6JWk5iWn5pXoJefn6qeklqXm5BekFuknFmfrGxkYWRhZqsfW6ihg0a5FrkYkfbiUwF2mp6cHAFQHSIc=","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohWV0nOyS9N0StJzUtOzSvRS87P1U9JLUvNyS9ILdJPLM7WNzIwsjCyVI+t1VHAol2LXI1I+nApwekyPT09AANRTF4=","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohWUknOyS9N0StJzUtOzSvRS87P1U9JLUvNyS9ILdJPLM7WNzIwsjCyVIqt1VHAol2LXI1I+nApwekyPT09AOTFTBM=","*${objDictionary} = [{'objectId': None, 'objectType': 'url', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'...","*${objdict} = {'objectId': None, 'objectType': 'url', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList':...","eNpTqc5PyqpVsFWoVk9MSfEsSc31ySwuUbdSiK5Wz06tLM8vSnEsKkqsBImoq5SXl+slpWYV5+fpJefn6pcl5mSmJJbkFxXrVybm5sSnpmQCOfrqsbU6Cli0axHUiksndo1a2JTr6ekBAJVxS9s=","eNpTqU5MSfEsSc31ySwuqVWwVYiuVs9OrSzPL0pxLCpKrFS3UohWVykvL9dLSs0qzs/TS87P1S9LzMlMSSzJLyrWr0zMzYlPTckEcvTVY2t1FLBo1yKoFZdO7Bq1CCtXj9XT0wMAbmdOyw==","eNpTqU5MSfEsSc31ySwuqVWwVYiuVspOrSzPL0pxLCpKrFSyUohWUikvL9dLSs0qzs/TS87P1S9LzMlMSSzJLyrWr0zMzYlPTckEcvSVYmt1FLBo1yKoFZdO7Bq1CCtXitXT0wMAUOlOew==","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'url', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'o...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"url\", \"objectSubType\": \"\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u63...","eNrtVE1v2kAQvedXrNyqSMjGxsYxUHFAJIdIVVI1tJeCqmV3IBvWu9v9SAoo/727BgKHtode25M9b96bmTcj7ce7+yn6BN8dGIucYWKFhshpNkqV5IxsUrl4BGJjpLDGtRndSgExWjIOx3/MuXz+poEy7YlmNNXOo5bVIJ1tOBcPgCloM9q1PhvQyXgFwraGqKU29kGKRO/bmzTv5EUna8WoNSYElE2uBZHUzxTIqy1TMaKw5NjCiRNS7bQdgIkUwo/ApAjgGkAlmLOnPdn5Vppt8TENFeS9PiXJZdntJb1eUSUY035C+hnNK0xKwN13uFbve3nZfA8drJ89mW4UhCJYKb+kpmb6aHzhF3RBscWjXSTVuBklGqIIUxrFKNJgnRZXPh/AboD22/3AjPXQ190hvqE+Eo7zV0ZoGERO85Ps3i2OeACZ+eLtBmm3iW4Es8wj28DIGuj6B+H+yM1U2WudW1w3RbCz1t9h5sqiLJmaucsiq3y0GOCZqzAsQwaK0wBXYEgQBlVAjVvcHQyY4GceN95vLNQni2vYPEtNx1rjTUCit4RLRzt+scTvtkNknVJ4Ai4V6BSbdZpneT8fRPOXGP1C3v5b4Znud5Q/Tdb2omDQKX9xOPcYUAoc9ujZLhiRYiK51GFpb4puVQwmUdP5/93/vbvP/WMRHo3mjfwJDFHOww==","eNrtl0Fv0zAYhu/9FZa5dqudlKWttAPakChC22EdF7RDan+azJw4im1oQT1zYeLEZdcdJ8GvKvwNnKRd0rSMio0Lyyny+yZfPj92/CojhV6eHB8hq0V8jgaIqdhAbPY/thDCTHHATvQIaWfjSJ9nQ3xiGQOtcS7y0ISZmj3hhmr8Fph5JbTJxDcL2Rkh50MD0brjPKFfh1LwTKftUlbJqYY0U7ve0xV9JKK8M+wRj+6QvR3iIdodUDrw93C7WngYCyNc8Q/5/aTquW6OwqJObKWsWYeg2QYLJkk6mibr1fQLmIxFXNcvYPpepfxZmobTYt6YSWX5rsPMHOldpqIOh3cgVQJpJ9QXHTenntfH6KzW0bAAREjQDUhQ5ZEzX9pBr+8tvFn78VK+J99ew3drvn9A2W9Q/v2BcDdbSrZiW9bAHCQYGOZ1dPH+0hTu+D9QUuWI8ROfBn7/AJe2PhQ6kUXfVQzOeT5h0oWIWp3v73lvXGIcQTSGW5ylXkxtuQJu77kQqZnVedes5aLi0Jrs0fnlV5H8+Pxp/u3q5833+Zfreq1lA9imsuJtt8s271Ks7fh40egad5u4FIXVeDxr1T6LJkEfNEEpvevT8Ztj6Z4JSr2G7wMlKPUblP8sQbtbsX1kCer/RwmaX2f5v6pe/Lg626QWWjP0CwpDrFI=","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['c...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['cloud.tencent.com...","*${objectIds} = [107892, 107893]","*${obj} = 107892","*${objectList} = {'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}","*${obj} = 107893","*${list} = [{'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}]","*${filter} = {'filter': [{'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}]}","*${objectList} = {'filter': [{'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}]}","*${objdict} = 107892","*${objdict} = 107893","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLewMNJRANPGUNoESptCaTMobQ6lLaC0JYS2NIDShlAaap6lcSwAZEMZnw==","*${key} = {'protocolField': 'TSG_FIELD_HTTP_HOST', 'objectType': 'fqdn', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['$blog.csdn.net']}, {'keywordArray': ['*.csdn.net']}]}, {'addItemList...","*${protocolField} = TSG_FIELD_HTTP_HOST","eNpTqc5PyvLJLC6pVbBViK5WT0xJ8SxJzQWJqFuBBLJTK8vzi1Ici4oSK0Ei6ipJOfnpesnFKXl6eakl6rG1OgpYVGkhq4CoIcLo8vJyvazi/Dy95Dx9nCYjKQBCADg2QkY=","*${objectType} = fqdn","*${objectJson} = [{\"objectId\": null, \"objectType\":\"fqdn\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", ...","*${objectJson} = [{\"objectId\": null, \"objectType\":\"fqdn\", \"objectSubType\":\"\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"subObjec...","*${obj} = {'addItemList': [{'keywordArray': ['$blog.csdn.net']}, {'keywordArray': ['*.csdn.net']}]}","*${addItemList} = [{'keywordArray': ['$blog.csdn.net']}, {'keywordArray': ['*.csdn.net']}]","*${addItemList} = [{\"keywordArray\": [\"$blog.csdn.net\"]}, {\"keywordArray\": [\"*.csdn.net\"]}]","*${objDictionary} = [{'objectId': None, 'objectType': 'fqdn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList...","*${objdict} = {'objectId': None, 'objectType': 'fqdn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'...","*${obj} = {'addItemList': [{'keywordArray': ['$www.json.cn/']}, {'keywordArray': ['*json.cn/']}]}","*${addItemList} = [{'keywordArray': ['$www.json.cn/']}, {'keywordArray': ['*json.cn/']}]","*${addItemList} = [{\"keywordArray\": [\"$www.json.cn/\"]}, {\"keywordArray\": [\"*json.cn/\"]}]","*${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'fqdn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', '...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"objectList\": [{\"objectId\": null, \"objectType\": \"fqdn\", \"objectSubType\": \"\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6...","eNrtVE1vGjEQvedXWNuqSGiXr2WzhIoDIjkgVUnV0F4Kqow9ECfGdvyRdEH57/UsEDj03FNP63nz5s2bsbxf7+5n5Bs8B3CeBCfUmgxJsGLUNloKVrX18hGYT4mhlm7c6FYrSMlKSDieqZT69ZcFLmwkutHMhoh6sQEdfM25eADKwbrRrvHdgc3Ga1C+MSQNU/kHrTK7b+/avVYvb3UaKWmMGQPjsxvFNI+ekLzeCpMSDitJPZw4mGq2mwhMtFLRgtAKwScAk1EpXvbkEFtZsaXHNJTQ6w84yy6Lbj/r9/Myo5QPMjbo8F5JWQG0+4luzOd+r6i/hw4+es9mlQEUocbEJdWa7UcXhd/IBaeejnaJNuPaSjIkCeU8SUliwQerrmMewS5C++1+Ec5H6OfuEE95jFSQ8p2BDbFo9czVqe4+LI8JBIX7EefF2m4dTZXwIiJbZHRq6OY3k/GWa1udd51buqlFaPA+XsQ8FHlRCDMPl3mnjNHyis5DSWGFGchPBq7BMSzEKkRdWN4dJnA40CKth5962JxmfILqVVs+tpZWiCQfl1KvW8xx1VLgk8VbSv7Cap4zUDiYuGo410aUg4Q9euZBMK0mWmqLZj/k3TK/miR1m/8L/4cLX8Tngc+k/iv8AaNicJc=","eNrtVj1PwzAQ3fsrIrO2KEk/0lZiQC0SRagdWlhQhyQ+KkNih9gRLagzC4iJhZURCX5V4W/gJC1J04IiRtopuvfi892z78kDphz1e10l4ISOlKZiMyqAir3bgqIgm2FAEtRVtRjGLh+FIeoHtg2cowjEpjBDNFwhQ2ZdgC2OCRcheDaHJWFi3BHgrjKSI/zUdAgOca2YwMw74eCHaEWvLuED4kaVIV3VtZJaK6m6olWamtYs11AxnbhDiSAy+U30v5rmZDVdM85DA8fJUG3g9hoKxp4/mHir2fghjC1Cs/glTK6Zj/d935zEfSPLYaNdm2O6S0FqMcxs3Il1UFWjYmhLbUfSLmij3qjMuWlxc8XMK2Qtl5BJDoTBAQGdKA+PN0tIIuekxRwW6Yl2yppRbrRQQvM24Z4TF5nuWTIHY9uR08aWm/tZ3LXniVxwLfjWLsHj1hZyIwFy2jJkuu8MtThBZAYiXDp7eCLex/3d7O358/V99viSzbUoAJ1fYZoi892p9XcS8cDqzStdET7wpN/AspEMC5kh2HrNn7zG+G1Eqluvye019VxCbpjXVP+T10TfafT+4fPHkKSFH0BhqnwBB4hMxA==","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['b...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['blog.csdn.net'], ...","*${objectIds} = [107894, 107895]","*${obj} = 107894","*${objectList} = {'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}","*${obj} = 107895","*${list} = [{'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}]","*${filter} = {'filter': [{'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}]}","*${objectList} = {'filter': [{'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}]}","*${objdict} = 107894","*${objdict} = 107895","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLewMNJRANPGUNoESptCaTMobQ6lLaC0JYS2NIDShlAaap4l1DxLqHmWprEAFN0csg==","eNpTqc5PykpNLvFMKa5VsFWINjQwt7Aw0lEA08ZQ2gRKm0JpMyhtDqUtoLQlhLY0gNKGUBpqniXUPEuoeZamsQBFfRsW","eNpTqS7OLy1KTvXJLC6pVbBViK5Wz0/KSk0u8UxRt1IwNDC3sDDSUVAvKMovyU/Oz3HLTM0BSaiHBLvHB7s6hwZ5hkTGB/uHBjm7xju6uASp1+ooYBphQqwRPv7OjiGe/n7YjTHFZYybp4+rS7x7SEC8p2+wJ0iznp4eAIQ+Qv8=","eNpTqU5JLS7JzEssyczP88ksLqlVsFWIrlbPT8pKTS7xTFG3UjA0MLewsNRRUC8oyi/JT87PcctMzQFJqIcEu8cHuzqHBnmGRMa7uAaHePo5hnj6+8U7urgEqdfqKGCYY2lAkjk+/s5gBnazDAmZpaenBwBCpkU8","eNpTqU7LzClJLfLJLC6pVbBViK5WhwioW4HY+UlZqcklnilAnqGBuYWlkY6CekFRfkl+cn6OW2ZqDkhCPSTYPd7N09XHJd4jJCQgPjTIR702tlZHAb9RJkQY5eEfHAIyKxYAt0M1Ow==","eNpTqS7OLy1KTvXJLC6pVbBViK5Wyk/KSk0u8UxRslIwNDC3sDDSUVAqKMovyU/Oz3HLTM0BSSiFBLvHB7s6hwZ5hkTGB/uHBjm7xju6uAQp1eooYBphQqwRPv7OjiGe/n7YjTHFZYybp4+rS7x7SEC8p2+wJ0iznp4eAF8OQqU=","eNpTqU5JLS7JzEssyczP88ksLqlVsFWIrlbKT8pKTS7xTFGyUjA0MLewsNRRUCooyi/JT87PcctMzQFJKIUEu8cHuzqHBnmGRMa7uAaHePo5hnj6+8U7urgEKdXqKGCYY2lAkjk+/s5gBnazDAmZpaenBwAfW0Tn","eNpTqU7LzClJLfLJLC6pVbBViK5WgggoWYHY+UlZqcklnilAnqGBuYWlkY6CUkFRfkl+cn6OW2ZqDkhCKSTYPd7N09XHJd4jJCQgPjTIR6k2tlZHAb9RJkQY5eEfHAIyKxYAnZ406w==","*${policyName} = autotestdeny","*${policyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotestdeny\", \"policyType\": \"tsg_security\", \"action\": \"allow\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"autote...","*${action} = deny","eNpNjcEKwjAQRH8lBI9S7FXwoPQkxVPvsiRLCMZsyW4OpfjvNqlWbztvZnZ280jBm+nKFF/qpGZN49mIp6iPSoO1eq90QskpdiBQYFvQ2uo9y4Lmj7zBE2stCwmyWIzTLzxMY3WF3Z3R5OSlurDNffOZMQ3guLCiLV0CmEdY1w6V9OSWu92+d8jmb7tpmjfdK0ZK","*${method} = block","*${code} = 403","*${html_profile} = 2551","*${html_profile}","*${message} = 2551","*html_profile","*${messageKey} = html_profile","*{\"protocol\":\"${key}\",\"method\": \"${method}\",\"code\":${code},\"${messageKey}\":${message}}","*${userRegionStr} = {\"protocol\":\"http\",\"method\": \"block\",\"code\":403,\"html_profile\":2551}","*${policyJson} = {'opAction': 'add', 'returnData': '1', 'policyList': {'policyName': 'autotestdeny', 'policyType': 'tsg_security', 'action': 'deny', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotes...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotestdeny\", \"policyType\": \"tsg_security\", \"action\": \"deny\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"autotes...","eNqdVNtu4kAMfd+viHhYpIoUSEOBrnigkLaRKCAIK62qKprOmDRtyGRnJl1R1H9fO6QXaaGXfUrm2D7HY3s8ncwDawa/c9DGynWcRtaJlau4V89kEvN1nctVFidQszKm2Er3xjLFwxKh53+WJPJPqEDECrjRvUDliJp4BTI3hc+3W2AClO5tqgsNyu5HkJrqiVXN1uZWprba6uu6c+gcHTaqNava5xwyY3splwKTIufoMc5qloBlwgy8+pDpoH5AwECmKaYQy5TAe4DMZkn8sHXOUUrFj+zZDG1w3I7g9nGr6dque9S2GRMdm3cawmkz3gLW/M5W2Q/XaRXfUsFg7nawzoBIWJZhlQrO+p1G4ifrm2CG9TYVmfWLVConVoUJUalZFQUmV+kQ7QQ2CdpWeRRrg9CmPI7ZCoqw3EiDhRGQrl+dSZusRkehBo7NMoWVvcg9++dY7IBFmjA6C3maMH6fbNUaBTKSEf43X9iHoPlbbYqD5ZLK+gAzlkakvXkq2WcQbTUxdSWN5DKh4FtjMgpcARZdEHKTSH5PEPaTGNzGUY38VkmIgTROCDqtVpOYtcwVJ+AKy3hzh9o+kTQb7U7HoUxLqbMYkoI9mJ+Hc2+wmPnBr3A+WcwGXtgfDmcVZPuXwv0sxWgy6Af+ZLybprWP5swfecPwPJiG/uXc3x18/HHw9GIy9sLx4vLU23OR9sck/eme7Dtfq+M1DQuOQ5yycsp29Kb7IefQmwf+uCjq/gZ1G1/iebdL3eZ/5ESXxZE0oMqHiXfdnnfeu+vs74M3GoYXATZiMRshcZHie1TuJ6gucGcTF6WJC8gXk4KEnvlVu9V23dIwhwRhqd6YyRLrn7gVRfnqNb8FkSdQpHB1/YQLjBZZsbf/Ar6u6mQ=","eNqtVV1vmzAUfe+vQH5OJyDQpJH2kAXSMlGIApk0TROixiHeCEbYVMqi/vcZOyEkRSvZ9obvOfce+35wQ6J8DnxPqSjOU2WiQJIzlLOP+xtFAZAkCHCjrqqD+rylaX0EQQUhohQIYxKzuLbWHvxYkAzDnYspq43fDmYOxJBhkgv/BOU74SyBonAS//kHgoxKn5E5Mgzle5sRoIzjpDzjnRgJogzn8VHhJMsxIlycpAY0dTQe3w9OYFESRiDJ5hhlggHC4CEK7Nlq6YRfI8sOQsebho7vRVPLWoKD5+vgTwr36t8puP5MfPRU0f7DO9o5JC4R9W3iArRec0n8gpZxnopW2PNLNehLnFUi5268Q6VQjfNdlIlTB80vE0lTP6gdcMBiKXIC1zhjqHzbTQ10ae7Kkz5ow92Zmju2a0WPYbiIVksXNA48QZ3F6K9uXKf+6Adhp3yrUpg6OWY4zvCvi3xh+oVbk/MqkiLEW0EEuqprt+rdraormjHRtMlwBFq8FZVvMnSzscqBthCFssAVI4xPG7ggyBeb+tDQLhAvPogfXc/HX5LCXSFJjKYRRbAqMWuRKNygpMqQVGlPPiVVCdH7Q6/3H5bAXy1n9hXzPjauDn7dqI/NdwXmjmtb0QPvIOcpcHqGvbsi7OLR9+zIWz19svumZXRF+Omiby7G/1bJVu9UvN2XKD0sjf3bsCJiPZagpblFbEOk2HNG4M82dtyYhjpsWTdsm0U8Jv9pyH1qmlrz1vZlwjgVqw3I28rpFxRADzuXo6ys0M2r8hvSVPFT","*${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'deny', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTIN...","*${policy} = {'action': 'deny', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107890, 'protocolField': 'TSG...","*${policyIdList} = [52341]","*${policyObj} = {'policyType': 'tsg_security', 'policyIds': [52341]}","*[{'policyType': 'tsg_security', 'policyIds': [52341]}]","*${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52341]}]","eNpTqc5PykpNLvFMqVWwVYg2NDC3sDDSUQDTxlDaBEqbQmkzKG0OpS2gtCWEtjSA0oZQGmqeJdQ8S6h5lqaxAA0qGqM=","*${policyId} = [{'policyType': 'tsg_security', 'policyIds': [52341]}]","*${objdict} = 107882","*${objdict} = 107883","*${objdict} = {'policyType': 'tsg_security', 'policyIds': [52341]}","eNpVjrEKAjEQRH8lhbCNBGwFC8Hayj7EZD2Cd9mw2RQh+O/GMxzavnnDzK49sb7USTWgdHYSKMJRgfUe9goYpXC8WLEdHjpINAdXr3bB1SpCgllCFGSHSWBTbjWtiuTJZHSFg9RPareJv1I/wSFOY8Wj45qG+APMEpiJO2yA0d5nHPmXm8T00Fq/AWmmRpA=","eNrtWEFv0zAUvvdXWObaTrbbNGslTi1IQWhDtHAhO6SJVRmSOIodxJh65sLEiQvXHSfBryr8DRwnadIk3XbgwNSoiiq/7/N7tt/3nKcsOXixOD8DiWDhGkyBy0NJQ/n0qgcAdLlHoTIShPrpOBDrdAgXietSIaA2eo50Ums6Qw356j115UsmZGp8l5sV4HieJWnQRDIsXl5GOtioX9pdn6nFWBHWYYlhnFQe2EIkmjgkbdhzHgeOjg1n1vx1k/KKxzKLhNrBzPvYMIZGO6ESInbCNa2yPBarg2E8TGFUAVh03+6YsEImmeOzz7QxWyxUKnK3kIZexFko92e/VTO9FMdVs0rGnApXz7sCtlqHDad2fR02BH0bRmpzGkUDvX0bbmDNl5VFQMgcmXhSA8+cQK88THy/BhV5T8+hAmU6Kpyap5NxFYyWLHMICSJ4gMYDRAAeTTGeDk/33ERvBI21rohRsacbylI9aOQzirnkLvfrR60cfaRxoUZ0on+whUDuS2hBrOglcMSHJuWAJEvwgCRLQj1Eztn0/+f6w139Hag//KD6I+jR1B8+0voDFwUdetSnklo6hyJ7N5YgU2/kGfe5PkP4ZIjN4WQGS1jMmYh857KeXYU8++T6iagr/rCaW5UKAxqs6O52KO2ZQHYKllSUqr9DPTlUCBI6iUynbq+/s+j31y/bnz/+3P7afrup+1okq51SG1WWc9qkfLdWzSqvRalQJKvzfC+N1CSR6n3oflNz0avdrl3fc0R9D8H//t41u76n63u6vudh9UceTf11fc9R9D3mcfU9+n+jvwuJ/CORgmWc0N4G/AXSdm2b","*${objectIds} = [107896, 107897]","*${obj} = 107896","*${objectList} = {'objectId': 107896, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}","*${obj} = 107897","*${objectIdsList} = [107896, 107897]","eNrtVbFOwzAU3PMVllkLStJCSyWGqkWiCMHQwoIQcpKnYnDiKLZFC2JmATGxsDIiwVcVfgM7aZs0LYKBDUbf2ed395yXPke7vYN9pASNBqiJfB5JiOTWtYUQ9nkAWIOubVfMOhQDs8Q95fsgBE7BgEhiUHNCL7l3Dr7co0Ia8HgCa4IEQVdCuMhojoojwmhgcKeSwzw+FJAYtOauz+F9GqaVYdd2nVV7Y9V2kVNrOk6z2sCVonA3opJq8at0v13kdDX7JNOJFGMlqgPCX0LBME76o3hRTezA0KNRGb+A0SVPglaSkFHmG7fYABJK1jA6Kd3ZzSKw7Xqt7laLjtNUp3S9sdmYcDeVv5tj+4xGZK2jRir6Lsvaf5a/luX6j7LMNXAADCR0Ux2R3ZeTVE+cNmc8jRSvVJ16dbONc1p0qIhZVmfRtma2hz7Tc4vP+/s636UtxSGEHsziy/HM2jRxLEHPrRJZ9F2ipk3ERElzdHz/SOP3u9vx69PHy9v44bms1VPetAY8AH7KuE+k8VbaN9tE4wL1s8e3/PFiobyDiZ+F9qhYz3eYH9wn1qTDlvlmrFQh+yFoWiYKrBv0CVc2jn0=","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:38', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:38', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:38', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item...","*${objectIds} = [107898]","*${obj} = 107898","*${objectList} = {'objectId': 107898, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}","*${objdict} = 107898","*${objectIdsList} = [107896, 107897, 107898]","eNrtVbtOwzAU3fMVlllTKUkfaSoxoBaJItQOLSyoQnlcVYYkjmJHtKDOLCAmFlZGJPiqwm9gJ22TpkXtDlt8jnN8z7nOzZCi00G/hxJGwjFqIZeGHEJ+eK8ghF3qARagoWmqXAdsLJd4kLguMIZT0LO5LVH5hlhS5xpcfkYYl+DlAhaE7XldDsEmIzjCLmyfeBLX1Rym0TmDWKI1o76GD0mQVoYNzdArWqOiGUivtXS9VbWwWhTuhoQTIX6X7teKnKimZ2c6YeL7JaoDzN1CwSSKh9NoU42dwMQhYRm/gektjb2jOLanmW+sG1WMRqXjupl7TTNrptEomk0DXdJm07IW3Ez9uxHW6o0dEZr/Ee68hSJFEUb6sCPN5l5p5hrYAx84dFMdlp2Yk0RMmTb1aRoqPqjqZtVq45xmHcIiP6u0aFwwxxPXF7OKrjv8PeGtTcUBBA6sAszxzNoyc8xBzKoSWfRdopZtxHbC5avzpxcSfT0+zD9ev98/589vZa1B4ixrwCRgpMyvyIA6xIcr4onRTPi0sG+/O7j9DmOWOP2FqY0eJZEY7LA+sUfKos2K/HSUVCH7EwiaxwkoM/QDEyCJOw==","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ...","*${objectIds} = [107899]","*${obj} = 107899","*${objectList} = {'objectId': 107899, 'protocolField': 'TSG_FILED_GTP_IMSI'}","*${objdict} = 107899","*${objectIdsList} = [107896, 107897, 107898, 107899]","eNrtVT1PwzAU3PMrLLMWyUkKIZUYUEGiCMHQwoIqlI+nYkjiKLZFC2JmATGxsDIiwa8q/A3spCVpWqA7bPHdy/nd2XnpMbTXPTxAktNkgFooYImARGxeGwjhgIWAFWgR0tDrmA/0EndlEADnOAdDT3ga1W+oJfPPIRD7lAsNnkxgRXhh2BEQzzOKo/zYi2iocbNRwiw94pBptGmtzeA9GuedYYtY5ipZXyUWMpst02zZLm5UhTsJFVSJX+X1pMqpbg68QieRUVSjtoEHCygYpllvlM6r8V0Y+jSp4xcwumRZuJVl3qjwjU3Lxqhf265TuCfEaTqWWzWbBzqlHZeQCXfT+NMRNtfWnQ2X5E8/x2mT/ziXiPOXEM2lQiw1cAgRCOjkOrzYqCSpGjRtFrE8S7xim47ttnFJ823K06hosOpXMTvDIFLjis0a+z7YhWeJY4h9+MqtxAtr06ixADWuamTVd42anh72pNCvju8fafp+dzt+ffp4eRs/PNe1utKf9oDTM5bAaSJ1Y/W6r6KY+TSCUxqqKU3FqFK33BVcfIUxl/7hxNzcWclUzXiYHd59Y3Lchv5yjFyh+CkoWmQSjBv0CVegjM4=","*${objectIds} = [107900]","*${obj} = 107900","*${objectList} = {'objectId': 107900, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}","*${objdict} = 107900","*${objectIdsList} = [107896, 107897, 107898, 107899, 107900]","eNrtlDFPwkAYhvf+iuZcgVxLlUDiYMBEjIEBdDEM1/YLnra9pndNQcPsonFycXU00V+F/g3vWrCloLLreO/Te+/73rt+Q6YfD/o9PeY0GOst3WGBgEDs32i6jhzmApKiiXFFrX0+Vks0iB0HOEep6BJBlKp2yCWzL8ERJ5QLJZ4vZAmI63YF+OtEMsrPiEddpRuVXGbhKYdIqZa5u6IPqZ9WhkxsGlW8V8Wmblgtw2hZGFWKxt2ACirNr9PvcZHJanok8wlizyuhDnBnA4JJGA2n4bobP4KJTYOyfgXThEXuQRSRadY3ikkCtMYiGeaodGg3ywDjhtWom8WW01iXuNHExoLNKn83yIssSYf5vyRZ/0/y5ySTJKltnaa1VZq5B3LBAwHd1IdnJ+aQypHTZh5LQ0U7daNRb7ZRjnmH8tDLKi02LsnhxPHk4GKrHX6f8MZLRT74NnwFmOtZa8vMkQA5uEqw2HcJLa8RkViorfP7Rxq+393OX58+Xt7mD89lr2UBiIRBgW33rja/S8Rju78odC33OJSTG1ZH8khbXJ2mfgctdchGvcQiikGb6Z9htoPW","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:40', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:40', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['u...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:40', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['uawei.org'], 'ite...","*${objectIds} = [107901]","*${obj} = 107901","*${objectList} = {'objectId': 107901, 'protocolField': 'TSG_FILED_GTP_APN'}","*${objdict} = 107901","*${objectIdsList} = [107896, 107897, 107898, 107899, 107900, 107901]","eNp1kkFv0zAUx+/7FJbhNHWTkxamVeLUgshUdZMSuKAJOfaj82THIbYpY+p5lyFOXLhyRNo+VeFrYLttFoJ2Svz/vef3/N6/0OgkP50jZ0S1QGPEdGWhsi+u9xDCTHPAXkwJGYSzMotwxLljDIzBUeTU0qCGDH/U5SUwOxPGBvHdVvaAcp5ZUA/kfNCihS9eCBWLJWmrc5BgIWRl3PSTPjRavfrIqy3AT5fL5WFJBXeHTCs8QHj/ksffXtJZo61mWsanvC6Ks0Gez3AbIvwIJlrqJvInw+RoeDzpYDMVppb0KuDKSdkhLz8z6Qepq8BIB2SVsIJK8QX65K1XeXx2K0qgTQU8q2dCiTirhBDyL/bzmkJtL2KP6UN3ClQJTXFVx0LDVt9sZQqGxQwLfgk9mG3aIEfHJO2hOd2sBlNnQ+r663dR/769Wd/9+PPrfv3tZ/+u3JW7HrCo3+9a7od1Yjqo3jkBpyRNDsjzA5KiZDROkvGIdOPeGIhLGqXPWtW48nT7nP8c42rvVXjMhJ+0hYkU3vxzpzajiGiFzv13Fb1utsb31DYO9lboL1qL3iI=","*${objectIds} = [107902]","*${obj} = 107902","*${objectList} = {'objectId': 107902, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}","*${objdict} = 107902","*${objectIdsList} = [107896, 107897, 107898, 107899, 107900, 107901, 107902]","eNrlVj2P0zAY3vMrLLP2TnbStLpKTC1IQegO0cJCbkgTqzIksRU7iOPUmQV0EwsrIxL8qsLfwHaSJk187Qo6RRn8Ps/7Yb/Pm3jFwLPl1SUoBc03YAZilkuSy8e3DgAwZgmByugiNNLrTGz0Ei7LOCZCQGNMIhlpq/ZQS7Z+S2L5nAqpjW9qswKiJAkkyYZIhRWrG26SjUetPU6pKibg2KR1ff+8fcfQQnQN0XNt2FNWZJHJDefB4uWQ8oIVsso08X3PtxPcU4ROmiLKN6TLSmihDoeyXMOoA1B+aodUBDmVNErpRzLwFkvVjjosJHnCGc3lofdr5ZloHHfNqiELImLjdwtCVUcIZ2G/jhCCUQi52pxBzeZDuIW9SEEVH6HpeOr5PfAyykzdeZmmPajpvD6FDlQpqQk6vUBeF+QrWgWELnLxGZqcIRfg8Qzj2RgfhOGvBCmMstxuUXo79l7ygkkWs7R/zCrMe1I0akTn5oEWgmtppm8jdrSSReLdkNJKEtnBe+TYEvopas529C/PHz42e/ihzh0+NXOT/2bm8IObN3Dd0GFCUiJJYLonqn9hC1L1B56zlJnTg488PPUu5rCFxYIKnkY3/b4q5MmHOC1FX+X3K9iqTpiRbE32X4PWXkljr1pJRKv0I7qpoUaKMCqldt19+Ur578+fdj+//fnxa3f3vR9rWa73Gh1MVs2xifi4SlGXZ9EoFOX6qt7LoDUlV3cdcniJuXbq7jr6m+qYCNXlSMGyKImzBX8BYe1EfA==","*${objectIds} = [107903]","*${obj} = 107903","*${objectList} = {'objectId': 107903, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}","*${objdict} = 107903","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLewNNNRANPmUNoCSluCaUsDAyhtCKWNoLRxLACWohNl","eNrlVL1O8zAU3fMUllkLckKgUIkBtUj00ycYWlgQQk5yVQxOHMW2aEHMLCAmFlZGJHiqwmtgJy1J0/KzM/qc6+N7zrXdF+hfb38PacmSAWqhUCQKErV15SCEQxEBNqBHSMOuYzmwS9zTYQhS4hyMqKIWtTvMUgRnEKr/TCoLHk1gQ9Ao6iqI5xnDMXlIOYss7jZKWKQHEjKL+t7aDN5ncd4Z9ojnLpP1ZeIh12+5bsv3cKMq3E2YYkb8Mq8nVc50s0cLnURzXqM6IMMFFAzTrD9K59XkLgwDltTxcxhdiCzazjI6KnzjbT6AjNEVjI5rZ3aLCAhp+s3VjarjPNUp3dwk/oS7bvzdHNunLKErHT3SyU9Zbv4qy1IDR8BBQTfXkcV5JcnMK2kLLvJI8dKqaw5o45KWHSZTXvRZtW2YnWHIzVsTs/6+znfhSHEMcQCf8ZV4YW2aOFZg3lqNrPquUdMhYqqV3Tq+e2Dp2+3N+OXx/fl1fP9U1+rpYNoDHoA44SKkynqr1X0WsbRCfXf53GrdgsuLpQ72J37mxqNT8yfB7Gdz7Ewm7Ng34+QKxSdmaJVpcK7RBwLRQaY=","*${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:42', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...","*${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:42', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...","*${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:42', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item...","*${objectIds} = [107904]","*${obj} = 107904","*${objectList} = {'objectId': 107904, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}","*${objdict} = 107904","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLewNNNRANPmUNoCSluCaUsDAyhtCKWNoLQxlDaJBQA24xTm","eNp1kkFv0zAUx+/7FJbhhLrJSQvTKnFqQQRV3aRkXNA0OfajeLLjENuUMfW8y9BOXLhyRIJP1fE1sN02DUGcEv9/7/k9v/cvNHqdn86RM6JaoDFiurJQ2ec3BwhhpjlgL6aEDMJZmUU44twxBsbgKHJqaVBDhj/q8gqYnQljg/h2K3tAOc8sqD25GLRo4YsXQsViSdrqHCRYCFkZN/2kd41WLz/wagvw4+VyeVRSwd0R0woPEH5yxeNvL+ms0VYzLeNTXhXF2SDPZ7gNEX4EEy11E/mjYXI8PJl0sJkKU0t6HXDlpOyQF5+Y9IPUVWCkA7JKWEGl+Ax98sarPD67FSXQpgKe1TOhRJxVQgj5G/t5TaG272OP6b47BaqEpriuY6Fhq2+2MgXDYoYFv4QezDZtkOMT8rSH5nSzGkydDanrL19F/XB3u/757fePX+v77/27clfuesCivty13A/rxHRQvXMCTkmaHJJnhyRFyWicJOPRsBt3biAuaZTuGzauPN0+5x/HuNp7Ff5nwo/awkQKb/65U5tRRLRCF/67il43W+N7ahsHByv0B1+/3ig=","*${objectIds} = [107905]","*${obj} = 107905","*${objectList} = {'objectId': 107905, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}","*${objdict} = 107905","eNpTqc5PykpNLvFMKfbJLC6pVbBViDY0MLewNNNRANPmUNoCSluCaUsDAyhtCKWNoLQxlDaB0qaxAOMfFmg=","eNpTqc5PykpNLvFMKa5VsFWINjQwt7A001EA0+ZQ2gJKW4JpSwMDKG0IpY2gtDGUNoHSprEAR04UzA==","eNpTqS7OLy1KTvXJLC6pVbBViK5Wz0/KSk0u8UxRt1IwNDC3sDTTUVAvKMovyU/Oz3HLTM0BSaiHBLvHB7s6hwZ5hkTGB/uHBjm7xju6uASp1+ooYBphQawRPv7OjiGe/n7YjbHEZYybp4+rS7x7SEC8p2+wJ0iznp4eAIsIQw4=","eNpTqU5JLS7JzEssyczP88ksLqlVsFWIrlbPT8pKTS7xTFG3UjA0MLc0MNZRUC8oyi/JT87PcctMzQFJqIcEu8cHuzqHBnmGRMa7uAaHePo5hnj6+8U7urgEqdfqKGCaY0KSOT7+zmAGdrNMCZmlp6cHADbqRSc=","eNpTqS7OLy1KTvXJLC6pVbBViK5Wyk/KSk0u8UxRslIwNDC3sDTTUVAqKMovyU/Oz3HLTM0BSSiFBLvHB7s6hwZ5hkTGB/uHBjm7xju6uAQp1eooYBphQawRPv7OjiGe/n7YjbHEZYybp4+rS7x7SEC8p2+wJ0iznp4eAGXYQrQ=","eNpTqU5JLS7JzEssyczP88ksLqlVsFWIrlbKT8pKTS7xTFGyUjA0MLc0MNZRUCooyi/JT87PcctMzQFJKIUEu8cHuzqHBnmGRMa7uAaHePo5hnj6+8U7urgEKdXqKGCaY0KSOT7+zmAGdrNMCZmlp6cHABOfRNI=","*${policyName} = autotestintercept","*${policyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotestintercept\", \"policyType\": \"tsg_security\", \"action\": \"allow\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"a...","*${action} = intercept","*${policyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotestintercept\", \"policyType\": \"tsg_security\", \"action\": \"intercept\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\"...","*${keyring} = 1","*${decryption} = 1","*${decrypt_mirror} = {'enable': 1, 'mirror_profile': 493}","*${decrypt_mirror} = {\"enable\": 1, \"mirror_profile\": 493}","*${appIdObjects} = ['http', 'ssl']","*${key} = ssl","*${appObjId} = 77159","*{\"protocol\":\"SSL\",\"keyring\": ${keyring},\"decryption\":${decryption},\"decrypt_mirror\":${decrypt_mirror}}","*${userRegionStr} = {\"protocol\":\"SSL\",\"keyring\": 1,\"decryption\":1,\"decrypt_mirror\":{\"enable\": 1, \"mirror_profile\": 493}}","*${policyJson} = {'opAction': 'add', 'returnData': '1', 'policyList': {'policyName': 'autotestintercept', 'policyType': 'tsg_security', 'action': 'intercept', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc'...","*${bodyJson} = {\"opAction\": \"add\", \"returnData\": \"1\", \"policyList\": {\"policyName\": \"autotestintercept\", \"policyType\": \"tsg_security\", \"action\": \"intercept\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\"...","eNqdVN9v2jAQfu9fEfEwpIqUAKGBTjxQoF0kCoiESROqItc+UrchzmynE0X87zuH9MdUuq57Svzd3Xff3dk3mwahNYefOSht5YqnsXVm5ZL36plION3UqVhnPIGalRFJ1qo3ESkeVgg9/ZMkEb8iCYxLoFr1QpkjqvkaRK4Ln6NbIAyk6m2rCwXS7seQ6uqZVc02+lakttznV/XmSbN14lRrVrVPKWTaHqVUMBRlnONHntUsBquEaHjxMabj+rEBBiJNUQIXqQHvATKbJPxh75xjKskfyZMZPGi6HUbt03bDtV235dmEsI5NOw5reoS2gTS+kHX21W22i2+ZQaN2O9xkYEhIlmGXCs76nULinXXEiCa9bUVk/UJK5cyqEMYqNasiQecyHaLdgA0D7bs85kojtC2PE7KGIizXQmNjOCaVptaXCCPAuGgVRwooTkxvjJU85/wjKMe2hyRWxmDOTJwnhN4n+7xOgYxFjP+N5xRDUPS1ChMHq5Vp8APMSRobAdtdyT6HeJ8Yi5BCCyoSExwEYxN3DxuJYyz5GVC5yUqhr4BozaUUsiCBlNwkUNr3eITE5uIh6HZbO5NZiRxrRGCJDb+5Q20+MzGO1+memkpKKRccEmOohMFlFIwGi7kf/oiC6WI+GEX94XBeQba3FJ1/pRhPB/3Qn04O03Tfo7nwx6NhdBnOIv8q8A8Fdx3n4+DZt+lkFE0WV+ej+WGSxsck/dnkcGzzc328LuZpLi0pJ7x8y9n6kHM4CkJ/UjT13QF1HfdTPH+bUtdp/4cmUyxeSXxp5RNeGgS3gs+mBb15cUuv7bmo1PMa7W5pDyBBq5CvvIyFq++4sVh57RW9BZYnUGhcXu9wuZglU+zU3zoezOc=","eNqtVcGOmzAQvecrEOdsBYRsQqQe0oTdUrEQBVKpqirkNQ51SzCyzUpslH+vMSSQNOqStjc87808j3keh0T5FPieUjCcJcpMgSTjKOPv9wNFUSGJkSqChqYNq/WOJdVSDQoIEWOqDMaAgypaZYhlTlIMSxczXgW/NmEBAMgxyWQ+FhoUopzLCjWa507sP/9AkLM6cTKemOZQmUz0saV86xIDlAoaoWf0lhEjxnEGjmrtFgRGZIoTV4CuTSxtNGzBnBJOIEkfMEolQw2DxyiwF5u1E36JlnYQOt48dHwvmi+Xa7XJPAz/qGD+nYLrL+RHT5Xxf+ije4bEJfJf66cQ2m6FJH5Ba5Al0hZ7sakT+gLSQp65C0pEpSrIyiiVqys0n8Y1TXunXYEDDmqRFtziVNimdVa7W8ycDHMMUvx6kYPZZxGNzzsheYh3kqgamqHfafd3mqHo5kzXZ6apdngbVu/RNE7n2xh8iRismyw44cJx6gWh/jdjY2QaF4gHGvFj6pXrUDPDMq+ZnCURQ7CgmJcticHvKC5SVEt1D4SRQhR8y/1T676/awJ/s17Y/Y0/taY3F7/J81PLelPgwXHtZfQYriLnKXB6XiXthrKrj75nR97m6YPddx7oN5Sfr/ref+Pf/mTHO4Xw/BolzfTc/162fgICV+1I/kQlFQ/I2T2ToxjSMj9O4itItMOUEnquVA2CDDyn6CKpeoEkPRJbEdNA4qY1OhEOp7PqNhOCRL4Rat2t6HXQUFTWPGQC5bRAg4PyC41DzA8=","*${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'intercept', 'appIdObjects': [75744, 77159], 'appSelectorObjects': [], 'destination': [{'objectId': 107903, 'protocolField': 'TSG_SEC...","*${policy} = {'action': 'intercept', 'appIdObjects': [75744, 77159], 'appSelectorObjects': [], 'destination': [{'objectId': 107903, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107904, 'protocol...","*${policyIdList} = [52342]","*${policyObj} = {'policyType': 'tsg_security', 'policyIds': [52342]}","*[{'policyType': 'tsg_security', 'policyIds': [52342]}]","*${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52342]}]","eNpTqc5PykpNLvFMqVWwVYg2NDC3sDTTUQDT5lDaAkpbgmlLAwMobQiljaC0MZQ2gdKmsQAdWxRZ","*${policyId} = [{'policyType': 'tsg_security', 'policyIds': [52342]}]","*${objdict} = 107896","*${objdict} = 107897","*${objdict} = {'policyType': 'tsg_security', 'policyIds': [52342]}","eNotzCkOgDAURdGtVCCbpmXofxUsoGvAMRgMAhxh7yRw1XGnuY9535arrufjRjelaMrZu09DYfm1iAlb7LDHAfmMz/iMT3ziE5/4xCc+8YlPfOIr0YcQXux4LEE=","eNpTqS7Iz8lMrvRMKa5VsFWIrlaH8EMqC1LVrRTUS4rT44tTk0uLMksq1XUU1OGqgZLRpkbGJgaxtToKJOsyJEuXUWxtLAATWjt6","*LoginAndAddLocalIP","*login_logout_switch","*adc_api, adc_log, adc_verify, tsg_adc, tsg_adc_wp, tsg_bf_api, tsg_device","*'${loginType}' == 'api', BifangLoginAndAddLocalIP, ELSE IF, '${loginType}' != '${None}', UiLoginAndAddLocalIP","*BifangLoginAndAddLocalIP","*login_logout","*tsg_adc, tsg_bf_api","*ApiLoginAndAddLocalIP","*ApiLogin","*Get","*REST","*<p><b>Sends a GET request to the endpoint.\x3c/b>\x3c/p>","*/${version}/user/encryptpwd?password=${password}","*http","*Object","*<p><b>Asserts the field as JSON object.\x3c/b>\x3c/p>","*response body","*assertions","*Integer","*<p><b>Asserts the field as JSON integer.\x3c/b>\x3c/p>","*$.code, 200","*<p><b>Asserts the field as JSON string.\x3c/b>\x3c/p>","*$.data.encryptpwd","*${pwd}","*${pwd} = ['Gg1Etyh7fs1y/v/K2XOJDg==']","*Get From List","*<p>Returns the value specified with an <code>index\x3c/code> from <code>list\x3c/code>.\x3c/p>","*${pwd}, 0","*${pwdstr}","*${pwdstr} = Gg1Etyh7fs1y/v/K2XOJDg==","*Gg1Etyh7fs1y/v/K2XOJDg==","*Set Global Variable","*<p>Makes a variable available globally in all tests and suites.\x3c/p>","*${encodePassword}, ${pwdstr}","*${encodePassword} = Gg1Etyh7fs1y/v/K2XOJDg==","*${encodePassword}","*Post","*<p><b>Sends a POST request to the endpoint.\x3c/b>\x3c/p>","*/${version}/user/login?username=${username}&password=${encodePassword}&authMode=${authmode}","*$.code","*${rescode} = [200]","*[200]","*$.data.token","*${tokenGlobal}","*${tokenGlobal} = ['e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&']","*${tokenGlobal}, 0","*${tokenStr}","*${tokenStr} = e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","*e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","*${token}, ${tokenStr}","*${token} = e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","*${token}","*${headers}, {\"Contest-Type\":\"application/json\",\"Authorization\":\"${token}\"}","*${headers} = {\"Contest-Type\":\"application/json\",\"Authorization\":\"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&\"}","*InitPotocol","*${appDict}","*${appDict} = {}","*${appVDict}","*${appVDict} = {}","*Connect To Database Using Custom Params","*DatabaseLibrary","*<p>Loads the DB API 2.0 module given `dbapiModuleName` then uses it to connect to the database using the map string `db_custom_param_string`.\x3c/p>","*pymysql, ${mysqlHost}","*Executing : Connect To Database Using Custom Params : pymysql.connect(db_api_2.connect(host='192.168.44.72',port=3306,user='root',passwd='bifang!@#',database='tsg-bifang')) ","*Query","eNptj11uQkEIhbdyVmA3YEyadAfquzgXIymXGYHpz+47TlMTkz4R4By+w7btjsGBvDLEWk+cgpVL7pOSV7Y8IStunf0bl+pT+EHap4cSn6KKM8M5uxsvoABBJRL1guxNOTbY82hbSjXSB4csDk42AQfvfK/eDaWuK9kyTue1DiUZ+KupFEnkMASV+6WpG6MRyqvqmcr7/6DfaK/xJiWfYXPx985T8EUmg1xG/O1L2/0A0aRtWg==","eNoLdvVxdQ5RSC/KLy2Iz0zRyckvj0/KL81LSSyq1ClKTc/Mz4vPS8xNVXAL8vdVKClOj89PyopPLAApVgj3cA1yVcgsji9LzMlMsTVUcPRzUUDSZKueUVJSoK7gH4QqWlycgymYkleMKZiGTXtuYiY2/fkZmIJFWK3PLFAHAIbNVpo=","*${app_id}","eNptzb0KwjAYheFbOVuXLq5CB9GIg1qsgmNITUw/SZOSH7Xgxaub0qwP5+Wwp7qkSFZjjkNSfgRewJFt2fIE7V0aOMnSuAdvXbJS+LH0SpOz3IpeYd3UO8SguWtvXAzfMc4b1jBQ4HdhSFYzLPYr/ERV0cU4FKibfw3BTFHaMMVrLu8F5XrXTdFn7+mDbz4xXfI=","*${app_id} = ((75167, 32, 'dns'), (75479, 45, 'ftp'), (75744, 67, 'http'), (76907, 175, 'rtp'), (77048, 182, 'sip'), (77159, 199, 'ssl'), (77950, 8004, 'MAIL'), (77952, 8006, 'DoH'))","*${app_length}","*${app_length} = 8","*${n} IN RANGE [ ${app_length} ]","*${n} = 0","*${n}","*0","*Set To Dictionary","*<p>Adds the given <code>key_value_pairs\x3c/code> and <code>items\x3c/code> to the <code>dictionary\x3c/code>.\x3c/p>","*${appDict}, ${app_id}[${n}][2]=${app_id}[${n}][0]","*${appVDict}, ${app_id}[${n}][2]=${app_id}[${n}][1]","*{'dns': 75167}","*{'dns': 32}","*${n} = 1","*1","*{'dns': 75167, 'ftp': 75479}","*{'dns': 32, 'ftp': 45}","*${n} = 2","*2","*{'dns': 75167, 'ftp': 75479, 'http': 75744}","*{'dns': 32, 'ftp': 45, 'http': 67}","*${n} = 3","*3","*{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907}","*{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175}","*${n} = 4","*4","*{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048}","*{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182}","*${n} = 5","*5","*{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048, 'ssl': 77159}","*{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182, 'ssl': 199}","*${n} = 6","*6","*{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048, 'ssl': 77159, 'MAIL': 77950}","*{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182, 'ssl': 199, 'MAIL': 8004}","*${n} = 7","*7","*{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048, 'ssl': 77159, 'MAIL': 77950, 'DoH': 77952}","*{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182, 'ssl': 199, 'MAIL': 8004, 'DoH': 8006}","*Disconnect From Database","*<p>Disconnects from the database.\x3c/p>","*Executing : Disconnect From Database","*${objprotol}, ${appDict}","*${objprotol} = {'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048, 'ssl': 77159, 'MAIL': 77950, 'DoH': 77952}","*${appportol}, ${appVDict}","*${appportol} = {'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182, 'ssl': 199, 'MAIL': 8004, 'DoH': 8006}","*GetProtocol","*${objprotol}, http","*${HTTP_ID1}","*${HTTP_ID1} = 75744","*${objprotol}, rtp","*${RTP_ID1}","*${RTP_ID1} = 76907","*${objprotol}, dns","*${DNS_ID1}","*${DNS_ID1} = 75167","*${objprotol}, MAIL","*${MAIL_ID1}","*${MAIL_ID1} = 77950","*${objprotol}, ftp","*${FTP_ID1}","*${FTP_ID1} = 75479","*${objprotol}, sip","*${SIP_ID1}","*${SIP_ID1} = 77048","*${objprotol}, ssl","*${SSL_ID1}","*${SSL_ID1} = 77159","*${objprotol}, DoH","*${DOH_ID1}","*${DOH_ID1} = 77952","*${HTTP_ID}, ${HTTP_ID1}","*${HTTP_ID} = 75744","*${RTP_ID}, ${RTP_ID1}","*${RTP_ID} = 76907","*${DNS_ID}, ${DNS_ID1}","*${DNS_ID} = 75167","*${MAIL_ID}, ${MAIL_ID1}","*${MAIL_ID} = 77950","*${FTP_ID}, ${FTP_ID1}","*${FTP_ID} = 75479","*${SIP_ID}, ${SIP_ID1}","*${SIP_ID} = 77048","*${SSL_ID}, ${SSL_ID1}","*${SSL_ID} = 77159","*${DOH_ID}, ${DOH_ID1}","*${DOH_ID} = 77952","*${appportol}, http","*${HTTP_VID1}","*${HTTP_VID1} = 67","*${appportol}, rtp","*${RTP_VID1}","*${RTP_VID1} = 175","*${appportol}, dns","*${DNS_VID1}","*${DNS_VID1} = 32","*${appportol}, MAIL","*${MAIL_VID1}","*${MAIL_VID1} = 8004","*${appportol}, ftp","*${FTP_VID1}","*${FTP_VID1} = 45","*${appportol}, sip","*${SIP_VID1}","*${SIP_VID1} = 182","*${appportol}, ssl","*${SSL_VID1}","*${SSL_VID1} = 199","*${appportol}, DoH","*${DOH_VID1}","*${DOH_VID1} = 8006","*${HTTP_VID}, ${HTTP_VID1}","*${HTTP_VID} = 67","*${RTP_VID}, ${RTP_VID1}","*${RTP_VID} = 175","*${DNS_VID}, ${DNS_VID1}","*${DNS_VID} = 32","*${MAIL_VID}, ${MAIL_VID1}","*${MAIL_VID} = 8004","*${FTP_VID}, ${FTP_VID1}","*${FTP_VID} = 45","*${SIP_VID}, ${SIP_VID1}","*${SIP_VID} = 182","*${SSL_VID}, ${SSL_VID1}","*${SSL_VID} = 199","*${DOH_VID}, ${DOH_VID1}","*${DOH_VID} = 8006","*InitTemplate","*${path}/data/template/template.yaml","*${YAML}","eNqtzLEKgCAURuFXkZa23MNaCnqCtgvyQzeTtETv0ttHS9De9p3lTCziD6dWH1jVBmrLvHbVk63WQ0tz4VwIS/QHjVx2ORM5JCvFWST/8SkbZ1ogIOGYAoRfNBdiqPq/j0ajr5sb+0NLkA==","*${YAML} = #ip正向用例\n\"ip_batch_mode\":\n #\"ip_v4_single\":\n \"datafomat\": \"complate\" #完整数据:complate;部分数据:part\n \"opAction\": \"add\"\n \"returnData\": 1\n \"objectList\":\n - \n \"objectId\": \n \"objectType\": \"ip\"\n ...","*${LOADED}","*${LOADED} = {'ip_batch_mode': {'datafomat': 'complate', 'opAction': 'add', 'returnData': 1, 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isE...","*${LOADED}, ip_batch_mode","*${objMode}","*${objMode} = {'datafomat': 'complate', 'opAction': 'add', 'returnData': 1, 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'obj...","*${objMode}, objectList","*${objList} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [None], 'a...","*${toJson}","*${toJson} = {\"datafomat\": \"complate\", \"opAction\": \"add\", \"returnData\": 1, \"objectList\": [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"obj...","*${objList} = [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"...","*${objModeJson}, ${toJson}","*${objModeJson} = {\"datafomat\": \"complate\", \"opAction\": \"add\", \"returnData\": 1, \"objectList\": [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"obj...","*${objListMode}, ${objList}","*${objListMode} = [{\"objectId\": null, \"objectType\": \"ip\", \"objectSubType\": \"endpoint\", \"isValid\": 1, \"isInitialize\": 0, \"isExclusion\": 0, \"objectName\": \"auttest\\u5355ip\\u6307\\u5b9a\\u7aef\\u53e3\", \"objectDesc\": \"test\", \"...","*${LOADED}, policy_template","*${policyMode}","eNpdjjELwjAQhf9KBiGLFF0FB6VjdeouR3KUYOyV3IUSgv/dpBVFx/e9e3y3yRN5Z9KFLD7VUWVN08mIo1EflAZr9VbpgBLD2IJAgfsC1k3nWArI73iFBy6jKCRYqs9hn6alER5ujCYGJ6m28BV5T3NFkTH0MHCFNVs6ezB3v6p2C+lo+PmjRTb/4qZpXh3QRlk=","*${policyMode}, policyList","*${policyList} = {'policyName': 'autotest', 'policyType': 'tsg_security', 'action': 'allow', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotest', 'effectiveRange': None, 'userRegion': None, 'source'...","eNpdjrEKAjEQRH8lBEsJ2goWylVyWF0vS7IcwXh7ZDfIEfx3kyiKlvPeLLOrLHRimh5qr7Km+WDF06R3SoNzeq10RElx6kCgwG0BMwVvl96zFJDf8Qw3bEdJSLCoT3FY5maExwujTdHLUi18h0Kge0WJMQ4wcoU1OzoGsNfwmto00tP480eHbP+HjTFPgg1EHA==","*${policyList} = {\"policyName\": \"autotest\", \"policyType\": \"tsg_security\", \"action\": \"allow\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"autotest\", \"effectiveRange\": null, \"userRegion\": null, \"source\"...","*${policyModeJson}, ${toJson}","eNpdjsEKwjAQRH8lBI9S9Cp4UHqS6ql3WZIlBGO3ZDdIKP67SSuKHufNDm9X00jBm3wmiyem4an2atI0Hox4GvROabBWr5WOKCkOLQgUuC1g2XWepYDpHS9wx3mUhARL9Tns8zg3wu7KaFL0kmsLX1EI9KgoMcYeHFdYs6VjAHMLi2ozk47czx8tsvkXN03zAj78R04=","*${policyListMode}, ${policyList}","*${policyListMode} = {\"policyName\": \"autotest\", \"policyType\": \"tsg_security\", \"action\": \"allow\", \"userTags\": \"\", \"doBlacklist\": 0, \"doLog\": 1, \"policyDesc\": \"autotest\", \"effectiveRange\": null, \"userRegion\": null, \"source\"...","*${addTestClentIPFlag}==1, AddLocalIPObject","*${addTsgUIAPIFlag}==1, SecurityPolicyAllowTSGUIAPIAdd","*LogoutAndDelLocalIP","*'${loginType}' == 'api', BifangLogoutAndDelLocalIP, ELSE IF, '${loginType}' != '${None}', UiLogoutAndDelLocalIP","*BifangLogoutAndDelLocalIP","*ApiLogoutAndDelLocalIP","*to_LogoutAndDelLocalIP_LogoutAndDelLocalIP","*${addTsgUIAPIFlag}==1, SecurityPolicyAllowTSGUIAPIDEL","*${addTestClentIPFlag}==1, DelLocalIPObject","*ApiLogout","*/${version}/user/logout, headers=${headers}","*Error in file 'C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case\\security\\http\\demo.robot': Resource file '..\\..\\..\\keyword\\common\\verify.robot' does not exist."]); +</script> +<script type="text/javascript"> +window.output["stats"] = [[{"elapsed":"00:00:24","fail":0,"label":"Critical Tests","pass":1},{"elapsed":"00:00:24","fail":0,"label":"All Tests","pass":1}],[{"elapsed":"00:00:24","fail":0,"label":"admission","pass":1},{"elapsed":"00:00:24","fail":0,"label":"basic","pass":1}],[{"elapsed":"00:00:26","fail":0,"id":"s1","label":"Gap Tsg Api","name":"Gap Tsg Api","pass":1},{"elapsed":"00:00:24","fail":0,"id":"s1-s1","label":"Gap Tsg Api.Case","name":"Case","pass":1},{"elapsed":"00:00:24","fail":0,"id":"s1-s1-s1","label":"Gap Tsg Api.Case.Security","name":"Security","pass":1},{"elapsed":"00:00:24","fail":0,"id":"s1-s1-s1-s1","label":"Gap Tsg Api.Case.Security.Http","name":"Http","pass":1},{"elapsed":"00:00:24","fail":0,"id":"s1-s1-s1-s1-s1","label":"Gap Tsg Api.Case.Security.Http.Demo","name":"Demo","pass":1}]]; +</script> +<script type="text/javascript"> +window.output["errors"] = [[1992,4,1250]]; +</script> +<script type="text/javascript"> +window.output["baseMillis"] = 1622614279695; +</script> +<script type="text/javascript"> +window.output["generated"] = 26158; +</script> +<script type="text/javascript"> +window.settings = {"defaultLevel":"INFO","minLevel":"INFO","reportURL":"report.html","rpa":false,"splitLogBase":"log","title":""}; +</script> +<title></title> +</head> +<body> +<div id="javascript-disabled"> + <h1>Opening Robot Framework log failed</h1> + <ul> + <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li> + <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li> + <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li> + </ul> +</div> +<script type="text/javascript">removeJavaScriptDisabledWarning();</script> + +<div id="header"></div> +<div id="statistics-container"></div> + +<script type="text/javascript"> +$(document).ready(function() { + try { + var topsuite = window.testdata.suite(); + } catch (error) { + addJavaScriptDisabledWarning(error); + return; + } + initLayout(topsuite.name, 'Log'); + addStatistics(); + addErrors(); + addExecutionLog(topsuite); + addLogLevelSelector(window.settings['minLevel'], window.settings['defaultLevel']); + if (window.location.hash) { + makeElementVisible(window.location.hash.substring(1)); + } else { + expandSuite(topsuite); + } +}); + +function addLogLevelSelector(minLevel, defaultLevel) { + var controller = LogLevelController(minLevel, defaultLevel); + if (controller.showLogLevelSelector()) { + var selector = $.tmpl('logLevelSelectorTemplate', controller); + selector.find('select').val(controller.defaultLogLevel()); + selector.appendTo($('#top-right-header')); + $('#report-or-log-link').find('a').css({'border-bottom-left-radius': '0'}); + setMessageVisibility(controller.defaultLogLevel()); + } +} + +function addErrors() { + var errors = window.testdata.errorIterator(); + if (errors.hasNext()) { + $.tmpl('errorHeaderTemplate').appendTo($('body')); + drawErrorsRecursively(errors, $('#errors')); + } +} + +function drawErrorsRecursively(errors, target) { + var elements = popFromIterator(errors, 10); + $.tmpl('errorTemplate', elements).appendTo(target); + if (errors.hasNext()) + setTimeout(function () { drawErrorsRecursively(errors, target); }, 0); + else { + // Errors may have moved scroll position. Resetting location re-scrolls. + if (window.location.hash) + window.location.replace(window.location.hash); + highlightLinkTarget(); + } +} + +function highlightLinkTarget() { + if (window.location.hash) { + var target = $(window.location.hash); + highlight(target); + } +} + +function highlight(element, color) { + if (color === undefined) + color = 242; + if (color < 255) { + element.css({'background-color': 'rgb('+color+','+color+','+color+')'}); + setTimeout(function () { highlight(element, color+1); }, 300); + } else { + element.css({'background-color': ''}); + } +} + +function popFromIterator(iterator, upTo) { + var result = []; + while (iterator.hasNext() > 0 && result.length < upTo) + result.push(iterator.next()); + return result; +} + +function makeElementVisible(id) { + window.testdata.ensureLoaded(id, function (ids) { + util.map(ids, expandElementWithId); + if (ids.length) { + expandCriticalFailed(window.testdata.findLoaded(util.last(ids))); + window.location.hash = ''; + window.location.hash = id; + highlightLinkTarget(); + } + }); +} + +function addExecutionLog(main) { + $('body').append($(testOrTask('<h2>{Test} Execution Log</h2>')), + $.tmpl('suiteTemplate', main)); +} +</script> + +<script type="text/x-jquery-tmpl" id="totalStatisticsRowTemplate"> + <tr class="row-${$item.index}"> + <td class="stats-col-name"> + <div class="stat-name"> + <span>{{html label}}</span> + </div> + </td> + {{tmpl($data) 'statColumnsTemplate'}} + </tr> +</script> + +<script type="text/x-jquery-tmpl" id="tagStatisticsRowTemplate"> + <tr class="row-${$item.index}"> + <td class="stats-col-name" title="{{html doc}}"> + <div class="stat-name"> + <span>{{html label}}</span> + {{if info}}(${info}){{/if}} + </div> + <div class="tag-links"> + {{each links}} + <span>[<a href="{{html $value.url}}" title="{{html $value.url}}">{{html $value.title}}</a>]</span> + {{/each}} + </div> + </td> + {{tmpl($data) 'statColumnsTemplate'}} + </tr> +</script> + +<script type="text/x-jquery-tmpl" id="suiteStatisticsRowTemplate"> + <tr onclick="makeElementVisible('${id}')" class="row-${$item.index}"> + <td class="stats-col-name" title="{{html label}}"> + <div class="stat-name"> + <a href="#${id}"><span class="parent-name">{{html formatParentName}}</span>{{html name}}</a> + </div> + </td> + {{tmpl($data) 'statColumnsTemplate'}} + </tr> +</script> + +<script type="text/x-jquery-tmpl" id="errorHeaderTemplate"> + <h2>{{= testOrTask('{Test}')}} Execution Errors</h2> + <table id="errors"></table> +</script> + +<script type="text/x-jquery-tmpl" id="errorTemplate"> + <tr id="${id}" class="message-row"> + <td class="error-time"> + {{if link}} + <a onclick="makeElementVisible('${link}')" href="#${link}" title="Link to details">${date} ${time}</a> + {{else}} + ${date} ${time} + {{/if}} + </td> + <td class="${level.toLowerCase()} level"><span class="label ${level.toLowerCase()}">${level}</span></td> + <td class="message">{{html text}}</td> + <td class="select-message" onclick="javascript:selectMessage('${id}')" title="Select message text"> + <div></div> + </td> + </tr> +</script> + +<script type="text/x-jquery-tmpl" id="suiteTemplate"> + <div id="${id}" class="suite"> + <div class="element-header closed" onclick="toggleSuite('${id}')"> + <div class="element-header-left" title="{{html fullName}}"> + <span class="elapsed" title="Elapsed time">${times.elapsedTime}</span> + <span class="label ${status.toLowerCase()}">SUITE</span> + <span class="name">{{html name}}</span> + </div> + <div class="element-header-right" onclick="stopPropagation(event)" title=""> + <a class="expand" title="Expand all" href="javascript:expandAll('${id}')"></a> + <a class="collapse" title="Collapse all" href="javascript:collapseAll('${id}')"></a> + <a class="link" title="Link to this suite" href="#${id}" onclick="makeElementVisible('${id}')"></a> + </div> + <div class="element-header-toggle" title="Toggle visibility"></div> + </div> + <div class="children"> + <table class="metadata"> + <tr> + <th>Full Name:</th> + <td>{{html fullName}}</td> + </tr> + {{if doc()}} + <tr> + <th>Documentation:</th> + <td class="doc">{{html doc()}}</td> + </tr> + {{/if}} + {{each metadata}} + <tr> + <th>{{html $value[0]}}:</th> + <td class="doc">{{html $value[1]}}</td> + </tr> + {{/each}} + {{if source}} + <tr> + <th>Source:</th> + {{if relativeSource}} + <td><a href="${relativeSource}">{{html source}}</a></td> + {{else}} + <td>{{html source}}</td> + {{/if}} + </tr> + {{/if}} + <tr> + <th>Start / End / Elapsed:</th> + <td>${times.startTime} / ${times.endTime} / ${times.elapsedTime}</td> + </tr> + <tr> + <th>Status:</th> + <td>{{tmpl($data) 'suiteStatusMessageTemplate'}}</td> + </tr> + {{if message()}} + <tr> + <th>Message:</th> + <td class="message">{{html message()}}</td> + </tr> + {{/if}} + </table> + </div> + </div> +</script> + +<script type="text/x-jquery-tmpl" id="testTemplate"> + <div id="${id}" class="test"> + <div class="element-header closed" onclick="toggleTest('${id}')"> + <div class="element-header-left" title="{{html fullName}}"> + <span class="elapsed" title="Elapsed time">${times.elapsedTime}</span> + <span class="label ${status.toLowerCase()}">{{= testOrTask('{TEST}')}}</span> + <span class="name">{{html name}}</span> + {{if !isCritical}}(non-critical){{/if}} + </div> + <div class="element-header-right" onclick="stopPropagation(event)" title=""> + <a class="expand" title="Expand all" href="javascript:expandAll('${id}')"></a> + <a class="collapse" title="Collapse all" href="javascript:collapseAll('${id}')"></a> + <a class="link" title="Link to this {{= testOrTask('{test}')}}" href="#${id}" onclick="makeElementVisible('${id}')"></a> + </div> + <div class="element-header-toggle" title="Toggle visibility"></div> + </div> + <div class="children"> + <table class="metadata"> + <tr> + <th>Full Name:</th> + <td>{{html fullName}}</td> + </tr> + {{if doc()}} + <tr> + <th>Documentation:</th> + <td class="doc">{{html doc()}}</td> + </tr> + {{/if}} + {{if tags.length}} + <tr> + <th>Tags:</th> + <td>{{html tags.join(', ')}}</td> + </tr> + {{/if}} + {{if timeout}} + <tr> + <th>Timeout:</th> + <td>{{html timeout}}</td> + </tr> + {{/if}} + <tr> + <th>Start / End / Elapsed:</th> + <td>${times.startTime} / ${times.endTime} / ${times.elapsedTime}</td> + </tr> + <tr> + <th>Status:</th> + <td><span class="label ${status.toLowerCase()}">${status}</span> ({{if isCritical}}critical{{else}}non-critical{{/if}})</td> + </tr> + {{if message()}} + <tr> + <th>Message:</th> + <td class="message">{{html message()}}</td> + </tr> + {{/if}} + </table> + </div> + </div> +</script> + +<script type="text/x-jquery-tmpl" id="keywordTemplate"> + <div id="${id}" class="keyword"> + <div class="element-header closed" onclick="toggleKeyword('${id}')"> + <div class="element-header-left" title="{{html name}}"> + <span class="elapsed" title="Elapsed time">${times.elapsedTime}</span> + <span class="label keyword ${status.toLowerCase()}">${type}</span> + <span>{{html assign}}</span> + <span class="name"><span class="parent-name">{{html libname}}{{if libname}} . {{/if}}</span>{{html name}}</span> + <span class="arg">{{html arguments}}</span> + </div> + <div class="element-header-right" onclick="stopPropagation(event)"> + <a class="expand" title="Expand all" href="javascript:expandAll('${id}')"></a> + <a class="collapse" title="Collapse all" href="javascript:collapseAll('${id}')"></a> + <a class="link" title="Link to this keyword" href="#${id}" onclick="makeElementVisible('${id}')"></a> + </div> + <div class="element-header-toggle" title="Toggle visibility"></div> + </div> + <div class="children"> + <table class="metadata keyword-metadata"> + {{if doc()}} + <tr> + <th>Documentation:</th> + <td class="doc">{{html doc()}}</td> + </tr> + {{/if}} + {{if tags}} + <tr> + <th>Tags:</th> + <td>{{html tags}}</td> + </tr> + {{/if}} + {{if timeout}} + <tr> + <th>Timeout:</th> + <td>{{html timeout}}</td> + </tr> + {{/if}} + <tr> + <th>Start / End / Elapsed:</th> + <td>${times.startTime} / ${times.endTime} / ${times.elapsedTime}</td> + </tr> + </table> + </div> + </div> +</script> + +<script type="text/x-jquery-tmpl" id="messageTemplate"> + <table id="${id}" class="messages ${level.toLowerCase()}-message"> + <tr class="message-row"> + <td class="time">${time}</td> + <td class="${level.toLowerCase()} level"><span class="label ${level.toLowerCase()}">${level}</span></td> + <td class="message">{{html text}}</td> + <td class="select-message" onclick="javascript:selectMessage('${id}')" title="Select message text"> + <div></div> + </td> + </tr> + </table> +</script> + +<script type="text/x-jquery-tmpl" id="logLevelSelectorTemplate"> + <div id="log-level-selector"> + Log level: + <select onchange="logLevelSelected(this.options[selectedIndex].value)"> + <option value="2">INFO</option> + <option value="1">DEBUG</option> + {{if showTrace()}}<option value="0">TRACE</option>{{/if}} + </select> + </div> +</script> + +</body> +</html> diff --git a/output.xml b/output.xml new file mode 100644 index 0000000..6938977 --- /dev/null +++ b/output.xml @@ -0,0 +1,41762 @@ +<?xml version="1.0" encoding="UTF-8"?> +<robot generator="Robot 3.1.2 (Python 3.6.8 on win32)" generated="20210602 14:11:19.630" rpa="false"> +<suite id="s1" name="Gap Tsg Api" source="C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api"> +<kw name="LoginAndAddLocalIP" library="login_logout_switch" type="setup"> +<tags> +<tag>adc_api</tag> +<tag>adc_log</tag> +<tag>adc_verify</tag> +<tag>tsg_adc</tag> +<tag>tsg_adc_wp</tag> +<tag>tsg_bf_api</tag> +<tag>tsg_device</tag> +</tags> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>'${loginType}' == 'api'</arg> +<arg>BifangLoginAndAddLocalIP</arg> +<arg>ELSE IF</arg> +<arg>'${loginType}' != '${None}'</arg> +<arg>UiLoginAndAddLocalIP</arg> +</arguments> +<kw name="BifangLoginAndAddLocalIP" library="login_logout"> +<tags> +<tag>tsg_adc</tag> +<tag>tsg_bf_api</tag> +</tags> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>ApiLoginAndAddLocalIP</arg> +</arguments> +<msg timestamp="20210602 14:11:20.959" level="INFO">ApiLoginAndAddLocalIP</msg> +<status status="PASS" starttime="20210602 14:11:20.958" endtime="20210602 14:11:20.959"></status> +</kw> +<kw name="ApiLogin" library="login_logout"> +<kw name="Get" library="REST"> +<tags> +<tag>http</tag> +</tags> +<doc>*Sends a GET request to the endpoint.*</doc> +<arguments> +<arg>/${version}/user/encryptpwd?password=${password}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:20.960" endtime="20210602 14:11:21.184"></status> +</kw> +<kw name="Object" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON object.*</doc> +<arguments> +<arg>response body</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.185" endtime="20210602 14:11:21.186"></status> +</kw> +<kw name="Integer" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON integer.*</doc> +<arguments> +<arg>$.code</arg> +<arg>200</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.186" endtime="20210602 14:11:21.216"></status> +</kw> +<kw name="String" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON string.*</doc> +<arguments> +<arg>$.data.encryptpwd</arg> +</arguments> +<assign> +<var>${pwd}</var> +</assign> +<msg timestamp="20210602 14:11:21.243" level="INFO">${pwd} = ['Gg1Etyh7fs1y/v/K2XOJDg==']</msg> +<status status="PASS" starttime="20210602 14:11:21.217" endtime="20210602 14:11:21.243"></status> +</kw> +<kw name="Get From List" library="Collections"> +<doc>Returns the value specified with an ``index`` from ``list``.</doc> +<arguments> +<arg>${pwd}</arg> +<arg>0</arg> +</arguments> +<assign> +<var>${pwdstr}</var> +</assign> +<msg timestamp="20210602 14:11:21.244" level="INFO">${pwdstr} = Gg1Etyh7fs1y/v/K2XOJDg==</msg> +<status status="PASS" starttime="20210602 14:11:21.244" endtime="20210602 14:11:21.244"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${pwdstr}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.245" level="INFO">Gg1Etyh7fs1y/v/K2XOJDg==</msg> +<status status="PASS" starttime="20210602 14:11:21.245" endtime="20210602 14:11:21.245"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${encodePassword}</arg> +<arg>${pwdstr}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.246" level="INFO">${encodePassword} = Gg1Etyh7fs1y/v/K2XOJDg==</msg> +<status status="PASS" starttime="20210602 14:11:21.245" endtime="20210602 14:11:21.246"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${encodePassword}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.246" level="INFO">Gg1Etyh7fs1y/v/K2XOJDg==</msg> +<status status="PASS" starttime="20210602 14:11:21.246" endtime="20210602 14:11:21.247"></status> +</kw> +<kw name="Post" library="REST"> +<tags> +<tag>http</tag> +</tags> +<doc>*Sends a POST request to the endpoint.*</doc> +<arguments> +<arg>/${version}/user/login?username=${username}&password=${encodePassword}&authMode=${authmode}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.247" endtime="20210602 14:11:21.263"></status> +</kw> +<kw name="Object" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON object.*</doc> +<arguments> +<arg>response body</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.264" endtime="20210602 14:11:21.265"></status> +</kw> +<kw name="Integer" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON integer.*</doc> +<arguments> +<arg>$.code</arg> +<arg>200</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.265" endtime="20210602 14:11:21.292"></status> +</kw> +<kw name="Integer" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON integer.*</doc> +<arguments> +<arg>$.code</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:21.319" level="INFO">${rescode} = [200]</msg> +<status status="PASS" starttime="20210602 14:11:21.293" endtime="20210602 14:11:21.319"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${rescode}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.320" level="INFO">[200]</msg> +<status status="PASS" starttime="20210602 14:11:21.319" endtime="20210602 14:11:21.320"></status> +</kw> +<kw name="String" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON string.*</doc> +<arguments> +<arg>$.data.token</arg> +</arguments> +<assign> +<var>${tokenGlobal}</var> +</assign> +<msg timestamp="20210602 14:11:21.366" level="INFO">${tokenGlobal} = ['e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&']</msg> +<status status="PASS" starttime="20210602 14:11:21.320" endtime="20210602 14:11:21.367"></status> +</kw> +<kw name="Get From List" library="Collections"> +<doc>Returns the value specified with an ``index`` from ``list``.</doc> +<arguments> +<arg>${tokenGlobal}</arg> +<arg>0</arg> +</arguments> +<assign> +<var>${tokenStr}</var> +</assign> +<msg timestamp="20210602 14:11:21.367" level="INFO">${tokenStr} = e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&</msg> +<status status="PASS" starttime="20210602 14:11:21.367" endtime="20210602 14:11:21.367"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${tokenStr}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.368" level="INFO">e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&</msg> +<status status="PASS" starttime="20210602 14:11:21.368" endtime="20210602 14:11:21.368"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${token}</arg> +<arg>${tokenStr}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.369" level="INFO">${token} = e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&</msg> +<status status="PASS" starttime="20210602 14:11:21.368" endtime="20210602 14:11:21.369"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${token}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.370" level="INFO">e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&</msg> +<status status="PASS" starttime="20210602 14:11:21.369" endtime="20210602 14:11:21.370"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${headers}</arg> +<arg>{"Contest-Type":"application/json","Authorization":"${token}"}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.373" level="INFO">${headers} = {"Contest-Type":"application/json","Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&"}</msg> +<status status="PASS" starttime="20210602 14:11:21.371" endtime="20210602 14:11:21.373"></status> +</kw> +<kw name="InitPotocol" library="login_logout"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<assign> +<var>${appDict}</var> +</assign> +<msg timestamp="20210602 14:11:21.374" level="INFO">${appDict} = {}</msg> +<status status="PASS" starttime="20210602 14:11:21.374" endtime="20210602 14:11:21.375"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<assign> +<var>${appVDict}</var> +</assign> +<msg timestamp="20210602 14:11:21.375" level="INFO">${appVDict} = {}</msg> +<status status="PASS" starttime="20210602 14:11:21.375" endtime="20210602 14:11:21.375"></status> +</kw> +<kw name="Connect To Database Using Custom Params" library="DatabaseLibrary"> +<doc>Loads the DB API 2.0 module given `dbapiModuleName` then uses it to +connect to the database using the map string `db_custom_param_string`.</doc> +<arguments> +<arg>pymysql</arg> +<arg>${mysqlHost}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.426" level="INFO">Executing : Connect To Database Using Custom Params : pymysql.connect(db_api_2.connect(host='192.168.44.72',port=3306,user='root',passwd='bifang!@#',database='tsg-bifang')) </msg> +<status status="PASS" starttime="20210602 14:11:21.376" endtime="20210602 14:11:21.440"></status> +</kw> +<kw name="Query" library="DatabaseLibrary"> +<doc>Uses the input `selectStatement` to query for the values that will be returned as a list of tuples. Set optional +input `sansTran` to True to run command without an explicit transaction commit or rollback. +Set optional input `returnAsDict` to True to return values as a list of dictionaries.</doc> +<arguments> +<arg>SELECT group_id,low_boundary,region_name FROM tsg_obj_app_id WHERE is_valid=1 AND region_name='http' OR region_name='ssl' OR region_name='dns' OR region_name='ftp' OR region_name='mail' OR region_name='doh' OR region_name='rtp' OR region_name='sip'</arg> +</arguments> +<assign> +<var>${app_id}</var> +</assign> +<msg timestamp="20210602 14:11:21.444" level="INFO">Executing : Query | SELECT group_id,low_boundary,region_name FROM tsg_obj_app_id WHERE is_valid=1 AND region_name='http' OR region_name='ssl' OR region_name='dns' OR region_name='ftp' OR region_name='mail' OR region_name='doh' OR region_name='rtp' OR region_name='sip' </msg> +<msg timestamp="20210602 14:11:21.450" level="INFO">${app_id} = ((75167, 32, 'dns'), (75479, 45, 'ftp'), (75744, 67, 'http'), (76907, 175, 'rtp'), (77048, 182, 'sip'), (77159, 199, 'ssl'), (77950, 8004, 'MAIL'), (77952, 8006, 'DoH'))</msg> +<status status="PASS" starttime="20210602 14:11:21.443" endtime="20210602 14:11:21.451"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${app_id}</arg> +</arguments> +<assign> +<var>${app_length}</var> +</assign> +<msg timestamp="20210602 14:11:21.454" level="INFO">Length is 8</msg> +<msg timestamp="20210602 14:11:21.455" level="INFO">${app_length} = 8</msg> +<status status="PASS" starttime="20210602 14:11:21.452" endtime="20210602 14:11:21.455"></status> +</kw> +<kw name="${n} IN RANGE [ ${app_length} ]" type="for"> +<kw name="${n} = 0" type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${n}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.456" level="INFO">0</msg> +<status status="PASS" starttime="20210602 14:11:21.456" endtime="20210602 14:11:21.457"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][0]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.457" endtime="20210602 14:11:21.457"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appVDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][1]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.458" endtime="20210602 14:11:21.458"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.459" level="INFO">{'dns': 75167}</msg> +<status status="PASS" starttime="20210602 14:11:21.459" endtime="20210602 14:11:21.459"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.460" level="INFO">{'dns': 32}</msg> +<status status="PASS" starttime="20210602 14:11:21.459" endtime="20210602 14:11:21.460"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.456" endtime="20210602 14:11:21.460"></status> +</kw> +<kw name="${n} = 1" type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${n}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.461" level="INFO">1</msg> +<status status="PASS" starttime="20210602 14:11:21.460" endtime="20210602 14:11:21.461"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][0]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.461" endtime="20210602 14:11:21.462"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appVDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][1]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.462" endtime="20210602 14:11:21.463"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.463" level="INFO">{'dns': 75167, 'ftp': 75479}</msg> +<status status="PASS" starttime="20210602 14:11:21.463" endtime="20210602 14:11:21.464"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.464" level="INFO">{'dns': 32, 'ftp': 45}</msg> +<status status="PASS" starttime="20210602 14:11:21.464" endtime="20210602 14:11:21.464"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.460" endtime="20210602 14:11:21.465"></status> +</kw> +<kw name="${n} = 2" type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${n}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.465" level="INFO">2</msg> +<status status="PASS" starttime="20210602 14:11:21.465" endtime="20210602 14:11:21.465"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][0]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.466" endtime="20210602 14:11:21.466"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appVDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][1]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.467" endtime="20210602 14:11:21.467"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.468" level="INFO">{'dns': 75167, 'ftp': 75479, 'http': 75744}</msg> +<status status="PASS" starttime="20210602 14:11:21.467" endtime="20210602 14:11:21.468"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.469" level="INFO">{'dns': 32, 'ftp': 45, 'http': 67}</msg> +<status status="PASS" starttime="20210602 14:11:21.468" endtime="20210602 14:11:21.469"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.465" endtime="20210602 14:11:21.469"></status> +</kw> +<kw name="${n} = 3" type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${n}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.470" level="INFO">3</msg> +<status status="PASS" starttime="20210602 14:11:21.469" endtime="20210602 14:11:21.470"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][0]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.470" endtime="20210602 14:11:21.471"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appVDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][1]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.471" endtime="20210602 14:11:21.471"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.472" level="INFO">{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907}</msg> +<status status="PASS" starttime="20210602 14:11:21.472" endtime="20210602 14:11:21.472"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.473" level="INFO">{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175}</msg> +<status status="PASS" starttime="20210602 14:11:21.472" endtime="20210602 14:11:21.473"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.469" endtime="20210602 14:11:21.473"></status> +</kw> +<kw name="${n} = 4" type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${n}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.474" level="INFO">4</msg> +<status status="PASS" starttime="20210602 14:11:21.473" endtime="20210602 14:11:21.474"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][0]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.474" endtime="20210602 14:11:21.475"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appVDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][1]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.475" endtime="20210602 14:11:21.475"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.476" level="INFO">{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048}</msg> +<status status="PASS" starttime="20210602 14:11:21.476" endtime="20210602 14:11:21.477"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.478" level="INFO">{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182}</msg> +<status status="PASS" starttime="20210602 14:11:21.477" endtime="20210602 14:11:21.478"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.473" endtime="20210602 14:11:21.478"></status> +</kw> +<kw name="${n} = 5" type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${n}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.479" level="INFO">5</msg> +<status status="PASS" starttime="20210602 14:11:21.478" endtime="20210602 14:11:21.479"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][0]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.479" endtime="20210602 14:11:21.480"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appVDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][1]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.480" endtime="20210602 14:11:21.481"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.481" level="INFO">{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048, 'ssl': 77159}</msg> +<status status="PASS" starttime="20210602 14:11:21.481" endtime="20210602 14:11:21.481"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.482" level="INFO">{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182, 'ssl': 199}</msg> +<status status="PASS" starttime="20210602 14:11:21.482" endtime="20210602 14:11:21.482"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.478" endtime="20210602 14:11:21.482"></status> +</kw> +<kw name="${n} = 6" type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${n}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.483" level="INFO">6</msg> +<status status="PASS" starttime="20210602 14:11:21.483" endtime="20210602 14:11:21.483"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][0]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.484" endtime="20210602 14:11:21.484"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appVDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][1]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.485" endtime="20210602 14:11:21.485"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.486" level="INFO">{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048, 'ssl': 77159, 'MAIL': 77950}</msg> +<status status="PASS" starttime="20210602 14:11:21.485" endtime="20210602 14:11:21.486"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.486" level="INFO">{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182, 'ssl': 199, 'MAIL': 8004}</msg> +<status status="PASS" starttime="20210602 14:11:21.486" endtime="20210602 14:11:21.486"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.483" endtime="20210602 14:11:21.487"></status> +</kw> +<kw name="${n} = 7" type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${n}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.487" level="INFO">7</msg> +<status status="PASS" starttime="20210602 14:11:21.487" endtime="20210602 14:11:21.488"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][0]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.488" endtime="20210602 14:11:21.488"></status> +</kw> +<kw name="Set To Dictionary" library="Collections"> +<doc>Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``.</doc> +<arguments> +<arg>${appVDict}</arg> +<arg>${app_id}[${n}][2]=${app_id}[${n}][1]</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.489" endtime="20210602 14:11:21.489"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.490" level="INFO">{'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048, 'ssl': 77159, 'MAIL': 77950, 'DoH': 77952}</msg> +<status status="PASS" starttime="20210602 14:11:21.489" endtime="20210602 14:11:21.490"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.490" level="INFO">{'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182, 'ssl': 199, 'MAIL': 8004, 'DoH': 8006}</msg> +<status status="PASS" starttime="20210602 14:11:21.490" endtime="20210602 14:11:21.491"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.487" endtime="20210602 14:11:21.491"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.455" endtime="20210602 14:11:21.491"></status> +</kw> +<kw name="Disconnect From Database" library="DatabaseLibrary"> +<doc>Disconnects from the database.</doc> +<msg timestamp="20210602 14:11:21.491" level="INFO">Executing : Disconnect From Database</msg> +<status status="PASS" starttime="20210602 14:11:21.491" endtime="20210602 14:11:21.492"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>${appDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.494" level="INFO">${objprotol} = {'dns': 75167, 'ftp': 75479, 'http': 75744, 'rtp': 76907, 'sip': 77048, 'ssl': 77159, 'MAIL': 77950, 'DoH': 77952}</msg> +<status status="PASS" starttime="20210602 14:11:21.492" endtime="20210602 14:11:21.494"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>${appVDict}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.496" level="INFO">${appportol} = {'dns': 32, 'ftp': 45, 'http': 67, 'rtp': 175, 'sip': 182, 'ssl': 199, 'MAIL': 8004, 'DoH': 8006}</msg> +<status status="PASS" starttime="20210602 14:11:21.494" endtime="20210602 14:11:21.496"></status> +</kw> +<kw name="GetProtocol" library="login_logout"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>http</arg> +</arguments> +<assign> +<var>${HTTP_ID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.498" level="INFO">${HTTP_ID1} = 75744</msg> +<status status="PASS" starttime="20210602 14:11:21.497" endtime="20210602 14:11:21.498"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>rtp</arg> +</arguments> +<assign> +<var>${RTP_ID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.499" level="INFO">${RTP_ID1} = 76907</msg> +<status status="PASS" starttime="20210602 14:11:21.498" endtime="20210602 14:11:21.499"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>dns</arg> +</arguments> +<assign> +<var>${DNS_ID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.499" level="INFO">${DNS_ID1} = 75167</msg> +<status status="PASS" starttime="20210602 14:11:21.499" endtime="20210602 14:11:21.499"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>MAIL</arg> +</arguments> +<assign> +<var>${MAIL_ID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.500" level="INFO">${MAIL_ID1} = 77950</msg> +<status status="PASS" starttime="20210602 14:11:21.500" endtime="20210602 14:11:21.500"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>ftp</arg> +</arguments> +<assign> +<var>${FTP_ID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.501" level="INFO">${FTP_ID1} = 75479</msg> +<status status="PASS" starttime="20210602 14:11:21.501" endtime="20210602 14:11:21.501"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>sip</arg> +</arguments> +<assign> +<var>${SIP_ID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.502" level="INFO">${SIP_ID1} = 77048</msg> +<status status="PASS" starttime="20210602 14:11:21.501" endtime="20210602 14:11:21.502"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>ssl</arg> +</arguments> +<assign> +<var>${SSL_ID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.502" level="INFO">${SSL_ID1} = 77159</msg> +<status status="PASS" starttime="20210602 14:11:21.502" endtime="20210602 14:11:21.502"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>DoH</arg> +</arguments> +<assign> +<var>${DOH_ID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.503" level="INFO">${DOH_ID1} = 77952</msg> +<status status="PASS" starttime="20210602 14:11:21.503" endtime="20210602 14:11:21.503"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${HTTP_ID}</arg> +<arg>${HTTP_ID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.505" level="INFO">${HTTP_ID} = 75744</msg> +<status status="PASS" starttime="20210602 14:11:21.504" endtime="20210602 14:11:21.505"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${RTP_ID}</arg> +<arg>${RTP_ID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.507" level="INFO">${RTP_ID} = 76907</msg> +<status status="PASS" starttime="20210602 14:11:21.506" endtime="20210602 14:11:21.508"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${DNS_ID}</arg> +<arg>${DNS_ID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.510" level="INFO">${DNS_ID} = 75167</msg> +<status status="PASS" starttime="20210602 14:11:21.508" endtime="20210602 14:11:21.510"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${MAIL_ID}</arg> +<arg>${MAIL_ID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.512" level="INFO">${MAIL_ID} = 77950</msg> +<status status="PASS" starttime="20210602 14:11:21.510" endtime="20210602 14:11:21.513"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${FTP_ID}</arg> +<arg>${FTP_ID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.515" level="INFO">${FTP_ID} = 75479</msg> +<status status="PASS" starttime="20210602 14:11:21.513" endtime="20210602 14:11:21.515"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${SIP_ID}</arg> +<arg>${SIP_ID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.518" level="INFO">${SIP_ID} = 77048</msg> +<status status="PASS" starttime="20210602 14:11:21.515" endtime="20210602 14:11:21.518"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${SSL_ID}</arg> +<arg>${SSL_ID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.520" level="INFO">${SSL_ID} = 77159</msg> +<status status="PASS" starttime="20210602 14:11:21.518" endtime="20210602 14:11:21.520"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${DOH_ID}</arg> +<arg>${DOH_ID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.522" level="INFO">${DOH_ID} = 77952</msg> +<status status="PASS" starttime="20210602 14:11:21.520" endtime="20210602 14:11:21.522"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>http</arg> +</arguments> +<assign> +<var>${HTTP_VID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.523" level="INFO">${HTTP_VID1} = 67</msg> +<status status="PASS" starttime="20210602 14:11:21.522" endtime="20210602 14:11:21.523"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>rtp</arg> +</arguments> +<assign> +<var>${RTP_VID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.524" level="INFO">${RTP_VID1} = 175</msg> +<status status="PASS" starttime="20210602 14:11:21.523" endtime="20210602 14:11:21.524"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>dns</arg> +</arguments> +<assign> +<var>${DNS_VID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.524" level="INFO">${DNS_VID1} = 32</msg> +<status status="PASS" starttime="20210602 14:11:21.524" endtime="20210602 14:11:21.524"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>MAIL</arg> +</arguments> +<assign> +<var>${MAIL_VID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.525" level="INFO">${MAIL_VID1} = 8004</msg> +<status status="PASS" starttime="20210602 14:11:21.525" endtime="20210602 14:11:21.525"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>ftp</arg> +</arguments> +<assign> +<var>${FTP_VID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.526" level="INFO">${FTP_VID1} = 45</msg> +<status status="PASS" starttime="20210602 14:11:21.525" endtime="20210602 14:11:21.526"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>sip</arg> +</arguments> +<assign> +<var>${SIP_VID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.527" level="INFO">${SIP_VID1} = 182</msg> +<status status="PASS" starttime="20210602 14:11:21.526" endtime="20210602 14:11:21.527"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>ssl</arg> +</arguments> +<assign> +<var>${SSL_VID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.527" level="INFO">${SSL_VID1} = 199</msg> +<status status="PASS" starttime="20210602 14:11:21.527" endtime="20210602 14:11:21.527"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${appportol}</arg> +<arg>DoH</arg> +</arguments> +<assign> +<var>${DOH_VID1}</var> +</assign> +<msg timestamp="20210602 14:11:21.528" level="INFO">${DOH_VID1} = 8006</msg> +<status status="PASS" starttime="20210602 14:11:21.528" endtime="20210602 14:11:21.528"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${HTTP_VID}</arg> +<arg>${HTTP_VID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.531" level="INFO">${HTTP_VID} = 67</msg> +<status status="PASS" starttime="20210602 14:11:21.528" endtime="20210602 14:11:21.531"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${RTP_VID}</arg> +<arg>${RTP_VID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.534" level="INFO">${RTP_VID} = 175</msg> +<status status="PASS" starttime="20210602 14:11:21.531" endtime="20210602 14:11:21.534"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${DNS_VID}</arg> +<arg>${DNS_VID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.537" level="INFO">${DNS_VID} = 32</msg> +<status status="PASS" starttime="20210602 14:11:21.535" endtime="20210602 14:11:21.537"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${MAIL_VID}</arg> +<arg>${MAIL_VID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.541" level="INFO">${MAIL_VID} = 8004</msg> +<status status="PASS" starttime="20210602 14:11:21.537" endtime="20210602 14:11:21.541"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${FTP_VID}</arg> +<arg>${FTP_VID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.544" level="INFO">${FTP_VID} = 45</msg> +<status status="PASS" starttime="20210602 14:11:21.541" endtime="20210602 14:11:21.544"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${SIP_VID}</arg> +<arg>${SIP_VID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.547" level="INFO">${SIP_VID} = 182</msg> +<status status="PASS" starttime="20210602 14:11:21.545" endtime="20210602 14:11:21.547"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${SSL_VID}</arg> +<arg>${SSL_VID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.550" level="INFO">${SSL_VID} = 199</msg> +<status status="PASS" starttime="20210602 14:11:21.548" endtime="20210602 14:11:21.550"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${DOH_VID}</arg> +<arg>${DOH_VID1}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.553" level="INFO">${DOH_VID} = 8006</msg> +<status status="PASS" starttime="20210602 14:11:21.551" endtime="20210602 14:11:21.553"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.497" endtime="20210602 14:11:21.553"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.373" endtime="20210602 14:11:21.553"></status> +</kw> +<kw name="InitTemplate" library="login_logout"> +<kw name="Get File" library="OperatingSystem"> +<doc>Returns the contents of a specified file.</doc> +<arguments> +<arg>${path}/data/template/template.yaml</arg> +</arguments> +<assign> +<var>${YAML}</var> +</assign> +<msg timestamp="20210602 14:11:21.555" level="INFO" html="yes">Getting file '<a href="file://C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\other\data\template\template.yaml">C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\other\data\template\template.yaml</a>'.</msg> +<msg timestamp="20210602 14:11:21.556" level="INFO">${YAML} = #ip正向用例 +"ip_batch_mode": + #"ip_v4_single": + "datafomat": "complate" #完整数据:complate;部分数据:part + "opAction": "add" + "returnData": 1 + "objectList": + - + "objectId": + "objectType": "ip" + ...</msg> +<status status="PASS" starttime="20210602 14:11:21.555" endtime="20210602 14:11:21.556"></status> +</kw> +<kw name="Safe Load" library="yaml"> +<doc>Parse the first YAML document in a stream +and produce the corresponding Python object.</doc> +<arguments> +<arg>${YAML}</arg> +</arguments> +<assign> +<var>${LOADED}</var> +</assign> +<msg timestamp="20210602 14:11:21.562" level="INFO">${LOADED} = {'ip_batch_mode': {'datafomat': 'complate', 'opAction': 'add', 'returnData': 1, 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isE...</msg> +<status status="PASS" starttime="20210602 14:11:21.557" endtime="20210602 14:11:21.562"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${LOADED}</arg> +<arg>ip_batch_mode</arg> +</arguments> +<assign> +<var>${objMode}</var> +</assign> +<msg timestamp="20210602 14:11:21.563" level="INFO">${objMode} = {'datafomat': 'complate', 'opAction': 'add', 'returnData': 1, 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'obj...</msg> +<status status="PASS" starttime="20210602 14:11:21.562" endtime="20210602 14:11:21.563"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objMode}</arg> +<arg>objectList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:21.563" level="INFO">${objList} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [None], 'a...</msg> +<status status="PASS" starttime="20210602 14:11:21.563" endtime="20210602 14:11:21.564"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${objMode}</arg> +</arguments> +<assign> +<var>${toJson}</var> +</assign> +<msg timestamp="20210602 14:11:21.564" level="INFO">${toJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:21.564" endtime="20210602 14:11:21.564"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${objList}</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:21.565" level="INFO">${objList} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:21.565" endtime="20210602 14:11:21.565"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${objModeJson}</arg> +<arg>${toJson}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.567" level="INFO">${objModeJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:21.565" endtime="20210602 14:11:21.567"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${objListMode}</arg> +<arg>${objList}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.569" level="INFO">${objListMode} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:21.568" endtime="20210602 14:11:21.569"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${LOADED}</arg> +<arg>policy_template</arg> +</arguments> +<assign> +<var>${policyMode}</var> +</assign> +<msg timestamp="20210602 14:11:21.570" level="INFO">${policyMode} = {'opAction': 'add', 'returnData': 1, 'policyList': {'policyName': 'autotest', 'policyType': 'tsg_security', 'action': 'allow', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotest', '...</msg> +<status status="PASS" starttime="20210602 14:11:21.570" endtime="20210602 14:11:21.570"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyMode}</arg> +<arg>policyList</arg> +</arguments> +<assign> +<var>${policyList}</var> +</assign> +<msg timestamp="20210602 14:11:21.571" level="INFO">${policyList} = {'policyName': 'autotest', 'policyType': 'tsg_security', 'action': 'allow', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotest', 'effectiveRange': None, 'userRegion': None, 'source'...</msg> +<status status="PASS" starttime="20210602 14:11:21.571" endtime="20210602 14:11:21.571"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${policyMode}</arg> +</arguments> +<assign> +<var>${toJson}</var> +</assign> +<msg timestamp="20210602 14:11:21.572" level="INFO">${toJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:21.571" endtime="20210602 14:11:21.572"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${policyList}</arg> +</arguments> +<assign> +<var>${policyList}</var> +</assign> +<msg timestamp="20210602 14:11:21.572" level="INFO">${policyList} = {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "effectiveRange": null, "userRegion": null, "source"...</msg> +<status status="PASS" starttime="20210602 14:11:21.572" endtime="20210602 14:11:21.573"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${policyModeJson}</arg> +<arg>${toJson}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.575" level="INFO">${policyModeJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:21.573" endtime="20210602 14:11:21.575"></status> +</kw> +<kw name="Set Global Variable" library="BuiltIn"> +<doc>Makes a variable available globally in all tests and suites.</doc> +<arguments> +<arg>${policyListMode}</arg> +<arg>${policyList}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.577" level="INFO">${policyListMode} = {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "effectiveRange": null, "userRegion": null, "source"...</msg> +<status status="PASS" starttime="20210602 14:11:21.575" endtime="20210602 14:11:21.577"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.554" endtime="20210602 14:11:21.578"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:20.960" endtime="20210602 14:11:21.578"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${addTestClentIPFlag}==1</arg> +<arg>AddLocalIPObject</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.578" endtime="20210602 14:11:21.579"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>ApiLoginAndAddLocalIP</arg> +</arguments> +<msg timestamp="20210602 14:11:21.579" level="INFO">ApiLoginAndAddLocalIP</msg> +<status status="PASS" starttime="20210602 14:11:21.579" endtime="20210602 14:11:21.580"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${addTsgUIAPIFlag}==1</arg> +<arg>SecurityPolicyAllowTSGUIAPIAdd</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.580" endtime="20210602 14:11:21.580"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:20.958" endtime="20210602 14:11:21.580"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:20.957" endtime="20210602 14:11:21.581"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:20.957" endtime="20210602 14:11:21.581"></status> +</kw> +<suite id="s1-s1" name="Case" source="C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\case"> +<suite id="s1-s1-s1" name="Security" source="C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\case\security"> +<suite id="s1-s1-s1-s1" name="Http" source="C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\case\security\http"> +<suite id="s1-s1-s1-s1-s1" name="Demo" source="C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\case\security\http\demo.robot"> +<test id="s1-s1-s1-s1-s1-t1" name="policy_http_allow"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${TEST NAME}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.693" level="INFO">policy_http_allow</msg> +<status status="PASS" starttime="20210602 14:11:21.692" endtime="20210602 14:11:21.694"></status> +</kw> +<kw name="PolilcysByTemplate" library="policy"> +<doc>根据测试数据文件,使用对应公共模板,创建策略及策略相关数据:策略信息,对象信息,引用文件信息,返回本策略创建的策略及策略相关数据,用于teamdow删除</doc> +<arguments> +<arg>${path}/data/security/http/demo_data.yaml</arg> +<arg>${TEST NAME}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${policyIds}</var> +</assign> +<kw name="Get File" library="OperatingSystem"> +<doc>Returns the contents of a specified file.</doc> +<arguments> +<arg>${dataFilePath}</arg> +</arguments> +<assign> +<var>${yamlData}</var> +</assign> +<msg timestamp="20210602 14:11:21.695" level="INFO" html="yes">Getting file '<a href="file://C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\other\data\security\http\demo_data.yaml">C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\other\data\security\http\demo_data.yaml</a>'.</msg> +<msg timestamp="20210602 14:11:21.696" level="INFO">${yamlData} = #policy:{"opAction":"add","refuseCode":true,"policyList":{"policyId":"","policyName":"dxytest","policyType":"tsg_security","action":"allow","userTags":"","doBlacklist":0,"doLog":1,"policyDesc":"","eff...</msg> +<status status="PASS" starttime="20210602 14:11:21.695" endtime="20210602 14:11:21.696"></status> +</kw> +<kw name="Safe Load" library="yaml"> +<doc>Parse the first YAML document in a stream +and produce the corresponding Python object.</doc> +<arguments> +<arg>${yamlData}</arg> +</arguments> +<assign> +<var>${loadedData}</var> +</assign> +<msg timestamp="20210602 14:11:21.765" level="INFO">${loadedData} = {'policy_http_allow_data': [{'opAction': 'add', 'returnData': 1, 'policyName': 'autotestmonitor', 'policyType': 'tsg_security', 'action': 'monitor', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'poli...</msg> +<status status="PASS" starttime="20210602 14:11:21.696" endtime="20210602 14:11:21.765"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${loadedData}</arg> +<arg>${keyword}_data</arg> +</arguments> +<assign> +<var>${policyList}</var> +</assign> +<msg timestamp="20210602 14:11:21.766" level="INFO">${policyList} = [{'opAction': 'add', 'returnData': 1, 'policyName': 'autotestmonitor', 'policyType': 'tsg_security', 'action': 'monitor', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotest', 'effec...</msg> +<status status="PASS" starttime="20210602 14:11:21.766" endtime="20210602 14:11:21.766"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:21.767" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:21.767" endtime="20210602 14:11:21.767"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${policyIds}</var> +</assign> +<msg timestamp="20210602 14:11:21.768" level="INFO">${policyIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:21.767" endtime="20210602 14:11:21.768"></status> +</kw> +<kw name="${key} IN [ @{policyList} ]" type="for"> +<kw name="${key} = {'opAction': 'add', 'returnData': 1, 'policyName': 'autotestmonitor', 'policyType': 'tsg_security', 'action': 'monitor', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotest', 'effect..." type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>passssssssss</arg> +</arguments> +<msg timestamp="20210602 14:11:21.769" level="INFO">passssssssss</msg> +<status status="PASS" starttime="20210602 14:11:21.769" endtime="20210602 14:11:21.769"></status> +</kw> +<kw name="CreatePolicysAndObjects" library="policy"> +<doc>组织单个策略数据${modleFilePath}策略模板文件路径 ${policyData}从数据文件中获取的单个策略数据</doc> +<arguments> +<arg>${key}</arg> +<arg>${keyword}</arg> +</arguments> +<assign> +<var>${objectId}</var> +<var>${policyId}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>获取模板</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.775" endtime="20210602 14:11:21.775"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${policyModeJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.775" endtime="20210602 14:11:21.776"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyModeJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:21.777" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:21.776" endtime="20210602 14:11:21.777"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>用data数据替换模板内容生成策略新增数据</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.777" endtime="20210602 14:11:21.778"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>condation</arg> +</arguments> +<assign> +<var>${condation}</var> +</assign> +<msg timestamp="20210602 14:11:21.779" level="INFO">${condation} = [{'protocolField': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'objList': [{'addItemList': [{'keywordArray': '$abce'}, {'keywordArray': '$abce1234'}]}, {'addItemList': [{'keyw...</msg> +<status status="PASS" starttime="20210602 14:11:21.778" endtime="20210602 14:11:21.779"></status> +</kw> +<kw name="CreateCondation" library="policy"> +<doc>解析策略条件,根据key值判断其在source、destation、filter中</doc> +<arguments> +<arg>${condation}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${sourceList}</var> +<var>${destinationList}</var> +<var>${filterList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>循环读取对象list</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.779" endtime="20210602 14:11:21.780"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${sourceList}</var> +</assign> +<msg timestamp="20210602 14:11:21.780" level="INFO">${sourceList} = []</msg> +<status status="PASS" starttime="20210602 14:11:21.780" endtime="20210602 14:11:21.780"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${destinationList}</var> +</assign> +<msg timestamp="20210602 14:11:21.781" level="INFO">${destinationList} = []</msg> +<status status="PASS" starttime="20210602 14:11:21.781" endtime="20210602 14:11:21.781"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${filterList}</var> +</assign> +<msg timestamp="20210602 14:11:21.782" level="INFO">${filterList} = []</msg> +<status status="PASS" starttime="20210602 14:11:21.781" endtime="20210602 14:11:21.782"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIdsList}</var> +</assign> +<msg timestamp="20210602 14:11:21.782" level="INFO">${objectIdsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:21.782" endtime="20210602 14:11:21.783"></status> +</kw> +<kw name="${key} IN [ @{objectListData} ]" type="for"> +<kw name="${key} = {'protocolField': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'objList': [{'addItemList': [{'keywordArray': '$abce'}, {'keywordArray': '$abce1234'}]}, {'addItemList': [{'keywo..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:21.784" level="INFO">${protocolField} = None</msg> +<status status="PASS" starttime="20210602 14:11:21.783" endtime="20210602 14:11:21.784"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.785" endtime="20210602 14:11:21.785"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:21.785" level="INFO">${protocolField} = None</msg> +<status status="PASS" starttime="20210602 14:11:21.785" endtime="20210602 14:11:21.785"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.786" endtime="20210602 14:11:21.786"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:21.787" level="INFO">${protocolField} = None</msg> +<status status="PASS" starttime="20210602 14:11:21.787" endtime="20210602 14:11:21.787"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:21.788" level="INFO">${objList} = [{'addItemList': [{'keywordArray': '$abce'}, {'keywordArray': '$abce1234'}]}, {'addItemList': [{'keywordArray': '$abce!@#$%^&*()_+'}, {'keywordArray': '$1234'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:21.787" endtime="20210602 14:11:21.788"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.789" endtime="20210602 14:11:21.789"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:21.790" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:21.789" endtime="20210602 14:11:21.790"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:21.791" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:21.790" endtime="20210602 14:11:21.791"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.792" endtime="20210602 14:11:21.792"></status> +</kw> +<msg timestamp="20210602 14:11:21.792" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:21.792" level="INFO">${objectType} = subscriberid</msg> +<status status="PASS" starttime="20210602 14:11:21.791" endtime="20210602 14:11:21.793"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.794" endtime="20210602 14:11:21.794"></status> +</kw> +<msg timestamp="20210602 14:11:21.795" level="INFO">${objectJson} = [{"objectId": null, "objectType":"subscriberid", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": ...</msg> +<status status="PASS" starttime="20210602 14:11:21.793" endtime="20210602 14:11:21.795"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.796" endtime="20210602 14:11:21.796"></status> +</kw> +<msg timestamp="20210602 14:11:21.796" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:21.796" level="INFO">${objectSubType} = subscriberid</msg> +<status status="PASS" starttime="20210602 14:11:21.795" endtime="20210602 14:11:21.796"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.797" endtime="20210602 14:11:21.798"></status> +</kw> +<msg timestamp="20210602 14:11:21.798" level="INFO">${objectJson} = [{"objectId": null, "objectType":"subscriberid", "objectSubType":"subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:21.797" endtime="20210602 14:11:21.798"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:21.799" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:21.799" endtime="20210602 14:11:21.799"></status> +</kw> +<msg timestamp="20210602 14:11:21.800" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:21.800" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:21.798" endtime="20210602 14:11:21.800"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.801" endtime="20210602 14:11:21.801"></status> +</kw> +<msg timestamp="20210602 14:11:21.801" level="INFO">${objectJson} = [{"objectId": null, "objectType":"subscriberid", "objectSubType":"subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:21.800" endtime="20210602 14:11:21.801"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.802" endtime="20210602 14:11:21.802"></status> +</kw> +<msg timestamp="20210602 14:11:21.803" level="INFO">${objectJson} = [{"objectId": null, "objectType":"subscriberid", "objectSubType":"subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:21.802" endtime="20210602 14:11:21.803"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:21.803" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:21.803" endtime="20210602 14:11:21.804"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:21.809" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:21.804" endtime="20210602 14:11:21.809"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': '$abce'}, {'keywordArray': '$abce1234'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.811" endtime="20210602 14:11:21.812"></status> +</kw> +<msg timestamp="20210602 14:11:21.812" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:21.812" level="INFO">${addItemList} = [{'keywordArray': '$abce'}, {'keywordArray': '$abce1234'}]</msg> +<status status="PASS" starttime="20210602 14:11:21.811" endtime="20210602 14:11:21.812"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:21.813" level="INFO">${addItemList} = [{"keywordArray": "$abce"}, {"keywordArray": "$abce1234"}]</msg> +<status status="PASS" starttime="20210602 14:11:21.812" endtime="20210602 14:11:21.813"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.814" endtime="20210602 14:11:21.814"></status> +</kw> +<msg timestamp="20210602 14:11:21.814" level="INFO">${addItemList} = [{"keywordArray": "$abce"}, {"keywordArray": "$abce1234"}]</msg> +<status status="PASS" starttime="20210602 14:11:21.813" endtime="20210602 14:11:21.814"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.815" endtime="20210602 14:11:21.816"></status> +</kw> +<msg timestamp="20210602 14:11:21.816" level="INFO">${addItemList} = [{"keywordArray": "$abce"}, {"keywordArray": "$abce1234"}]</msg> +<status status="PASS" starttime="20210602 14:11:21.815" endtime="20210602 14:11:21.816"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.817" endtime="20210602 14:11:21.817"></status> +</kw> +<msg timestamp="20210602 14:11:21.817" level="INFO">${objectJson} = [{"objectId": null, "objectType":"subscriberid", "objectSubType":"subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:21.816" endtime="20210602 14:11:21.817"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:21.818" level="INFO">${objectJson} = [{"objectId": null, "objectType":"subscriberid", "objectSubType":"subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:21.818" endtime="20210602 14:11:21.818"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:21.819" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectId...</msg> +<status status="PASS" starttime="20210602 14:11:21.818" endtime="20210602 14:11:21.819"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.830" endtime="20210602 14:11:21.830"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.831" endtime="20210602 14:11:21.831"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.832" endtime="20210602 14:11:21.832"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.832" endtime="20210602 14:11:21.832"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.831" endtime="20210602 14:11:21.832"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.830" endtime="20210602 14:11:21.833"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.810" endtime="20210602 14:11:21.833"></status> +</kw> +<kw name="${obj} = {'addItemList': [{'keywordArray': '$abce!@#$%^&*()_+'}, {'keywordArray': '$1234'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.834" endtime="20210602 14:11:21.834"></status> +</kw> +<msg timestamp="20210602 14:11:21.834" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:21.835" level="INFO">${addItemList} = [{'keywordArray': '$abce!@#$%^&*()_+'}, {'keywordArray': '$1234'}]</msg> +<status status="PASS" starttime="20210602 14:11:21.833" endtime="20210602 14:11:21.835"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:21.835" level="INFO">${addItemList} = [{"keywordArray": "$abce!@#$%^&*()_+"}, {"keywordArray": "$1234"}]</msg> +<status status="PASS" starttime="20210602 14:11:21.835" endtime="20210602 14:11:21.835"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.836" endtime="20210602 14:11:21.836"></status> +</kw> +<msg timestamp="20210602 14:11:21.837" level="INFO">${addItemList} = [{"keywordArray": "$abce!@#$%^&*()_+"}, {"keywordArray": "$1234"}]</msg> +<status status="PASS" starttime="20210602 14:11:21.836" endtime="20210602 14:11:21.837"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.839" endtime="20210602 14:11:21.839"></status> +</kw> +<msg timestamp="20210602 14:11:21.839" level="INFO">${addItemList} = [{"keywordArray": "$abce!@#$%^&*()_+"}, {"keywordArray": "$1234"}]</msg> +<status status="PASS" starttime="20210602 14:11:21.838" endtime="20210602 14:11:21.840"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.840" endtime="20210602 14:11:21.841"></status> +</kw> +<msg timestamp="20210602 14:11:21.841" level="INFO">${objectJson} = [{"objectId": null, "objectType":"subscriberid", "objectSubType":"subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:21.840" endtime="20210602 14:11:21.841"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:21.842" level="INFO">${objectJson} = [{"objectId": null, "objectType":"subscriberid", "objectSubType":"subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:21.841" endtime="20210602 14:11:21.842"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:21.842" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectId...</msg> +<status status="PASS" starttime="20210602 14:11:21.842" endtime="20210602 14:11:21.843"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.854" endtime="20210602 14:11:21.854"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.854" endtime="20210602 14:11:21.854"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.855" endtime="20210602 14:11:21.855"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.855" endtime="20210602 14:11:21.856"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.855" endtime="20210602 14:11:21.856"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.853" endtime="20210602 14:11:21.856"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.833" endtime="20210602 14:11:21.856"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.810" endtime="20210602 14:11:21.856"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:21.858" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'subscriberid', 'objectSubType': 'subscriberid', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName':...</msg> +<status status="PASS" starttime="20210602 14:11:21.857" endtime="20210602 14:11:21.858"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.859" endtime="20210602 14:11:21.859"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:21.859" endtime="20210602 14:11:21.860"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:21.861" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:21.860" endtime="20210602 14:11:21.861"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:21.861" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "subscriberid", "objectSubType": "subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName":...</msg> +<status status="PASS" starttime="20210602 14:11:21.861" endtime="20210602 14:11:21.862"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:21.863" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:21.862" endtime="20210602 14:11:21.863"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:21.864" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:21.863" endtime="20210602 14:11:21.864"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:21.865" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "subscriberid", "objectSubType": "subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": "$abce"}, {"keywordArray": "$abce1234"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}, {"objectId": null, "objectType": "subscriberid", "objectSubType": "subscriberid", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": "$abce"}, {"keywordArray": "$abce1234"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:22.149" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:21.864" endtime="20210602 14:11:22.149"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:22.151" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:22.151" endtime="20210602 14:11:22.152"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:22.152" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:22.152" endtime="20210602 14:11:22.153"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:22.153" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:21", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "abce" ], + "itemId" : 10074647, + "objectId" : 107866 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:21", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "abce1234" ], + "itemId" : 10074648, + "objectId" : 107866 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107866, + "objectName" : "auttest单ip指定端口", + "objectType" : "subscriberid", + "opTime" : "2021-06-02 14:11:21", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + }, { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:21", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "abce" ], + "itemId" : 10074649, + "objectId" : 107867 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:21", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "abce1234" ], + "itemId" : 10074650, + "objectId" : 107867 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107867, + "objectName" : "auttest单ip指定端口", + "objectType" : "subscriberid", + "opTime" : "2021-06-02 14:11:21", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:22.154" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:22.154" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:21', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:22.153" endtime="20210602 14:11:22.154"></status> +</kw> +<msg timestamp="20210602 14:11:22.154" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:21', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:21.862" endtime="20210602 14:11:22.154"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:22.156" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:22.156" endtime="20210602 14:11:22.156"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:22.157" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:22.156" endtime="20210602 14:11:22.157"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:22.157" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:22.157" endtime="20210602 14:11:22.157"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.158" endtime="20210602 14:11:22.158"></status> +</kw> +<msg timestamp="20210602 14:11:22.159" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:22.159" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:21', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['a...</msg> +<status status="PASS" starttime="20210602 14:11:22.158" endtime="20210602 14:11:22.159"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.160" endtime="20210602 14:11:22.160"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:21', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['abce'], 'itemId':..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.161" endtime="20210602 14:11:22.161"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.160" endtime="20210602 14:11:22.161"></status> +</kw> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:21', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['abce'], 'itemId':..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.162" endtime="20210602 14:11:22.162"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.161" endtime="20210602 14:11:22.162"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.160" endtime="20210602 14:11:22.162"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.155" endtime="20210602 14:11:22.163"></status> +</kw> +<msg timestamp="20210602 14:11:22.163" level="INFO">${objectIds} = [107866, 107867]</msg> +<status status="PASS" starttime="20210602 14:11:22.155" endtime="20210602 14:11:22.163"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:22.164" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:22.163" endtime="20210602 14:11:22.164"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:22.165" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:22.164" endtime="20210602 14:11:22.165"></status> +</kw> +<msg timestamp="20210602 14:11:22.165" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:22.165" level="INFO">${objectIds} = [107866, 107867]</msg> +<status status="PASS" starttime="20210602 14:11:21.858" endtime="20210602 14:11:22.165"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:22.166" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:22.166" endtime="20210602 14:11:22.166"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:22.167" level="INFO">${protocolField} = None</msg> +<status status="PASS" starttime="20210602 14:11:22.166" endtime="20210602 14:11:22.167"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:22.167" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:22.167" endtime="20210602 14:11:22.168"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107866" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:22.169" level="INFO">${objectList} = {'objectId': 107866, 'protocolField': None}</msg> +<status status="PASS" starttime="20210602 14:11:22.168" endtime="20210602 14:11:22.169"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.169" endtime="20210602 14:11:22.169"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.168" endtime="20210602 14:11:22.170"></status> +</kw> +<kw name="${obj} = 107867" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:22.170" level="INFO">${objectList} = {'objectId': 107866, 'protocolField': None}</msg> +<status status="PASS" starttime="20210602 14:11:22.170" endtime="20210602 14:11:22.171"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.171" endtime="20210602 14:11:22.171"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.170" endtime="20210602 14:11:22.171"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.168" endtime="20210602 14:11:22.172"></status> +</kw> +<msg timestamp="20210602 14:11:22.172" level="INFO">${objectIds} = [107866, 107867]</msg> +<msg timestamp="20210602 14:11:22.172" level="INFO">${objectList} = {'objectId': 107866, 'protocolField': None}</msg> +<status status="PASS" starttime="20210602 14:11:21.786" endtime="20210602 14:11:22.172"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.174" endtime="20210602 14:11:22.174"></status> +</kw> +<msg timestamp="20210602 14:11:22.174" level="INFO">${objectList} = {'objectId': 107866, 'protocolField': None}</msg> +<status status="PASS" starttime="20210602 14:11:22.173" endtime="20210602 14:11:22.175"></status> +</kw> +<msg timestamp="20210602 14:11:22.175" level="INFO">${objectIds} = [107866, 107867]</msg> +<msg timestamp="20210602 14:11:22.175" level="INFO">${objectList} = {'objectId': 107866, 'protocolField': None}</msg> +<status status="PASS" starttime="20210602 14:11:21.784" endtime="20210602 14:11:22.175"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:22.176" level="INFO">Length is 0</msg> +<msg timestamp="20210602 14:11:22.176" level="INFO">${len} = 0</msg> +<status status="PASS" starttime="20210602 14:11:22.176" endtime="20210602 14:11:22.176"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectIds}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.177" endtime="20210602 14:11:22.177"></status> +</kw> +<msg timestamp="20210602 14:11:22.177" level="INFO">${objectIdsList} = [107866, 107867]</msg> +<status status="PASS" starttime="20210602 14:11:22.177" endtime="20210602 14:11:22.178"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.179" endtime="20210602 14:11:22.179"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.178" endtime="20210602 14:11:22.180"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.783" endtime="20210602 14:11:22.180"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'endpoint', 'objList': [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'por..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:22.181" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:22.180" endtime="20210602 14:11:22.181"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.182" endtime="20210602 14:11:22.182"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:22.183" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:22.182" endtime="20210602 14:11:22.183"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.183" endtime="20210602 14:11:22.184"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:22.184" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:22.184" endtime="20210602 14:11:22.184"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:22.185" level="INFO">${objList} = [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]}, {'addItemList': [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255...</msg> +<status status="PASS" starttime="20210602 14:11:22.185" endtime="20210602 14:11:22.185"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.185" endtime="20210602 14:11:22.186"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:22.186" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:22.186" endtime="20210602 14:11:22.187"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:22.187" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:22.187" endtime="20210602 14:11:22.187"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.188" endtime="20210602 14:11:22.188"></status> +</kw> +<msg timestamp="20210602 14:11:22.189" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:22.189" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:22.188" endtime="20210602 14:11:22.189"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.190" endtime="20210602 14:11:22.190"></status> +</kw> +<msg timestamp="20210602 14:11:22.190" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:22.189" endtime="20210602 14:11:22.190"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.191" endtime="20210602 14:11:22.191"></status> +</kw> +<msg timestamp="20210602 14:11:22.192" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:22.192" level="INFO">${objectSubType} = endpoint</msg> +<status status="PASS" starttime="20210602 14:11:22.191" endtime="20210602 14:11:22.192"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.193" endtime="20210602 14:11:22.193"></status> +</kw> +<msg timestamp="20210602 14:11:22.193" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:22.192" endtime="20210602 14:11:22.194"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:22.195" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:22.194" endtime="20210602 14:11:22.195"></status> +</kw> +<msg timestamp="20210602 14:11:22.195" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:22.195" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:22.194" endtime="20210602 14:11:22.195"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.196" endtime="20210602 14:11:22.196"></status> +</kw> +<msg timestamp="20210602 14:11:22.197" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:22.196" endtime="20210602 14:11:22.197"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.198" endtime="20210602 14:11:22.198"></status> +</kw> +<msg timestamp="20210602 14:11:22.198" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:22.197" endtime="20210602 14:11:22.198"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:22.199" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:22.199" endtime="20210602 14:11:22.199"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:22.200" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:22.199" endtime="20210602 14:11:22.200"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.201" endtime="20210602 14:11:22.201"></status> +</kw> +<msg timestamp="20210602 14:11:22.202" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:22.202" level="INFO">${addItemList} = [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]</msg> +<status status="PASS" starttime="20210602 14:11:22.201" endtime="20210602 14:11:22.202"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:22.203" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:22.202" endtime="20210602 14:11:22.203"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.203" endtime="20210602 14:11:22.204"></status> +</kw> +<msg timestamp="20210602 14:11:22.204" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:22.203" endtime="20210602 14:11:22.204"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.205" endtime="20210602 14:11:22.205"></status> +</kw> +<msg timestamp="20210602 14:11:22.205" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:22.204" endtime="20210602 14:11:22.206"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.206" endtime="20210602 14:11:22.207"></status> +</kw> +<msg timestamp="20210602 14:11:22.207" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:22.206" endtime="20210602 14:11:22.207"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:22.208" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:22.208" endtime="20210602 14:11:22.208"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:22.209" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:22.208" endtime="20210602 14:11:22.209"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.221" endtime="20210602 14:11:22.221"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.221" endtime="20210602 14:11:22.222"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.222" endtime="20210602 14:11:22.223"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.222" endtime="20210602 14:11:22.223"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.222" endtime="20210602 14:11:22.223"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.220" endtime="20210602 14:11:22.223"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.200" endtime="20210602 14:11:22.224"></status> +</kw> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.2/24', 'port': '1-65535'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.225" endtime="20210602 14:11:22.225"></status> +</kw> +<msg timestamp="20210602 14:11:22.225" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:22.225" level="INFO">${addItemList} = [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.2/24', 'port': '1-65535'}]</msg> +<status status="PASS" starttime="20210602 14:11:22.224" endtime="20210602 14:11:22.225"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:22.227" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:22.226" endtime="20210602 14:11:22.227"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.227" endtime="20210602 14:11:22.228"></status> +</kw> +<msg timestamp="20210602 14:11:22.228" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:22.227" endtime="20210602 14:11:22.228"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.229" endtime="20210602 14:11:22.229"></status> +</kw> +<msg timestamp="20210602 14:11:22.230" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:22.228" endtime="20210602 14:11:22.230"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.231" endtime="20210602 14:11:22.231"></status> +</kw> +<msg timestamp="20210602 14:11:22.231" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:22.230" endtime="20210602 14:11:22.231"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:22.232" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:22.232" endtime="20210602 14:11:22.232"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:22.233" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:22.233" endtime="20210602 14:11:22.233"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.243" endtime="20210602 14:11:22.243"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.244" endtime="20210602 14:11:22.244"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.245" endtime="20210602 14:11:22.245"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.244" endtime="20210602 14:11:22.245"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.244" endtime="20210602 14:11:22.245"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.243" endtime="20210602 14:11:22.246"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.224" endtime="20210602 14:11:22.246"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.200" endtime="20210602 14:11:22.246"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:22.248" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定...</msg> +<status status="PASS" starttime="20210602 14:11:22.247" endtime="20210602 14:11:22.248"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.249" endtime="20210602 14:11:22.249"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:22.249" endtime="20210602 14:11:22.250"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:22.250" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:22.250" endtime="20210602 14:11:22.251"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:22.251" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u535...</msg> +<status status="PASS" starttime="20210602 14:11:22.251" endtime="20210602 14:11:22.251"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:22.252" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:22.252" endtime="20210602 14:11:22.253"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:22.253" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:22.253" endtime="20210602 14:11:22.254"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:22.254" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}, {"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:25.000" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:22.254" endtime="20210602 14:11:25.001"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:25.006" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:25.003" endtime="20210602 14:11:25.007"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.012" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.009" endtime="20210602 14:11:25.013"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:25.016" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "0", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"0-65535\"}", + "itemId" : 10074651, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107868, + "opTime" : "2021-06-02 14:11:24", + "opUser" : 425, + "port" : "0-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"1-65535\"}", + "itemId" : 10074652, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107868, + "opTime" : "2021-06-02 14:11:24", + "opUser" : 425, + "port" : "1-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107868, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:21", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + }, { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "0", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"0-65535\"}", + "itemId" : 10074653, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107869, + "opTime" : "2021-06-02 14:11:24", + "opUser" : 425, + "port" : "0-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"1-65535\"}", + "itemId" : 10074654, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107869, + "opTime" : "2021-06-02 14:11:24", + "opUser" : 425, + "port" : "1-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107869, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:21", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:25.017" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:25.018" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2':...</msg> +<status status="PASS" starttime="20210602 14:11:25.014" endtime="20210602 14:11:25.018"></status> +</kw> +<msg timestamp="20210602 14:11:25.019" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2':...</msg> +<status status="PASS" starttime="20210602 14:11:22.252" endtime="20210602 14:11:25.019"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:25.023" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:25.022" endtime="20210602 14:11:25.023"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:25.024" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.024" endtime="20210602 14:11:25.025"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:25.026" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:25.025" endtime="20210602 14:11:25.027"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.028" endtime="20210602 14:11:25.028"></status> +</kw> +<msg timestamp="20210602 14:11:25.029" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.029" level="INFO">${data} = {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', '...</msg> +<status status="PASS" starttime="20210602 14:11:25.027" endtime="20210602 14:11:25.029"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.030" endtime="20210602 14:11:25.030"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': 0, '..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.031" endtime="20210602 14:11:25.032"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.031" endtime="20210602 14:11:25.032"></status> +</kw> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': 0, '..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.033" endtime="20210602 14:11:25.033"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.032" endtime="20210602 14:11:25.034"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.030" endtime="20210602 14:11:25.034"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.021" endtime="20210602 14:11:25.034"></status> +</kw> +<msg timestamp="20210602 14:11:25.034" level="INFO">${objectIds} = [107868, 107869]</msg> +<status status="PASS" starttime="20210602 14:11:25.020" endtime="20210602 14:11:25.035"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:25.036" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:25.035" endtime="20210602 14:11:25.036"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.037" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.036" endtime="20210602 14:11:25.037"></status> +</kw> +<msg timestamp="20210602 14:11:25.037" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:25.038" level="INFO">${objectIds} = [107868, 107869]</msg> +<status status="PASS" starttime="20210602 14:11:22.248" endtime="20210602 14:11:25.038"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.039" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.038" endtime="20210602 14:11:25.039"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.040" endtime="20210602 14:11:25.041"></status> +</kw> +<msg timestamp="20210602 14:11:25.041" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:25.040" endtime="20210602 14:11:25.042"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:25.042" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.042" endtime="20210602 14:11:25.043"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107868" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:25.044" level="INFO">${objectList} = {'objectId': 107868, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:25.043" endtime="20210602 14:11:25.044"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.044" endtime="20210602 14:11:25.045"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.043" endtime="20210602 14:11:25.045"></status> +</kw> +<kw name="${obj} = 107869" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:25.046" level="INFO">${objectList} = {'objectId': 107868, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:25.045" endtime="20210602 14:11:25.046"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.047" endtime="20210602 14:11:25.047"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.045" endtime="20210602 14:11:25.047"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.043" endtime="20210602 14:11:25.048"></status> +</kw> +<msg timestamp="20210602 14:11:25.048" level="INFO">${objectIds} = [107868, 107869]</msg> +<msg timestamp="20210602 14:11:25.048" level="INFO">${objectList} = {'objectId': 107868, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:22.183" endtime="20210602 14:11:25.048"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.050" endtime="20210602 14:11:25.050"></status> +</kw> +<msg timestamp="20210602 14:11:25.050" level="INFO">${objectList} = {'objectId': 107868, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:25.049" endtime="20210602 14:11:25.050"></status> +</kw> +<msg timestamp="20210602 14:11:25.051" level="INFO">${objectIds} = [107868, 107869]</msg> +<msg timestamp="20210602 14:11:25.051" level="INFO">${objectList} = {'objectId': 107868, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:22.181" endtime="20210602 14:11:25.051"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:25.052" level="INFO">Length is 2</msg> +<msg timestamp="20210602 14:11:25.052" level="INFO">${len} = 2</msg> +<status status="PASS" starttime="20210602 14:11:25.052" endtime="20210602 14:11:25.052"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.063" endtime="20210602 14:11:25.064"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.064" endtime="20210602 14:11:25.064"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107868" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.065" endtime="20210602 14:11:25.065"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.065" endtime="20210602 14:11:25.065"></status> +</kw> +<kw name="${objdict} = 107869" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.066" endtime="20210602 14:11:25.066"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.066" endtime="20210602 14:11:25.066"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.064" endtime="20210602 14:11:25.067"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.063" endtime="20210602 14:11:25.067"></status> +</kw> +<msg timestamp="20210602 14:11:25.067" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869]</msg> +<status status="PASS" starttime="20210602 14:11:25.053" endtime="20210602 14:11:25.067"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.068" endtime="20210602 14:11:25.068"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.067" endtime="20210602 14:11:25.069"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:22.180" endtime="20210602 14:11:25.069"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_LOCATION', 'objectType': 'ip', 'objectSubType': 'geo_location', 'objList': [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.070" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:25.069" endtime="20210602 14:11:25.070"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.071" endtime="20210602 14:11:25.071"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.072" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:25.071" endtime="20210602 14:11:25.072"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.072" endtime="20210602 14:11:25.073"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.073" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:25.073" endtime="20210602 14:11:25.074"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:25.074" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.074" endtime="20210602 14:11:25.074"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.075" endtime="20210602 14:11:25.075"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.076" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:25.075" endtime="20210602 14:11:25.076"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.076" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:25.076" endtime="20210602 14:11:25.076"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.077" endtime="20210602 14:11:25.077"></status> +</kw> +<msg timestamp="20210602 14:11:25.078" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.078" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:25.077" endtime="20210602 14:11:25.078"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.079" endtime="20210602 14:11:25.079"></status> +</kw> +<msg timestamp="20210602 14:11:25.079" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:25.078" endtime="20210602 14:11:25.080"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.080" endtime="20210602 14:11:25.081"></status> +</kw> +<msg timestamp="20210602 14:11:25.081" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.081" level="INFO">${objectSubType} = geo_location</msg> +<status status="PASS" starttime="20210602 14:11:25.080" endtime="20210602 14:11:25.081"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.082" endtime="20210602 14:11:25.082"></status> +</kw> +<msg timestamp="20210602 14:11:25.082" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:25.081" endtime="20210602 14:11:25.083"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:25.084" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:25.083" endtime="20210602 14:11:25.084"></status> +</kw> +<msg timestamp="20210602 14:11:25.084" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:25.084" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:25.083" endtime="20210602 14:11:25.084"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.085" endtime="20210602 14:11:25.085"></status> +</kw> +<msg timestamp="20210602 14:11:25.086" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:25.085" endtime="20210602 14:11:25.086"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.087" endtime="20210602 14:11:25.087"></status> +</kw> +<msg timestamp="20210602 14:11:25.087" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:25.086" endtime="20210602 14:11:25.088"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:25.088" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.088" endtime="20210602 14:11:25.088"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:25.089" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:25.089" endtime="20210602 14:11:25.089"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.090" endtime="20210602 14:11:25.091"></status> +</kw> +<msg timestamp="20210602 14:11:25.091" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.091" level="INFO">${addItemList} = [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]</msg> +<status status="PASS" starttime="20210602 14:11:25.090" endtime="20210602 14:11:25.091"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:25.092" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.091" endtime="20210602 14:11:25.092"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.093" endtime="20210602 14:11:25.093"></status> +</kw> +<msg timestamp="20210602 14:11:25.093" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.092" endtime="20210602 14:11:25.093"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.094" endtime="20210602 14:11:25.095"></status> +</kw> +<msg timestamp="20210602 14:11:25.095" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.094" endtime="20210602 14:11:25.095"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.096" endtime="20210602 14:11:25.096"></status> +</kw> +<msg timestamp="20210602 14:11:25.096" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:25.095" endtime="20210602 14:11:25.097"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.097" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:25.097" endtime="20210602 14:11:25.097"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:25.098" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'a...</msg> +<status status="PASS" starttime="20210602 14:11:25.098" endtime="20210602 14:11:25.098"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.109" endtime="20210602 14:11:25.109"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.109" endtime="20210602 14:11:25.110"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.110" endtime="20210602 14:11:25.110"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.110" endtime="20210602 14:11:25.111"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.110" endtime="20210602 14:11:25.111"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.108" endtime="20210602 14:11:25.111"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.090" endtime="20210602 14:11:25.111"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.089" endtime="20210602 14:11:25.111"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:25.112" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单...</msg> +<status status="PASS" starttime="20210602 14:11:25.112" endtime="20210602 14:11:25.112"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.113" endtime="20210602 14:11:25.113"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.114" endtime="20210602 14:11:25.114"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:25.114" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:25.114" endtime="20210602 14:11:25.115"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.115" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\...</msg> +<status status="PASS" starttime="20210602 14:11:25.115" endtime="20210602 14:11:25.115"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:25.117" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:25.116" endtime="20210602 14:11:25.117"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:25.118" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:25.117" endtime="20210602 14:11:25.118"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:25.119" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:25.295" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:25.119" endtime="20210602 14:11:25.295"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:25.296" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:25.296" endtime="20210602 14:11:25.296"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.298" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.297" endtime="20210602 14:11:25.298"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:25.300" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:24", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "Algeria." ], + "itemId" : 10074655, + "objectId" : 107870 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:24", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074656, + "objectId" : 107870 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:24", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074657, + "objectId" : 107870 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107870, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "geo_location", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:24", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:25.300" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:25.300" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:25.299" endtime="20210602 14:11:25.300"></status> +</kw> +<msg timestamp="20210602 14:11:25.301" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:25.116" endtime="20210602 14:11:25.301"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:25.303" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:25.302" endtime="20210602 14:11:25.303"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:25.304" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.303" endtime="20210602 14:11:25.304"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:25.305" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:25.304" endtime="20210602 14:11:25.305"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.306" endtime="20210602 14:11:25.306"></status> +</kw> +<msg timestamp="20210602 14:11:25.306" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.306" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...</msg> +<status status="PASS" starttime="20210602 14:11:25.305" endtime="20210602 14:11:25.307"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.307" endtime="20210602 14:11:25.307"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.308" endtime="20210602 14:11:25.309"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.308" endtime="20210602 14:11:25.309"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.308" endtime="20210602 14:11:25.309"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.302" endtime="20210602 14:11:25.309"></status> +</kw> +<msg timestamp="20210602 14:11:25.310" level="INFO">${objectIds} = [107870]</msg> +<status status="PASS" starttime="20210602 14:11:25.301" endtime="20210602 14:11:25.310"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:25.311" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:25.310" endtime="20210602 14:11:25.311"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.312" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.311" endtime="20210602 14:11:25.312"></status> +</kw> +<msg timestamp="20210602 14:11:25.312" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:25.312" level="INFO">${objectIds} = [107870]</msg> +<status status="PASS" starttime="20210602 14:11:25.113" endtime="20210602 14:11:25.313"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.313" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.313" endtime="20210602 14:11:25.314"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.315" endtime="20210602 14:11:25.315"></status> +</kw> +<msg timestamp="20210602 14:11:25.315" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:25.314" endtime="20210602 14:11:25.315"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:25.316" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.316" endtime="20210602 14:11:25.316"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107870" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:25.317" level="INFO">${objectList} = {'objectId': 107870, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:25.317" endtime="20210602 14:11:25.317"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.318" endtime="20210602 14:11:25.318"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.317" endtime="20210602 14:11:25.318"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.316" endtime="20210602 14:11:25.318"></status> +</kw> +<msg timestamp="20210602 14:11:25.319" level="INFO">${objectIds} = [107870]</msg> +<msg timestamp="20210602 14:11:25.319" level="INFO">${objectList} = {'objectId': 107870, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:25.072" endtime="20210602 14:11:25.319"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.320" endtime="20210602 14:11:25.320"></status> +</kw> +<msg timestamp="20210602 14:11:25.320" level="INFO">${objectList} = {'objectId': 107870, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:25.319" endtime="20210602 14:11:25.321"></status> +</kw> +<msg timestamp="20210602 14:11:25.321" level="INFO">${objectIds} = [107870]</msg> +<msg timestamp="20210602 14:11:25.321" level="INFO">${objectList} = {'objectId': 107870, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:25.070" endtime="20210602 14:11:25.321"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:25.322" level="INFO">Length is 4</msg> +<msg timestamp="20210602 14:11:25.322" level="INFO">${len} = 4</msg> +<status status="PASS" starttime="20210602 14:11:25.321" endtime="20210602 14:11:25.322"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.337" endtime="20210602 14:11:25.337"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.337" endtime="20210602 14:11:25.337"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107870" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.338" endtime="20210602 14:11:25.339"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.338" endtime="20210602 14:11:25.339"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.338" endtime="20210602 14:11:25.339"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.336" endtime="20210602 14:11:25.339"></status> +</kw> +<msg timestamp="20210602 14:11:25.339" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870]</msg> +<status status="PASS" starttime="20210602 14:11:25.322" endtime="20210602 14:11:25.339"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.341" endtime="20210602 14:11:25.341"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.340" endtime="20210602 14:11:25.341"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.069" endtime="20210602 14:11:25.341"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_IMSI', 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'objList': [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.342" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:25.342" endtime="20210602 14:11:25.342"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.343" endtime="20210602 14:11:25.343"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.344" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:25.344" endtime="20210602 14:11:25.344"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.345" endtime="20210602 14:11:25.345"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.346" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:25.345" endtime="20210602 14:11:25.346"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:25.347" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.347" endtime="20210602 14:11:25.347"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.347" endtime="20210602 14:11:25.348"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.348" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:25.348" endtime="20210602 14:11:25.348"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.349" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:25.349" endtime="20210602 14:11:25.349"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.350" endtime="20210602 14:11:25.350"></status> +</kw> +<msg timestamp="20210602 14:11:25.350" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.351" level="INFO">${objectType} = mobile_identity</msg> +<status status="PASS" starttime="20210602 14:11:25.350" endtime="20210602 14:11:25.351"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.352" endtime="20210602 14:11:25.353"></status> +</kw> +<msg timestamp="20210602 14:11:25.353" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:25.351" endtime="20210602 14:11:25.353"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.354" endtime="20210602 14:11:25.354"></status> +</kw> +<msg timestamp="20210602 14:11:25.354" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.355" level="INFO">${objectSubType} = imsi</msg> +<status status="PASS" starttime="20210602 14:11:25.354" endtime="20210602 14:11:25.355"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.356" endtime="20210602 14:11:25.356"></status> +</kw> +<msg timestamp="20210602 14:11:25.356" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:25.355" endtime="20210602 14:11:25.356"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:25.358" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:25.357" endtime="20210602 14:11:25.358"></status> +</kw> +<msg timestamp="20210602 14:11:25.358" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:25.358" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:25.357" endtime="20210602 14:11:25.358"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.359" endtime="20210602 14:11:25.359"></status> +</kw> +<msg timestamp="20210602 14:11:25.360" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:25.358" endtime="20210602 14:11:25.360"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.360" endtime="20210602 14:11:25.361"></status> +</kw> +<msg timestamp="20210602 14:11:25.361" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:25.360" endtime="20210602 14:11:25.361"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:25.362" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.361" endtime="20210602 14:11:25.362"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:25.363" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:25.362" endtime="20210602 14:11:25.363"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.364" endtime="20210602 14:11:25.364"></status> +</kw> +<msg timestamp="20210602 14:11:25.365" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.365" level="INFO">${addItemList} = [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]</msg> +<status status="PASS" starttime="20210602 14:11:25.364" endtime="20210602 14:11:25.365"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:25.366" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.365" endtime="20210602 14:11:25.366"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.367" endtime="20210602 14:11:25.368"></status> +</kw> +<msg timestamp="20210602 14:11:25.368" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.366" endtime="20210602 14:11:25.368"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.369" endtime="20210602 14:11:25.369"></status> +</kw> +<msg timestamp="20210602 14:11:25.370" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.368" endtime="20210602 14:11:25.370"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.371" endtime="20210602 14:11:25.371"></status> +</kw> +<msg timestamp="20210602 14:11:25.371" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:25.370" endtime="20210602 14:11:25.371"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.372" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:25.372" endtime="20210602 14:11:25.372"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:25.373" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [...</msg> +<status status="PASS" starttime="20210602 14:11:25.372" endtime="20210602 14:11:25.373"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.384" endtime="20210602 14:11:25.385"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.385" endtime="20210602 14:11:25.385"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': []..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.386" endtime="20210602 14:11:25.386"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.386" endtime="20210602 14:11:25.386"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.385" endtime="20210602 14:11:25.387"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.384" endtime="20210602 14:11:25.387"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.363" endtime="20210602 14:11:25.387"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.363" endtime="20210602 14:11:25.387"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:25.388" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'aut...</msg> +<status status="PASS" starttime="20210602 14:11:25.388" endtime="20210602 14:11:25.388"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.389" endtime="20210602 14:11:25.389"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.390" endtime="20210602 14:11:25.390"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:25.390" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:25.390" endtime="20210602 14:11:25.391"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.391" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "aut...</msg> +<status status="PASS" starttime="20210602 14:11:25.391" endtime="20210602 14:11:25.391"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:25.393" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:25.392" endtime="20210602 14:11:25.393"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:25.393" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:25.393" endtime="20210602 14:11:25.394"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:25.395" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:25.467" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:25.394" endtime="20210602 14:11:25.468"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:25.469" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:25.468" endtime="20210602 14:11:25.470"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.471" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.470" endtime="20210602 14:11:25.472"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:25.473" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:24", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123" ], + "itemId" : 10074658, + "objectId" : 107871 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:24", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "456" ], + "itemId" : 10074659, + "objectId" : 107871 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:24", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "12345678912345" ], + "itemId" : 10074660, + "objectId" : 107871 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107871, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "imsi", + "objectType" : "mobile_identity", + "opTime" : "2021-06-02 14:11:24", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:25.474" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:25.474" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:25.472" endtime="20210602 14:11:25.474"></status> +</kw> +<msg timestamp="20210602 14:11:25.475" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:25.392" endtime="20210602 14:11:25.475"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:25.479" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:25.478" endtime="20210602 14:11:25.479"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:25.481" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.480" endtime="20210602 14:11:25.481"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:25.482" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:25.482" endtime="20210602 14:11:25.483"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.484" endtime="20210602 14:11:25.485"></status> +</kw> +<msg timestamp="20210602 14:11:25.485" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.485" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...</msg> +<status status="PASS" starttime="20210602 14:11:25.483" endtime="20210602 14:11:25.485"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.486" endtime="20210602 14:11:25.487"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:24', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.488" endtime="20210602 14:11:25.488"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.487" endtime="20210602 14:11:25.489"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.487" endtime="20210602 14:11:25.489"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.477" endtime="20210602 14:11:25.489"></status> +</kw> +<msg timestamp="20210602 14:11:25.490" level="INFO">${objectIds} = [107871]</msg> +<status status="PASS" starttime="20210602 14:11:25.476" endtime="20210602 14:11:25.490"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:25.491" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:25.490" endtime="20210602 14:11:25.491"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.492" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.492" endtime="20210602 14:11:25.492"></status> +</kw> +<msg timestamp="20210602 14:11:25.493" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:25.493" level="INFO">${objectIds} = [107871]</msg> +<status status="PASS" starttime="20210602 14:11:25.388" endtime="20210602 14:11:25.493"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.494" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.494" endtime="20210602 14:11:25.494"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.495" endtime="20210602 14:11:25.496"></status> +</kw> +<msg timestamp="20210602 14:11:25.496" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:25.495" endtime="20210602 14:11:25.496"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:25.497" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.496" endtime="20210602 14:11:25.497"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107871" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:25.498" level="INFO">${objectList} = {'objectId': 107871, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:25.498" endtime="20210602 14:11:25.499"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.499" endtime="20210602 14:11:25.499"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.497" endtime="20210602 14:11:25.499"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.497" endtime="20210602 14:11:25.500"></status> +</kw> +<msg timestamp="20210602 14:11:25.500" level="INFO">${objectIds} = [107871]</msg> +<msg timestamp="20210602 14:11:25.500" level="INFO">${objectList} = {'objectId': 107871, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:25.344" endtime="20210602 14:11:25.500"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.501" endtime="20210602 14:11:25.502"></status> +</kw> +<msg timestamp="20210602 14:11:25.502" level="INFO">${objectList} = {'objectId': 107871, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:25.501" endtime="20210602 14:11:25.502"></status> +</kw> +<msg timestamp="20210602 14:11:25.503" level="INFO">${objectIds} = [107871]</msg> +<msg timestamp="20210602 14:11:25.503" level="INFO">${objectList} = {'objectId': 107871, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:25.342" endtime="20210602 14:11:25.503"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:25.503" level="INFO">Length is 5</msg> +<msg timestamp="20210602 14:11:25.504" level="INFO">${len} = 5</msg> +<status status="PASS" starttime="20210602 14:11:25.503" endtime="20210602 14:11:25.504"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.515" endtime="20210602 14:11:25.515"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.515" endtime="20210602 14:11:25.515"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107871" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.516" endtime="20210602 14:11:25.517"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.516" endtime="20210602 14:11:25.517"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.516" endtime="20210602 14:11:25.517"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.514" endtime="20210602 14:11:25.517"></status> +</kw> +<msg timestamp="20210602 14:11:25.517" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871]</msg> +<status status="PASS" starttime="20210602 14:11:25.504" endtime="20210602 14:11:25.517"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.519" endtime="20210602 14:11:25.519"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.518" endtime="20210602 14:11:25.519"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.341" endtime="20210602 14:11:25.519"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER', 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'objList': [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.520" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:25.520" endtime="20210602 14:11:25.520"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.521" endtime="20210602 14:11:25.521"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.522" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:25.521" endtime="20210602 14:11:25.522"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.523" endtime="20210602 14:11:25.523"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.524" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:25.523" endtime="20210602 14:11:25.524"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:25.525" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.524" endtime="20210602 14:11:25.525"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.525" endtime="20210602 14:11:25.526"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.526" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:25.526" endtime="20210602 14:11:25.527"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.527" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:25.527" endtime="20210602 14:11:25.527"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.528" endtime="20210602 14:11:25.529"></status> +</kw> +<msg timestamp="20210602 14:11:25.529" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.529" level="INFO">${objectType} = mobile_identity</msg> +<status status="PASS" starttime="20210602 14:11:25.528" endtime="20210602 14:11:25.529"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.530" endtime="20210602 14:11:25.530"></status> +</kw> +<msg timestamp="20210602 14:11:25.531" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:25.530" endtime="20210602 14:11:25.531"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.532" endtime="20210602 14:11:25.532"></status> +</kw> +<msg timestamp="20210602 14:11:25.532" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.532" level="INFO">${objectSubType} = phone_number</msg> +<status status="PASS" starttime="20210602 14:11:25.531" endtime="20210602 14:11:25.533"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.533" endtime="20210602 14:11:25.534"></status> +</kw> +<msg timestamp="20210602 14:11:25.534" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:25.533" endtime="20210602 14:11:25.534"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:25.535" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:25.535" endtime="20210602 14:11:25.535"></status> +</kw> +<msg timestamp="20210602 14:11:25.536" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:25.536" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:25.534" endtime="20210602 14:11:25.536"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.537" endtime="20210602 14:11:25.537"></status> +</kw> +<msg timestamp="20210602 14:11:25.537" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:25.536" endtime="20210602 14:11:25.537"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.538" endtime="20210602 14:11:25.539"></status> +</kw> +<msg timestamp="20210602 14:11:25.539" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:25.538" endtime="20210602 14:11:25.539"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:25.540" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.539" endtime="20210602 14:11:25.540"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:25.541" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:25.540" endtime="20210602 14:11:25.541"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.542" endtime="20210602 14:11:25.542"></status> +</kw> +<msg timestamp="20210602 14:11:25.543" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.543" level="INFO">${addItemList} = [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]</msg> +<status status="PASS" starttime="20210602 14:11:25.542" endtime="20210602 14:11:25.543"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:25.544" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.543" endtime="20210602 14:11:25.544"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.545" endtime="20210602 14:11:25.545"></status> +</kw> +<msg timestamp="20210602 14:11:25.545" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.544" endtime="20210602 14:11:25.545"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.546" endtime="20210602 14:11:25.546"></status> +</kw> +<msg timestamp="20210602 14:11:25.547" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.545" endtime="20210602 14:11:25.547"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.548" endtime="20210602 14:11:25.548"></status> +</kw> +<msg timestamp="20210602 14:11:25.548" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:25.547" endtime="20210602 14:11:25.548"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.549" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:25.549" endtime="20210602 14:11:25.549"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:25.550" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:25.549" endtime="20210602 14:11:25.550"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.563" endtime="20210602 14:11:25.563"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.563" endtime="20210602 14:11:25.564"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObject..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.565" endtime="20210602 14:11:25.565"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.564" endtime="20210602 14:11:25.565"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.564" endtime="20210602 14:11:25.565"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.562" endtime="20210602 14:11:25.566"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.541" endtime="20210602 14:11:25.566"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.541" endtime="20210602 14:11:25.566"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:25.567" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectNam...</msg> +<status status="PASS" starttime="20210602 14:11:25.566" endtime="20210602 14:11:25.567"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.568" endtime="20210602 14:11:25.568"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.569" endtime="20210602 14:11:25.569"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:25.570" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:25.569" endtime="20210602 14:11:25.570"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.571" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectNam...</msg> +<status status="PASS" starttime="20210602 14:11:25.570" endtime="20210602 14:11:25.571"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:25.572" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:25.572" endtime="20210602 14:11:25.572"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:25.573" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:25.572" endtime="20210602 14:11:25.574"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:25.575" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:25.827" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:25.574" endtime="20210602 14:11:25.828"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:25.832" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:25.830" endtime="20210602 14:11:25.833"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.837" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.836" endtime="20210602 14:11:25.838"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:25.839" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:25", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123" ], + "itemId" : 10074661, + "objectId" : 107872 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:25", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123456789012345" ], + "itemId" : 10074662, + "objectId" : 107872 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:25", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "12345" ], + "itemId" : 10074663, + "objectId" : 107872 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107872, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "phone_number", + "objectType" : "mobile_identity", + "opTime" : "2021-06-02 14:11:25", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:25.840" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:25.840" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:25', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:25.839" endtime="20210602 14:11:25.840"></status> +</kw> +<msg timestamp="20210602 14:11:25.840" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:25', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:25.571" endtime="20210602 14:11:25.840"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:25.842" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:25.842" endtime="20210602 14:11:25.842"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:25.843" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.842" endtime="20210602 14:11:25.843"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:25.843" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:25.843" endtime="20210602 14:11:25.844"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.844" endtime="20210602 14:11:25.845"></status> +</kw> +<msg timestamp="20210602 14:11:25.845" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.845" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:25', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...</msg> +<status status="PASS" starttime="20210602 14:11:25.844" endtime="20210602 14:11:25.845"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.845" endtime="20210602 14:11:25.846"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:25', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.847" endtime="20210602 14:11:25.847"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.846" endtime="20210602 14:11:25.847"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.846" endtime="20210602 14:11:25.847"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.841" endtime="20210602 14:11:25.848"></status> +</kw> +<msg timestamp="20210602 14:11:25.848" level="INFO">${objectIds} = [107872]</msg> +<status status="PASS" starttime="20210602 14:11:25.841" endtime="20210602 14:11:25.848"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:25.849" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:25.848" endtime="20210602 14:11:25.849"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.849" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.849" endtime="20210602 14:11:25.850"></status> +</kw> +<msg timestamp="20210602 14:11:25.850" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:25.850" level="INFO">${objectIds} = [107872]</msg> +<status status="PASS" starttime="20210602 14:11:25.567" endtime="20210602 14:11:25.850"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:25.851" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:25.850" endtime="20210602 14:11:25.851"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.852" endtime="20210602 14:11:25.852"></status> +</kw> +<msg timestamp="20210602 14:11:25.852" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:25.851" endtime="20210602 14:11:25.852"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:25.853" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.853" endtime="20210602 14:11:25.853"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107872" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:25.854" level="INFO">${objectList} = {'objectId': 107872, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:25.854" endtime="20210602 14:11:25.854"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.855" endtime="20210602 14:11:25.855"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.853" endtime="20210602 14:11:25.855"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.853" endtime="20210602 14:11:25.855"></status> +</kw> +<msg timestamp="20210602 14:11:25.856" level="INFO">${objectIds} = [107872]</msg> +<msg timestamp="20210602 14:11:25.856" level="INFO">${objectList} = {'objectId': 107872, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:25.522" endtime="20210602 14:11:25.856"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.857" endtime="20210602 14:11:25.857"></status> +</kw> +<msg timestamp="20210602 14:11:25.858" level="INFO">${objectList} = {'objectId': 107872, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:25.856" endtime="20210602 14:11:25.858"></status> +</kw> +<msg timestamp="20210602 14:11:25.858" level="INFO">${objectIds} = [107872]</msg> +<msg timestamp="20210602 14:11:25.858" level="INFO">${objectList} = {'objectId': 107872, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:25.520" endtime="20210602 14:11:25.858"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:25.859" level="INFO">Length is 6</msg> +<msg timestamp="20210602 14:11:25.859" level="INFO">${len} = 6</msg> +<status status="PASS" starttime="20210602 14:11:25.858" endtime="20210602 14:11:25.859"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.875" endtime="20210602 14:11:25.875"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.876" endtime="20210602 14:11:25.876"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107872" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.877" endtime="20210602 14:11:25.877"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.876" endtime="20210602 14:11:25.877"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.876" endtime="20210602 14:11:25.877"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.874" endtime="20210602 14:11:25.878"></status> +</kw> +<msg timestamp="20210602 14:11:25.878" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872]</msg> +<status status="PASS" starttime="20210602 14:11:25.859" endtime="20210602 14:11:25.878"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.879" endtime="20210602 14:11:25.879"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.878" endtime="20210602 14:11:25.880"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.519" endtime="20210602 14:11:25.880"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_APN', 'objectType': 'apn', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$w..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.881" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:25.881" endtime="20210602 14:11:25.881"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.882" endtime="20210602 14:11:25.882"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.883" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:25.883" endtime="20210602 14:11:25.883"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.884" endtime="20210602 14:11:25.884"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:25.885" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:25.885" endtime="20210602 14:11:25.885"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:25.886" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.885" endtime="20210602 14:11:25.886"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.886" endtime="20210602 14:11:25.886"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.887" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:25.887" endtime="20210602 14:11:25.887"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.888" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:25.888" endtime="20210602 14:11:25.888"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.889" endtime="20210602 14:11:25.889"></status> +</kw> +<msg timestamp="20210602 14:11:25.889" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.889" level="INFO">${objectType} = apn</msg> +<status status="PASS" starttime="20210602 14:11:25.888" endtime="20210602 14:11:25.890"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.890" endtime="20210602 14:11:25.891"></status> +</kw> +<msg timestamp="20210602 14:11:25.891" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:25.890" endtime="20210602 14:11:25.891"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.892" endtime="20210602 14:11:25.892"></status> +</kw> +<msg timestamp="20210602 14:11:25.892" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.892" level="INFO">${objectSubType} = </msg> +<status status="PASS" starttime="20210602 14:11:25.891" endtime="20210602 14:11:25.893"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.893" endtime="20210602 14:11:25.894"></status> +</kw> +<msg timestamp="20210602 14:11:25.894" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:25.893" endtime="20210602 14:11:25.894"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:25.895" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:25.895" endtime="20210602 14:11:25.895"></status> +</kw> +<msg timestamp="20210602 14:11:25.896" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:25.896" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:25.894" endtime="20210602 14:11:25.896"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.897" endtime="20210602 14:11:25.898"></status> +</kw> +<msg timestamp="20210602 14:11:25.898" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:25.896" endtime="20210602 14:11:25.898"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.899" endtime="20210602 14:11:25.900"></status> +</kw> +<msg timestamp="20210602 14:11:25.900" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:25.899" endtime="20210602 14:11:25.900"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:25.901" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:25.900" endtime="20210602 14:11:25.901"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:25.901" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:25.901" endtime="20210602 14:11:25.902"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.903" endtime="20210602 14:11:25.903"></status> +</kw> +<msg timestamp="20210602 14:11:25.903" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:25.904" level="INFO">${addItemList} = [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]</msg> +<status status="PASS" starttime="20210602 14:11:25.902" endtime="20210602 14:11:25.904"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:25.904" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.904" endtime="20210602 14:11:25.904"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.905" endtime="20210602 14:11:25.906"></status> +</kw> +<msg timestamp="20210602 14:11:25.906" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.905" endtime="20210602 14:11:25.906"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.907" endtime="20210602 14:11:25.907"></status> +</kw> +<msg timestamp="20210602 14:11:25.907" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:25.906" endtime="20210602 14:11:25.907"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.908" endtime="20210602 14:11:25.909"></status> +</kw> +<msg timestamp="20210602 14:11:25.909" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:25.908" endtime="20210602 14:11:25.909"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.910" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:25.909" endtime="20210602 14:11:25.910"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:25.910" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'...</msg> +<status status="PASS" starttime="20210602 14:11:25.910" endtime="20210602 14:11:25.911"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.922" endtime="20210602 14:11:25.922"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.922" endtime="20210602 14:11:25.922"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList':..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.923" endtime="20210602 14:11:25.923"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.923" endtime="20210602 14:11:25.924"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.923" endtime="20210602 14:11:25.924"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.921" endtime="20210602 14:11:25.924"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.902" endtime="20210602 14:11:25.924"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.902" endtime="20210602 14:11:25.924"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:25.925" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'o...</msg> +<status status="PASS" starttime="20210602 14:11:25.925" endtime="20210602 14:11:25.925"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.926" endtime="20210602 14:11:25.926"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:25.927" endtime="20210602 14:11:25.927"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:25.927" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:25.927" endtime="20210602 14:11:25.928"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:25.928" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "apn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u63...</msg> +<status status="PASS" starttime="20210602 14:11:25.928" endtime="20210602 14:11:25.928"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:25.930" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:25.929" endtime="20210602 14:11:25.931"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:25.932" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:25.931" endtime="20210602 14:11:25.932"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:25.933" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "apn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:27.268" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:25.932" endtime="20210602 14:11:27.268"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:27.269" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:27.268" endtime="20210602 14:11:27.269"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:27.270" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:27.269" endtime="20210602 14:11:27.270"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:27.271" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:26", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "uawei.org" ], + "itemId" : 10074664, + "objectId" : 107873 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:26", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "huawei.com" ], + "itemId" : 10074665, + "objectId" : 107873 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:26", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "www.huawei.com" ], + "itemId" : 10074666, + "objectId" : 107873 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107873, + "objectName" : "auttest单ip指定端口", + "objectType" : "apn", + "opTime" : "2021-06-02 14:11:25", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:27.271" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:27.271" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:26', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:27.270" endtime="20210602 14:11:27.271"></status> +</kw> +<msg timestamp="20210602 14:11:27.271" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:26', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:25.929" endtime="20210602 14:11:27.272"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:27.273" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:27.273" endtime="20210602 14:11:27.273"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:27.274" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:27.274" endtime="20210602 14:11:27.274"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:27.274" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:27.274" endtime="20210602 14:11:27.275"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.275" endtime="20210602 14:11:27.276"></status> +</kw> +<msg timestamp="20210602 14:11:27.276" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:27.276" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:26', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['u...</msg> +<status status="PASS" starttime="20210602 14:11:27.275" endtime="20210602 14:11:27.276"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.277" endtime="20210602 14:11:27.277"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:26', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['uawei.org'], 'ite..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.278" endtime="20210602 14:11:27.278"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.277" endtime="20210602 14:11:27.278"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.277" endtime="20210602 14:11:27.278"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.272" endtime="20210602 14:11:27.279"></status> +</kw> +<msg timestamp="20210602 14:11:27.279" level="INFO">${objectIds} = [107873]</msg> +<status status="PASS" starttime="20210602 14:11:27.272" endtime="20210602 14:11:27.279"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:27.280" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:27.279" endtime="20210602 14:11:27.280"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:27.280" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:27.280" endtime="20210602 14:11:27.281"></status> +</kw> +<msg timestamp="20210602 14:11:27.281" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:27.281" level="INFO">${objectIds} = [107873]</msg> +<status status="PASS" starttime="20210602 14:11:25.926" endtime="20210602 14:11:27.281"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:27.282" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:27.282" endtime="20210602 14:11:27.282"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.283" endtime="20210602 14:11:27.283"></status> +</kw> +<msg timestamp="20210602 14:11:27.284" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:27.282" endtime="20210602 14:11:27.284"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:27.284" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:27.284" endtime="20210602 14:11:27.284"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107873" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:27.285" level="INFO">${objectList} = {'objectId': 107873, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:27.285" endtime="20210602 14:11:27.286"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.286" endtime="20210602 14:11:27.286"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.285" endtime="20210602 14:11:27.286"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.285" endtime="20210602 14:11:27.287"></status> +</kw> +<msg timestamp="20210602 14:11:27.287" level="INFO">${objectIds} = [107873]</msg> +<msg timestamp="20210602 14:11:27.287" level="INFO">${objectList} = {'objectId': 107873, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:25.884" endtime="20210602 14:11:27.287"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.288" endtime="20210602 14:11:27.288"></status> +</kw> +<msg timestamp="20210602 14:11:27.289" level="INFO">${objectList} = {'objectId': 107873, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:27.287" endtime="20210602 14:11:27.289"></status> +</kw> +<msg timestamp="20210602 14:11:27.289" level="INFO">${objectIds} = [107873]</msg> +<msg timestamp="20210602 14:11:27.289" level="INFO">${objectList} = {'objectId': 107873, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:25.882" endtime="20210602 14:11:27.289"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:27.290" level="INFO">Length is 7</msg> +<msg timestamp="20210602 14:11:27.290" level="INFO">${len} = 7</msg> +<status status="PASS" starttime="20210602 14:11:27.290" endtime="20210602 14:11:27.290"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.301" endtime="20210602 14:11:27.302"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.302" endtime="20210602 14:11:27.302"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107873" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.303" endtime="20210602 14:11:27.303"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.303" endtime="20210602 14:11:27.303"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.302" endtime="20210602 14:11:27.304"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.301" endtime="20210602 14:11:27.304"></status> +</kw> +<msg timestamp="20210602 14:11:27.305" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873]</msg> +<status status="PASS" starttime="20210602 14:11:27.291" endtime="20210602 14:11:27.305"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.306" endtime="20210602 14:11:27.306"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.305" endtime="20210602 14:11:27.307"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:25.880" endtime="20210602 14:11:27.307"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'ip_learning', 'objList': [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', ..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:27.308" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:27.307" endtime="20210602 14:11:27.308"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.309" endtime="20210602 14:11:27.309"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:27.309" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:27.309" endtime="20210602 14:11:27.310"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.310" endtime="20210602 14:11:27.311"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:27.311" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:27.311" endtime="20210602 14:11:27.311"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:27.312" level="INFO">${objList} = [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:27.312" endtime="20210602 14:11:27.312"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.312" endtime="20210602 14:11:27.313"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:27.313" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:27.313" endtime="20210602 14:11:27.313"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:27.314" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:27.314" endtime="20210602 14:11:27.314"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.315" endtime="20210602 14:11:27.315"></status> +</kw> +<msg timestamp="20210602 14:11:27.315" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:27.315" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:27.314" endtime="20210602 14:11:27.315"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.316" endtime="20210602 14:11:27.317"></status> +</kw> +<msg timestamp="20210602 14:11:27.317" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:27.316" endtime="20210602 14:11:27.317"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.318" endtime="20210602 14:11:27.318"></status> +</kw> +<msg timestamp="20210602 14:11:27.318" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:27.318" level="INFO">${objectSubType} = ip_learning</msg> +<status status="PASS" starttime="20210602 14:11:27.317" endtime="20210602 14:11:27.318"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.319" endtime="20210602 14:11:27.320"></status> +</kw> +<msg timestamp="20210602 14:11:27.320" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:27.319" endtime="20210602 14:11:27.320"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:27.321" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:27.321" endtime="20210602 14:11:27.321"></status> +</kw> +<msg timestamp="20210602 14:11:27.322" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:27.322" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:27.320" endtime="20210602 14:11:27.322"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.323" endtime="20210602 14:11:27.323"></status> +</kw> +<msg timestamp="20210602 14:11:27.323" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:27.322" endtime="20210602 14:11:27.323"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.324" endtime="20210602 14:11:27.324"></status> +</kw> +<msg timestamp="20210602 14:11:27.325" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:27.324" endtime="20210602 14:11:27.325"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:27.325" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:27.325" endtime="20210602 14:11:27.325"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:27.327" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:27.326" endtime="20210602 14:11:27.327"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.328" endtime="20210602 14:11:27.329"></status> +</kw> +<msg timestamp="20210602 14:11:27.329" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:27.329" level="INFO">${addItemList} = [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]</msg> +<status status="PASS" starttime="20210602 14:11:27.328" endtime="20210602 14:11:27.329"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:27.330" level="INFO">${addItemList} = [{"fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:27.330" endtime="20210602 14:11:27.330"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.332" endtime="20210602 14:11:27.332"></status> +</kw> +<msg timestamp="20210602 14:11:27.332" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:27.331" endtime="20210602 14:11:27.332"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.333" endtime="20210602 14:11:27.334"></status> +</kw> +<msg timestamp="20210602 14:11:27.334" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"</msg> +<status status="PASS" starttime="20210602 14:11:27.333" endtime="20210602 14:11:27.334"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.335" endtime="20210602 14:11:27.335"></status> +</kw> +<msg timestamp="20210602 14:11:27.335" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:27.334" endtime="20210602 14:11:27.336"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:27.336" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:27.336" endtime="20210602 14:11:27.337"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:27.337" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad...</msg> +<status status="PASS" starttime="20210602 14:11:27.337" endtime="20210602 14:11:27.337"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.348" endtime="20210602 14:11:27.348"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.348" endtime="20210602 14:11:27.349"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'add..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.349" endtime="20210602 14:11:27.350"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.349" endtime="20210602 14:11:27.350"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.349" endtime="20210602 14:11:27.351"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.347" endtime="20210602 14:11:27.351"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.328" endtime="20210602 14:11:27.352"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.327" endtime="20210602 14:11:27.352"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:27.353" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单i...</msg> +<status status="PASS" starttime="20210602 14:11:27.352" endtime="20210602 14:11:27.353"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.354" endtime="20210602 14:11:27.354"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.354" endtime="20210602 14:11:27.355"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:27.356" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:27.355" endtime="20210602 14:11:27.356"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:27.357" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u...</msg> +<status status="PASS" starttime="20210602 14:11:27.356" endtime="20210602 14:11:27.357"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:27.360" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:27.359" endtime="20210602 14:11:27.360"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:27.361" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:27.360" endtime="20210602 14:11:27.361"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:27.362" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [], "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000", "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:27.704" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:27.362" endtime="20210602 14:11:27.704"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:27.705" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:27.704" endtime="20210602 14:11:27.705"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:27.706" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:27.705" endtime="20210602 14:11:27.706"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:27.707" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ ], + "agingTime" : 12, + "deleteItemIds" : [ ], + "fromFqdns" : [ "$www.baidu.com", "*jd.com" ], + "fromProtocol" : "HTTP,SSL", + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "learnedIpLimit" : 1000, + "learningDepth" : "2", + "memberType" : 3, + "objectDesc" : "test", + "objectId" : 107874, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "ip_learning", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:26", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ], + "voteClientNum" : 10 + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:27.707" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:27.707" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:27.706" endtime="20210602 14:11:27.707"></status> +</kw> +<msg timestamp="20210602 14:11:27.708" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:27.358" endtime="20210602 14:11:27.708"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:27.710" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:27.709" endtime="20210602 14:11:27.710"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:27.710" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:27.710" endtime="20210602 14:11:27.711"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:27.711" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:27.711" endtime="20210602 14:11:27.712"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.712" endtime="20210602 14:11:27.713"></status> +</kw> +<msg timestamp="20210602 14:11:27.713" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:27.713" level="INFO">${data} = {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusio...</msg> +<status status="PASS" starttime="20210602 14:11:27.712" endtime="20210602 14:11:27.714"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.714" endtime="20210602 14:11:27.714"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusion': 0, 'isInitia..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.716" endtime="20210602 14:11:27.717"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.715" endtime="20210602 14:11:27.717"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.715" endtime="20210602 14:11:27.717"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.709" endtime="20210602 14:11:27.718"></status> +</kw> +<msg timestamp="20210602 14:11:27.718" level="INFO">${objectIds} = [107874]</msg> +<status status="PASS" starttime="20210602 14:11:27.708" endtime="20210602 14:11:27.718"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:27.719" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:27.719" endtime="20210602 14:11:27.720"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:27.721" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:27.720" endtime="20210602 14:11:27.721"></status> +</kw> +<msg timestamp="20210602 14:11:27.722" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:27.722" level="INFO">${objectIds} = [107874]</msg> +<status status="PASS" starttime="20210602 14:11:27.353" endtime="20210602 14:11:27.722"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:27.723" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:27.723" endtime="20210602 14:11:27.723"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.725" endtime="20210602 14:11:27.726"></status> +</kw> +<msg timestamp="20210602 14:11:27.726" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:27.724" endtime="20210602 14:11:27.727"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:27.728" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:27.727" endtime="20210602 14:11:27.728"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107874" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:27.730" level="INFO">${objectList} = {'objectId': 107874, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:27.729" endtime="20210602 14:11:27.730"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.731" endtime="20210602 14:11:27.731"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.729" endtime="20210602 14:11:27.732"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.728" endtime="20210602 14:11:27.732"></status> +</kw> +<msg timestamp="20210602 14:11:27.733" level="INFO">${objectIds} = [107874]</msg> +<msg timestamp="20210602 14:11:27.733" level="INFO">${objectList} = {'objectId': 107874, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:27.310" endtime="20210602 14:11:27.733"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.735" endtime="20210602 14:11:27.735"></status> +</kw> +<msg timestamp="20210602 14:11:27.736" level="INFO">${objectList} = {'objectId': 107874, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:27.734" endtime="20210602 14:11:27.736"></status> +</kw> +<msg timestamp="20210602 14:11:27.736" level="INFO">${objectIds} = [107874]</msg> +<msg timestamp="20210602 14:11:27.736" level="INFO">${objectList} = {'objectId': 107874, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:27.308" endtime="20210602 14:11:27.737"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:27.737" level="INFO">Length is 8</msg> +<msg timestamp="20210602 14:11:27.737" level="INFO">${len} = 8</msg> +<status status="PASS" starttime="20210602 14:11:27.737" endtime="20210602 14:11:27.737"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.748" endtime="20210602 14:11:27.748"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.749" endtime="20210602 14:11:27.749"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107874" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.750" endtime="20210602 14:11:27.750"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.749" endtime="20210602 14:11:27.750"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.749" endtime="20210602 14:11:27.750"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.747" endtime="20210602 14:11:27.751"></status> +</kw> +<msg timestamp="20210602 14:11:27.751" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874]</msg> +<status status="PASS" starttime="20210602 14:11:27.738" endtime="20210602 14:11:27.751"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.752" endtime="20210602 14:11:27.752"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.751" endtime="20210602 14:11:27.753"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.307" endtime="20210602 14:11:27.753"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_ADDR', 'objList': [{'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}]}" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:27.754" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:27.753" endtime="20210602 14:11:27.754"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.754" endtime="20210602 14:11:27.755"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:27.755" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:27.755" endtime="20210602 14:11:27.755"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.756" endtime="20210602 14:11:27.756"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:27.757" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:27.757" endtime="20210602 14:11:27.757"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:27.758" level="INFO">${objList} = [{'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:27.757" endtime="20210602 14:11:27.758"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.759" endtime="20210602 14:11:27.759"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:27.759" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:27.759" endtime="20210602 14:11:27.760"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:27.760" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:27.760" endtime="20210602 14:11:27.760"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:27.762" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:27.761" endtime="20210602 14:11:27.762"></status> +</kw> +<msg timestamp="20210602 14:11:27.762" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:27.762" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:27.761" endtime="20210602 14:11:27.762"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.763" endtime="20210602 14:11:27.763"></status> +</kw> +<msg timestamp="20210602 14:11:27.764" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:27.763" endtime="20210602 14:11:27.764"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<msg timestamp="20210602 14:11:27.765" level="FAIL">Dictionary does not contain key 'objectSubType'.</msg> +<status status="FAIL" starttime="20210602 14:11:27.764" endtime="20210602 14:11:27.765"></status> +</kw> +<msg timestamp="20210602 14:11:27.765" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:27.766" level="INFO">${objectSubType} = Dictionary does not contain key 'objectSubType'.</msg> +<status status="PASS" starttime="20210602 14:11:27.764" endtime="20210602 14:11:27.766"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.767" endtime="20210602 14:11:27.767"></status> +</kw> +<msg timestamp="20210602 14:11:27.767" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:27.766" endtime="20210602 14:11:27.767"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:27.768" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:27.768" endtime="20210602 14:11:27.769"></status> +</kw> +<msg timestamp="20210602 14:11:27.769" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:27.769" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:27.768" endtime="20210602 14:11:27.769"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.770" endtime="20210602 14:11:27.770"></status> +</kw> +<msg timestamp="20210602 14:11:27.770" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:27.769" endtime="20210602 14:11:27.771"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.771" endtime="20210602 14:11:27.772"></status> +</kw> +<msg timestamp="20210602 14:11:27.772" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:27.771" endtime="20210602 14:11:27.772"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:27.773" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:27.772" endtime="20210602 14:11:27.773"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:27.774" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:27.773" endtime="20210602 14:11:27.774"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.775" endtime="20210602 14:11:27.775"></status> +</kw> +<msg timestamp="20210602 14:11:27.776" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:27.776" level="INFO">${addItemList} = [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]</msg> +<status status="PASS" starttime="20210602 14:11:27.775" endtime="20210602 14:11:27.776"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:27.777" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:27.776" endtime="20210602 14:11:27.777"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.777" endtime="20210602 14:11:27.778"></status> +</kw> +<msg timestamp="20210602 14:11:27.778" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:27.777" endtime="20210602 14:11:27.778"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.779" endtime="20210602 14:11:27.779"></status> +</kw> +<msg timestamp="20210602 14:11:27.779" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:27.778" endtime="20210602 14:11:27.780"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.780" endtime="20210602 14:11:27.781"></status> +</kw> +<msg timestamp="20210602 14:11:27.781" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:27.780" endtime="20210602 14:11:27.781"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:27.782" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:27.782" endtime="20210602 14:11:27.782"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:27.783" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:27.782" endtime="20210602 14:11:27.783"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.794" endtime="20210602 14:11:27.795"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.795" endtime="20210602 14:11:27.795"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.796" endtime="20210602 14:11:27.796"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.796" endtime="20210602 14:11:27.797"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.795" endtime="20210602 14:11:27.797"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.794" endtime="20210602 14:11:27.797"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.774" endtime="20210602 14:11:27.797"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.774" endtime="20210602 14:11:27.797"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:27.798" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定...</msg> +<status status="PASS" starttime="20210602 14:11:27.798" endtime="20210602 14:11:27.798"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.799" endtime="20210602 14:11:27.799"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:27.800" endtime="20210602 14:11:27.800"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:27.801" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:27.800" endtime="20210602 14:11:27.801"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:27.801" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u535...</msg> +<status status="PASS" starttime="20210602 14:11:27.801" endtime="20210602 14:11:27.801"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:27.802" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:27.802" endtime="20210602 14:11:27.803"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:27.803" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:27.803" endtime="20210602 14:11:27.804"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:27.805" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:30.110" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:27.804" endtime="20210602 14:11:30.111"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:30.115" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:30.113" endtime="20210602 14:11:30.116"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.118" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.117" endtime="20210602 14:11:30.119"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:30.121" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.254", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "65535", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.254", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.254\" ,\"port\":\"65535\"}", + "itemId" : 10074667, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107875, + "opTime" : "2021-06-02 14:11:29", + "opUser" : 425, + "port" : "65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.254", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "1", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.254", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.254\" ,\"port\":\"1\"}", + "itemId" : 10074668, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107875, + "opTime" : "2021-06-02 14:11:29", + "opUser" : 425, + "port" : "1", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107875, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:27", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:30.122" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:30.122" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPor...</msg> +<status status="PASS" starttime="20210602 14:11:30.120" endtime="20210602 14:11:30.123"></status> +</kw> +<msg timestamp="20210602 14:11:30.124" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPor...</msg> +<status status="PASS" starttime="20210602 14:11:27.802" endtime="20210602 14:11:30.124"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:30.127" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:30.127" endtime="20210602 14:11:30.128"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:30.129" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.128" endtime="20210602 14:11:30.129"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:30.130" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:30.130" endtime="20210602 14:11:30.130"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.132" endtime="20210602 14:11:30.133"></status> +</kw> +<msg timestamp="20210602 14:11:30.133" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.133" level="INFO">${data} = {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPort2': '65535', 'clientPortFormat': 'range...</msg> +<status status="PASS" starttime="20210602 14:11:30.131" endtime="20210602 14:11:30.133"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.133" endtime="20210602 14:11:30.133"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.136" endtime="20210602 14:11:30.136"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.135" endtime="20210602 14:11:30.136"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.135" endtime="20210602 14:11:30.137"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.126" endtime="20210602 14:11:30.137"></status> +</kw> +<msg timestamp="20210602 14:11:30.137" level="INFO">${objectIds} = [107875]</msg> +<status status="PASS" starttime="20210602 14:11:30.125" endtime="20210602 14:11:30.137"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:30.137" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:30.137" endtime="20210602 14:11:30.138"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.138" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.138" endtime="20210602 14:11:30.139"></status> +</kw> +<msg timestamp="20210602 14:11:30.139" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:30.139" level="INFO">${objectIds} = [107875]</msg> +<status status="PASS" starttime="20210602 14:11:27.799" endtime="20210602 14:11:30.139"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.140" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.140" endtime="20210602 14:11:30.140"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.141" endtime="20210602 14:11:30.142"></status> +</kw> +<msg timestamp="20210602 14:11:30.142" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:30.141" endtime="20210602 14:11:30.142"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:30.143" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.143" endtime="20210602 14:11:30.143"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107875" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:30.144" level="INFO">${objectList} = {'objectId': 107875, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:30.144" endtime="20210602 14:11:30.145"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.145" endtime="20210602 14:11:30.145"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.144" endtime="20210602 14:11:30.146"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.143" endtime="20210602 14:11:30.146"></status> +</kw> +<msg timestamp="20210602 14:11:30.146" level="INFO">${objectIds} = [107875]</msg> +<msg timestamp="20210602 14:11:30.146" level="INFO">${objectList} = {'objectId': 107875, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:27.756" endtime="20210602 14:11:30.146"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.147" endtime="20210602 14:11:30.148"></status> +</kw> +<msg timestamp="20210602 14:11:30.148" level="INFO">${objectList} = {'objectId': 107875, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:30.147" endtime="20210602 14:11:30.148"></status> +</kw> +<msg timestamp="20210602 14:11:30.148" level="INFO">${objectIds} = [107875]</msg> +<msg timestamp="20210602 14:11:30.149" level="INFO">${objectList} = {'objectId': 107875, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:27.754" endtime="20210602 14:11:30.149"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:30.149" level="INFO">Length is 9</msg> +<msg timestamp="20210602 14:11:30.150" level="INFO">${len} = 9</msg> +<status status="PASS" starttime="20210602 14:11:30.149" endtime="20210602 14:11:30.150"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.160" endtime="20210602 14:11:30.161"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.161" endtime="20210602 14:11:30.161"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107875" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.162" endtime="20210602 14:11:30.162"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.162" endtime="20210602 14:11:30.162"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.161" endtime="20210602 14:11:30.163"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.160" endtime="20210602 14:11:30.163"></status> +</kw> +<msg timestamp="20210602 14:11:30.164" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874, 107875]</msg> +<status status="PASS" starttime="20210602 14:11:30.150" endtime="20210602 14:11:30.164"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.165" endtime="20210602 14:11:30.165"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.164" endtime="20210602 14:11:30.165"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:27.753" endtime="20210602 14:11:30.166"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION', 'objectSubType': 'geo_location', 'objList': [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}]}" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.166" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:30.166" endtime="20210602 14:11:30.167"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.167" endtime="20210602 14:11:30.168"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.168" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:30.168" endtime="20210602 14:11:30.168"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.169" endtime="20210602 14:11:30.170"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.170" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:30.170" endtime="20210602 14:11:30.170"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:30.171" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.171" endtime="20210602 14:11:30.171"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.171" endtime="20210602 14:11:30.172"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.172" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:30.172" endtime="20210602 14:11:30.172"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.173" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:30.173" endtime="20210602 14:11:30.173"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:30.174" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:30.174" endtime="20210602 14:11:30.175"></status> +</kw> +<msg timestamp="20210602 14:11:30.175" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:30.175" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:30.174" endtime="20210602 14:11:30.175"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.176" endtime="20210602 14:11:30.176"></status> +</kw> +<msg timestamp="20210602 14:11:30.176" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:30.175" endtime="20210602 14:11:30.176"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.177" endtime="20210602 14:11:30.177"></status> +</kw> +<msg timestamp="20210602 14:11:30.178" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.178" level="INFO">${objectSubType} = geo_location</msg> +<status status="PASS" starttime="20210602 14:11:30.177" endtime="20210602 14:11:30.178"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.179" endtime="20210602 14:11:30.179"></status> +</kw> +<msg timestamp="20210602 14:11:30.180" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:30.178" endtime="20210602 14:11:30.180"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:30.181" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:30.180" endtime="20210602 14:11:30.181"></status> +</kw> +<msg timestamp="20210602 14:11:30.181" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:30.181" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:30.180" endtime="20210602 14:11:30.182"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.182" endtime="20210602 14:11:30.183"></status> +</kw> +<msg timestamp="20210602 14:11:30.183" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:30.182" endtime="20210602 14:11:30.183"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.184" endtime="20210602 14:11:30.184"></status> +</kw> +<msg timestamp="20210602 14:11:30.185" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:30.183" endtime="20210602 14:11:30.185"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:30.185" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.185" endtime="20210602 14:11:30.185"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:30.186" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:30.186" endtime="20210602 14:11:30.186"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.187" endtime="20210602 14:11:30.188"></status> +</kw> +<msg timestamp="20210602 14:11:30.188" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.188" level="INFO">${addItemList} = [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]</msg> +<status status="PASS" starttime="20210602 14:11:30.187" endtime="20210602 14:11:30.188"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:30.189" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.188" endtime="20210602 14:11:30.189"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.190" endtime="20210602 14:11:30.190"></status> +</kw> +<msg timestamp="20210602 14:11:30.190" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.189" endtime="20210602 14:11:30.191"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.191" endtime="20210602 14:11:30.192"></status> +</kw> +<msg timestamp="20210602 14:11:30.192" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.191" endtime="20210602 14:11:30.192"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.193" endtime="20210602 14:11:30.194"></status> +</kw> +<msg timestamp="20210602 14:11:30.194" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:30.192" endtime="20210602 14:11:30.194"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.195" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:30.194" endtime="20210602 14:11:30.195"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:30.195" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'a...</msg> +<status status="PASS" starttime="20210602 14:11:30.195" endtime="20210602 14:11:30.196"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.206" endtime="20210602 14:11:30.207"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.207" endtime="20210602 14:11:30.207"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.208" endtime="20210602 14:11:30.208"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.208" endtime="20210602 14:11:30.209"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.208" endtime="20210602 14:11:30.209"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.206" endtime="20210602 14:11:30.209"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.187" endtime="20210602 14:11:30.209"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.186" endtime="20210602 14:11:30.209"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:30.211" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单...</msg> +<status status="PASS" starttime="20210602 14:11:30.210" endtime="20210602 14:11:30.211"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.212" endtime="20210602 14:11:30.212"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.212" endtime="20210602 14:11:30.213"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:30.213" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:30.213" endtime="20210602 14:11:30.214"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.214" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\...</msg> +<status status="PASS" starttime="20210602 14:11:30.214" endtime="20210602 14:11:30.214"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:30.216" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:30.215" endtime="20210602 14:11:30.216"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:30.217" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:30.216" endtime="20210602 14:11:30.217"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:30.218" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:30.382" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:30.217" endtime="20210602 14:11:30.382"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:30.384" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:30.383" endtime="20210602 14:11:30.384"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.385" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.385" endtime="20210602 14:11:30.385"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:30.386" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:29", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "Algeria." ], + "itemId" : 10074669, + "objectId" : 107876 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:29", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074670, + "objectId" : 107876 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107876, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "geo_location", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:29", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:30.386" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:30.386" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:29', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:30.386" endtime="20210602 14:11:30.387"></status> +</kw> +<msg timestamp="20210602 14:11:30.387" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:29', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:30.215" endtime="20210602 14:11:30.387"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:30.389" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:30.389" endtime="20210602 14:11:30.389"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:30.390" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.390" endtime="20210602 14:11:30.390"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:30.391" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:30.390" endtime="20210602 14:11:30.391"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.392" endtime="20210602 14:11:30.393"></status> +</kw> +<msg timestamp="20210602 14:11:30.393" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.393" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:29', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...</msg> +<status status="PASS" starttime="20210602 14:11:30.391" endtime="20210602 14:11:30.393"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.394" endtime="20210602 14:11:30.394"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:29', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.395" endtime="20210602 14:11:30.395"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.394" endtime="20210602 14:11:30.395"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.394" endtime="20210602 14:11:30.395"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.388" endtime="20210602 14:11:30.396"></status> +</kw> +<msg timestamp="20210602 14:11:30.396" level="INFO">${objectIds} = [107876]</msg> +<status status="PASS" starttime="20210602 14:11:30.388" endtime="20210602 14:11:30.396"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:30.397" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:30.396" endtime="20210602 14:11:30.397"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.397" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.397" endtime="20210602 14:11:30.398"></status> +</kw> +<msg timestamp="20210602 14:11:30.398" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:30.398" level="INFO">${objectIds} = [107876]</msg> +<status status="PASS" starttime="20210602 14:11:30.211" endtime="20210602 14:11:30.398"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.399" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.399" endtime="20210602 14:11:30.399"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.400" endtime="20210602 14:11:30.401"></status> +</kw> +<msg timestamp="20210602 14:11:30.401" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:30.400" endtime="20210602 14:11:30.401"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:30.402" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.401" endtime="20210602 14:11:30.402"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107876" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:30.403" level="INFO">${objectList} = {'objectId': 107876, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:30.402" endtime="20210602 14:11:30.403"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.403" endtime="20210602 14:11:30.404"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.402" endtime="20210602 14:11:30.404"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.402" endtime="20210602 14:11:30.404"></status> +</kw> +<msg timestamp="20210602 14:11:30.404" level="INFO">${objectIds} = [107876]</msg> +<msg timestamp="20210602 14:11:30.405" level="INFO">${objectList} = {'objectId': 107876, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:30.169" endtime="20210602 14:11:30.405"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.406" endtime="20210602 14:11:30.406"></status> +</kw> +<msg timestamp="20210602 14:11:30.406" level="INFO">${objectList} = {'objectId': 107876, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:30.405" endtime="20210602 14:11:30.406"></status> +</kw> +<msg timestamp="20210602 14:11:30.407" level="INFO">${objectIds} = [107876]</msg> +<msg timestamp="20210602 14:11:30.407" level="INFO">${objectList} = {'objectId': 107876, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:30.167" endtime="20210602 14:11:30.407"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:30.408" level="INFO">Length is 10</msg> +<msg timestamp="20210602 14:11:30.408" level="INFO">${len} = 10</msg> +<status status="PASS" starttime="20210602 14:11:30.407" endtime="20210602 14:11:30.408"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.420" endtime="20210602 14:11:30.421"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.421" endtime="20210602 14:11:30.421"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107876" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.422" endtime="20210602 14:11:30.422"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.422" endtime="20210602 14:11:30.422"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.421" endtime="20210602 14:11:30.422"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.420" endtime="20210602 14:11:30.423"></status> +</kw> +<msg timestamp="20210602 14:11:30.423" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874, 107875, 107876]</msg> +<status status="PASS" starttime="20210602 14:11:30.408" endtime="20210602 14:11:30.423"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.424" endtime="20210602 14:11:30.425"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.423" endtime="20210602 14:11:30.425"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.166" endtime="20210602 14:11:30.425"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_ADDR', 'objectSubType': 'ip_learning', 'objList': [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth'..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.426" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:30.426" endtime="20210602 14:11:30.426"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.427" endtime="20210602 14:11:30.427"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.428" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:30.427" endtime="20210602 14:11:30.428"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.429" endtime="20210602 14:11:30.429"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.430" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:30.429" endtime="20210602 14:11:30.430"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:30.430" level="INFO">${objList} = [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.430" endtime="20210602 14:11:30.431"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.431" endtime="20210602 14:11:30.431"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.432" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:30.431" endtime="20210602 14:11:30.432"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.432" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:30.432" endtime="20210602 14:11:30.433"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:30.434" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:30.433" endtime="20210602 14:11:30.434"></status> +</kw> +<msg timestamp="20210602 14:11:30.434" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:30.434" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:30.433" endtime="20210602 14:11:30.435"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.435" endtime="20210602 14:11:30.436"></status> +</kw> +<msg timestamp="20210602 14:11:30.436" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:30.435" endtime="20210602 14:11:30.436"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.437" endtime="20210602 14:11:30.437"></status> +</kw> +<msg timestamp="20210602 14:11:30.437" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.438" level="INFO">${objectSubType} = ip_learning</msg> +<status status="PASS" starttime="20210602 14:11:30.437" endtime="20210602 14:11:30.438"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.439" endtime="20210602 14:11:30.439"></status> +</kw> +<msg timestamp="20210602 14:11:30.439" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:30.438" endtime="20210602 14:11:30.439"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:30.440" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:30.440" endtime="20210602 14:11:30.440"></status> +</kw> +<msg timestamp="20210602 14:11:30.441" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:30.441" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:30.440" endtime="20210602 14:11:30.441"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.442" endtime="20210602 14:11:30.442"></status> +</kw> +<msg timestamp="20210602 14:11:30.442" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:30.441" endtime="20210602 14:11:30.442"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.443" endtime="20210602 14:11:30.444"></status> +</kw> +<msg timestamp="20210602 14:11:30.444" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:30.443" endtime="20210602 14:11:30.444"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:30.444" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.444" endtime="20210602 14:11:30.445"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:30.445" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:30.445" endtime="20210602 14:11:30.446"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.447" endtime="20210602 14:11:30.447"></status> +</kw> +<msg timestamp="20210602 14:11:30.447" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.447" level="INFO">${addItemList} = [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]</msg> +<status status="PASS" starttime="20210602 14:11:30.446" endtime="20210602 14:11:30.448"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:30.448" level="INFO">${addItemList} = [{"fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:30.448" endtime="20210602 14:11:30.448"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.449" endtime="20210602 14:11:30.450"></status> +</kw> +<msg timestamp="20210602 14:11:30.450" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:30.449" endtime="20210602 14:11:30.450"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.451" endtime="20210602 14:11:30.452"></status> +</kw> +<msg timestamp="20210602 14:11:30.452" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"</msg> +<status status="PASS" starttime="20210602 14:11:30.451" endtime="20210602 14:11:30.452"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.453" endtime="20210602 14:11:30.453"></status> +</kw> +<msg timestamp="20210602 14:11:30.453" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:30.452" endtime="20210602 14:11:30.454"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.454" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:30.454" endtime="20210602 14:11:30.454"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:30.455" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad...</msg> +<status status="PASS" starttime="20210602 14:11:30.455" endtime="20210602 14:11:30.455"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.466" endtime="20210602 14:11:30.467"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.467" endtime="20210602 14:11:30.467"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'add..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.468" endtime="20210602 14:11:30.468"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.468" endtime="20210602 14:11:30.469"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.467" endtime="20210602 14:11:30.469"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.466" endtime="20210602 14:11:30.469"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.446" endtime="20210602 14:11:30.469"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.446" endtime="20210602 14:11:30.469"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:30.470" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单i...</msg> +<status status="PASS" starttime="20210602 14:11:30.470" endtime="20210602 14:11:30.470"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.471" endtime="20210602 14:11:30.471"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.472" endtime="20210602 14:11:30.472"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:30.473" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:30.472" endtime="20210602 14:11:30.473"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.473" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u...</msg> +<status status="PASS" starttime="20210602 14:11:30.473" endtime="20210602 14:11:30.473"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:30.474" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:30.474" endtime="20210602 14:11:30.475"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:30.475" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:30.475" endtime="20210602 14:11:30.476"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:30.477" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [], "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000", "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:30.513" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:30.476" endtime="20210602 14:11:30.513"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:30.514" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:30.514" endtime="20210602 14:11:30.514"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.515" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.514" endtime="20210602 14:11:30.515"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:30.516" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ ], + "agingTime" : 12, + "deleteItemIds" : [ ], + "fromFqdns" : [ "$www.baidu.com", "*jd.com" ], + "fromProtocol" : "HTTP,SSL", + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "learnedIpLimit" : 1000, + "learningDepth" : "2", + "memberType" : 3, + "objectDesc" : "test", + "objectId" : 107877, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "ip_learning", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:29", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ], + "voteClientNum" : 10 + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:30.516" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:30.516" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:30.515" endtime="20210602 14:11:30.516"></status> +</kw> +<msg timestamp="20210602 14:11:30.517" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:30.474" endtime="20210602 14:11:30.517"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:30.518" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:30.518" endtime="20210602 14:11:30.518"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:30.519" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.519" endtime="20210602 14:11:30.519"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:30.520" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:30.519" endtime="20210602 14:11:30.520"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.521" endtime="20210602 14:11:30.521"></status> +</kw> +<msg timestamp="20210602 14:11:30.521" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.521" level="INFO">${data} = {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusio...</msg> +<status status="PASS" starttime="20210602 14:11:30.520" endtime="20210602 14:11:30.521"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.522" endtime="20210602 14:11:30.522"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusion': 0, 'isInitia..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.523" endtime="20210602 14:11:30.523"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.523" endtime="20210602 14:11:30.523"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.522" endtime="20210602 14:11:30.524"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.517" endtime="20210602 14:11:30.524"></status> +</kw> +<msg timestamp="20210602 14:11:30.524" level="INFO">${objectIds} = [107877]</msg> +<status status="PASS" starttime="20210602 14:11:30.517" endtime="20210602 14:11:30.524"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:30.525" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:30.525" endtime="20210602 14:11:30.525"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.526" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.525" endtime="20210602 14:11:30.526"></status> +</kw> +<msg timestamp="20210602 14:11:30.526" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:30.526" level="INFO">${objectIds} = [107877]</msg> +<status status="PASS" starttime="20210602 14:11:30.471" endtime="20210602 14:11:30.526"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.527" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.527" endtime="20210602 14:11:30.527"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.528" endtime="20210602 14:11:30.528"></status> +</kw> +<msg timestamp="20210602 14:11:30.528" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:30.528" endtime="20210602 14:11:30.529"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:30.529" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.529" endtime="20210602 14:11:30.529"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107877" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:30.530" level="INFO">${objectList} = {'objectId': 107877, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:30.530" endtime="20210602 14:11:30.531"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.531" endtime="20210602 14:11:30.531"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.530" endtime="20210602 14:11:30.531"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.529" endtime="20210602 14:11:30.532"></status> +</kw> +<msg timestamp="20210602 14:11:30.532" level="INFO">${objectIds} = [107877]</msg> +<msg timestamp="20210602 14:11:30.532" level="INFO">${objectList} = {'objectId': 107877, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:30.428" endtime="20210602 14:11:30.532"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.533" endtime="20210602 14:11:30.533"></status> +</kw> +<msg timestamp="20210602 14:11:30.534" level="INFO">${objectList} = {'objectId': 107877, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:30.532" endtime="20210602 14:11:30.534"></status> +</kw> +<msg timestamp="20210602 14:11:30.534" level="INFO">${objectIds} = [107877]</msg> +<msg timestamp="20210602 14:11:30.534" level="INFO">${objectList} = {'objectId': 107877, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:30.426" endtime="20210602 14:11:30.534"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:30.535" level="INFO">Length is 11</msg> +<msg timestamp="20210602 14:11:30.535" level="INFO">${len} = 11</msg> +<status status="PASS" starttime="20210602 14:11:30.535" endtime="20210602 14:11:30.535"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.546" endtime="20210602 14:11:30.546"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.547" endtime="20210602 14:11:30.547"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107877" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.548" endtime="20210602 14:11:30.548"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.547" endtime="20210602 14:11:30.548"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.547" endtime="20210602 14:11:30.548"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.546" endtime="20210602 14:11:30.549"></status> +</kw> +<msg timestamp="20210602 14:11:30.549" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874, 107875, 107876, 107877]</msg> +<status status="PASS" starttime="20210602 14:11:30.536" endtime="20210602 14:11:30.549"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.550" endtime="20210602 14:11:30.550"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.549" endtime="20210602 14:11:30.551"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.425" endtime="20210602 14:11:30.551"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT', 'objectType': 'keywords', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['dongxiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keyw..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.552" level="INFO">${protocolField} = TSG_FIELD_HTTP_RES_CONTENT</msg> +<status status="PASS" starttime="20210602 14:11:30.551" endtime="20210602 14:11:30.552"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.553" endtime="20210602 14:11:30.553"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.553" level="INFO">${protocolField} = TSG_FIELD_HTTP_RES_CONTENT</msg> +<status status="PASS" starttime="20210602 14:11:30.553" endtime="20210602 14:11:30.554"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.555" endtime="20210602 14:11:30.555"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.556" level="INFO">${protocolField} = TSG_FIELD_HTTP_RES_CONTENT</msg> +<status status="PASS" starttime="20210602 14:11:30.555" endtime="20210602 14:11:30.556"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:30.556" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['dongxiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keywordArray': ['@163.']}, {'keywordArray': ['[email protected]']}]}, {'addItemList': [{'keywordArray': ['test@*']...</msg> +<status status="PASS" starttime="20210602 14:11:30.556" endtime="20210602 14:11:30.557"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.557" endtime="20210602 14:11:30.557"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.558" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:30.557" endtime="20210602 14:11:30.558"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.559" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:30.558" endtime="20210602 14:11:30.559"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.559" endtime="20210602 14:11:30.560"></status> +</kw> +<msg timestamp="20210602 14:11:30.560" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.560" level="INFO">${objectType} = keywords</msg> +<status status="PASS" starttime="20210602 14:11:30.559" endtime="20210602 14:11:30.560"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.561" endtime="20210602 14:11:30.561"></status> +</kw> +<msg timestamp="20210602 14:11:30.562" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "tes...</msg> +<status status="PASS" starttime="20210602 14:11:30.560" endtime="20210602 14:11:30.562"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.562" endtime="20210602 14:11:30.563"></status> +</kw> +<msg timestamp="20210602 14:11:30.563" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.563" level="INFO">${objectSubType} = </msg> +<status status="PASS" starttime="20210602 14:11:30.562" endtime="20210602 14:11:30.563"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.564" endtime="20210602 14:11:30.564"></status> +</kw> +<msg timestamp="20210602 14:11:30.565" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.563" endtime="20210602 14:11:30.565"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:30.566" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:30.565" endtime="20210602 14:11:30.566"></status> +</kw> +<msg timestamp="20210602 14:11:30.566" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:30.566" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:30.565" endtime="20210602 14:11:30.566"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.567" endtime="20210602 14:11:30.567"></status> +</kw> +<msg timestamp="20210602 14:11:30.568" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.567" endtime="20210602 14:11:30.568"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.569" endtime="20210602 14:11:30.569"></status> +</kw> +<msg timestamp="20210602 14:11:30.569" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.568" endtime="20210602 14:11:30.569"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:30.570" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.570" endtime="20210602 14:11:30.570"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:30.571" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:30.570" endtime="20210602 14:11:30.571"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['dongxiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keywordArray': ['@163.']}, {'keywordArray': ['[email protected]']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.572" endtime="20210602 14:11:30.573"></status> +</kw> +<msg timestamp="20210602 14:11:30.573" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.573" level="INFO">${addItemList} = [{'keywordArray': ['dongxiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keywordArray': ['@163.']}, {'keywordArray': ['[email protected]']}]</msg> +<status status="PASS" starttime="20210602 14:11:30.572" endtime="20210602 14:11:30.573"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:30.574" level="INFO">${addItemList} = [{"keywordArray": ["dongxiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.573" endtime="20210602 14:11:30.574"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.575" endtime="20210602 14:11:30.576"></status> +</kw> +<msg timestamp="20210602 14:11:30.576" level="INFO">${addItemList} = [{"keywordArray": ["dongxiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.574" endtime="20210602 14:11:30.576"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.577" endtime="20210602 14:11:30.577"></status> +</kw> +<msg timestamp="20210602 14:11:30.577" level="INFO">${addItemList} = [{"keywordArray": ["dongxiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.576" endtime="20210602 14:11:30.578"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.578" endtime="20210602 14:11:30.579"></status> +</kw> +<msg timestamp="20210602 14:11:30.579" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.578" endtime="20210602 14:11:30.579"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.580" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.579" endtime="20210602 14:11:30.580"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:30.581" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItem...</msg> +<status status="PASS" starttime="20210602 14:11:30.580" endtime="20210602 14:11:30.581"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.592" endtime="20210602 14:11:30.592"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.592" endtime="20210602 14:11:30.592"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemL..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.593" endtime="20210602 14:11:30.594"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.593" endtime="20210602 14:11:30.594"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.593" endtime="20210602 14:11:30.594"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.591" endtime="20210602 14:11:30.594"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.572" endtime="20210602 14:11:30.594"></status> +</kw> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['test@*']}, {'keywordArray': ['*@test.com']}, {'keywordArray': ['@test.']}, {'keywordArray': ['[email protected]']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.595" endtime="20210602 14:11:30.596"></status> +</kw> +<msg timestamp="20210602 14:11:30.596" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.596" level="INFO">${addItemList} = [{'keywordArray': ['test@*']}, {'keywordArray': ['*@test.com']}, {'keywordArray': ['@test.']}, {'keywordArray': ['[email protected]']}]</msg> +<status status="PASS" starttime="20210602 14:11:30.595" endtime="20210602 14:11:30.596"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:30.597" level="INFO">${addItemList} = [{"keywordArray": ["test@*"]}, {"keywordArray": ["*@test.com"]}, {"keywordArray": ["@test."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.596" endtime="20210602 14:11:30.597"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.598" endtime="20210602 14:11:30.598"></status> +</kw> +<msg timestamp="20210602 14:11:30.598" level="INFO">${addItemList} = [{"keywordArray": ["test@*"]}, {"keywordArray": ["*@test.com"]}, {"keywordArray": ["@test."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.597" endtime="20210602 14:11:30.598"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.599" endtime="20210602 14:11:30.599"></status> +</kw> +<msg timestamp="20210602 14:11:30.600" level="INFO">${addItemList} = [{"keywordArray": ["test@*"]}, {"keywordArray": ["*@test.com"]}, {"keywordArray": ["@test."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.599" endtime="20210602 14:11:30.600"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.601" endtime="20210602 14:11:30.602"></status> +</kw> +<msg timestamp="20210602 14:11:30.602" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.601" endtime="20210602 14:11:30.602"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.603" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.602" endtime="20210602 14:11:30.603"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:30.603" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItem...</msg> +<status status="PASS" starttime="20210602 14:11:30.603" endtime="20210602 14:11:30.604"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.614" endtime="20210602 14:11:30.615"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.615" endtime="20210602 14:11:30.615"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemL..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.616" endtime="20210602 14:11:30.616"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.616" endtime="20210602 14:11:30.617"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.615" endtime="20210602 14:11:30.617"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.614" endtime="20210602 14:11:30.617"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.595" endtime="20210602 14:11:30.617"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.571" endtime="20210602 14:11:30.617"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:30.618" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口...</msg> +<status status="PASS" starttime="20210602 14:11:30.618" endtime="20210602 14:11:30.619"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.619" endtime="20210602 14:11:30.620"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.620" endtime="20210602 14:11:30.620"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:30.621" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:30.620" endtime="20210602 14:11:30.621"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.621" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "keywords", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355i...</msg> +<status status="PASS" starttime="20210602 14:11:30.621" endtime="20210602 14:11:30.622"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:30.623" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:30.623" endtime="20210602 14:11:30.623"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:30.624" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:30.623" endtime="20210602 14:11:30.624"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:30.625" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "keywords", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["dongxiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}, {"objectId": null, "objectType": "keywords", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["dongxiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:30.861" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:30.625" endtime="20210602 14:11:30.862"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:30.865" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:30.863" endtime="20210602 14:11:30.865"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.869" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.867" endtime="20210602 14:11:30.870"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:30.873" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "dongxiaoyan@" ], + "itemId" : 10074671, + "objectId" : 107878 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "@163.com" ], + "itemId" : 10074672, + "objectId" : 107878 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "@163." ], + "itemId" : 10074673, + "objectId" : 107878 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "[email protected]" ], + "itemId" : 10074674, + "objectId" : 107878 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107878, + "objectName" : "auttest单ip指定端口", + "objectType" : "keywords", + "opTime" : "2021-06-02 14:11:30", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + }, { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "dongxiaoyan@" ], + "itemId" : 10074675, + "objectId" : 107879 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "@163.com" ], + "itemId" : 10074676, + "objectId" : 107879 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "@163." ], + "itemId" : 10074677, + "objectId" : 107879 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "[email protected]" ], + "itemId" : 10074678, + "objectId" : 107879 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107879, + "objectName" : "auttest单ip指定端口", + "objectType" : "keywords", + "opTime" : "2021-06-02 14:11:30", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:30.874" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:30.875" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:30.871" endtime="20210602 14:11:30.875"></status> +</kw> +<msg timestamp="20210602 14:11:30.876" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:30.622" endtime="20210602 14:11:30.877"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:30.880" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:30.880" endtime="20210602 14:11:30.881"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:30.882" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.881" endtime="20210602 14:11:30.882"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:30.883" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:30.882" endtime="20210602 14:11:30.883"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.885" endtime="20210602 14:11:30.886"></status> +</kw> +<msg timestamp="20210602 14:11:30.886" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.886" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['d...</msg> +<status status="PASS" starttime="20210602 14:11:30.883" endtime="20210602 14:11:30.887"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.887" endtime="20210602 14:11:30.887"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['dongxiaoyan@'], '..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.888" endtime="20210602 14:11:30.889"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.888" endtime="20210602 14:11:30.889"></status> +</kw> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['dongxiaoyan@'], '..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.890" endtime="20210602 14:11:30.890"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.889" endtime="20210602 14:11:30.891"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.887" endtime="20210602 14:11:30.891"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.879" endtime="20210602 14:11:30.891"></status> +</kw> +<msg timestamp="20210602 14:11:30.892" level="INFO">${objectIds} = [107878, 107879]</msg> +<status status="PASS" starttime="20210602 14:11:30.877" endtime="20210602 14:11:30.892"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:30.893" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:30.892" endtime="20210602 14:11:30.893"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.894" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.893" endtime="20210602 14:11:30.894"></status> +</kw> +<msg timestamp="20210602 14:11:30.894" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:30.894" level="INFO">${objectIds} = [107878, 107879]</msg> +<status status="PASS" starttime="20210602 14:11:30.619" endtime="20210602 14:11:30.895"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:30.895" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:30.895" endtime="20210602 14:11:30.896"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.897" endtime="20210602 14:11:30.897"></status> +</kw> +<msg timestamp="20210602 14:11:30.897" level="INFO">${protocolField} = TSG_FIELD_HTTP_RES_CONTENT</msg> +<status status="PASS" starttime="20210602 14:11:30.896" endtime="20210602 14:11:30.897"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:30.898" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.898" endtime="20210602 14:11:30.898"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107878" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:30.900" level="INFO">${objectList} = {'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}</msg> +<status status="PASS" starttime="20210602 14:11:30.899" endtime="20210602 14:11:30.900"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.900" endtime="20210602 14:11:30.900"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.899" endtime="20210602 14:11:30.901"></status> +</kw> +<kw name="${obj} = 107879" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:30.902" level="INFO">${objectList} = {'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}</msg> +<status status="PASS" starttime="20210602 14:11:30.901" endtime="20210602 14:11:30.902"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.902" endtime="20210602 14:11:30.902"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.901" endtime="20210602 14:11:30.902"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.899" endtime="20210602 14:11:30.903"></status> +</kw> +<msg timestamp="20210602 14:11:30.903" level="INFO">${objectIds} = [107878, 107879]</msg> +<msg timestamp="20210602 14:11:30.903" level="INFO">${objectList} = {'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}</msg> +<status status="PASS" starttime="20210602 14:11:30.554" endtime="20210602 14:11:30.903"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="OrangeFilter" library="object"> +<doc>filer对象处理,把一个filter的list处理为一个filter</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${list}</var> +</assign> +<msg timestamp="20210602 14:11:30.905" level="INFO">${list} = [{'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]</msg> +<status status="PASS" starttime="20210602 14:11:30.905" endtime="20210602 14:11:30.905"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>filter=${list}</arg> +</arguments> +<assign> +<var>${filter}</var> +</assign> +<msg timestamp="20210602 14:11:30.906" level="INFO">${filter} = {'filter': [{'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}</msg> +<status status="PASS" starttime="20210602 14:11:30.906" endtime="20210602 14:11:30.906"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.904" endtime="20210602 14:11:30.906"></status> +</kw> +<msg timestamp="20210602 14:11:30.907" level="INFO">${objectList} = {'filter': [{'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}</msg> +<status status="PASS" starttime="20210602 14:11:30.903" endtime="20210602 14:11:30.907"></status> +</kw> +<msg timestamp="20210602 14:11:30.907" level="INFO">${objectIds} = [107878, 107879]</msg> +<msg timestamp="20210602 14:11:30.907" level="INFO">${objectList} = {'filter': [{'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}</msg> +<status status="PASS" starttime="20210602 14:11:30.552" endtime="20210602 14:11:30.907"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:30.908" level="INFO">Length is 12</msg> +<msg timestamp="20210602 14:11:30.908" level="INFO">${len} = 12</msg> +<status status="PASS" starttime="20210602 14:11:30.908" endtime="20210602 14:11:30.908"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.921" endtime="20210602 14:11:30.922"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.922" endtime="20210602 14:11:30.922"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107878" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.923" endtime="20210602 14:11:30.923"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.923" endtime="20210602 14:11:30.923"></status> +</kw> +<kw name="${objdict} = 107879" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.924" endtime="20210602 14:11:30.924"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.924" endtime="20210602 14:11:30.924"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.922" endtime="20210602 14:11:30.925"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.921" endtime="20210602 14:11:30.925"></status> +</kw> +<msg timestamp="20210602 14:11:30.925" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874, 107875, 107876, 107877, 107878, 107879]</msg> +<status status="PASS" starttime="20210602 14:11:30.909" endtime="20210602 14:11:30.925"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.926" endtime="20210602 14:11:30.927"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.926" endtime="20210602 14:11:30.927"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.551" endtime="20210602 14:11:30.927"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT', 'objectType': 'keywords', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['xiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keywordA..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.928" level="INFO">${protocolField} = TSG_FIELD_HTTP_RES_CONTENT</msg> +<status status="PASS" starttime="20210602 14:11:30.927" endtime="20210602 14:11:30.928"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.929" endtime="20210602 14:11:30.930"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.930" level="INFO">${protocolField} = TSG_FIELD_HTTP_RES_CONTENT</msg> +<status status="PASS" starttime="20210602 14:11:30.930" endtime="20210602 14:11:30.931"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.931" endtime="20210602 14:11:30.931"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:30.932" level="INFO">${protocolField} = TSG_FIELD_HTTP_RES_CONTENT</msg> +<status status="PASS" starttime="20210602 14:11:30.932" endtime="20210602 14:11:30.932"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:30.933" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['xiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keywordArray': ['@163.']}, {'keywordArray': ['[email protected]']}]}, {'addItemList': [{'keywordArray': ['test@*']}, {...</msg> +<status status="PASS" starttime="20210602 14:11:30.932" endtime="20210602 14:11:30.933"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.933" endtime="20210602 14:11:30.934"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.934" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:30.934" endtime="20210602 14:11:30.934"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.935" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:30.935" endtime="20210602 14:11:30.935"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.936" endtime="20210602 14:11:30.936"></status> +</kw> +<msg timestamp="20210602 14:11:30.936" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.937" level="INFO">${objectType} = keywords</msg> +<status status="PASS" starttime="20210602 14:11:30.935" endtime="20210602 14:11:30.937"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.937" endtime="20210602 14:11:30.938"></status> +</kw> +<msg timestamp="20210602 14:11:30.938" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "tes...</msg> +<status status="PASS" starttime="20210602 14:11:30.937" endtime="20210602 14:11:30.938"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.939" endtime="20210602 14:11:30.939"></status> +</kw> +<msg timestamp="20210602 14:11:30.939" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.939" level="INFO">${objectSubType} = </msg> +<status status="PASS" starttime="20210602 14:11:30.938" endtime="20210602 14:11:30.940"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.940" endtime="20210602 14:11:30.941"></status> +</kw> +<msg timestamp="20210602 14:11:30.941" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.940" endtime="20210602 14:11:30.941"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:30.942" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:30.942" endtime="20210602 14:11:30.942"></status> +</kw> +<msg timestamp="20210602 14:11:30.943" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:30.943" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:30.941" endtime="20210602 14:11:30.943"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.944" endtime="20210602 14:11:30.944"></status> +</kw> +<msg timestamp="20210602 14:11:30.944" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.943" endtime="20210602 14:11:30.944"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.945" endtime="20210602 14:11:30.945"></status> +</kw> +<msg timestamp="20210602 14:11:30.946" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.945" endtime="20210602 14:11:30.946"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:30.946" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:30.946" endtime="20210602 14:11:30.946"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:30.947" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:30.947" endtime="20210602 14:11:30.948"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['xiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keywordArray': ['@163.']}, {'keywordArray': ['[email protected]']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.949" endtime="20210602 14:11:30.949"></status> +</kw> +<msg timestamp="20210602 14:11:30.949" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.949" level="INFO">${addItemList} = [{'keywordArray': ['xiaoyan@*']}, {'keywordArray': ['*@163.com']}, {'keywordArray': ['@163.']}, {'keywordArray': ['[email protected]']}]</msg> +<status status="PASS" starttime="20210602 14:11:30.948" endtime="20210602 14:11:30.949"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:30.950" level="INFO">${addItemList} = [{"keywordArray": ["xiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.950" endtime="20210602 14:11:30.950"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.951" endtime="20210602 14:11:30.952"></status> +</kw> +<msg timestamp="20210602 14:11:30.952" level="INFO">${addItemList} = [{"keywordArray": ["xiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.951" endtime="20210602 14:11:30.952"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.953" endtime="20210602 14:11:30.953"></status> +</kw> +<msg timestamp="20210602 14:11:30.954" level="INFO">${addItemList} = [{"keywordArray": ["xiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.953" endtime="20210602 14:11:30.954"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.955" endtime="20210602 14:11:30.955"></status> +</kw> +<msg timestamp="20210602 14:11:30.955" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.954" endtime="20210602 14:11:30.955"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.956" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.956" endtime="20210602 14:11:30.956"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:30.957" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItem...</msg> +<status status="PASS" starttime="20210602 14:11:30.957" endtime="20210602 14:11:30.957"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.969" endtime="20210602 14:11:30.969"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.970" endtime="20210602 14:11:30.970"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemL..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.971" endtime="20210602 14:11:30.971"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.971" endtime="20210602 14:11:30.971"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.970" endtime="20210602 14:11:30.971"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.969" endtime="20210602 14:11:30.972"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.948" endtime="20210602 14:11:30.972"></status> +</kw> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['test@*']}, {'keywordArray': ['*@test.com']}, {'keywordArray': ['@test.']}, {'keywordArray': ['[email protected]']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.973" endtime="20210602 14:11:30.973"></status> +</kw> +<msg timestamp="20210602 14:11:30.974" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:30.974" level="INFO">${addItemList} = [{'keywordArray': ['test@*']}, {'keywordArray': ['*@test.com']}, {'keywordArray': ['@test.']}, {'keywordArray': ['[email protected]']}]</msg> +<status status="PASS" starttime="20210602 14:11:30.973" endtime="20210602 14:11:30.974"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:30.975" level="INFO">${addItemList} = [{"keywordArray": ["test@*"]}, {"keywordArray": ["*@test.com"]}, {"keywordArray": ["@test."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.974" endtime="20210602 14:11:30.975"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.976" endtime="20210602 14:11:30.976"></status> +</kw> +<msg timestamp="20210602 14:11:30.977" level="INFO">${addItemList} = [{"keywordArray": ["test@*"]}, {"keywordArray": ["*@test.com"]}, {"keywordArray": ["@test."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.975" endtime="20210602 14:11:30.977"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.978" endtime="20210602 14:11:30.978"></status> +</kw> +<msg timestamp="20210602 14:11:30.978" level="INFO">${addItemList} = [{"keywordArray": ["test@*"]}, {"keywordArray": ["*@test.com"]}, {"keywordArray": ["@test."]}, {"keywordArray": ["[email protected]"]}]</msg> +<status status="PASS" starttime="20210602 14:11:30.977" endtime="20210602 14:11:30.979"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.980" endtime="20210602 14:11:30.980"></status> +</kw> +<msg timestamp="20210602 14:11:30.980" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.979" endtime="20210602 14:11:30.980"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:30.981" level="INFO">${objectJson} = [{"objectId": null, "objectType":"keywords", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subO...</msg> +<status status="PASS" starttime="20210602 14:11:30.981" endtime="20210602 14:11:30.981"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:30.982" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItem...</msg> +<status status="PASS" starttime="20210602 14:11:30.982" endtime="20210602 14:11:30.982"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.993" endtime="20210602 14:11:30.993"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.994" endtime="20210602 14:11:30.994"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemL..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.995" endtime="20210602 14:11:30.995"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.994" endtime="20210602 14:11:30.995"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.994" endtime="20210602 14:11:30.995"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.992" endtime="20210602 14:11:30.996"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.972" endtime="20210602 14:11:30.996"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.948" endtime="20210602 14:11:30.996"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:30.997" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'keywords', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口...</msg> +<status status="PASS" starttime="20210602 14:11:30.996" endtime="20210602 14:11:30.997"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.999" endtime="20210602 14:11:30.999"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:30.999" endtime="20210602 14:11:31.000"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:31.001" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:31.000" endtime="20210602 14:11:31.001"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.002" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "keywords", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355i...</msg> +<status status="PASS" starttime="20210602 14:11:31.001" endtime="20210602 14:11:31.002"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:31.003" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:31.003" endtime="20210602 14:11:31.003"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:31.004" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:31.004" endtime="20210602 14:11:31.004"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:31.005" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "keywords", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["xiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}, {"objectId": null, "objectType": "keywords", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["xiaoyan@*"]}, {"keywordArray": ["*@163.com"]}, {"keywordArray": ["@163."]}, {"keywordArray": ["[email protected]"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:31.083" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:31.005" endtime="20210602 14:11:31.083"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:31.084" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:31.084" endtime="20210602 14:11:31.085"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:31.086" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:31.085" endtime="20210602 14:11:31.086"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:31.088" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "xiaoyan@" ], + "itemId" : 10074679, + "objectId" : 107880 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "@163.com" ], + "itemId" : 10074680, + "objectId" : 107880 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "@163." ], + "itemId" : 10074681, + "objectId" : 107880 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "[email protected]" ], + "itemId" : 10074682, + "objectId" : 107880 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107880, + "objectName" : "auttest单ip指定端口", + "objectType" : "keywords", + "opTime" : "2021-06-02 14:11:30", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + }, { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "xiaoyan@" ], + "itemId" : 10074683, + "objectId" : 107881 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "@163.com" ], + "itemId" : 10074684, + "objectId" : 107881 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "@163." ], + "itemId" : 10074685, + "objectId" : 107881 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:30", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "[email protected]" ], + "itemId" : 10074686, + "objectId" : 107881 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107881, + "objectName" : "auttest单ip指定端口", + "objectType" : "keywords", + "opTime" : "2021-06-02 14:11:30", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:31.088" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:31.088" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:31.087" endtime="20210602 14:11:31.089"></status> +</kw> +<msg timestamp="20210602 14:11:31.089" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:31.002" endtime="20210602 14:11:31.090"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:31.092" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:31.092" endtime="20210602 14:11:31.093"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:31.094" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.093" endtime="20210602 14:11:31.094"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:31.095" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:31.095" endtime="20210602 14:11:31.095"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.097" endtime="20210602 14:11:31.097"></status> +</kw> +<msg timestamp="20210602 14:11:31.098" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.098" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['x...</msg> +<status status="PASS" starttime="20210602 14:11:31.096" endtime="20210602 14:11:31.098"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.099" endtime="20210602 14:11:31.099"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['xiaoyan@'], 'item..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.101" endtime="20210602 14:11:31.102"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.100" endtime="20210602 14:11:31.102"></status> +</kw> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:30', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['xiaoyan@'], 'item..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.103" endtime="20210602 14:11:31.104"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.103" endtime="20210602 14:11:31.104"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.100" endtime="20210602 14:11:31.104"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.091" endtime="20210602 14:11:31.104"></status> +</kw> +<msg timestamp="20210602 14:11:31.105" level="INFO">${objectIds} = [107880, 107881]</msg> +<status status="PASS" starttime="20210602 14:11:31.090" endtime="20210602 14:11:31.105"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:31.106" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:31.105" endtime="20210602 14:11:31.106"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:31.107" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:31.107" endtime="20210602 14:11:31.108"></status> +</kw> +<msg timestamp="20210602 14:11:31.108" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:31.108" level="INFO">${objectIds} = [107880, 107881]</msg> +<status status="PASS" starttime="20210602 14:11:30.998" endtime="20210602 14:11:31.108"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:31.109" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:31.109" endtime="20210602 14:11:31.109"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.110" endtime="20210602 14:11:31.111"></status> +</kw> +<msg timestamp="20210602 14:11:31.111" level="INFO">${protocolField} = TSG_FIELD_HTTP_RES_CONTENT</msg> +<status status="PASS" starttime="20210602 14:11:31.110" endtime="20210602 14:11:31.111"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:31.112" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.112" endtime="20210602 14:11:31.112"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107880" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:31.114" level="INFO">${objectList} = {'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}</msg> +<status status="PASS" starttime="20210602 14:11:31.113" endtime="20210602 14:11:31.114"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.114" endtime="20210602 14:11:31.114"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.113" endtime="20210602 14:11:31.115"></status> +</kw> +<kw name="${obj} = 107881" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:31.116" level="INFO">${objectList} = {'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}</msg> +<status status="PASS" starttime="20210602 14:11:31.115" endtime="20210602 14:11:31.116"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.116" endtime="20210602 14:11:31.117"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.115" endtime="20210602 14:11:31.117"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.112" endtime="20210602 14:11:31.117"></status> +</kw> +<msg timestamp="20210602 14:11:31.117" level="INFO">${objectIds} = [107880, 107881]</msg> +<msg timestamp="20210602 14:11:31.117" level="INFO">${objectList} = {'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}</msg> +<status status="PASS" starttime="20210602 14:11:30.931" endtime="20210602 14:11:31.118"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="OrangeFilter" library="object"> +<doc>filer对象处理,把一个filter的list处理为一个filter</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${list}</var> +</assign> +<msg timestamp="20210602 14:11:31.120" level="INFO">${list} = [{'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]</msg> +<status status="PASS" starttime="20210602 14:11:31.119" endtime="20210602 14:11:31.120"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>filter=${list}</arg> +</arguments> +<assign> +<var>${filter}</var> +</assign> +<msg timestamp="20210602 14:11:31.120" level="INFO">${filter} = {'filter': [{'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}</msg> +<status status="PASS" starttime="20210602 14:11:31.120" endtime="20210602 14:11:31.120"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.119" endtime="20210602 14:11:31.121"></status> +</kw> +<msg timestamp="20210602 14:11:31.121" level="INFO">${objectList} = {'filter': [{'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}</msg> +<status status="PASS" starttime="20210602 14:11:31.118" endtime="20210602 14:11:31.121"></status> +</kw> +<msg timestamp="20210602 14:11:31.121" level="INFO">${objectIds} = [107880, 107881]</msg> +<msg timestamp="20210602 14:11:31.122" level="INFO">${objectList} = {'filter': [{'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}</msg> +<status status="PASS" starttime="20210602 14:11:30.928" endtime="20210602 14:11:31.122"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:31.122" level="INFO">Length is 14</msg> +<msg timestamp="20210602 14:11:31.122" level="INFO">${len} = 14</msg> +<status status="PASS" starttime="20210602 14:11:31.122" endtime="20210602 14:11:31.123"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.133" endtime="20210602 14:11:31.133"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.134" endtime="20210602 14:11:31.134"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107880" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.135" endtime="20210602 14:11:31.135"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.134" endtime="20210602 14:11:31.135"></status> +</kw> +<kw name="${objdict} = 107881" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.135" endtime="20210602 14:11:31.136"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.135" endtime="20210602 14:11:31.136"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.134" endtime="20210602 14:11:31.136"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.133" endtime="20210602 14:11:31.136"></status> +</kw> +<msg timestamp="20210602 14:11:31.137" level="INFO">${objectIdsList} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874, 107875, 107876, 107877, 107878, 107879, 107880, 107881]</msg> +<status status="PASS" starttime="20210602 14:11:31.123" endtime="20210602 14:11:31.137"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.138" endtime="20210602 14:11:31.138"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.137" endtime="20210602 14:11:31.138"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:30.927" endtime="20210602 14:11:31.139"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.783" endtime="20210602 14:11:31.139"></status> +</kw> +<msg timestamp="20210602 14:11:31.139" level="INFO">${objectIds} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874, 107875, 107876, 107877, 107878, 107879, 107880, 107881]</msg> +<msg timestamp="20210602 14:11:31.139" level="INFO">${sourceList} = [{'objectId': 107866, 'protocolField': None}, {'objectId': 107868, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}, {'objectId': 107870, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}, {'objectId': 107...</msg> +<msg timestamp="20210602 14:11:31.140" level="INFO">${destinationList} = [{'objectId': 107875, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107876, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}, {'objectId': 107877, 'protocolField': 'TSG_SECURITY...</msg> +<msg timestamp="20210602 14:11:31.140" level="INFO">${filterList} = [{'filter': [{'objectId': 107878, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}, {'filter': [{'objectId': 107880, 'protocolField': 'TSG_FIELD_HTTP_RES_CONTENT'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:21.779" endtime="20210602 14:11:31.140"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${sourceList}</arg> +</arguments> +<assign> +<var>${sourceList}</var> +</assign> +<msg timestamp="20210602 14:11:31.140" level="INFO">${sourceList} = [{"objectId": 107866, "protocolField": null}, {"objectId": 107868, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}, {"objectId": 107870, "protocolField": "TSG_SECURITY_SOURCE_LOCATION"}, {"objectId": 107...</msg> +<status status="PASS" starttime="20210602 14:11:31.140" endtime="20210602 14:11:31.141"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${destinationList}</arg> +</arguments> +<assign> +<var>${destinationList}</var> +</assign> +<msg timestamp="20210602 14:11:31.141" level="INFO">${destinationList} = [{"objectId": 107875, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}, {"objectId": 107876, "protocolField": "TSG_SECURITY_DESTINATION_LOCATION"}, {"objectId": 107877, "protocolField": "TSG_SECURITY...</msg> +<status status="PASS" starttime="20210602 14:11:31.141" endtime="20210602 14:11:31.141"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${filterList}</arg> +</arguments> +<assign> +<var>${filterList}</var> +</assign> +<msg timestamp="20210602 14:11:31.142" level="INFO">${filterList} = [{"filter": [{"objectId": 107878, "protocolField": "TSG_FIELD_HTTP_RES_CONTENT"}]}, {"filter": [{"objectId": 107880, "protocolField": "TSG_FIELD_HTTP_RES_CONTENT"}]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.142" endtime="20210602 14:11:31.142"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"source": null</arg> +<arg>"source":${sourceList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.143" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:31.143" endtime="20210602 14:11:31.143"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"destination": null</arg> +<arg>"destination":${destinationList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.144" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:31.143" endtime="20210602 14:11:31.144"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"filterList": null</arg> +<arg>"filterList":${filterList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.145" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:31.144" endtime="20210602 14:11:31.145"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>处理策略数据:</arg> +<arg>"opAction": "add"</arg> +<arg>"returnData": 1</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"action": "allow"</arg> +<arg>"userTags": ""</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doLog": 1</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"effectiveRange":</arg> +<arg>"userRegion":</arg> +<arg>"appIdObjects":</arg> +<arg>"appSelectorObjects":</arg> +<arg>"isValid": 1</arg> +<arg>"scheduleId":</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.145" endtime="20210602 14:11:31.145"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>opAction</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${opAction}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>opAction</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.146" endtime="20210602 14:11:31.146"></status> +</kw> +<msg timestamp="20210602 14:11:31.147" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.147" level="INFO">${opAction} = add</msg> +<status status="PASS" starttime="20210602 14:11:31.146" endtime="20210602 14:11:31.147"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${opAction}" != "${EMPTY}"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"opAction": "${opAction}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"opAction": "${opAction}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.148" endtime="20210602 14:11:31.148"></status> +</kw> +<msg timestamp="20210602 14:11:31.148" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:31.147" endtime="20210602 14:11:31.148"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${returnData}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>returnData</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.150" endtime="20210602 14:11:31.150"></status> +</kw> +<msg timestamp="20210602 14:11:31.150" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.150" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:31.149" endtime="20210602 14:11:31.151"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${returnData}" != "${EMPTY}"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"returnData": 1</arg> +<arg>"returnData": "${returnData}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"returnData": 1</arg> +<arg>"returnData": "${returnData}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.152" endtime="20210602 14:11:31.152"></status> +</kw> +<msg timestamp="20210602 14:11:31.152" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest",...</msg> +<status status="PASS" starttime="20210602 14:11:31.151" endtime="20210602 14:11:31.152"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyName</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyName}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyName</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.153" endtime="20210602 14:11:31.153"></status> +</kw> +<msg timestamp="20210602 14:11:31.154" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.154" level="INFO">${policyName} = autotestmonitor</msg> +<status status="PASS" starttime="20210602 14:11:31.153" endtime="20210602 14:11:31.154"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyName}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${policyName}"</arg> +<arg>ELSE</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${testName}"</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${policyName}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.155" endtime="20210602 14:11:31.155"></status> +</kw> +<msg timestamp="20210602 14:11:31.155" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "aut...</msg> +<status status="PASS" starttime="20210602 14:11:31.154" endtime="20210602 14:11:31.155"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.156" endtime="20210602 14:11:31.156"></status> +</kw> +<msg timestamp="20210602 14:11:31.157" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.157" level="INFO">${policyType} = tsg_security</msg> +<status status="PASS" starttime="20210602 14:11:31.156" endtime="20210602 14:11:31.157"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"policyType": "${policyType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"policyType": "${policyType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.158" endtime="20210602 14:11:31.158"></status> +</kw> +<msg timestamp="20210602 14:11:31.158" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "aut...</msg> +<status status="PASS" starttime="20210602 14:11:31.157" endtime="20210602 14:11:31.158"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>action</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${action}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>action</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.159" endtime="20210602 14:11:31.160"></status> +</kw> +<msg timestamp="20210602 14:11:31.160" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.160" level="INFO">${action} = monitor</msg> +<status status="PASS" starttime="20210602 14:11:31.159" endtime="20210602 14:11:31.160"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${action}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"action": "allow"</arg> +<arg>"action": "${action}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"action": "allow"</arg> +<arg>"action": "${action}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.161" endtime="20210602 14:11:31.161"></status> +</kw> +<msg timestamp="20210602 14:11:31.162" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.160" endtime="20210602 14:11:31.162"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>method</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${method}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>method</arg> +</arguments> +<msg timestamp="20210602 14:11:31.163" level="FAIL">Dictionary does not contain key 'method'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.162" endtime="20210602 14:11:31.163"></status> +</kw> +<msg timestamp="20210602 14:11:31.163" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.163" level="INFO">${method} = Dictionary does not contain key 'method'.</msg> +<status status="PASS" starttime="20210602 14:11:31.162" endtime="20210602 14:11:31.163"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>userTags</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${userTags}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>userTags</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.164" endtime="20210602 14:11:31.164"></status> +</kw> +<msg timestamp="20210602 14:11:31.165" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.165" level="INFO">${userTags} = </msg> +<status status="PASS" starttime="20210602 14:11:31.164" endtime="20210602 14:11:31.165"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${userTags}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"userTags": null</arg> +<arg>"userTags": ${userTags}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userTags": null</arg> +<arg>"userTags": ${userTags}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.166" endtime="20210602 14:11:31.166"></status> +</kw> +<msg timestamp="20210602 14:11:31.166" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.165" endtime="20210602 14:11:31.167"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>doBlacklist</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${doBlacklist}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>doBlacklist</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.167" endtime="20210602 14:11:31.168"></status> +</kw> +<msg timestamp="20210602 14:11:31.168" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.168" level="INFO">${doBlacklist} = 0</msg> +<status status="PASS" starttime="20210602 14:11:31.167" endtime="20210602 14:11:31.168"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${doBlacklist}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doBlacklist": ${doBlacklist}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doBlacklist": ${doBlacklist}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.169" endtime="20210602 14:11:31.170"></status> +</kw> +<msg timestamp="20210602 14:11:31.170" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.169" endtime="20210602 14:11:31.170"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>doLog</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${doLog}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>doLog</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.171" endtime="20210602 14:11:31.171"></status> +</kw> +<msg timestamp="20210602 14:11:31.171" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.171" level="INFO">${doLog} = 1</msg> +<status status="PASS" starttime="20210602 14:11:31.170" endtime="20210602 14:11:31.172"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${doLog}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"doLog": 1</arg> +<arg>"doLog": ${doLog}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"doLog": 1</arg> +<arg>"doLog": ${doLog}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.172" endtime="20210602 14:11:31.173"></status> +</kw> +<msg timestamp="20210602 14:11:31.173" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.172" endtime="20210602 14:11:31.173"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyDesc</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyDesc}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyDesc</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.174" endtime="20210602 14:11:31.174"></status> +</kw> +<msg timestamp="20210602 14:11:31.174" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.174" level="INFO">${policyDesc} = autotest</msg> +<status status="PASS" starttime="20210602 14:11:31.173" endtime="20210602 14:11:31.175"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyDesc}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"policyDesc": "${policyDesc}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"policyDesc": "${policyDesc}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.175" endtime="20210602 14:11:31.176"></status> +</kw> +<msg timestamp="20210602 14:11:31.176" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.175" endtime="20210602 14:11:31.176"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>effectiveRange</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${effectiveRange}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>effectiveRange</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.177" endtime="20210602 14:11:31.177"></status> +</kw> +<msg timestamp="20210602 14:11:31.177" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.177" level="INFO">${effectiveRange} = None</msg> +<status status="PASS" starttime="20210602 14:11:31.176" endtime="20210602 14:11:31.178"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${effectiveRange}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": ${effectiveRange}</arg> +<arg>ELSE</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": {}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": {}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.178" endtime="20210602 14:11:31.179"></status> +</kw> +<msg timestamp="20210602 14:11:31.179" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.178" endtime="20210602 14:11:31.179"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>userRegion</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${userRegion}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>userRegion</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.180" endtime="20210602 14:11:31.181"></status> +</kw> +<msg timestamp="20210602 14:11:31.181" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.181" level="INFO">${userRegion} = None</msg> +<status status="PASS" starttime="20210602 14:11:31.180" endtime="20210602 14:11:31.181"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>code</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${code}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>code</arg> +</arguments> +<msg timestamp="20210602 14:11:31.182" level="FAIL">Dictionary does not contain key 'code'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.182" endtime="20210602 14:11:31.182"></status> +</kw> +<msg timestamp="20210602 14:11:31.183" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.183" level="INFO">${code} = Dictionary does not contain key 'code'.</msg> +<status status="PASS" starttime="20210602 14:11:31.182" endtime="20210602 14:11:31.183"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>message</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${message}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>message</arg> +</arguments> +<msg timestamp="20210602 14:11:31.184" level="FAIL">Dictionary does not contain key 'message'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.184" endtime="20210602 14:11:31.184"></status> +</kw> +<msg timestamp="20210602 14:11:31.185" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.185" level="INFO">${message} = Dictionary does not contain key 'message'.</msg> +<status status="PASS" starttime="20210602 14:11:31.183" endtime="20210602 14:11:31.185"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>html_profile</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${html_profile}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>html_profile</arg> +</arguments> +<msg timestamp="20210602 14:11:31.186" level="FAIL">Dictionary does not contain key 'html_profile'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.186" endtime="20210602 14:11:31.186"></status> +</kw> +<msg timestamp="20210602 14:11:31.186" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.186" level="INFO">${html_profile} = Dictionary does not contain key 'html_profile'.</msg> +<status status="PASS" starttime="20210602 14:11:31.185" endtime="20210602 14:11:31.187"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${html_profile}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${html_profile}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${message}</arg> +</arguments> +<assign> +<var>${message}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${message}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.187" endtime="20210602 14:11:31.188"></status> +</kw> +<msg timestamp="20210602 14:11:31.188" level="INFO">${message} = Dictionary does not contain key 'message'.</msg> +<status status="PASS" starttime="20210602 14:11:31.187" endtime="20210602 14:11:31.188"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${html_profile}" != "None"</arg> +<arg>Set Variable</arg> +<arg>html_profile</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>message</arg> +</arguments> +<assign> +<var>${messageKey}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>message</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.189" endtime="20210602 14:11:31.189"></status> +</kw> +<msg timestamp="20210602 14:11:31.189" level="INFO">${messageKey} = message</msg> +<status status="PASS" starttime="20210602 14:11:31.188" endtime="20210602 14:11:31.189"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>keyring</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${keyring}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>keyring</arg> +</arguments> +<msg timestamp="20210602 14:11:31.191" level="FAIL">Dictionary does not contain key 'keyring'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.190" endtime="20210602 14:11:31.191"></status> +</kw> +<msg timestamp="20210602 14:11:31.191" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.191" level="INFO">${keyring} = Dictionary does not contain key 'keyring'.</msg> +<status status="PASS" starttime="20210602 14:11:31.190" endtime="20210602 14:11:31.191"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${keyring}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${keyring}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${keyring}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>""</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.192" endtime="20210602 14:11:31.193"></status> +</kw> +<msg timestamp="20210602 14:11:31.193" level="INFO">${keyring} = ""</msg> +<status status="PASS" starttime="20210602 14:11:31.192" endtime="20210602 14:11:31.193"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>decryption</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${decryption}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>decryption</arg> +</arguments> +<msg timestamp="20210602 14:11:31.194" level="FAIL">Dictionary does not contain key 'decryption'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.194" endtime="20210602 14:11:31.194"></status> +</kw> +<msg timestamp="20210602 14:11:31.194" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.194" level="INFO">${decryption} = Dictionary does not contain key 'decryption'.</msg> +<status status="PASS" starttime="20210602 14:11:31.193" endtime="20210602 14:11:31.195"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${decryption}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${decryption}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${decryption}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>""</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.195" endtime="20210602 14:11:31.196"></status> +</kw> +<msg timestamp="20210602 14:11:31.196" level="INFO">${decryption} = ""</msg> +<status status="PASS" starttime="20210602 14:11:31.195" endtime="20210602 14:11:31.196"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>decrypt_mirror</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${decrypt_mirror}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>decrypt_mirror</arg> +</arguments> +<msg timestamp="20210602 14:11:31.197" level="FAIL">Dictionary does not contain key 'decrypt_mirror'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.197" endtime="20210602 14:11:31.197"></status> +</kw> +<msg timestamp="20210602 14:11:31.198" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.198" level="INFO">${decrypt_mirror} = Dictionary does not contain key 'decrypt_mirror'.</msg> +<status status="PASS" starttime="20210602 14:11:31.196" endtime="20210602 14:11:31.198"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${decrypt_mirror}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${decrypt_mirror}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${decrypt_mirror}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>""</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.199" endtime="20210602 14:11:31.199"></status> +</kw> +<msg timestamp="20210602 14:11:31.199" level="INFO">${decrypt_mirror} = ""</msg> +<status status="PASS" starttime="20210602 14:11:31.198" endtime="20210602 14:11:31.199"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${decrypt_mirror}</arg> +</arguments> +<assign> +<var>${decrypt_mirror}</var> +</assign> +<msg timestamp="20210602 14:11:31.200" level="INFO">${decrypt_mirror} = "\"\""</msg> +<status status="PASS" starttime="20210602 14:11:31.200" endtime="20210602 14:11:31.200"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>appIdObjects</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${appIdObjects}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>appIdObjects</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.201" endtime="20210602 14:11:31.201"></status> +</kw> +<msg timestamp="20210602 14:11:31.202" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.202" level="INFO">${appIdObjects} = ['http']</msg> +<status status="PASS" starttime="20210602 14:11:31.200" endtime="20210602 14:11:31.202"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${appIdObjectIds}</var> +</assign> +<msg timestamp="20210602 14:11:31.202" level="INFO">${appIdObjectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.202" endtime="20210602 14:11:31.202"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>userRegionStr由:动作,协议,动作参数等决定,待完成;userregion在allow,monitor动作时多个协议为空;deny,多个协议时为子动作;Intercept,多个协议为空;http为,ssl为,判断appid对象的个数。</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.203" endtime="20210602 14:11:31.203"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<assign> +<var>${userRegionStr}</var> +</assign> +<msg timestamp="20210602 14:11:31.204" level="INFO">${userRegionStr} = </msg> +<status status="PASS" starttime="20210602 14:11:31.203" endtime="20210602 14:11:31.204"></status> +</kw> +<kw name="${key} IN [ @{appIdObjects} ]" type="for"> +<kw name="${key} = http" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>${key}</arg> +</arguments> +<assign> +<var>${appObjId}</var> +</assign> +<msg timestamp="20210602 14:11:31.205" level="INFO">${appObjId} = 75744</msg> +<status status="PASS" starttime="20210602 14:11:31.204" endtime="20210602 14:11:31.205"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${appIdObjectIds}</arg> +<arg>${appObjId}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.205" endtime="20210602 14:11:31.206"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${method}" == "block" or "${method}" == "alert"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"${key}","method": "${method}","code":${code},"${messageKey}":${message}}</arg> +<arg>ELSE IF</arg> +<arg>"${action}" == "deny"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"${key}","method": "${method}"}</arg> +<arg>ELSE IF</arg> +<arg>"${action}" == "intercept" and "${key}" == "ssl"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"SSL","keyring": ${keyring},"decryption":${decryption},"decrypt_mirror":${decrypt_mirror}}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"HTTP"}</arg> +</arguments> +<assign> +<var>${userRegionStr}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"protocol":"HTTP"}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.206" endtime="20210602 14:11:31.207"></status> +</kw> +<msg timestamp="20210602 14:11:31.207" level="INFO">${userRegionStr} = {"protocol":"HTTP"}</msg> +<status status="PASS" starttime="20210602 14:11:31.206" endtime="20210602 14:11:31.207"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.204" endtime="20210602 14:11:31.207"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.204" endtime="20210602 14:11:31.207"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${appIdObjects}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"appIdObjects": [null]</arg> +<arg>"appIdObjects": ${appIdObjectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"appIdObjects": [null]</arg> +<arg>"appIdObjects": ${appIdObjectIds}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.208" endtime="20210602 14:11:31.209"></status> +</kw> +<msg timestamp="20210602 14:11:31.209" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.208" endtime="20210602 14:11:31.209"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userRegion": null</arg> +<arg>"userRegion": ${userRegionStr}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.210" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.209" endtime="20210602 14:11:31.210"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userRegion": null</arg> +<arg>"userRegion": {}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.210" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.210" endtime="20210602 14:11:31.211"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>appSelectorObjects</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>appSelectorObjects</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.211" endtime="20210602 14:11:31.212"></status> +</kw> +<msg timestamp="20210602 14:11:31.212" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.212" level="INFO">${appSelectorObjects} = None</msg> +<status status="PASS" starttime="20210602 14:11:31.211" endtime="20210602 14:11:31.213"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${appSelectorObjects}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${appSelectorObjects}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.213" endtime="20210602 14:11:31.214"></status> +</kw> +<msg timestamp="20210602 14:11:31.214" level="INFO">${appSelectorObjects} = None</msg> +<status status="PASS" starttime="20210602 14:11:31.213" endtime="20210602 14:11:31.215"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${appSelectorObjects}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"appSelectorObjects": "add"</arg> +<arg>"appSelectorObjects": ${appSelectorObjects}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.215" endtime="20210602 14:11:31.216"></status> +</kw> +<msg timestamp="20210602 14:11:31.216" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.215" endtime="20210602 14:11:31.216"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>isValid</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${isValid}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>isValid</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.217" endtime="20210602 14:11:31.217"></status> +</kw> +<msg timestamp="20210602 14:11:31.218" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.218" level="INFO">${isValid} = 1</msg> +<status status="PASS" starttime="20210602 14:11:31.217" endtime="20210602 14:11:31.218"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${isValid}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${isValid}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.219" endtime="20210602 14:11:31.219"></status> +</kw> +<msg timestamp="20210602 14:11:31.220" level="INFO">${appSelectorObjects} = 1</msg> +<status status="PASS" starttime="20210602 14:11:31.218" endtime="20210602 14:11:31.220"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${isValid}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"isValid": 1</arg> +<arg>"isValid": ${isValid}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"isValid": 1</arg> +<arg>"isValid": ${isValid}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.221" endtime="20210602 14:11:31.221"></status> +</kw> +<msg timestamp="20210602 14:11:31.221" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.220" endtime="20210602 14:11:31.221"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>scheduleId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${scheduleId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>scheduleId</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.222" endtime="20210602 14:11:31.223"></status> +</kw> +<msg timestamp="20210602 14:11:31.223" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.223" level="INFO">${scheduleId} = None</msg> +<status status="PASS" starttime="20210602 14:11:31.222" endtime="20210602 14:11:31.223"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${scheduleId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${scheduleId}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${scheduleId}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.224" endtime="20210602 14:11:31.224"></status> +</kw> +<msg timestamp="20210602 14:11:31.225" level="INFO">${scheduleId} = None</msg> +<status status="PASS" starttime="20210602 14:11:31.223" endtime="20210602 14:11:31.225"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${scheduleId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"scheduleId": [null]</arg> +<arg>"scheduleId": ${scheduleId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.226" endtime="20210602 14:11:31.226"></status> +</kw> +<msg timestamp="20210602 14:11:31.226" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.225" endtime="20210602 14:11:31.227"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.228" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.227" endtime="20210602 14:11:31.228"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.229" level="INFO">${policyJson} = {'opAction': 'add', 'returnData': '1', 'policyList': {'policyName': 'autotestmonitor', 'policyType': 'tsg_security', 'action': 'monitor', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'a...</msg> +<status status="PASS" starttime="20210602 14:11:31.228" endtime="20210602 14:11:31.229"></status> +</kw> +<kw name="CreatePolilcy" library="policy"> +<doc>场景策略:secuiryt、proxy策略 +数据分离,测试数据来自对应的yaml文件 +参数 ${policyList}</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数</arg> +<arg>${filepath}读取文件路径</arg> +<arg>${filename}读取文件名</arg> +<arg>${keywords}获取数据关键字</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.232" endtime="20210602 14:11:31.232"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建策略</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.233" endtime="20210602 14:11:31.233"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:31.234" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:31.233" endtime="20210602 14:11:31.234"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${policyList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.234" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:31.234" endtime="20210602 14:11:31.235"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${policyUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version2}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:31.236" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:31.235" endtime="20210602 14:11:31.236"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:31.236" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v2, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:31.236" endtime="20210602 14:11:31.237"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:31.238" level="INFO">POST Request using : uri=/policy/compile, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestmonitor", "policyType": "tsg_security", "action": "monitor", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "effectiveRange": {}, "userRegion": {"protocol": "HTTP"}, "source": [{"objectId": 107866, "protocolField": null}, {"objectId": 107868, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}, {"objectId": 107870, "protocolField": "TSG_SECURITY_SOURCE_LOCATION"}, {"objectId": 107871, "protocolField": "TSG_FILED_GTP_IMSI"}, {"objectId": 107872, "protocolField": "TSG_FILED_GTP_PHONE_NUMBER"}, {"objectId": 107873, "protocolField": "TSG_FILED_GTP_APN"}, {"objectId": 107874, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}], "destination": [{"objectId": 107875, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}, {"objectId": 107876, "protocolField": "TSG_SECURITY_DESTINATION_LOCATION"}, {"objectId": 107877, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}], "filterList": [{"filter": [{"objectId": 107878, "protocolField": "TSG_FIELD_HTTP_RES_CONTENT"}]}, {"filter": [{"objectId": 107880, "protocolField": "TSG_FIELD_HTTP_RES_CONTENT"}]}], "appIdObjects": [75744], "appSelectorObjects": [], "isValid": 1, "scheduleId": []}} +json=None</msg> +<msg timestamp="20210602 14:11:31.444" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:31.237" endtime="20210602 14:11:31.445"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:31.446" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:31.445" endtime="20210602 14:11:31.447"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:31.449" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:31.448" endtime="20210602 14:11:31.449"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:31.451" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "policyList" : [ { + "action" : "monitor", + "appIdObjects" : [ 75744 ], + "appSelectorObjects" : [ ], + "destination" : [ { + "objectId" : 107875, + "protocolField" : "TSG_SECURITY_DESTINATION_ADDR" + }, { + "objectId" : 107876, + "protocolField" : "TSG_SECURITY_DESTINATION_LOCATION" + }, { + "objectId" : 107877, + "protocolField" : "TSG_SECURITY_DESTINATION_ADDR" + } ], + "doLog" : 1, + "effectiveRange" : { }, + "evaluationLayer" : "any_layer", + "evaluationOrder" : 0.0, + "evaluationStage" : 0, + "filterList" : [ { + "filter" : [ { + "objectId" : 107878, + "protocolField" : "TSG_FIELD_HTTP_RES_CONTENT" + } ] + }, { + "filter" : [ { + "objectId" : 107880, + "protocolField" : "TSG_FIELD_HTTP_RES_CONTENT" + } ] + } ], + "isInitialize" : 0, + "isValid" : 1, + "opTime" : "2021-06-02 14:11:30", + "opUser" : 425, + "policyDesc" : "autotest", + "policyId" : 52340, + "policyName" : "autotestmonitor", + "policyType" : "tsg_security", + "scheduleId" : [ ], + "source" : [ { + "objectId" : 107866, + "protocolField" : null + }, { + "objectId" : 107868, + "protocolField" : "TSG_SECURITY_SOURCE_ADDR" + }, { + "objectId" : 107870, + "protocolField" : "TSG_SECURITY_SOURCE_LOCATION" + }, { + "objectId" : 107871, + "protocolField" : "TSG_FILED_GTP_IMSI" + }, { + "objectId" : 107872, + "protocolField" : "TSG_FILED_GTP_PHONE_NUMBER" + }, { + "objectId" : 107873, + "protocolField" : "TSG_FILED_GTP_APN" + }, { + "objectId" : 107874, + "protocolField" : "TSG_SECURITY_SOURCE_ADDR" + } ], + "userRegion" : { + "protocol" : "HTTP" + }, + "userTags" : "" + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:31.452" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:31.453" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'monitor', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107875, 'protocolField': 'TSG_SECURITY_DES...</msg> +<status status="PASS" starttime="20210602 14:11:31.450" endtime="20210602 14:11:31.453"></status> +</kw> +<msg timestamp="20210602 14:11:31.454" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'monitor', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107875, 'protocolField': 'TSG_SECURITY_DES...</msg> +<status status="PASS" starttime="20210602 14:11:31.235" endtime="20210602 14:11:31.454"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>GetPolicyIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${policyIds}</var> +</assign> +<kw name="GetPolicyIds" library="process_policy_body"> +<doc>获取结果中的策略类型及ID +策略接口返回json串 +返回结果格式:[{'policyType': 'tsg_security', 'policyIds': [108480]}, {'policyType': 'tsg_security', 'policyIds': [108481]}, {'policyType': 'tsg_security', 'policyIds': [108482]}, {'policyType': 'tsg_security', 'policyIds': [108483]}, {'policyType': 'tsg_security', 'policyIds': [108484]}]</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${policyIds}</var> +</assign> +<msg timestamp="20210602 14:11:31.459" level="INFO">${policyIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.458" endtime="20210602 14:11:31.459"></status> +</kw> +<kw name="${policy} IN [ @{value['data']['policyList']} ]" type="for"> +<kw name="${policy} = {'action': 'monitor', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107875, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107876, 'protocolField': '..." type="foritem"> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<arguments> +<arg>${policy['policyId']}</arg> +</arguments> +<assign> +<var>${policyIdList}</var> +</assign> +<msg timestamp="20210602 14:11:31.462" level="INFO">${policyIdList} = [52340]</msg> +<status status="PASS" starttime="20210602 14:11:31.461" endtime="20210602 14:11:31.463"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>policyType=${policy['policyType']}</arg> +<arg>policyIds=${policyIdList}</arg> +</arguments> +<assign> +<var>${policyObj}</var> +</assign> +<msg timestamp="20210602 14:11:31.464" level="INFO">${policyObj} = {'policyType': 'tsg_security', 'policyIds': [52340]}</msg> +<status status="PASS" starttime="20210602 14:11:31.463" endtime="20210602 14:11:31.465"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${policyIds}</arg> +<arg>${policyObj}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.465" endtime="20210602 14:11:31.466"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.461" endtime="20210602 14:11:31.467"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.460" endtime="20210602 14:11:31.467"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${policyIds}</arg> +</arguments> +<msg timestamp="20210602 14:11:31.468" level="INFO">[{'policyType': 'tsg_security', 'policyIds': [52340]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.467" endtime="20210602 14:11:31.468"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.457" endtime="20210602 14:11:31.469"></status> +</kw> +<msg timestamp="20210602 14:11:31.469" level="INFO">${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52340]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.455" endtime="20210602 14:11:31.469"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:31.471" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:31.470" endtime="20210602 14:11:31.471"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:31.472" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:31.471" endtime="20210602 14:11:31.472"></status> +</kw> +<msg timestamp="20210602 14:11:31.473" level="INFO">${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52340]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.232" endtime="20210602 14:11:31.473"></status> +</kw> +<msg timestamp="20210602 14:11:31.473" level="INFO">${objectId} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874, 107875, 107876, 107877, 107878, 107879, 107880, 107881]</msg> +<msg timestamp="20210602 14:11:31.473" level="INFO">${policyId} = [{'policyType': 'tsg_security', 'policyIds': [52340]}]</msg> +<status status="PASS" starttime="20210602 14:11:21.774" endtime="20210602 14:11:31.474"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${objectId}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.486" endtime="20210602 14:11:31.487"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.487" endtime="20210602 14:11:31.487"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107866" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.488" endtime="20210602 14:11:31.488"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.488" endtime="20210602 14:11:31.488"></status> +</kw> +<kw name="${objdict} = 107867" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.489" endtime="20210602 14:11:31.489"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.489" endtime="20210602 14:11:31.489"></status> +</kw> +<kw name="${objdict} = 107868" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.490" endtime="20210602 14:11:31.490"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.490" endtime="20210602 14:11:31.490"></status> +</kw> +<kw name="${objdict} = 107869" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.491" endtime="20210602 14:11:31.491"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.491" endtime="20210602 14:11:31.491"></status> +</kw> +<kw name="${objdict} = 107870" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.492" endtime="20210602 14:11:31.492"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.491" endtime="20210602 14:11:31.492"></status> +</kw> +<kw name="${objdict} = 107871" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.493" endtime="20210602 14:11:31.493"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.492" endtime="20210602 14:11:31.493"></status> +</kw> +<kw name="${objdict} = 107872" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.494" endtime="20210602 14:11:31.494"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.493" endtime="20210602 14:11:31.494"></status> +</kw> +<kw name="${objdict} = 107873" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.495" endtime="20210602 14:11:31.495"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.494" endtime="20210602 14:11:31.495"></status> +</kw> +<kw name="${objdict} = 107874" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.496" endtime="20210602 14:11:31.496"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.495" endtime="20210602 14:11:31.496"></status> +</kw> +<kw name="${objdict} = 107875" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.497" endtime="20210602 14:11:31.498"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.496" endtime="20210602 14:11:31.498"></status> +</kw> +<kw name="${objdict} = 107876" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.498" endtime="20210602 14:11:31.499"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.498" endtime="20210602 14:11:31.499"></status> +</kw> +<kw name="${objdict} = 107877" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.499" endtime="20210602 14:11:31.500"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.499" endtime="20210602 14:11:31.500"></status> +</kw> +<kw name="${objdict} = 107878" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.501" endtime="20210602 14:11:31.501"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.500" endtime="20210602 14:11:31.501"></status> +</kw> +<kw name="${objdict} = 107879" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.501" endtime="20210602 14:11:31.502"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.501" endtime="20210602 14:11:31.502"></status> +</kw> +<kw name="${objdict} = 107880" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.502" endtime="20210602 14:11:31.503"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.502" endtime="20210602 14:11:31.503"></status> +</kw> +<kw name="${objdict} = 107881" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.503" endtime="20210602 14:11:31.504"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.503" endtime="20210602 14:11:31.504"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.487" endtime="20210602 14:11:31.504"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.486" endtime="20210602 14:11:31.504"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${policyIds}</arg> +<arg>${policyId}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.519" endtime="20210602 14:11:31.519"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.520" endtime="20210602 14:11:31.520"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'policyType': 'tsg_security', 'policyIds': [52340]}" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.521" endtime="20210602 14:11:31.521"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.520" endtime="20210602 14:11:31.521"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.520" endtime="20210602 14:11:31.521"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.518" endtime="20210602 14:11:31.521"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.768" endtime="20210602 14:11:31.522"></status> +</kw> +<kw name="${key} = {'opAction': 'add', 'returnData': 1, 'policyName': 'autotestdeny', 'policyType': 'tsg_security', 'action': 'deny', 'method': 'block', 'code': 403, 'html_profile': 2551, 'userTags': '', 'doBlacklist': ..." type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>passssssssss</arg> +</arguments> +<msg timestamp="20210602 14:11:31.523" level="INFO">passssssssss</msg> +<status status="PASS" starttime="20210602 14:11:31.522" endtime="20210602 14:11:31.523"></status> +</kw> +<kw name="CreatePolicysAndObjects" library="policy"> +<doc>组织单个策略数据${modleFilePath}策略模板文件路径 ${policyData}从数据文件中获取的单个策略数据</doc> +<arguments> +<arg>${key}</arg> +<arg>${keyword}</arg> +</arguments> +<assign> +<var>${objectId}</var> +<var>${policyId}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>获取模板</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.529" endtime="20210602 14:11:31.529"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${policyModeJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.530" endtime="20210602 14:11:31.530"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyModeJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.531" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:31.530" endtime="20210602 14:11:31.531"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>用data数据替换模板内容生成策略新增数据</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.531" endtime="20210602 14:11:31.531"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>condation</arg> +</arguments> +<assign> +<var>${condation}</var> +</assign> +<msg timestamp="20210602 14:11:31.532" level="INFO">${condation} = [{'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'endpoint', 'objList': [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'po...</msg> +<status status="PASS" starttime="20210602 14:11:31.532" endtime="20210602 14:11:31.532"></status> +</kw> +<kw name="CreateCondation" library="policy"> +<doc>解析策略条件,根据key值判断其在source、destation、filter中</doc> +<arguments> +<arg>${condation}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${sourceList}</var> +<var>${destinationList}</var> +<var>${filterList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>循环读取对象list</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.533" endtime="20210602 14:11:31.533"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${sourceList}</var> +</assign> +<msg timestamp="20210602 14:11:31.534" level="INFO">${sourceList} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.533" endtime="20210602 14:11:31.534"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${destinationList}</var> +</assign> +<msg timestamp="20210602 14:11:31.534" level="INFO">${destinationList} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.534" endtime="20210602 14:11:31.534"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${filterList}</var> +</assign> +<msg timestamp="20210602 14:11:31.535" level="INFO">${filterList} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.535" endtime="20210602 14:11:31.535"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIdsList}</var> +</assign> +<msg timestamp="20210602 14:11:31.536" level="INFO">${objectIdsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.536" endtime="20210602 14:11:31.536"></status> +</kw> +<kw name="${key} IN [ @{objectListData} ]" type="for"> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'endpoint', 'objList': [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'por..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:31.537" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:31.537" endtime="20210602 14:11:31.537"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.538" endtime="20210602 14:11:31.538"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:31.539" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:31.539" endtime="20210602 14:11:31.539"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.540" endtime="20210602 14:11:31.540"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:31.541" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:31.541" endtime="20210602 14:11:31.541"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:31.542" level="INFO">${objList} = [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]}, {'addItemList': [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255...</msg> +<status status="PASS" starttime="20210602 14:11:31.541" endtime="20210602 14:11:31.542"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.542" endtime="20210602 14:11:31.542"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.543" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:31.543" endtime="20210602 14:11:31.543"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.544" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:31.543" endtime="20210602 14:11:31.544"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.545" endtime="20210602 14:11:31.545"></status> +</kw> +<msg timestamp="20210602 14:11:31.545" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.545" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:31.544" endtime="20210602 14:11:31.545"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.546" endtime="20210602 14:11:31.547"></status> +</kw> +<msg timestamp="20210602 14:11:31.547" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:31.546" endtime="20210602 14:11:31.547"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.548" endtime="20210602 14:11:31.548"></status> +</kw> +<msg timestamp="20210602 14:11:31.548" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.548" level="INFO">${objectSubType} = endpoint</msg> +<status status="PASS" starttime="20210602 14:11:31.547" endtime="20210602 14:11:31.548"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.549" endtime="20210602 14:11:31.550"></status> +</kw> +<msg timestamp="20210602 14:11:31.550" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:31.549" endtime="20210602 14:11:31.550"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:31.551" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.551" endtime="20210602 14:11:31.551"></status> +</kw> +<msg timestamp="20210602 14:11:31.551" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.551" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:31.550" endtime="20210602 14:11:31.552"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.552" endtime="20210602 14:11:31.553"></status> +</kw> +<msg timestamp="20210602 14:11:31.553" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:31.552" endtime="20210602 14:11:31.553"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.554" endtime="20210602 14:11:31.554"></status> +</kw> +<msg timestamp="20210602 14:11:31.555" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:31.553" endtime="20210602 14:11:31.555"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:31.556" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.556" endtime="20210602 14:11:31.556"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:31.557" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:31.557" endtime="20210602 14:11:31.557"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.559" endtime="20210602 14:11:31.559"></status> +</kw> +<msg timestamp="20210602 14:11:31.559" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.559" level="INFO">${addItemList} = [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]</msg> +<status status="PASS" starttime="20210602 14:11:31.558" endtime="20210602 14:11:31.560"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:31.560" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:31.560" endtime="20210602 14:11:31.560"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.561" endtime="20210602 14:11:31.562"></status> +</kw> +<msg timestamp="20210602 14:11:31.562" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:31.561" endtime="20210602 14:11:31.562"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.563" endtime="20210602 14:11:31.564"></status> +</kw> +<msg timestamp="20210602 14:11:31.564" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:31.563" endtime="20210602 14:11:31.564"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.565" endtime="20210602 14:11:31.565"></status> +</kw> +<msg timestamp="20210602 14:11:31.566" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:31.564" endtime="20210602 14:11:31.566"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.567" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:31.566" endtime="20210602 14:11:31.567"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:31.568" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:31.567" endtime="20210602 14:11:31.568"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.584" endtime="20210602 14:11:31.584"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.585" endtime="20210602 14:11:31.586"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.587" endtime="20210602 14:11:31.587"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.586" endtime="20210602 14:11:31.587"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.586" endtime="20210602 14:11:31.588"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.583" endtime="20210602 14:11:31.588"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.558" endtime="20210602 14:11:31.588"></status> +</kw> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.2/24', 'port': '1-65535'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.589" endtime="20210602 14:11:31.590"></status> +</kw> +<msg timestamp="20210602 14:11:31.590" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.590" level="INFO">${addItemList} = [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.2/24', 'port': '1-65535'}]</msg> +<status status="PASS" starttime="20210602 14:11:31.589" endtime="20210602 14:11:31.590"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:31.591" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:31.591" endtime="20210602 14:11:31.591"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.592" endtime="20210602 14:11:31.593"></status> +</kw> +<msg timestamp="20210602 14:11:31.593" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:31.592" endtime="20210602 14:11:31.593"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.594" endtime="20210602 14:11:31.594"></status> +</kw> +<msg timestamp="20210602 14:11:31.594" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:31.593" endtime="20210602 14:11:31.594"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.595" endtime="20210602 14:11:31.596"></status> +</kw> +<msg timestamp="20210602 14:11:31.596" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:31.595" endtime="20210602 14:11:31.596"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.597" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:31.596" endtime="20210602 14:11:31.597"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:31.597" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:31.597" endtime="20210602 14:11:31.598"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.609" endtime="20210602 14:11:31.609"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.610" endtime="20210602 14:11:31.610"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.610" endtime="20210602 14:11:31.611"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.610" endtime="20210602 14:11:31.611"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.610" endtime="20210602 14:11:31.611"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.608" endtime="20210602 14:11:31.611"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.588" endtime="20210602 14:11:31.612"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.557" endtime="20210602 14:11:31.612"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:31.613" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定...</msg> +<status status="PASS" starttime="20210602 14:11:31.612" endtime="20210602 14:11:31.613"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.614" endtime="20210602 14:11:31.614"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.614" endtime="20210602 14:11:31.615"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:31.615" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:31.615" endtime="20210602 14:11:31.615"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.616" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u535...</msg> +<status status="PASS" starttime="20210602 14:11:31.616" endtime="20210602 14:11:31.616"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:31.617" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:31.617" endtime="20210602 14:11:31.617"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:31.618" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:31.618" endtime="20210602 14:11:31.619"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:31.621" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}, {"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:31.716" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:31.620" endtime="20210602 14:11:31.717"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:31.719" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:31.718" endtime="20210602 14:11:31.719"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:31.720" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:31.719" endtime="20210602 14:11:31.720"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:31.721" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "0", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"0-65535\"}", + "itemId" : 10074687, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107882, + "opTime" : "2021-06-02 14:11:31", + "opUser" : 425, + "port" : "0-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"1-65535\"}", + "itemId" : 10074688, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107882, + "opTime" : "2021-06-02 14:11:31", + "opUser" : 425, + "port" : "1-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107882, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:31", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + }, { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "0", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"0-65535\"}", + "itemId" : 10074689, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107883, + "opTime" : "2021-06-02 14:11:31", + "opUser" : 425, + "port" : "0-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"1-65535\"}", + "itemId" : 10074690, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107883, + "opTime" : "2021-06-02 14:11:31", + "opUser" : 425, + "port" : "1-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107883, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:31", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:31.721" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:31.721" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2':...</msg> +<status status="PASS" starttime="20210602 14:11:31.720" endtime="20210602 14:11:31.721"></status> +</kw> +<msg timestamp="20210602 14:11:31.722" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2':...</msg> +<status status="PASS" starttime="20210602 14:11:31.616" endtime="20210602 14:11:31.722"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:31.723" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:31.723" endtime="20210602 14:11:31.723"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:31.724" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.724" endtime="20210602 14:11:31.724"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:31.725" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:31.724" endtime="20210602 14:11:31.725"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.726" endtime="20210602 14:11:31.726"></status> +</kw> +<msg timestamp="20210602 14:11:31.726" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.727" level="INFO">${data} = {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', '...</msg> +<status status="PASS" starttime="20210602 14:11:31.725" endtime="20210602 14:11:31.727"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.727" endtime="20210602 14:11:31.727"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': 0, '..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.728" endtime="20210602 14:11:31.729"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.728" endtime="20210602 14:11:31.729"></status> +</kw> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': 0, '..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.729" endtime="20210602 14:11:31.730"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.729" endtime="20210602 14:11:31.730"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.728" endtime="20210602 14:11:31.730"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.723" endtime="20210602 14:11:31.730"></status> +</kw> +<msg timestamp="20210602 14:11:31.731" level="INFO">${objectIds} = [107882, 107883]</msg> +<status status="PASS" starttime="20210602 14:11:31.722" endtime="20210602 14:11:31.731"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:31.731" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:31.731" endtime="20210602 14:11:31.731"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:31.732" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:31.732" endtime="20210602 14:11:31.732"></status> +</kw> +<msg timestamp="20210602 14:11:31.732" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:31.733" level="INFO">${objectIds} = [107882, 107883]</msg> +<status status="PASS" starttime="20210602 14:11:31.613" endtime="20210602 14:11:31.733"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:31.733" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:31.733" endtime="20210602 14:11:31.734"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.734" endtime="20210602 14:11:31.735"></status> +</kw> +<msg timestamp="20210602 14:11:31.735" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:31.734" endtime="20210602 14:11:31.735"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:31.735" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.735" endtime="20210602 14:11:31.736"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107882" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:31.737" level="INFO">${objectList} = {'objectId': 107882, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:31.736" endtime="20210602 14:11:31.737"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.737" endtime="20210602 14:11:31.738"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.736" endtime="20210602 14:11:31.738"></status> +</kw> +<kw name="${obj} = 107883" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:31.739" level="INFO">${objectList} = {'objectId': 107882, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:31.738" endtime="20210602 14:11:31.739"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.739" endtime="20210602 14:11:31.739"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.738" endtime="20210602 14:11:31.740"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.736" endtime="20210602 14:11:31.740"></status> +</kw> +<msg timestamp="20210602 14:11:31.740" level="INFO">${objectIds} = [107882, 107883]</msg> +<msg timestamp="20210602 14:11:31.740" level="INFO">${objectList} = {'objectId': 107882, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:31.540" endtime="20210602 14:11:31.740"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.741" endtime="20210602 14:11:31.742"></status> +</kw> +<msg timestamp="20210602 14:11:31.742" level="INFO">${objectList} = {'objectId': 107882, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:31.741" endtime="20210602 14:11:31.742"></status> +</kw> +<msg timestamp="20210602 14:11:31.742" level="INFO">${objectIds} = [107882, 107883]</msg> +<msg timestamp="20210602 14:11:31.742" level="INFO">${objectList} = {'objectId': 107882, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:31.537" endtime="20210602 14:11:31.742"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:31.743" level="INFO">Length is 0</msg> +<msg timestamp="20210602 14:11:31.743" level="INFO">${len} = 0</msg> +<status status="PASS" starttime="20210602 14:11:31.743" endtime="20210602 14:11:31.743"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectIds}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.744" endtime="20210602 14:11:31.744"></status> +</kw> +<msg timestamp="20210602 14:11:31.745" level="INFO">${objectIdsList} = [107882, 107883]</msg> +<status status="PASS" starttime="20210602 14:11:31.744" endtime="20210602 14:11:31.745"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.746" endtime="20210602 14:11:31.746"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.745" endtime="20210602 14:11:31.746"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.536" endtime="20210602 14:11:31.746"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_LOCATION', 'objectType': 'ip', 'objectSubType': 'geo_location', 'objList': [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:31.747" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:31.747" endtime="20210602 14:11:31.748"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.748" endtime="20210602 14:11:31.749"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:31.749" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:31.749" endtime="20210602 14:11:31.749"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.750" endtime="20210602 14:11:31.750"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:31.751" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:31.751" endtime="20210602 14:11:31.751"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:31.752" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.752" endtime="20210602 14:11:31.752"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.752" endtime="20210602 14:11:31.753"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.753" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:31.753" endtime="20210602 14:11:31.753"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.754" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:31.754" endtime="20210602 14:11:31.754"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.755" endtime="20210602 14:11:31.755"></status> +</kw> +<msg timestamp="20210602 14:11:31.756" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.756" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:31.755" endtime="20210602 14:11:31.756"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.757" endtime="20210602 14:11:31.757"></status> +</kw> +<msg timestamp="20210602 14:11:31.757" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:31.756" endtime="20210602 14:11:31.757"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.758" endtime="20210602 14:11:31.758"></status> +</kw> +<msg timestamp="20210602 14:11:31.759" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.759" level="INFO">${objectSubType} = geo_location</msg> +<status status="PASS" starttime="20210602 14:11:31.758" endtime="20210602 14:11:31.759"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.760" endtime="20210602 14:11:31.760"></status> +</kw> +<msg timestamp="20210602 14:11:31.760" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:31.759" endtime="20210602 14:11:31.760"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:31.762" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:31.761" endtime="20210602 14:11:31.762"></status> +</kw> +<msg timestamp="20210602 14:11:31.762" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:31.762" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:31.761" endtime="20210602 14:11:31.762"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.763" endtime="20210602 14:11:31.763"></status> +</kw> +<msg timestamp="20210602 14:11:31.764" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:31.763" endtime="20210602 14:11:31.764"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.764" endtime="20210602 14:11:31.765"></status> +</kw> +<msg timestamp="20210602 14:11:31.765" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:31.764" endtime="20210602 14:11:31.765"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:31.766" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:31.765" endtime="20210602 14:11:31.766"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:31.767" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:31.766" endtime="20210602 14:11:31.767"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.768" endtime="20210602 14:11:31.768"></status> +</kw> +<msg timestamp="20210602 14:11:31.768" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:31.768" level="INFO">${addItemList} = [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]</msg> +<status status="PASS" starttime="20210602 14:11:31.767" endtime="20210602 14:11:31.769"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:31.769" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.769" endtime="20210602 14:11:31.769"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.770" endtime="20210602 14:11:31.770"></status> +</kw> +<msg timestamp="20210602 14:11:31.771" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.770" endtime="20210602 14:11:31.771"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.771" endtime="20210602 14:11:31.772"></status> +</kw> +<msg timestamp="20210602 14:11:31.773" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.771" endtime="20210602 14:11:31.773"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.774" endtime="20210602 14:11:31.774"></status> +</kw> +<msg timestamp="20210602 14:11:31.774" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:31.773" endtime="20210602 14:11:31.775"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.775" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:31.775" endtime="20210602 14:11:31.776"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:31.776" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'a...</msg> +<status status="PASS" starttime="20210602 14:11:31.776" endtime="20210602 14:11:31.776"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.787" endtime="20210602 14:11:31.787"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.787" endtime="20210602 14:11:31.788"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.789" endtime="20210602 14:11:31.789"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.789" endtime="20210602 14:11:31.789"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.788" endtime="20210602 14:11:31.790"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.786" endtime="20210602 14:11:31.790"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.767" endtime="20210602 14:11:31.790"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.767" endtime="20210602 14:11:31.790"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:31.791" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单...</msg> +<status status="PASS" starttime="20210602 14:11:31.790" endtime="20210602 14:11:31.791"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.792" endtime="20210602 14:11:31.792"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:31.792" endtime="20210602 14:11:31.793"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:31.793" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:31.793" endtime="20210602 14:11:31.793"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:31.794" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\...</msg> +<status status="PASS" starttime="20210602 14:11:31.794" endtime="20210602 14:11:31.794"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:31.795" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:31.795" endtime="20210602 14:11:31.795"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:31.796" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:31.796" endtime="20210602 14:11:31.797"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:31.797" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:32.667" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:31.797" endtime="20210602 14:11:32.667"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:32.669" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:32.668" endtime="20210602 14:11:32.669"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:32.669" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:32.669" endtime="20210602 14:11:32.670"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:32.670" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:31", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "Algeria." ], + "itemId" : 10074691, + "objectId" : 107884 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:31", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074692, + "objectId" : 107884 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:31", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074693, + "objectId" : 107884 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107884, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "geo_location", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:31", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:32.670" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:32.671" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:31', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:32.670" endtime="20210602 14:11:32.671"></status> +</kw> +<msg timestamp="20210602 14:11:32.671" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:31', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:31.794" endtime="20210602 14:11:32.671"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:32.673" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:32.672" endtime="20210602 14:11:32.673"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:32.673" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:32.673" endtime="20210602 14:11:32.674"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:32.674" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:32.674" endtime="20210602 14:11:32.674"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.675" endtime="20210602 14:11:32.676"></status> +</kw> +<msg timestamp="20210602 14:11:32.676" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:32.676" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:31', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...</msg> +<status status="PASS" starttime="20210602 14:11:32.675" endtime="20210602 14:11:32.676"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.676" endtime="20210602 14:11:32.677"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:31', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.678" endtime="20210602 14:11:32.678"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.677" endtime="20210602 14:11:32.678"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.677" endtime="20210602 14:11:32.678"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.672" endtime="20210602 14:11:32.679"></status> +</kw> +<msg timestamp="20210602 14:11:32.679" level="INFO">${objectIds} = [107884]</msg> +<status status="PASS" starttime="20210602 14:11:32.672" endtime="20210602 14:11:32.679"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:32.680" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:32.679" endtime="20210602 14:11:32.680"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:32.680" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:32.680" endtime="20210602 14:11:32.681"></status> +</kw> +<msg timestamp="20210602 14:11:32.681" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:32.681" level="INFO">${objectIds} = [107884]</msg> +<status status="PASS" starttime="20210602 14:11:31.791" endtime="20210602 14:11:32.681"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:32.682" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:32.681" endtime="20210602 14:11:32.682"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.683" endtime="20210602 14:11:32.683"></status> +</kw> +<msg timestamp="20210602 14:11:32.683" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:32.682" endtime="20210602 14:11:32.683"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:32.684" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:32.684" endtime="20210602 14:11:32.684"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107884" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:32.685" level="INFO">${objectList} = {'objectId': 107884, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:32.685" endtime="20210602 14:11:32.685"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.686" endtime="20210602 14:11:32.686"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.684" endtime="20210602 14:11:32.686"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.684" endtime="20210602 14:11:32.686"></status> +</kw> +<msg timestamp="20210602 14:11:32.687" level="INFO">${objectIds} = [107884]</msg> +<msg timestamp="20210602 14:11:32.687" level="INFO">${objectList} = {'objectId': 107884, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:31.750" endtime="20210602 14:11:32.687"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.688" endtime="20210602 14:11:32.688"></status> +</kw> +<msg timestamp="20210602 14:11:32.689" level="INFO">${objectList} = {'objectId': 107884, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:32.687" endtime="20210602 14:11:32.689"></status> +</kw> +<msg timestamp="20210602 14:11:32.689" level="INFO">${objectIds} = [107884]</msg> +<msg timestamp="20210602 14:11:32.689" level="INFO">${objectList} = {'objectId': 107884, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:31.748" endtime="20210602 14:11:32.689"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:32.690" level="INFO">Length is 2</msg> +<msg timestamp="20210602 14:11:32.690" level="INFO">${len} = 2</msg> +<status status="PASS" starttime="20210602 14:11:32.690" endtime="20210602 14:11:32.690"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.701" endtime="20210602 14:11:32.701"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.702" endtime="20210602 14:11:32.702"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107884" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.703" endtime="20210602 14:11:32.703"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.702" endtime="20210602 14:11:32.703"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.702" endtime="20210602 14:11:32.703"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.700" endtime="20210602 14:11:32.704"></status> +</kw> +<msg timestamp="20210602 14:11:32.704" level="INFO">${objectIdsList} = [107882, 107883, 107884]</msg> +<status status="PASS" starttime="20210602 14:11:32.691" endtime="20210602 14:11:32.704"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.705" endtime="20210602 14:11:32.705"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.704" endtime="20210602 14:11:32.706"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.747" endtime="20210602 14:11:32.706"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_IMSI', 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'objList': [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:32.707" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:32.706" endtime="20210602 14:11:32.707"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.708" endtime="20210602 14:11:32.708"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:32.708" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:32.708" endtime="20210602 14:11:32.709"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.709" endtime="20210602 14:11:32.710"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:32.710" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:32.710" endtime="20210602 14:11:32.711"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:32.711" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:32.711" endtime="20210602 14:11:32.711"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.712" endtime="20210602 14:11:32.712"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:32.712" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:32.712" endtime="20210602 14:11:32.713"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:32.714" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:32.713" endtime="20210602 14:11:32.714"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.715" endtime="20210602 14:11:32.715"></status> +</kw> +<msg timestamp="20210602 14:11:32.715" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:32.716" level="INFO">${objectType} = mobile_identity</msg> +<status status="PASS" starttime="20210602 14:11:32.714" endtime="20210602 14:11:32.716"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.716" endtime="20210602 14:11:32.717"></status> +</kw> +<msg timestamp="20210602 14:11:32.717" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:32.716" endtime="20210602 14:11:32.717"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.718" endtime="20210602 14:11:32.718"></status> +</kw> +<msg timestamp="20210602 14:11:32.719" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:32.719" level="INFO">${objectSubType} = imsi</msg> +<status status="PASS" starttime="20210602 14:11:32.718" endtime="20210602 14:11:32.719"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.720" endtime="20210602 14:11:32.720"></status> +</kw> +<msg timestamp="20210602 14:11:32.720" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:32.719" endtime="20210602 14:11:32.720"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:32.721" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:32.721" endtime="20210602 14:11:32.722"></status> +</kw> +<msg timestamp="20210602 14:11:32.722" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:32.722" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:32.721" endtime="20210602 14:11:32.722"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.723" endtime="20210602 14:11:32.723"></status> +</kw> +<msg timestamp="20210602 14:11:32.723" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:32.722" endtime="20210602 14:11:32.724"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.724" endtime="20210602 14:11:32.725"></status> +</kw> +<msg timestamp="20210602 14:11:32.725" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:32.724" endtime="20210602 14:11:32.725"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:32.726" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:32.725" endtime="20210602 14:11:32.726"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:32.726" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:32.726" endtime="20210602 14:11:32.727"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.728" endtime="20210602 14:11:32.729"></status> +</kw> +<msg timestamp="20210602 14:11:32.729" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:32.729" level="INFO">${addItemList} = [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]</msg> +<status status="PASS" starttime="20210602 14:11:32.728" endtime="20210602 14:11:32.729"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:32.730" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:32.729" endtime="20210602 14:11:32.730"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.731" endtime="20210602 14:11:32.731"></status> +</kw> +<msg timestamp="20210602 14:11:32.731" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:32.730" endtime="20210602 14:11:32.731"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.732" endtime="20210602 14:11:32.732"></status> +</kw> +<msg timestamp="20210602 14:11:32.733" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:32.732" endtime="20210602 14:11:32.733"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.734" endtime="20210602 14:11:32.734"></status> +</kw> +<msg timestamp="20210602 14:11:32.735" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:32.733" endtime="20210602 14:11:32.735"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:32.736" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:32.735" endtime="20210602 14:11:32.736"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:32.736" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [...</msg> +<status status="PASS" starttime="20210602 14:11:32.736" endtime="20210602 14:11:32.736"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.746" endtime="20210602 14:11:32.746"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.746" endtime="20210602 14:11:32.746"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': []..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.747" endtime="20210602 14:11:32.747"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.747" endtime="20210602 14:11:32.748"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.747" endtime="20210602 14:11:32.748"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.746" endtime="20210602 14:11:32.748"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.728" endtime="20210602 14:11:32.750"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.727" endtime="20210602 14:11:32.750"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:32.751" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'aut...</msg> +<status status="PASS" starttime="20210602 14:11:32.750" endtime="20210602 14:11:32.751"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.752" endtime="20210602 14:11:32.752"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.752" endtime="20210602 14:11:32.752"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:32.753" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:32.753" endtime="20210602 14:11:32.753"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:32.754" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "aut...</msg> +<status status="PASS" starttime="20210602 14:11:32.753" endtime="20210602 14:11:32.754"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:32.755" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:32.755" endtime="20210602 14:11:32.755"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:32.756" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:32.756" endtime="20210602 14:11:32.756"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:32.756" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:32.844" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:32.756" endtime="20210602 14:11:32.845"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:32.845" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:32.845" endtime="20210602 14:11:32.846"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:32.846" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:32.846" endtime="20210602 14:11:32.846"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:32.847" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123" ], + "itemId" : 10074694, + "objectId" : 107885 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "456" ], + "itemId" : 10074695, + "objectId" : 107885 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "12345678912345" ], + "itemId" : 10074696, + "objectId" : 107885 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107885, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "imsi", + "objectType" : "mobile_identity", + "opTime" : "2021-06-02 14:11:32", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:32.847" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:32.848" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:32.847" endtime="20210602 14:11:32.848"></status> +</kw> +<msg timestamp="20210602 14:11:32.848" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:32.754" endtime="20210602 14:11:32.848"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:32.850" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:32.850" endtime="20210602 14:11:32.850"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:32.851" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:32.851" endtime="20210602 14:11:32.851"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:32.852" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:32.851" endtime="20210602 14:11:32.852"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.853" endtime="20210602 14:11:32.853"></status> +</kw> +<msg timestamp="20210602 14:11:32.853" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:32.853" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...</msg> +<status status="PASS" starttime="20210602 14:11:32.852" endtime="20210602 14:11:32.853"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.854" endtime="20210602 14:11:32.854"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.855" endtime="20210602 14:11:32.855"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.855" endtime="20210602 14:11:32.856"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.854" endtime="20210602 14:11:32.856"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.849" endtime="20210602 14:11:32.856"></status> +</kw> +<msg timestamp="20210602 14:11:32.856" level="INFO">${objectIds} = [107885]</msg> +<status status="PASS" starttime="20210602 14:11:32.849" endtime="20210602 14:11:32.856"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:32.857" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:32.857" endtime="20210602 14:11:32.857"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:32.858" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:32.858" endtime="20210602 14:11:32.858"></status> +</kw> +<msg timestamp="20210602 14:11:32.858" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:32.859" level="INFO">${objectIds} = [107885]</msg> +<status status="PASS" starttime="20210602 14:11:32.751" endtime="20210602 14:11:32.859"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:32.859" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:32.859" endtime="20210602 14:11:32.860"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.860" endtime="20210602 14:11:32.861"></status> +</kw> +<msg timestamp="20210602 14:11:32.861" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:32.860" endtime="20210602 14:11:32.861"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:32.862" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:32.861" endtime="20210602 14:11:32.862"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107885" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:32.863" level="INFO">${objectList} = {'objectId': 107885, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:32.862" endtime="20210602 14:11:32.863"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.863" endtime="20210602 14:11:32.864"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.862" endtime="20210602 14:11:32.864"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.862" endtime="20210602 14:11:32.864"></status> +</kw> +<msg timestamp="20210602 14:11:32.864" level="INFO">${objectIds} = [107885]</msg> +<msg timestamp="20210602 14:11:32.864" level="INFO">${objectList} = {'objectId': 107885, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:32.709" endtime="20210602 14:11:32.865"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.865" endtime="20210602 14:11:32.866"></status> +</kw> +<msg timestamp="20210602 14:11:32.866" level="INFO">${objectList} = {'objectId': 107885, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:32.865" endtime="20210602 14:11:32.867"></status> +</kw> +<msg timestamp="20210602 14:11:32.867" level="INFO">${objectIds} = [107885]</msg> +<msg timestamp="20210602 14:11:32.867" level="INFO">${objectList} = {'objectId': 107885, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:32.707" endtime="20210602 14:11:32.867"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:32.868" level="INFO">Length is 3</msg> +<msg timestamp="20210602 14:11:32.868" level="INFO">${len} = 3</msg> +<status status="PASS" starttime="20210602 14:11:32.868" endtime="20210602 14:11:32.868"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.879" endtime="20210602 14:11:32.879"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.880" endtime="20210602 14:11:32.880"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107885" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.881" endtime="20210602 14:11:32.881"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.880" endtime="20210602 14:11:32.881"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.880" endtime="20210602 14:11:32.881"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.879" endtime="20210602 14:11:32.882"></status> +</kw> +<msg timestamp="20210602 14:11:32.882" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885]</msg> +<status status="PASS" starttime="20210602 14:11:32.869" endtime="20210602 14:11:32.882"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.883" endtime="20210602 14:11:32.883"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.882" endtime="20210602 14:11:32.883"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.706" endtime="20210602 14:11:32.884"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER', 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'objList': [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:32.884" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:32.884" endtime="20210602 14:11:32.885"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.885" endtime="20210602 14:11:32.886"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:32.886" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:32.886" endtime="20210602 14:11:32.886"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.887" endtime="20210602 14:11:32.887"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:32.888" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:32.888" endtime="20210602 14:11:32.888"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:32.889" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:32.888" endtime="20210602 14:11:32.889"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.889" endtime="20210602 14:11:32.889"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:32.890" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:32.890" endtime="20210602 14:11:32.890"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:32.891" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:32.891" endtime="20210602 14:11:32.891"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.892" endtime="20210602 14:11:32.892"></status> +</kw> +<msg timestamp="20210602 14:11:32.892" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:32.893" level="INFO">${objectType} = mobile_identity</msg> +<status status="PASS" starttime="20210602 14:11:32.891" endtime="20210602 14:11:32.893"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.893" endtime="20210602 14:11:32.894"></status> +</kw> +<msg timestamp="20210602 14:11:32.894" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:32.893" endtime="20210602 14:11:32.894"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.895" endtime="20210602 14:11:32.895"></status> +</kw> +<msg timestamp="20210602 14:11:32.895" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:32.896" level="INFO">${objectSubType} = phone_number</msg> +<status status="PASS" starttime="20210602 14:11:32.895" endtime="20210602 14:11:32.896"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.896" endtime="20210602 14:11:32.897"></status> +</kw> +<msg timestamp="20210602 14:11:32.897" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:32.896" endtime="20210602 14:11:32.897"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:32.899" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:32.898" endtime="20210602 14:11:32.899"></status> +</kw> +<msg timestamp="20210602 14:11:32.899" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:32.899" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:32.897" endtime="20210602 14:11:32.899"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.900" endtime="20210602 14:11:32.901"></status> +</kw> +<msg timestamp="20210602 14:11:32.901" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:32.900" endtime="20210602 14:11:32.901"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.902" endtime="20210602 14:11:32.902"></status> +</kw> +<msg timestamp="20210602 14:11:32.902" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:32.901" endtime="20210602 14:11:32.902"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:32.903" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:32.903" endtime="20210602 14:11:32.903"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:32.904" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:32.903" endtime="20210602 14:11:32.904"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.905" endtime="20210602 14:11:32.905"></status> +</kw> +<msg timestamp="20210602 14:11:32.906" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:32.906" level="INFO">${addItemList} = [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]</msg> +<status status="PASS" starttime="20210602 14:11:32.905" endtime="20210602 14:11:32.906"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:32.907" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:32.906" endtime="20210602 14:11:32.907"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.908" endtime="20210602 14:11:32.908"></status> +</kw> +<msg timestamp="20210602 14:11:32.908" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:32.907" endtime="20210602 14:11:32.908"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.909" endtime="20210602 14:11:32.909"></status> +</kw> +<msg timestamp="20210602 14:11:32.910" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:32.909" endtime="20210602 14:11:32.910"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.911" endtime="20210602 14:11:32.911"></status> +</kw> +<msg timestamp="20210602 14:11:32.911" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:32.910" endtime="20210602 14:11:32.911"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:32.912" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:32.912" endtime="20210602 14:11:32.912"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:32.913" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:32.913" endtime="20210602 14:11:32.913"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.929" endtime="20210602 14:11:32.929"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.929" endtime="20210602 14:11:32.930"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObject..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.931" endtime="20210602 14:11:32.931"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.930" endtime="20210602 14:11:32.931"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.930" endtime="20210602 14:11:32.931"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.928" endtime="20210602 14:11:32.932"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.905" endtime="20210602 14:11:32.932"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.904" endtime="20210602 14:11:32.932"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:32.933" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectNam...</msg> +<status status="PASS" starttime="20210602 14:11:32.932" endtime="20210602 14:11:32.933"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.934" endtime="20210602 14:11:32.934"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:32.934" endtime="20210602 14:11:32.935"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:32.936" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:32.935" endtime="20210602 14:11:32.936"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:32.937" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectNam...</msg> +<status status="PASS" starttime="20210602 14:11:32.936" endtime="20210602 14:11:32.937"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:32.938" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:32.938" endtime="20210602 14:11:32.939"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:32.939" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:32.939" endtime="20210602 14:11:32.940"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:32.940" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:33.217" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:32.940" endtime="20210602 14:11:33.217"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:33.218" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:33.218" endtime="20210602 14:11:33.218"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.219" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.219" endtime="20210602 14:11:33.219"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:33.220" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123" ], + "itemId" : 10074697, + "objectId" : 107886 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123456789012345" ], + "itemId" : 10074698, + "objectId" : 107886 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "12345" ], + "itemId" : 10074699, + "objectId" : 107886 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107886, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "phone_number", + "objectType" : "mobile_identity", + "opTime" : "2021-06-02 14:11:32", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:33.220" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:33.220" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:33.219" endtime="20210602 14:11:33.221"></status> +</kw> +<msg timestamp="20210602 14:11:33.221" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:32.938" endtime="20210602 14:11:33.221"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:33.223" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:33.222" endtime="20210602 14:11:33.223"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:33.224" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.224" endtime="20210602 14:11:33.224"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:33.226" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:33.225" endtime="20210602 14:11:33.226"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.227" endtime="20210602 14:11:33.227"></status> +</kw> +<msg timestamp="20210602 14:11:33.227" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.227" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...</msg> +<status status="PASS" starttime="20210602 14:11:33.226" endtime="20210602 14:11:33.227"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.228" endtime="20210602 14:11:33.228"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.229" endtime="20210602 14:11:33.229"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.229" endtime="20210602 14:11:33.230"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.228" endtime="20210602 14:11:33.230"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.222" endtime="20210602 14:11:33.230"></status> +</kw> +<msg timestamp="20210602 14:11:33.230" level="INFO">${objectIds} = [107886]</msg> +<status status="PASS" starttime="20210602 14:11:33.221" endtime="20210602 14:11:33.231"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:33.231" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:33.231" endtime="20210602 14:11:33.231"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.232" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.232" endtime="20210602 14:11:33.232"></status> +</kw> +<msg timestamp="20210602 14:11:33.232" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:33.233" level="INFO">${objectIds} = [107886]</msg> +<status status="PASS" starttime="20210602 14:11:32.933" endtime="20210602 14:11:33.233"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.233" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.233" endtime="20210602 14:11:33.233"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.234" endtime="20210602 14:11:33.235"></status> +</kw> +<msg timestamp="20210602 14:11:33.235" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:33.234" endtime="20210602 14:11:33.235"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:33.235" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.235" endtime="20210602 14:11:33.236"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107886" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:33.237" level="INFO">${objectList} = {'objectId': 107886, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:33.236" endtime="20210602 14:11:33.237"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.237" endtime="20210602 14:11:33.238"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.236" endtime="20210602 14:11:33.238"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.236" endtime="20210602 14:11:33.238"></status> +</kw> +<msg timestamp="20210602 14:11:33.238" level="INFO">${objectIds} = [107886]</msg> +<msg timestamp="20210602 14:11:33.238" level="INFO">${objectList} = {'objectId': 107886, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:32.887" endtime="20210602 14:11:33.238"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.240" endtime="20210602 14:11:33.240"></status> +</kw> +<msg timestamp="20210602 14:11:33.240" level="INFO">${objectList} = {'objectId': 107886, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:33.239" endtime="20210602 14:11:33.240"></status> +</kw> +<msg timestamp="20210602 14:11:33.240" level="INFO">${objectIds} = [107886]</msg> +<msg timestamp="20210602 14:11:33.241" level="INFO">${objectList} = {'objectId': 107886, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:32.885" endtime="20210602 14:11:33.241"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:33.241" level="INFO">Length is 4</msg> +<msg timestamp="20210602 14:11:33.242" level="INFO">${len} = 4</msg> +<status status="PASS" starttime="20210602 14:11:33.241" endtime="20210602 14:11:33.242"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.253" endtime="20210602 14:11:33.254"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.254" endtime="20210602 14:11:33.254"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107886" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.255" endtime="20210602 14:11:33.255"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.254" endtime="20210602 14:11:33.255"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.254" endtime="20210602 14:11:33.255"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.253" endtime="20210602 14:11:33.256"></status> +</kw> +<msg timestamp="20210602 14:11:33.256" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885, 107886]</msg> +<status status="PASS" starttime="20210602 14:11:33.242" endtime="20210602 14:11:33.257"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.258" endtime="20210602 14:11:33.258"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.257" endtime="20210602 14:11:33.258"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:32.884" endtime="20210602 14:11:33.258"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_APN', 'objectType': 'apn', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$w..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.259" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:33.259" endtime="20210602 14:11:33.259"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.260" endtime="20210602 14:11:33.260"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.261" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:33.261" endtime="20210602 14:11:33.261"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.262" endtime="20210602 14:11:33.262"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.263" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:33.263" endtime="20210602 14:11:33.263"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:33.264" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:33.263" endtime="20210602 14:11:33.264"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.264" endtime="20210602 14:11:33.264"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.265" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:33.265" endtime="20210602 14:11:33.265"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.266" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.265" endtime="20210602 14:11:33.266"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.267" endtime="20210602 14:11:33.267"></status> +</kw> +<msg timestamp="20210602 14:11:33.267" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.267" level="INFO">${objectType} = apn</msg> +<status status="PASS" starttime="20210602 14:11:33.266" endtime="20210602 14:11:33.267"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.268" endtime="20210602 14:11:33.269"></status> +</kw> +<msg timestamp="20210602 14:11:33.269" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.268" endtime="20210602 14:11:33.269"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.270" endtime="20210602 14:11:33.270"></status> +</kw> +<msg timestamp="20210602 14:11:33.270" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.271" level="INFO">${objectSubType} = </msg> +<status status="PASS" starttime="20210602 14:11:33.270" endtime="20210602 14:11:33.271"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.272" endtime="20210602 14:11:33.272"></status> +</kw> +<msg timestamp="20210602 14:11:33.272" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:33.271" endtime="20210602 14:11:33.273"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:33.274" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:33.273" endtime="20210602 14:11:33.274"></status> +</kw> +<msg timestamp="20210602 14:11:33.274" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:33.274" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:33.273" endtime="20210602 14:11:33.274"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.275" endtime="20210602 14:11:33.276"></status> +</kw> +<msg timestamp="20210602 14:11:33.276" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:33.275" endtime="20210602 14:11:33.276"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.277" endtime="20210602 14:11:33.277"></status> +</kw> +<msg timestamp="20210602 14:11:33.277" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:33.276" endtime="20210602 14:11:33.277"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:33.278" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.278" endtime="20210602 14:11:33.278"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:33.279" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:33.278" endtime="20210602 14:11:33.279"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.280" endtime="20210602 14:11:33.281"></status> +</kw> +<msg timestamp="20210602 14:11:33.281" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.281" level="INFO">${addItemList} = [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]</msg> +<status status="PASS" starttime="20210602 14:11:33.280" endtime="20210602 14:11:33.281"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:33.282" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:33.282" endtime="20210602 14:11:33.282"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.283" endtime="20210602 14:11:33.283"></status> +</kw> +<msg timestamp="20210602 14:11:33.284" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:33.282" endtime="20210602 14:11:33.284"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.285" endtime="20210602 14:11:33.285"></status> +</kw> +<msg timestamp="20210602 14:11:33.285" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:33.284" endtime="20210602 14:11:33.285"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.286" endtime="20210602 14:11:33.287"></status> +</kw> +<msg timestamp="20210602 14:11:33.287" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:33.286" endtime="20210602 14:11:33.287"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.288" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:33.288" endtime="20210602 14:11:33.288"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:33.289" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'...</msg> +<status status="PASS" starttime="20210602 14:11:33.289" endtime="20210602 14:11:33.289"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.300" endtime="20210602 14:11:33.300"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.300" endtime="20210602 14:11:33.301"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList':..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.301" endtime="20210602 14:11:33.302"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.301" endtime="20210602 14:11:33.302"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.301" endtime="20210602 14:11:33.302"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.299" endtime="20210602 14:11:33.302"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.280" endtime="20210602 14:11:33.303"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.279" endtime="20210602 14:11:33.303"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:33.304" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'o...</msg> +<status status="PASS" starttime="20210602 14:11:33.303" endtime="20210602 14:11:33.304"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.305" endtime="20210602 14:11:33.305"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.306" endtime="20210602 14:11:33.306"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:33.307" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:33.306" endtime="20210602 14:11:33.307"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.307" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "apn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u63...</msg> +<status status="PASS" starttime="20210602 14:11:33.307" endtime="20210602 14:11:33.308"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:33.309" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:33.308" endtime="20210602 14:11:33.309"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:33.309" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:33.309" endtime="20210602 14:11:33.310"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:33.311" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "apn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:33.455" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:33.310" endtime="20210602 14:11:33.456"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:33.456" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:33.456" endtime="20210602 14:11:33.457"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.457" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.457" endtime="20210602 14:11:33.458"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:33.458" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "uawei.org" ], + "itemId" : 10074700, + "objectId" : 107887 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "huawei.com" ], + "itemId" : 10074701, + "objectId" : 107887 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:32", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "www.huawei.com" ], + "itemId" : 10074702, + "objectId" : 107887 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107887, + "objectName" : "auttest单ip指定端口", + "objectType" : "apn", + "opTime" : "2021-06-02 14:11:32", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:33.459" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:33.459" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:33.458" endtime="20210602 14:11:33.459"></status> +</kw> +<msg timestamp="20210602 14:11:33.460" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:33.308" endtime="20210602 14:11:33.460"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:33.462" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:33.462" endtime="20210602 14:11:33.462"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:33.463" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.462" endtime="20210602 14:11:33.463"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:33.464" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:33.463" endtime="20210602 14:11:33.464"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.465" endtime="20210602 14:11:33.465"></status> +</kw> +<msg timestamp="20210602 14:11:33.466" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.466" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['u...</msg> +<status status="PASS" starttime="20210602 14:11:33.464" endtime="20210602 14:11:33.466"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.466" endtime="20210602 14:11:33.467"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:32', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['uawei.org'], 'ite..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.468" endtime="20210602 14:11:33.468"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.467" endtime="20210602 14:11:33.468"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.467" endtime="20210602 14:11:33.469"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.461" endtime="20210602 14:11:33.469"></status> +</kw> +<msg timestamp="20210602 14:11:33.469" level="INFO">${objectIds} = [107887]</msg> +<status status="PASS" starttime="20210602 14:11:33.460" endtime="20210602 14:11:33.470"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:33.470" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:33.470" endtime="20210602 14:11:33.471"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.471" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.471" endtime="20210602 14:11:33.472"></status> +</kw> +<msg timestamp="20210602 14:11:33.472" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:33.472" level="INFO">${objectIds} = [107887]</msg> +<status status="PASS" starttime="20210602 14:11:33.305" endtime="20210602 14:11:33.472"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.473" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.473" endtime="20210602 14:11:33.473"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.474" endtime="20210602 14:11:33.474"></status> +</kw> +<msg timestamp="20210602 14:11:33.475" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:33.474" endtime="20210602 14:11:33.475"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:33.475" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.475" endtime="20210602 14:11:33.476"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107887" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:33.477" level="INFO">${objectList} = {'objectId': 107887, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:33.476" endtime="20210602 14:11:33.477"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.477" endtime="20210602 14:11:33.478"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.476" endtime="20210602 14:11:33.478"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.476" endtime="20210602 14:11:33.478"></status> +</kw> +<msg timestamp="20210602 14:11:33.478" level="INFO">${objectIds} = [107887]</msg> +<msg timestamp="20210602 14:11:33.479" level="INFO">${objectList} = {'objectId': 107887, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:33.261" endtime="20210602 14:11:33.479"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.480" endtime="20210602 14:11:33.480"></status> +</kw> +<msg timestamp="20210602 14:11:33.480" level="INFO">${objectList} = {'objectId': 107887, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:33.479" endtime="20210602 14:11:33.480"></status> +</kw> +<msg timestamp="20210602 14:11:33.481" level="INFO">${objectIds} = [107887]</msg> +<msg timestamp="20210602 14:11:33.481" level="INFO">${objectList} = {'objectId': 107887, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:33.260" endtime="20210602 14:11:33.481"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:33.482" level="INFO">Length is 5</msg> +<msg timestamp="20210602 14:11:33.482" level="INFO">${len} = 5</msg> +<status status="PASS" starttime="20210602 14:11:33.481" endtime="20210602 14:11:33.482"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.493" endtime="20210602 14:11:33.493"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.493" endtime="20210602 14:11:33.493"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107887" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.493" endtime="20210602 14:11:33.493"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.493" endtime="20210602 14:11:33.495"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.493" endtime="20210602 14:11:33.495"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.492" endtime="20210602 14:11:33.495"></status> +</kw> +<msg timestamp="20210602 14:11:33.495" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887]</msg> +<status status="PASS" starttime="20210602 14:11:33.482" endtime="20210602 14:11:33.495"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.497" endtime="20210602 14:11:33.497"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.496" endtime="20210602 14:11:33.497"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.259" endtime="20210602 14:11:33.498"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'ip_learning', 'objList': [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', ..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.498" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:33.498" endtime="20210602 14:11:33.499"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.499" endtime="20210602 14:11:33.500"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.500" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:33.500" endtime="20210602 14:11:33.500"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.501" endtime="20210602 14:11:33.501"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.502" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:33.502" endtime="20210602 14:11:33.502"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:33.503" level="INFO">${objList} = [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:33.503" endtime="20210602 14:11:33.503"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.503" endtime="20210602 14:11:33.503"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.503" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:33.503" endtime="20210602 14:11:33.503"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.504" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.504" endtime="20210602 14:11:33.504"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.505" endtime="20210602 14:11:33.505"></status> +</kw> +<msg timestamp="20210602 14:11:33.505" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.505" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:33.504" endtime="20210602 14:11:33.506"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.506" endtime="20210602 14:11:33.507"></status> +</kw> +<msg timestamp="20210602 14:11:33.507" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:33.506" endtime="20210602 14:11:33.507"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.508" endtime="20210602 14:11:33.508"></status> +</kw> +<msg timestamp="20210602 14:11:33.508" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.509" level="INFO">${objectSubType} = ip_learning</msg> +<status status="PASS" starttime="20210602 14:11:33.507" endtime="20210602 14:11:33.509"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.509" endtime="20210602 14:11:33.510"></status> +</kw> +<msg timestamp="20210602 14:11:33.510" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:33.509" endtime="20210602 14:11:33.510"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:33.511" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:33.511" endtime="20210602 14:11:33.511"></status> +</kw> +<msg timestamp="20210602 14:11:33.512" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:33.512" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:33.511" endtime="20210602 14:11:33.512"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.513" endtime="20210602 14:11:33.513"></status> +</kw> +<msg timestamp="20210602 14:11:33.513" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:33.512" endtime="20210602 14:11:33.513"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.514" endtime="20210602 14:11:33.514"></status> +</kw> +<msg timestamp="20210602 14:11:33.515" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:33.514" endtime="20210602 14:11:33.515"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:33.515" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.515" endtime="20210602 14:11:33.516"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:33.517" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:33.516" endtime="20210602 14:11:33.517"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.519" endtime="20210602 14:11:33.519"></status> +</kw> +<msg timestamp="20210602 14:11:33.519" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.519" level="INFO">${addItemList} = [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]</msg> +<status status="PASS" starttime="20210602 14:11:33.518" endtime="20210602 14:11:33.520"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:33.520" level="INFO">${addItemList} = [{"fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:33.520" endtime="20210602 14:11:33.520"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.521" endtime="20210602 14:11:33.522"></status> +</kw> +<msg timestamp="20210602 14:11:33.523" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:33.521" endtime="20210602 14:11:33.523"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.524" endtime="20210602 14:11:33.524"></status> +</kw> +<msg timestamp="20210602 14:11:33.524" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"</msg> +<status status="PASS" starttime="20210602 14:11:33.523" endtime="20210602 14:11:33.524"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.525" endtime="20210602 14:11:33.526"></status> +</kw> +<msg timestamp="20210602 14:11:33.526" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:33.525" endtime="20210602 14:11:33.526"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.527" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:33.526" endtime="20210602 14:11:33.527"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:33.528" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad...</msg> +<status status="PASS" starttime="20210602 14:11:33.527" endtime="20210602 14:11:33.528"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.544" endtime="20210602 14:11:33.544"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.545" endtime="20210602 14:11:33.545"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'add..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.546" endtime="20210602 14:11:33.546"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.545" endtime="20210602 14:11:33.546"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.545" endtime="20210602 14:11:33.546"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.543" endtime="20210602 14:11:33.546"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.518" endtime="20210602 14:11:33.547"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.518" endtime="20210602 14:11:33.547"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:33.548" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单i...</msg> +<status status="PASS" starttime="20210602 14:11:33.547" endtime="20210602 14:11:33.548"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.548" endtime="20210602 14:11:33.549"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.549" endtime="20210602 14:11:33.549"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:33.550" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:33.550" endtime="20210602 14:11:33.550"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.551" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u...</msg> +<status status="PASS" starttime="20210602 14:11:33.550" endtime="20210602 14:11:33.551"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:33.552" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:33.552" endtime="20210602 14:11:33.552"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:33.553" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:33.552" endtime="20210602 14:11:33.553"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:33.555" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [], "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000", "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:33.647" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:33.554" endtime="20210602 14:11:33.648"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:33.650" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:33.649" endtime="20210602 14:11:33.650"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.653" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.651" endtime="20210602 14:11:33.653"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:33.656" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ ], + "agingTime" : 12, + "deleteItemIds" : [ ], + "fromFqdns" : [ "$www.baidu.com", "*jd.com" ], + "fromProtocol" : "HTTP,SSL", + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "learnedIpLimit" : 1000, + "learningDepth" : "2", + "memberType" : 3, + "objectDesc" : "test", + "objectId" : 107888, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "ip_learning", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:33", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ], + "voteClientNum" : 10 + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:33.657" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:33.657" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:33.654" endtime="20210602 14:11:33.658"></status> +</kw> +<msg timestamp="20210602 14:11:33.659" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:33.551" endtime="20210602 14:11:33.659"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:33.661" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:33.660" endtime="20210602 14:11:33.661"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:33.661" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.661" endtime="20210602 14:11:33.661"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:33.662" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:33.662" endtime="20210602 14:11:33.662"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.663" endtime="20210602 14:11:33.663"></status> +</kw> +<msg timestamp="20210602 14:11:33.663" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.664" level="INFO">${data} = {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusio...</msg> +<status status="PASS" starttime="20210602 14:11:33.663" endtime="20210602 14:11:33.664"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.664" endtime="20210602 14:11:33.664"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusion': 0, 'isInitia..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.665" endtime="20210602 14:11:33.665"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.665" endtime="20210602 14:11:33.666"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.665" endtime="20210602 14:11:33.666"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.660" endtime="20210602 14:11:33.666"></status> +</kw> +<msg timestamp="20210602 14:11:33.666" level="INFO">${objectIds} = [107888]</msg> +<status status="PASS" starttime="20210602 14:11:33.659" endtime="20210602 14:11:33.667"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:33.667" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:33.667" endtime="20210602 14:11:33.667"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.668" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.668" endtime="20210602 14:11:33.668"></status> +</kw> +<msg timestamp="20210602 14:11:33.668" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:33.669" level="INFO">${objectIds} = [107888]</msg> +<status status="PASS" starttime="20210602 14:11:33.548" endtime="20210602 14:11:33.669"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:33.669" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:33.669" endtime="20210602 14:11:33.670"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.670" endtime="20210602 14:11:33.671"></status> +</kw> +<msg timestamp="20210602 14:11:33.671" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:33.670" endtime="20210602 14:11:33.671"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:33.672" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.671" endtime="20210602 14:11:33.672"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107888" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:33.673" level="INFO">${objectList} = {'objectId': 107888, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:33.672" endtime="20210602 14:11:33.673"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.673" endtime="20210602 14:11:33.674"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.672" endtime="20210602 14:11:33.674"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.672" endtime="20210602 14:11:33.674"></status> +</kw> +<msg timestamp="20210602 14:11:33.675" level="INFO">${objectIds} = [107888]</msg> +<msg timestamp="20210602 14:11:33.675" level="INFO">${objectList} = {'objectId': 107888, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:33.501" endtime="20210602 14:11:33.675"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.676" endtime="20210602 14:11:33.676"></status> +</kw> +<msg timestamp="20210602 14:11:33.677" level="INFO">${objectList} = {'objectId': 107888, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:33.675" endtime="20210602 14:11:33.677"></status> +</kw> +<msg timestamp="20210602 14:11:33.677" level="INFO">${objectIds} = [107888]</msg> +<msg timestamp="20210602 14:11:33.677" level="INFO">${objectList} = {'objectId': 107888, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:33.499" endtime="20210602 14:11:33.678"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:33.678" level="INFO">Length is 6</msg> +<msg timestamp="20210602 14:11:33.679" level="INFO">${len} = 6</msg> +<status status="PASS" starttime="20210602 14:11:33.678" endtime="20210602 14:11:33.679"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.690" endtime="20210602 14:11:33.690"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.691" endtime="20210602 14:11:33.691"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107888" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.692" endtime="20210602 14:11:33.693"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.692" endtime="20210602 14:11:33.693"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.691" endtime="20210602 14:11:33.693"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.689" endtime="20210602 14:11:33.694"></status> +</kw> +<msg timestamp="20210602 14:11:33.694" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887, 107888]</msg> +<status status="PASS" starttime="20210602 14:11:33.679" endtime="20210602 14:11:33.694"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.696" endtime="20210602 14:11:33.696"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.695" endtime="20210602 14:11:33.697"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.498" endtime="20210602 14:11:33.697"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_ADDR', 'objList': [{'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}]}" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.698" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:33.697" endtime="20210602 14:11:33.698"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.699" endtime="20210602 14:11:33.699"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.700" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:33.700" endtime="20210602 14:11:33.700"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.701" endtime="20210602 14:11:33.701"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:33.702" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:33.702" endtime="20210602 14:11:33.702"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:33.703" level="INFO">${objList} = [{'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:33.703" endtime="20210602 14:11:33.704"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.704" endtime="20210602 14:11:33.704"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.705" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:33.704" endtime="20210602 14:11:33.705"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.706" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.706" endtime="20210602 14:11:33.706"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:33.708" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:33.707" endtime="20210602 14:11:33.708"></status> +</kw> +<msg timestamp="20210602 14:11:33.708" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:33.708" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:33.707" endtime="20210602 14:11:33.708"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.709" endtime="20210602 14:11:33.710"></status> +</kw> +<msg timestamp="20210602 14:11:33.710" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.709" endtime="20210602 14:11:33.710"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<msg timestamp="20210602 14:11:33.712" level="FAIL">Dictionary does not contain key 'objectSubType'.</msg> +<status status="FAIL" starttime="20210602 14:11:33.711" endtime="20210602 14:11:33.712"></status> +</kw> +<msg timestamp="20210602 14:11:33.712" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:33.713" level="INFO">${objectSubType} = Dictionary does not contain key 'objectSubType'.</msg> +<status status="PASS" starttime="20210602 14:11:33.710" endtime="20210602 14:11:33.713"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.715" endtime="20210602 14:11:33.715"></status> +</kw> +<msg timestamp="20210602 14:11:33.716" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.714" endtime="20210602 14:11:33.716"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:33.718" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:33.717" endtime="20210602 14:11:33.718"></status> +</kw> +<msg timestamp="20210602 14:11:33.718" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:33.718" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:33.716" endtime="20210602 14:11:33.719"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.719" endtime="20210602 14:11:33.720"></status> +</kw> +<msg timestamp="20210602 14:11:33.720" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.719" endtime="20210602 14:11:33.720"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.721" endtime="20210602 14:11:33.722"></status> +</kw> +<msg timestamp="20210602 14:11:33.722" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.721" endtime="20210602 14:11:33.723"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:33.723" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:33.723" endtime="20210602 14:11:33.723"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:33.724" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:33.724" endtime="20210602 14:11:33.724"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.725" endtime="20210602 14:11:33.726"></status> +</kw> +<msg timestamp="20210602 14:11:33.726" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:33.727" level="INFO">${addItemList} = [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]</msg> +<status status="PASS" starttime="20210602 14:11:33.725" endtime="20210602 14:11:33.727"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:33.728" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:33.727" endtime="20210602 14:11:33.728"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.729" endtime="20210602 14:11:33.729"></status> +</kw> +<msg timestamp="20210602 14:11:33.729" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:33.728" endtime="20210602 14:11:33.729"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.730" endtime="20210602 14:11:33.730"></status> +</kw> +<msg timestamp="20210602 14:11:33.731" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:33.729" endtime="20210602 14:11:33.731"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.731" endtime="20210602 14:11:33.732"></status> +</kw> +<msg timestamp="20210602 14:11:33.732" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.731" endtime="20210602 14:11:33.732"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.733" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:33.732" endtime="20210602 14:11:33.733"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:33.734" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:33.733" endtime="20210602 14:11:33.734"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.747" endtime="20210602 14:11:33.747"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.748" endtime="20210602 14:11:33.748"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.749" endtime="20210602 14:11:33.749"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.748" endtime="20210602 14:11:33.749"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.748" endtime="20210602 14:11:33.749"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.746" endtime="20210602 14:11:33.750"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.725" endtime="20210602 14:11:33.750"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.724" endtime="20210602 14:11:33.750"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:33.751" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定...</msg> +<status status="PASS" starttime="20210602 14:11:33.750" endtime="20210602 14:11:33.751"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.752" endtime="20210602 14:11:33.752"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:33.752" endtime="20210602 14:11:33.752"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:33.753" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:33.753" endtime="20210602 14:11:33.753"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:33.754" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u535...</msg> +<status status="PASS" starttime="20210602 14:11:33.754" endtime="20210602 14:11:33.754"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:33.755" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:33.755" endtime="20210602 14:11:33.756"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:33.756" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:33.756" endtime="20210602 14:11:33.757"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:33.758" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:34.104" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:33.757" endtime="20210602 14:11:34.104"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:34.105" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:34.105" endtime="20210602 14:11:34.105"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:34.106" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:34.106" endtime="20210602 14:11:34.106"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:34.107" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.254", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "65535", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.254", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.254\" ,\"port\":\"65535\"}", + "itemId" : 10074703, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107889, + "opTime" : "2021-06-02 14:11:33", + "opUser" : 425, + "port" : "65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.254", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "1", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.254", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.254\" ,\"port\":\"1\"}", + "itemId" : 10074704, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107889, + "opTime" : "2021-06-02 14:11:33", + "opUser" : 425, + "port" : "1", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107889, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:33", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:34.108" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:34.108" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPor...</msg> +<status status="PASS" starttime="20210602 14:11:34.107" endtime="20210602 14:11:34.108"></status> +</kw> +<msg timestamp="20210602 14:11:34.109" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPor...</msg> +<status status="PASS" starttime="20210602 14:11:33.754" endtime="20210602 14:11:34.109"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:34.111" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:34.110" endtime="20210602 14:11:34.111"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:34.112" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:34.111" endtime="20210602 14:11:34.112"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:34.113" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:34.112" endtime="20210602 14:11:34.113"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.114" endtime="20210602 14:11:34.114"></status> +</kw> +<msg timestamp="20210602 14:11:34.115" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:34.115" level="INFO">${data} = {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPort2': '65535', 'clientPortFormat': 'range...</msg> +<status status="PASS" starttime="20210602 14:11:34.113" endtime="20210602 14:11:34.115"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.115" endtime="20210602 14:11:34.116"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.117" endtime="20210602 14:11:34.117"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.116" endtime="20210602 14:11:34.117"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.116" endtime="20210602 14:11:34.118"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.110" endtime="20210602 14:11:34.118"></status> +</kw> +<msg timestamp="20210602 14:11:34.118" level="INFO">${objectIds} = [107889]</msg> +<status status="PASS" starttime="20210602 14:11:34.109" endtime="20210602 14:11:34.118"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:34.119" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:34.119" endtime="20210602 14:11:34.119"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:34.120" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:34.120" endtime="20210602 14:11:34.120"></status> +</kw> +<msg timestamp="20210602 14:11:34.121" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:34.121" level="INFO">${objectIds} = [107889]</msg> +<status status="PASS" starttime="20210602 14:11:33.751" endtime="20210602 14:11:34.121"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:34.122" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:34.121" endtime="20210602 14:11:34.122"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.123" endtime="20210602 14:11:34.123"></status> +</kw> +<msg timestamp="20210602 14:11:34.123" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:34.122" endtime="20210602 14:11:34.123"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:34.124" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:34.123" endtime="20210602 14:11:34.124"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107889" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:34.125" level="INFO">${objectList} = {'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:34.125" endtime="20210602 14:11:34.125"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.126" endtime="20210602 14:11:34.126"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.124" endtime="20210602 14:11:34.126"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.124" endtime="20210602 14:11:34.126"></status> +</kw> +<msg timestamp="20210602 14:11:34.127" level="INFO">${objectIds} = [107889]</msg> +<msg timestamp="20210602 14:11:34.127" level="INFO">${objectList} = {'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:33.701" endtime="20210602 14:11:34.127"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.128" endtime="20210602 14:11:34.128"></status> +</kw> +<msg timestamp="20210602 14:11:34.129" level="INFO">${objectList} = {'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:34.127" endtime="20210602 14:11:34.129"></status> +</kw> +<msg timestamp="20210602 14:11:34.129" level="INFO">${objectIds} = [107889]</msg> +<msg timestamp="20210602 14:11:34.129" level="INFO">${objectList} = {'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:33.698" endtime="20210602 14:11:34.129"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:34.130" level="INFO">Length is 7</msg> +<msg timestamp="20210602 14:11:34.130" level="INFO">${len} = 7</msg> +<status status="PASS" starttime="20210602 14:11:34.130" endtime="20210602 14:11:34.130"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.141" endtime="20210602 14:11:34.142"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.142" endtime="20210602 14:11:34.142"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107889" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.143" endtime="20210602 14:11:34.143"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.143" endtime="20210602 14:11:34.143"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.142" endtime="20210602 14:11:34.144"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.141" endtime="20210602 14:11:34.144"></status> +</kw> +<msg timestamp="20210602 14:11:34.144" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887, 107888, 107889]</msg> +<status status="PASS" starttime="20210602 14:11:34.131" endtime="20210602 14:11:34.144"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.145" endtime="20210602 14:11:34.146"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.144" endtime="20210602 14:11:34.146"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:33.697" endtime="20210602 14:11:34.146"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION', 'objectSubType': 'geo_location', 'objList': [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}]}" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:34.147" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:34.146" endtime="20210602 14:11:34.147"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.148" endtime="20210602 14:11:34.148"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:34.149" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:34.149" endtime="20210602 14:11:34.149"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.150" endtime="20210602 14:11:34.151"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:34.151" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:34.151" endtime="20210602 14:11:34.151"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:34.152" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:34.152" endtime="20210602 14:11:34.152"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.152" endtime="20210602 14:11:34.153"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:34.153" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:34.153" endtime="20210602 14:11:34.153"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:34.154" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:34.154" endtime="20210602 14:11:34.154"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:34.155" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:34.155" endtime="20210602 14:11:34.156"></status> +</kw> +<msg timestamp="20210602 14:11:34.156" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:34.156" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:34.155" endtime="20210602 14:11:34.156"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.157" endtime="20210602 14:11:34.157"></status> +</kw> +<msg timestamp="20210602 14:11:34.157" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:34.156" endtime="20210602 14:11:34.157"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.158" endtime="20210602 14:11:34.158"></status> +</kw> +<msg timestamp="20210602 14:11:34.159" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:34.159" level="INFO">${objectSubType} = geo_location</msg> +<status status="PASS" starttime="20210602 14:11:34.158" endtime="20210602 14:11:34.159"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.160" endtime="20210602 14:11:34.160"></status> +</kw> +<msg timestamp="20210602 14:11:34.160" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:34.159" endtime="20210602 14:11:34.161"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:34.162" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:34.161" endtime="20210602 14:11:34.162"></status> +</kw> +<msg timestamp="20210602 14:11:34.162" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:34.162" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:34.161" endtime="20210602 14:11:34.163"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.164" endtime="20210602 14:11:34.165"></status> +</kw> +<msg timestamp="20210602 14:11:34.165" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:34.163" endtime="20210602 14:11:34.165"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.166" endtime="20210602 14:11:34.166"></status> +</kw> +<msg timestamp="20210602 14:11:34.166" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:34.165" endtime="20210602 14:11:34.166"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:34.167" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:34.167" endtime="20210602 14:11:34.167"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:34.168" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:34.167" endtime="20210602 14:11:34.168"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.169" endtime="20210602 14:11:34.169"></status> +</kw> +<msg timestamp="20210602 14:11:34.170" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:34.170" level="INFO">${addItemList} = [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]</msg> +<status status="PASS" starttime="20210602 14:11:34.169" endtime="20210602 14:11:34.170"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:34.171" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:34.170" endtime="20210602 14:11:34.171"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.172" endtime="20210602 14:11:34.172"></status> +</kw> +<msg timestamp="20210602 14:11:34.172" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:34.171" endtime="20210602 14:11:34.172"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.173" endtime="20210602 14:11:34.173"></status> +</kw> +<msg timestamp="20210602 14:11:34.174" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:34.173" endtime="20210602 14:11:34.174"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.175" endtime="20210602 14:11:34.175"></status> +</kw> +<msg timestamp="20210602 14:11:34.175" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:34.174" endtime="20210602 14:11:34.175"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:34.176" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:34.176" endtime="20210602 14:11:34.176"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:34.177" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'a...</msg> +<status status="PASS" starttime="20210602 14:11:34.176" endtime="20210602 14:11:34.177"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.188" endtime="20210602 14:11:34.188"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.188" endtime="20210602 14:11:34.189"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.189" endtime="20210602 14:11:34.190"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.189" endtime="20210602 14:11:34.190"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.189" endtime="20210602 14:11:34.190"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.187" endtime="20210602 14:11:34.190"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.168" endtime="20210602 14:11:34.191"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.168" endtime="20210602 14:11:34.191"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:34.192" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单...</msg> +<status status="PASS" starttime="20210602 14:11:34.191" endtime="20210602 14:11:34.192"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.193" endtime="20210602 14:11:34.193"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:34.193" endtime="20210602 14:11:34.193"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:34.194" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:34.194" endtime="20210602 14:11:34.194"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:34.195" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\...</msg> +<status status="PASS" starttime="20210602 14:11:34.194" endtime="20210602 14:11:34.195"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:34.196" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:34.196" endtime="20210602 14:11:34.196"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:34.197" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:34.197" endtime="20210602 14:11:34.197"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:34.198" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:35.073" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:34.198" endtime="20210602 14:11:35.074"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:35.077" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:35.075" endtime="20210602 14:11:35.078"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:35.081" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:35.079" endtime="20210602 14:11:35.082"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:35.085" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:33", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "Algeria." ], + "itemId" : 10074705, + "objectId" : 107890 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:33", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074706, + "objectId" : 107890 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107890, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "geo_location", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:33", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:35.085" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:35.086" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:33', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:35.083" endtime="20210602 14:11:35.087"></status> +</kw> +<msg timestamp="20210602 14:11:35.088" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:33', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:34.195" endtime="20210602 14:11:35.088"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:35.092" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:35.092" endtime="20210602 14:11:35.093"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:35.094" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:35.093" endtime="20210602 14:11:35.094"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:35.096" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:35.095" endtime="20210602 14:11:35.096"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.097" endtime="20210602 14:11:35.098"></status> +</kw> +<msg timestamp="20210602 14:11:35.098" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:35.098" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:33', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...</msg> +<status status="PASS" starttime="20210602 14:11:35.097" endtime="20210602 14:11:35.099"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.099" endtime="20210602 14:11:35.100"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:33', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.101" endtime="20210602 14:11:35.102"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.101" endtime="20210602 14:11:35.102"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.100" endtime="20210602 14:11:35.102"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.090" endtime="20210602 14:11:35.103"></status> +</kw> +<msg timestamp="20210602 14:11:35.103" level="INFO">${objectIds} = [107890]</msg> +<status status="PASS" starttime="20210602 14:11:35.089" endtime="20210602 14:11:35.103"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:35.104" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:35.104" endtime="20210602 14:11:35.104"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:35.105" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:35.105" endtime="20210602 14:11:35.106"></status> +</kw> +<msg timestamp="20210602 14:11:35.106" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:35.106" level="INFO">${objectIds} = [107890]</msg> +<status status="PASS" starttime="20210602 14:11:34.192" endtime="20210602 14:11:35.107"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:35.107" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:35.107" endtime="20210602 14:11:35.108"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.109" endtime="20210602 14:11:35.109"></status> +</kw> +<msg timestamp="20210602 14:11:35.109" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:35.108" endtime="20210602 14:11:35.109"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:35.110" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:35.110" endtime="20210602 14:11:35.110"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107890" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:35.112" level="INFO">${objectList} = {'objectId': 107890, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:35.111" endtime="20210602 14:11:35.112"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.112" endtime="20210602 14:11:35.113"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.111" endtime="20210602 14:11:35.113"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.111" endtime="20210602 14:11:35.113"></status> +</kw> +<msg timestamp="20210602 14:11:35.113" level="INFO">${objectIds} = [107890]</msg> +<msg timestamp="20210602 14:11:35.114" level="INFO">${objectList} = {'objectId': 107890, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:34.150" endtime="20210602 14:11:35.114"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.115" endtime="20210602 14:11:35.115"></status> +</kw> +<msg timestamp="20210602 14:11:35.116" level="INFO">${objectList} = {'objectId': 107890, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:35.114" endtime="20210602 14:11:35.116"></status> +</kw> +<msg timestamp="20210602 14:11:35.116" level="INFO">${objectIds} = [107890]</msg> +<msg timestamp="20210602 14:11:35.116" level="INFO">${objectList} = {'objectId': 107890, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:34.147" endtime="20210602 14:11:35.116"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:35.117" level="INFO">Length is 8</msg> +<msg timestamp="20210602 14:11:35.117" level="INFO">${len} = 8</msg> +<status status="PASS" starttime="20210602 14:11:35.117" endtime="20210602 14:11:35.118"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.135" endtime="20210602 14:11:35.135"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.135" endtime="20210602 14:11:35.136"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107890" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.136" endtime="20210602 14:11:35.137"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.136" endtime="20210602 14:11:35.137"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.136" endtime="20210602 14:11:35.137"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.134" endtime="20210602 14:11:35.137"></status> +</kw> +<msg timestamp="20210602 14:11:35.138" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887, 107888, 107889, 107890]</msg> +<status status="PASS" starttime="20210602 14:11:35.118" endtime="20210602 14:11:35.138"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.139" endtime="20210602 14:11:35.139"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.138" endtime="20210602 14:11:35.139"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:34.146" endtime="20210602 14:11:35.140"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_ADDR', 'objectSubType': 'ip_learning', 'objList': [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth'..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:35.140" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:35.140" endtime="20210602 14:11:35.141"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.141" endtime="20210602 14:11:35.142"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:35.142" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:35.142" endtime="20210602 14:11:35.142"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.143" endtime="20210602 14:11:35.143"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:35.144" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:35.144" endtime="20210602 14:11:35.144"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:35.145" level="INFO">${objList} = [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:35.144" endtime="20210602 14:11:35.145"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.145" endtime="20210602 14:11:35.145"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:35.146" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:35.146" endtime="20210602 14:11:35.146"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:35.147" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:35.146" endtime="20210602 14:11:35.147"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:35.148" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:35.148" endtime="20210602 14:11:35.148"></status> +</kw> +<msg timestamp="20210602 14:11:35.148" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:35.148" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:35.147" endtime="20210602 14:11:35.149"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.150" endtime="20210602 14:11:35.150"></status> +</kw> +<msg timestamp="20210602 14:11:35.151" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:35.149" endtime="20210602 14:11:35.151"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.151" endtime="20210602 14:11:35.152"></status> +</kw> +<msg timestamp="20210602 14:11:35.152" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:35.152" level="INFO">${objectSubType} = ip_learning</msg> +<status status="PASS" starttime="20210602 14:11:35.151" endtime="20210602 14:11:35.152"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.153" endtime="20210602 14:11:35.154"></status> +</kw> +<msg timestamp="20210602 14:11:35.154" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:35.153" endtime="20210602 14:11:35.154"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:35.155" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:35.155" endtime="20210602 14:11:35.156"></status> +</kw> +<msg timestamp="20210602 14:11:35.156" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:35.156" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:35.154" endtime="20210602 14:11:35.156"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.157" endtime="20210602 14:11:35.157"></status> +</kw> +<msg timestamp="20210602 14:11:35.158" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:35.156" endtime="20210602 14:11:35.158"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.159" endtime="20210602 14:11:35.159"></status> +</kw> +<msg timestamp="20210602 14:11:35.159" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:35.158" endtime="20210602 14:11:35.159"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:35.160" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:35.160" endtime="20210602 14:11:35.160"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:35.161" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:35.161" endtime="20210602 14:11:35.161"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.163" endtime="20210602 14:11:35.163"></status> +</kw> +<msg timestamp="20210602 14:11:35.163" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:35.163" level="INFO">${addItemList} = [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]</msg> +<status status="PASS" starttime="20210602 14:11:35.162" endtime="20210602 14:11:35.164"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:35.165" level="INFO">${addItemList} = [{"fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:35.164" endtime="20210602 14:11:35.165"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.166" endtime="20210602 14:11:35.166"></status> +</kw> +<msg timestamp="20210602 14:11:35.167" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:35.165" endtime="20210602 14:11:35.167"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.168" endtime="20210602 14:11:35.168"></status> +</kw> +<msg timestamp="20210602 14:11:35.169" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"</msg> +<status status="PASS" starttime="20210602 14:11:35.167" endtime="20210602 14:11:35.169"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.171" endtime="20210602 14:11:35.171"></status> +</kw> +<msg timestamp="20210602 14:11:35.171" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:35.170" endtime="20210602 14:11:35.172"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:35.172" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:35.172" endtime="20210602 14:11:35.173"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:35.173" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad...</msg> +<status status="PASS" starttime="20210602 14:11:35.173" endtime="20210602 14:11:35.174"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.184" endtime="20210602 14:11:35.185"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.185" endtime="20210602 14:11:35.185"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'add..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.186" endtime="20210602 14:11:35.186"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.186" endtime="20210602 14:11:35.186"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.185" endtime="20210602 14:11:35.187"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.184" endtime="20210602 14:11:35.187"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.162" endtime="20210602 14:11:35.187"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.162" endtime="20210602 14:11:35.187"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:35.188" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单i...</msg> +<status status="PASS" starttime="20210602 14:11:35.188" endtime="20210602 14:11:35.189"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.189" endtime="20210602 14:11:35.190"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:35.190" endtime="20210602 14:11:35.190"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:35.191" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:35.191" endtime="20210602 14:11:35.191"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:35.192" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u...</msg> +<status status="PASS" starttime="20210602 14:11:35.191" endtime="20210602 14:11:35.192"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:35.193" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:35.193" endtime="20210602 14:11:35.193"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:35.194" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:35.194" endtime="20210602 14:11:35.195"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:35.195" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [], "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000", "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:36.822" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:35.195" endtime="20210602 14:11:36.823"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:36.826" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:36.825" endtime="20210602 14:11:36.827"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:36.830" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:36.828" endtime="20210602 14:11:36.831"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:36.834" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ ], + "agingTime" : 12, + "deleteItemIds" : [ ], + "fromFqdns" : [ "$www.baidu.com", "*jd.com" ], + "fromProtocol" : "HTTP,SSL", + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "learnedIpLimit" : 1000, + "learningDepth" : "2", + "memberType" : 3, + "objectDesc" : "test", + "objectId" : 107891, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "ip_learning", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:34", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ], + "voteClientNum" : 10 + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:36.834" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:36.835" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:36.832" endtime="20210602 14:11:36.835"></status> +</kw> +<msg timestamp="20210602 14:11:36.836" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:35.192" endtime="20210602 14:11:36.837"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:36.840" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:36.840" endtime="20210602 14:11:36.841"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:36.842" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:36.841" endtime="20210602 14:11:36.842"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:36.844" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:36.843" endtime="20210602 14:11:36.844"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.845" endtime="20210602 14:11:36.846"></status> +</kw> +<msg timestamp="20210602 14:11:36.846" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:36.846" level="INFO">${data} = {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusio...</msg> +<status status="PASS" starttime="20210602 14:11:36.844" endtime="20210602 14:11:36.847"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.847" endtime="20210602 14:11:36.848"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusion': 0, 'isInitia..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.849" endtime="20210602 14:11:36.850"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.849" endtime="20210602 14:11:36.850"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.848" endtime="20210602 14:11:36.851"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.839" endtime="20210602 14:11:36.851"></status> +</kw> +<msg timestamp="20210602 14:11:36.851" level="INFO">${objectIds} = [107891]</msg> +<status status="PASS" starttime="20210602 14:11:36.837" endtime="20210602 14:11:36.851"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:36.853" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:36.852" endtime="20210602 14:11:36.853"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:36.854" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:36.854" endtime="20210602 14:11:36.854"></status> +</kw> +<msg timestamp="20210602 14:11:36.855" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:36.855" level="INFO">${objectIds} = [107891]</msg> +<status status="PASS" starttime="20210602 14:11:35.189" endtime="20210602 14:11:36.855"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:36.856" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:36.856" endtime="20210602 14:11:36.856"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.857" endtime="20210602 14:11:36.858"></status> +</kw> +<msg timestamp="20210602 14:11:36.858" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:36.857" endtime="20210602 14:11:36.858"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:36.859" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:36.858" endtime="20210602 14:11:36.859"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107891" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:36.861" level="INFO">${objectList} = {'objectId': 107891, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:36.860" endtime="20210602 14:11:36.861"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.861" endtime="20210602 14:11:36.861"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.859" endtime="20210602 14:11:36.862"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.859" endtime="20210602 14:11:36.862"></status> +</kw> +<msg timestamp="20210602 14:11:36.862" level="INFO">${objectIds} = [107891]</msg> +<msg timestamp="20210602 14:11:36.862" level="INFO">${objectList} = {'objectId': 107891, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:35.143" endtime="20210602 14:11:36.862"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.864" endtime="20210602 14:11:36.864"></status> +</kw> +<msg timestamp="20210602 14:11:36.864" level="INFO">${objectList} = {'objectId': 107891, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:36.863" endtime="20210602 14:11:36.864"></status> +</kw> +<msg timestamp="20210602 14:11:36.865" level="INFO">${objectIds} = [107891]</msg> +<msg timestamp="20210602 14:11:36.865" level="INFO">${objectList} = {'objectId': 107891, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:35.141" endtime="20210602 14:11:36.865"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:36.866" level="INFO">Length is 9</msg> +<msg timestamp="20210602 14:11:36.866" level="INFO">${len} = 9</msg> +<status status="PASS" starttime="20210602 14:11:36.865" endtime="20210602 14:11:36.866"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.879" endtime="20210602 14:11:36.879"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.879" endtime="20210602 14:11:36.880"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107891" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.880" endtime="20210602 14:11:36.881"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.880" endtime="20210602 14:11:36.881"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.880" endtime="20210602 14:11:36.881"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.878" endtime="20210602 14:11:36.881"></status> +</kw> +<msg timestamp="20210602 14:11:36.882" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887, 107888, 107889, 107890, 107891]</msg> +<status status="PASS" starttime="20210602 14:11:36.866" endtime="20210602 14:11:36.882"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.883" endtime="20210602 14:11:36.883"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.882" endtime="20210602 14:11:36.883"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:35.140" endtime="20210602 14:11:36.883"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FIELD_HTTP_URL', 'objectType': 'url', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['$cloud.tencent.com/developer/ask/202829']}, {'keywordArray': ['*tencen..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:36.884" level="INFO">${protocolField} = TSG_FIELD_HTTP_URL</msg> +<status status="PASS" starttime="20210602 14:11:36.884" endtime="20210602 14:11:36.885"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.885" endtime="20210602 14:11:36.886"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:36.886" level="INFO">${protocolField} = TSG_FIELD_HTTP_URL</msg> +<status status="PASS" starttime="20210602 14:11:36.886" endtime="20210602 14:11:36.886"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.887" endtime="20210602 14:11:36.887"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:36.888" level="INFO">${protocolField} = TSG_FIELD_HTTP_URL</msg> +<status status="PASS" starttime="20210602 14:11:36.888" endtime="20210602 14:11:36.888"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:36.889" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['$cloud.tencent.com/developer/ask/202829']}, {'keywordArray': ['*tencent.com/developer/ask/202829']}, {'keywordArray': ['tencent.com']}, {'keywordArray': ['cloud.te...</msg> +<status status="PASS" starttime="20210602 14:11:36.889" endtime="20210602 14:11:36.889"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.889" endtime="20210602 14:11:36.890"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:36.890" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:36.890" endtime="20210602 14:11:36.891"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:36.891" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:36.891" endtime="20210602 14:11:36.891"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.892" endtime="20210602 14:11:36.892"></status> +</kw> +<msg timestamp="20210602 14:11:36.893" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:36.893" level="INFO">${objectType} = url</msg> +<status status="PASS" starttime="20210602 14:11:36.892" endtime="20210602 14:11:36.893"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.894" endtime="20210602 14:11:36.894"></status> +</kw> +<msg timestamp="20210602 14:11:36.894" level="INFO">${objectJson} = [{"objectId": null, "objectType":"url", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:36.893" endtime="20210602 14:11:36.895"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.895" endtime="20210602 14:11:36.896"></status> +</kw> +<msg timestamp="20210602 14:11:36.896" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:36.896" level="INFO">${objectSubType} = </msg> +<status status="PASS" starttime="20210602 14:11:36.895" endtime="20210602 14:11:36.896"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.897" endtime="20210602 14:11:36.898"></status> +</kw> +<msg timestamp="20210602 14:11:36.898" level="INFO">${objectJson} = [{"objectId": null, "objectType":"url", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:36.896" endtime="20210602 14:11:36.898"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:36.899" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:36.899" endtime="20210602 14:11:36.900"></status> +</kw> +<msg timestamp="20210602 14:11:36.900" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:36.900" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:36.899" endtime="20210602 14:11:36.900"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.901" endtime="20210602 14:11:36.901"></status> +</kw> +<msg timestamp="20210602 14:11:36.901" level="INFO">${objectJson} = [{"objectId": null, "objectType":"url", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:36.900" endtime="20210602 14:11:36.902"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.902" endtime="20210602 14:11:36.903"></status> +</kw> +<msg timestamp="20210602 14:11:36.903" level="INFO">${objectJson} = [{"objectId": null, "objectType":"url", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:36.902" endtime="20210602 14:11:36.903"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:36.904" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:36.903" endtime="20210602 14:11:36.904"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:36.905" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:36.904" endtime="20210602 14:11:36.905"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['$cloud.tencent.com/developer/ask/202829']}, {'keywordArray': ['*tencent.com/developer/ask/202829']}, {'keywordArray': ['tencent.com']}, {'keywordArray': ['cloud.ten..." type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.906" endtime="20210602 14:11:36.906"></status> +</kw> +<msg timestamp="20210602 14:11:36.907" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:36.907" level="INFO">${addItemList} = [{'keywordArray': ['$cloud.tencent.com/developer/ask/202829']}, {'keywordArray': ['*tencent.com/developer/ask/202829']}, {'keywordArray': ['tencent.com']}, {'keywordArray': ['cloud.tencent.com/develop...</msg> +<status status="PASS" starttime="20210602 14:11:36.906" endtime="20210602 14:11:36.907"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:36.908" level="INFO">${addItemList} = [{"keywordArray": ["$cloud.tencent.com/developer/ask/202829"]}, {"keywordArray": ["*tencent.com/developer/ask/202829"]}, {"keywordArray": ["tencent.com"]}, {"keywordArray": ["cloud.tencent.com/develop...</msg> +<status status="PASS" starttime="20210602 14:11:36.907" endtime="20210602 14:11:36.908"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.908" endtime="20210602 14:11:36.909"></status> +</kw> +<msg timestamp="20210602 14:11:36.909" level="INFO">${addItemList} = [{"keywordArray": ["$cloud.tencent.com/developer/ask/202829"]}, {"keywordArray": ["*tencent.com/developer/ask/202829"]}, {"keywordArray": ["tencent.com"]}, {"keywordArray": ["cloud.tencent.com/develop...</msg> +<status status="PASS" starttime="20210602 14:11:36.908" endtime="20210602 14:11:36.909"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.910" endtime="20210602 14:11:36.910"></status> +</kw> +<msg timestamp="20210602 14:11:36.911" level="INFO">${addItemList} = [{"keywordArray": ["$cloud.tencent.com/developer/ask/202829"]}, {"keywordArray": ["*tencent.com/developer/ask/202829"]}, {"keywordArray": ["tencent.com"]}, {"keywordArray": ["cloud.tencent.com/develop...</msg> +<status status="PASS" starttime="20210602 14:11:36.909" endtime="20210602 14:11:36.911"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.912" endtime="20210602 14:11:36.912"></status> +</kw> +<msg timestamp="20210602 14:11:36.912" level="INFO">${objectJson} = [{"objectId": null, "objectType":"url", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:36.911" endtime="20210602 14:11:36.912"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:36.914" level="INFO">${objectJson} = [{"objectId": null, "objectType":"url", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:36.913" endtime="20210602 14:11:36.914"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:36.914" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'url', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'...</msg> +<status status="PASS" starttime="20210602 14:11:36.914" endtime="20210602 14:11:36.915"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.931" endtime="20210602 14:11:36.931"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.932" endtime="20210602 14:11:36.932"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'url', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList':..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.933" endtime="20210602 14:11:36.933"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.932" endtime="20210602 14:11:36.933"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.932" endtime="20210602 14:11:36.933"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.930" endtime="20210602 14:11:36.934"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.905" endtime="20210602 14:11:36.934"></status> +</kw> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['$www.bejson.com/validators/yaml_editor/']}, {'keywordArray': ['*bejson.com/validators/yaml_editor']}, {'keywordArray': ['bejson.com/validators/*']}, {'keywordArray'..." type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.935" endtime="20210602 14:11:36.935"></status> +</kw> +<msg timestamp="20210602 14:11:36.935" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:36.935" level="INFO">${addItemList} = [{'keywordArray': ['$www.bejson.com/validators/yaml_editor/']}, {'keywordArray': ['*bejson.com/validators/yaml_editor']}, {'keywordArray': ['bejson.com/validators/*']}, {'keywordArray': ['bejson.com']...</msg> +<status status="PASS" starttime="20210602 14:11:36.934" endtime="20210602 14:11:36.935"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:36.936" level="INFO">${addItemList} = [{"keywordArray": ["$www.bejson.com/validators/yaml_editor/"]}, {"keywordArray": ["*bejson.com/validators/yaml_editor"]}, {"keywordArray": ["bejson.com/validators/*"]}, {"keywordArray": ["bejson.com"]...</msg> +<status status="PASS" starttime="20210602 14:11:36.936" endtime="20210602 14:11:36.936"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.937" endtime="20210602 14:11:36.937"></status> +</kw> +<msg timestamp="20210602 14:11:36.938" level="INFO">${addItemList} = [{"keywordArray": ["$www.bejson.com/validators/yaml_editor/"]}, {"keywordArray": ["*bejson.com/validators/yaml_editor"]}, {"keywordArray": ["bejson.com/validators/*"]}, {"keywordArray": ["bejson.com"]...</msg> +<status status="PASS" starttime="20210602 14:11:36.937" endtime="20210602 14:11:36.938"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.939" endtime="20210602 14:11:36.939"></status> +</kw> +<msg timestamp="20210602 14:11:36.939" level="INFO">${addItemList} = [{"keywordArray": ["$www.bejson.com/validators/yaml_editor/"]}, {"keywordArray": ["*bejson.com/validators/yaml_editor"]}, {"keywordArray": ["bejson.com/validators/*"]}, {"keywordArray": ["bejson.com"]...</msg> +<status status="PASS" starttime="20210602 14:11:36.938" endtime="20210602 14:11:36.939"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.940" endtime="20210602 14:11:36.940"></status> +</kw> +<msg timestamp="20210602 14:11:36.941" level="INFO">${objectJson} = [{"objectId": null, "objectType":"url", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:36.939" endtime="20210602 14:11:36.941"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:36.941" level="INFO">${objectJson} = [{"objectId": null, "objectType":"url", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:36.941" endtime="20210602 14:11:36.942"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:36.942" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'url', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'...</msg> +<status status="PASS" starttime="20210602 14:11:36.942" endtime="20210602 14:11:36.942"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.957" endtime="20210602 14:11:36.957"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.958" endtime="20210602 14:11:36.958"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'url', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList':..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.959" endtime="20210602 14:11:36.959"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.958" endtime="20210602 14:11:36.959"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.958" endtime="20210602 14:11:36.960"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.956" endtime="20210602 14:11:36.960"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.934" endtime="20210602 14:11:36.960"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.905" endtime="20210602 14:11:36.960"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:36.962" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'url', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'o...</msg> +<status status="PASS" starttime="20210602 14:11:36.961" endtime="20210602 14:11:36.962"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.963" endtime="20210602 14:11:36.963"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:36.964" endtime="20210602 14:11:36.964"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:36.965" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:36.964" endtime="20210602 14:11:36.965"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:36.966" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "url", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u63...</msg> +<status status="PASS" starttime="20210602 14:11:36.965" endtime="20210602 14:11:36.966"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:36.967" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:36.967" endtime="20210602 14:11:36.967"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:36.968" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:36.968" endtime="20210602 14:11:36.969"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:36.970" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "url", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["$cloud.tencent.com/developer/ask/202829"]}, {"keywordArray": ["*tencent.com/developer/ask/202829"]}, {"keywordArray": ["tencent.com"]}, {"keywordArray": ["cloud.tencent.com/developer/*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}, {"objectId": null, "objectType": "url", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["$cloud.tencent.com/developer/ask/202829"]}, {"keywordArray": ["*tencent.com/developer/ask/202829"]}, {"keywordArray": ["tencent.com"]}, {"keywordArray": ["cloud.tencent.com/developer/*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:37.224" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:36.970" endtime="20210602 14:11:37.225"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:37.228" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:37.226" endtime="20210602 14:11:37.228"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:37.230" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:37.229" endtime="20210602 14:11:37.230"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:37.232" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "cloud.tencent.com/developer/ask/202829" ], + "itemId" : 10074707, + "objectId" : 107892 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "tencent.com/developer/ask/202829" ], + "itemId" : 10074708, + "objectId" : 107892 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "tencent.com" ], + "itemId" : 10074709, + "objectId" : 107892 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "cloud.tencent.com/developer/" ], + "itemId" : 10074710, + "objectId" : 107892 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107892, + "objectName" : "auttest单ip指定端口", + "objectType" : "url", + "opTime" : "2021-06-02 14:11:36", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + }, { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "cloud.tencent.com/developer/ask/202829" ], + "itemId" : 10074711, + "objectId" : 107893 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "tencent.com/developer/ask/202829" ], + "itemId" : 10074712, + "objectId" : 107893 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "tencent.com" ], + "itemId" : 10074713, + "objectId" : 107893 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "cloud.tencent.com/developer/" ], + "itemId" : 10074714, + "objectId" : 107893 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107893, + "objectName" : "auttest单ip指定端口", + "objectType" : "url", + "opTime" : "2021-06-02 14:11:36", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:37.232" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:37.233" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:37.231" endtime="20210602 14:11:37.233"></status> +</kw> +<msg timestamp="20210602 14:11:37.234" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:36.966" endtime="20210602 14:11:37.234"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:37.238" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:37.238" endtime="20210602 14:11:37.239"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:37.239" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:37.239" endtime="20210602 14:11:37.239"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:37.241" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:37.239" endtime="20210602 14:11:37.241"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.242" endtime="20210602 14:11:37.242"></status> +</kw> +<msg timestamp="20210602 14:11:37.243" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.243" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['c...</msg> +<status status="PASS" starttime="20210602 14:11:37.241" endtime="20210602 14:11:37.243"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.244" endtime="20210602 14:11:37.244"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['cloud.tencent.com..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.245" endtime="20210602 14:11:37.246"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.245" endtime="20210602 14:11:37.246"></status> +</kw> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['cloud.tencent.com..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.246" endtime="20210602 14:11:37.246"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.246" endtime="20210602 14:11:37.246"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.244" endtime="20210602 14:11:37.246"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.236" endtime="20210602 14:11:37.247"></status> +</kw> +<msg timestamp="20210602 14:11:37.247" level="INFO">${objectIds} = [107892, 107893]</msg> +<status status="PASS" starttime="20210602 14:11:37.235" endtime="20210602 14:11:37.247"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:37.248" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:37.248" endtime="20210602 14:11:37.248"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:37.249" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:37.248" endtime="20210602 14:11:37.249"></status> +</kw> +<msg timestamp="20210602 14:11:37.249" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:37.250" level="INFO">${objectIds} = [107892, 107893]</msg> +<status status="PASS" starttime="20210602 14:11:36.962" endtime="20210602 14:11:37.250"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:37.250" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:37.250" endtime="20210602 14:11:37.251"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.251" endtime="20210602 14:11:37.252"></status> +</kw> +<msg timestamp="20210602 14:11:37.252" level="INFO">${protocolField} = TSG_FIELD_HTTP_URL</msg> +<status status="PASS" starttime="20210602 14:11:37.251" endtime="20210602 14:11:37.252"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:37.253" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:37.252" endtime="20210602 14:11:37.253"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107892" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:37.254" level="INFO">${objectList} = {'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}</msg> +<status status="PASS" starttime="20210602 14:11:37.254" endtime="20210602 14:11:37.254"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.255" endtime="20210602 14:11:37.255"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.253" endtime="20210602 14:11:37.255"></status> +</kw> +<kw name="${obj} = 107893" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:37.256" level="INFO">${objectList} = {'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}</msg> +<status status="PASS" starttime="20210602 14:11:37.256" endtime="20210602 14:11:37.256"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.256" endtime="20210602 14:11:37.257"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.255" endtime="20210602 14:11:37.257"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.253" endtime="20210602 14:11:37.257"></status> +</kw> +<msg timestamp="20210602 14:11:37.258" level="INFO">${objectIds} = [107892, 107893]</msg> +<msg timestamp="20210602 14:11:37.258" level="INFO">${objectList} = {'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}</msg> +<status status="PASS" starttime="20210602 14:11:36.887" endtime="20210602 14:11:37.258"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="OrangeFilter" library="object"> +<doc>filer对象处理,把一个filter的list处理为一个filter</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${list}</var> +</assign> +<msg timestamp="20210602 14:11:37.261" level="INFO">${list} = [{'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}]</msg> +<status status="PASS" starttime="20210602 14:11:37.260" endtime="20210602 14:11:37.261"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>filter=${list}</arg> +</arguments> +<assign> +<var>${filter}</var> +</assign> +<msg timestamp="20210602 14:11:37.261" level="INFO">${filter} = {'filter': [{'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}]}</msg> +<status status="PASS" starttime="20210602 14:11:37.261" endtime="20210602 14:11:37.262"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.260" endtime="20210602 14:11:37.262"></status> +</kw> +<msg timestamp="20210602 14:11:37.262" level="INFO">${objectList} = {'filter': [{'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}]}</msg> +<status status="PASS" starttime="20210602 14:11:37.258" endtime="20210602 14:11:37.262"></status> +</kw> +<msg timestamp="20210602 14:11:37.263" level="INFO">${objectIds} = [107892, 107893]</msg> +<msg timestamp="20210602 14:11:37.263" level="INFO">${objectList} = {'filter': [{'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}]}</msg> +<status status="PASS" starttime="20210602 14:11:36.885" endtime="20210602 14:11:37.263"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:37.264" level="INFO">Length is 10</msg> +<msg timestamp="20210602 14:11:37.264" level="INFO">${len} = 10</msg> +<status status="PASS" starttime="20210602 14:11:37.263" endtime="20210602 14:11:37.264"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.275" endtime="20210602 14:11:37.276"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.276" endtime="20210602 14:11:37.276"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107892" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.277" endtime="20210602 14:11:37.278"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.277" endtime="20210602 14:11:37.278"></status> +</kw> +<kw name="${objdict} = 107893" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.278" endtime="20210602 14:11:37.279"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.278" endtime="20210602 14:11:37.279"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.277" endtime="20210602 14:11:37.279"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.274" endtime="20210602 14:11:37.280"></status> +</kw> +<msg timestamp="20210602 14:11:37.280" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887, 107888, 107889, 107890, 107891, 107892, 107893]</msg> +<status status="PASS" starttime="20210602 14:11:37.264" endtime="20210602 14:11:37.280"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.281" endtime="20210602 14:11:37.282"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.280" endtime="20210602 14:11:37.282"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:36.884" endtime="20210602 14:11:37.282"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FIELD_HTTP_HOST', 'objectType': 'fqdn', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['$blog.csdn.net']}, {'keywordArray': ['*.csdn.net']}]}, {'addItemList..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:37.283" level="INFO">${protocolField} = TSG_FIELD_HTTP_HOST</msg> +<status status="PASS" starttime="20210602 14:11:37.283" endtime="20210602 14:11:37.283"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.284" endtime="20210602 14:11:37.284"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:37.285" level="INFO">${protocolField} = TSG_FIELD_HTTP_HOST</msg> +<status status="PASS" starttime="20210602 14:11:37.285" endtime="20210602 14:11:37.285"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.286" endtime="20210602 14:11:37.286"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:37.287" level="INFO">${protocolField} = TSG_FIELD_HTTP_HOST</msg> +<status status="PASS" starttime="20210602 14:11:37.287" endtime="20210602 14:11:37.287"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:37.288" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['$blog.csdn.net']}, {'keywordArray': ['*.csdn.net']}]}, {'addItemList': [{'keywordArray': ['$www.json.cn/']}, {'keywordArray': ['*json.cn/']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.288" endtime="20210602 14:11:37.288"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.288" endtime="20210602 14:11:37.289"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.289" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:37.289" endtime="20210602 14:11:37.290"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.291" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:37.290" endtime="20210602 14:11:37.291"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.292" endtime="20210602 14:11:37.292"></status> +</kw> +<msg timestamp="20210602 14:11:37.292" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.293" level="INFO">${objectType} = fqdn</msg> +<status status="PASS" starttime="20210602 14:11:37.291" endtime="20210602 14:11:37.293"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.293" endtime="20210602 14:11:37.294"></status> +</kw> +<msg timestamp="20210602 14:11:37.294" level="INFO">${objectJson} = [{"objectId": null, "objectType":"fqdn", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:37.293" endtime="20210602 14:11:37.294"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.295" endtime="20210602 14:11:37.295"></status> +</kw> +<msg timestamp="20210602 14:11:37.296" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.296" level="INFO">${objectSubType} = </msg> +<status status="PASS" starttime="20210602 14:11:37.295" endtime="20210602 14:11:37.296"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.297" endtime="20210602 14:11:37.297"></status> +</kw> +<msg timestamp="20210602 14:11:37.297" level="INFO">${objectJson} = [{"objectId": null, "objectType":"fqdn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:37.296" endtime="20210602 14:11:37.297"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:37.299" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:37.298" endtime="20210602 14:11:37.299"></status> +</kw> +<msg timestamp="20210602 14:11:37.299" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:37.299" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:37.298" endtime="20210602 14:11:37.299"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.300" endtime="20210602 14:11:37.300"></status> +</kw> +<msg timestamp="20210602 14:11:37.301" level="INFO">${objectJson} = [{"objectId": null, "objectType":"fqdn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:37.299" endtime="20210602 14:11:37.301"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.301" endtime="20210602 14:11:37.302"></status> +</kw> +<msg timestamp="20210602 14:11:37.302" level="INFO">${objectJson} = [{"objectId": null, "objectType":"fqdn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:37.301" endtime="20210602 14:11:37.302"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:37.303" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:37.302" endtime="20210602 14:11:37.303"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:37.304" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:37.303" endtime="20210602 14:11:37.304"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['$blog.csdn.net']}, {'keywordArray': ['*.csdn.net']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.306" endtime="20210602 14:11:37.306"></status> +</kw> +<msg timestamp="20210602 14:11:37.307" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.307" level="INFO">${addItemList} = [{'keywordArray': ['$blog.csdn.net']}, {'keywordArray': ['*.csdn.net']}]</msg> +<status status="PASS" starttime="20210602 14:11:37.305" endtime="20210602 14:11:37.307"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:37.308" level="INFO">${addItemList} = [{"keywordArray": ["$blog.csdn.net"]}, {"keywordArray": ["*.csdn.net"]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.308" endtime="20210602 14:11:37.308"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.309" endtime="20210602 14:11:37.310"></status> +</kw> +<msg timestamp="20210602 14:11:37.310" level="INFO">${addItemList} = [{"keywordArray": ["$blog.csdn.net"]}, {"keywordArray": ["*.csdn.net"]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.309" endtime="20210602 14:11:37.310"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.311" endtime="20210602 14:11:37.311"></status> +</kw> +<msg timestamp="20210602 14:11:37.312" level="INFO">${addItemList} = [{"keywordArray": ["$blog.csdn.net"]}, {"keywordArray": ["*.csdn.net"]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.310" endtime="20210602 14:11:37.312"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.313" endtime="20210602 14:11:37.313"></status> +</kw> +<msg timestamp="20210602 14:11:37.313" level="INFO">${objectJson} = [{"objectId": null, "objectType":"fqdn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:37.312" endtime="20210602 14:11:37.313"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.314" level="INFO">${objectJson} = [{"objectId": null, "objectType":"fqdn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:37.314" endtime="20210602 14:11:37.314"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:37.315" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'fqdn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList...</msg> +<status status="PASS" starttime="20210602 14:11:37.315" endtime="20210602 14:11:37.315"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.325" endtime="20210602 14:11:37.326"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.326" endtime="20210602 14:11:37.327"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'fqdn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.328" endtime="20210602 14:11:37.328"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.327" endtime="20210602 14:11:37.328"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.327" endtime="20210602 14:11:37.329"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.325" endtime="20210602 14:11:37.329"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.305" endtime="20210602 14:11:37.329"></status> +</kw> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['$www.json.cn/']}, {'keywordArray': ['*json.cn/']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.330" endtime="20210602 14:11:37.331"></status> +</kw> +<msg timestamp="20210602 14:11:37.331" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.331" level="INFO">${addItemList} = [{'keywordArray': ['$www.json.cn/']}, {'keywordArray': ['*json.cn/']}]</msg> +<status status="PASS" starttime="20210602 14:11:37.330" endtime="20210602 14:11:37.331"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:37.332" level="INFO">${addItemList} = [{"keywordArray": ["$www.json.cn/"]}, {"keywordArray": ["*json.cn/"]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.332" endtime="20210602 14:11:37.332"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.333" endtime="20210602 14:11:37.334"></status> +</kw> +<msg timestamp="20210602 14:11:37.334" level="INFO">${addItemList} = [{"keywordArray": ["$www.json.cn/"]}, {"keywordArray": ["*json.cn/"]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.333" endtime="20210602 14:11:37.334"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.335" endtime="20210602 14:11:37.335"></status> +</kw> +<msg timestamp="20210602 14:11:37.335" level="INFO">${addItemList} = [{"keywordArray": ["$www.json.cn/"]}, {"keywordArray": ["*json.cn/"]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.334" endtime="20210602 14:11:37.335"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.336" endtime="20210602 14:11:37.337"></status> +</kw> +<msg timestamp="20210602 14:11:37.337" level="INFO">${objectJson} = [{"objectId": null, "objectType":"fqdn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:37.336" endtime="20210602 14:11:37.337"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.338" level="INFO">${objectJson} = [{"objectId": null, "objectType":"fqdn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:37.337" endtime="20210602 14:11:37.338"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:37.339" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'fqdn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList...</msg> +<status status="PASS" starttime="20210602 14:11:37.338" endtime="20210602 14:11:37.339"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.350" endtime="20210602 14:11:37.350"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.351" endtime="20210602 14:11:37.351"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'fqdn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.352" endtime="20210602 14:11:37.353"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.352" endtime="20210602 14:11:37.353"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.352" endtime="20210602 14:11:37.353"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.350" endtime="20210602 14:11:37.353"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.329" endtime="20210602 14:11:37.353"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.304" endtime="20210602 14:11:37.353"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:37.354" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'fqdn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', '...</msg> +<status status="PASS" starttime="20210602 14:11:37.354" endtime="20210602 14:11:37.355"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.355" endtime="20210602 14:11:37.356"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.356" endtime="20210602 14:11:37.356"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:37.357" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:37.357" endtime="20210602 14:11:37.357"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.358" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "fqdn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6...</msg> +<status status="PASS" starttime="20210602 14:11:37.357" endtime="20210602 14:11:37.358"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:37.359" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:37.359" endtime="20210602 14:11:37.359"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:37.360" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:37.359" endtime="20210602 14:11:37.360"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:37.361" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "fqdn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["$blog.csdn.net"]}, {"keywordArray": ["*.csdn.net"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}, {"objectId": null, "objectType": "fqdn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["$blog.csdn.net"]}, {"keywordArray": ["*.csdn.net"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:37.460" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:37.360" endtime="20210602 14:11:37.460"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:37.462" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:37.461" endtime="20210602 14:11:37.463"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:37.464" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:37.463" endtime="20210602 14:11:37.464"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:37.465" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "blog.csdn.net" ], + "itemId" : 10074715, + "objectId" : 107894 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ ".csdn.net" ], + "itemId" : 10074716, + "objectId" : 107894 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107894, + "objectName" : "auttest单ip指定端口", + "objectType" : "fqdn", + "opTime" : "2021-06-02 14:11:36", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + }, { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "blog.csdn.net" ], + "itemId" : 10074717, + "objectId" : 107895 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:36", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ ".csdn.net" ], + "itemId" : 10074718, + "objectId" : 107895 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107895, + "objectName" : "auttest单ip指定端口", + "objectType" : "fqdn", + "opTime" : "2021-06-02 14:11:36", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:37.465" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:37.466" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:37.465" endtime="20210602 14:11:37.466"></status> +</kw> +<msg timestamp="20210602 14:11:37.466" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:37.358" endtime="20210602 14:11:37.466"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:37.468" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:37.467" endtime="20210602 14:11:37.468"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:37.468" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:37.468" endtime="20210602 14:11:37.469"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:37.469" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:37.469" endtime="20210602 14:11:37.469"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.470" endtime="20210602 14:11:37.470"></status> +</kw> +<msg timestamp="20210602 14:11:37.471" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.471" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['b...</msg> +<status status="PASS" starttime="20210602 14:11:37.470" endtime="20210602 14:11:37.471"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.471" endtime="20210602 14:11:37.471"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['blog.csdn.net'], ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.472" endtime="20210602 14:11:37.473"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.472" endtime="20210602 14:11:37.473"></status> +</kw> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:36', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['blog.csdn.net'], ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.473" endtime="20210602 14:11:37.474"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.473" endtime="20210602 14:11:37.474"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.472" endtime="20210602 14:11:37.474"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.467" endtime="20210602 14:11:37.474"></status> +</kw> +<msg timestamp="20210602 14:11:37.475" level="INFO">${objectIds} = [107894, 107895]</msg> +<status status="PASS" starttime="20210602 14:11:37.466" endtime="20210602 14:11:37.475"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:37.475" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:37.475" endtime="20210602 14:11:37.476"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:37.476" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:37.476" endtime="20210602 14:11:37.476"></status> +</kw> +<msg timestamp="20210602 14:11:37.477" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:37.477" level="INFO">${objectIds} = [107894, 107895]</msg> +<status status="PASS" starttime="20210602 14:11:37.355" endtime="20210602 14:11:37.477"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:37.478" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:37.477" endtime="20210602 14:11:37.478"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.479" endtime="20210602 14:11:37.479"></status> +</kw> +<msg timestamp="20210602 14:11:37.479" level="INFO">${protocolField} = TSG_FIELD_HTTP_HOST</msg> +<status status="PASS" starttime="20210602 14:11:37.478" endtime="20210602 14:11:37.479"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:37.480" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:37.479" endtime="20210602 14:11:37.480"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107894" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:37.481" level="INFO">${objectList} = {'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}</msg> +<status status="PASS" starttime="20210602 14:11:37.481" endtime="20210602 14:11:37.481"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.482" endtime="20210602 14:11:37.482"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.480" endtime="20210602 14:11:37.482"></status> +</kw> +<kw name="${obj} = 107895" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:37.483" level="INFO">${objectList} = {'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}</msg> +<status status="PASS" starttime="20210602 14:11:37.483" endtime="20210602 14:11:37.483"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.483" endtime="20210602 14:11:37.484"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.482" endtime="20210602 14:11:37.484"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.480" endtime="20210602 14:11:37.484"></status> +</kw> +<msg timestamp="20210602 14:11:37.484" level="INFO">${objectIds} = [107894, 107895]</msg> +<msg timestamp="20210602 14:11:37.485" level="INFO">${objectList} = {'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}</msg> +<status status="PASS" starttime="20210602 14:11:37.285" endtime="20210602 14:11:37.485"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="OrangeFilter" library="object"> +<doc>filer对象处理,把一个filter的list处理为一个filter</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${list}</var> +</assign> +<msg timestamp="20210602 14:11:37.486" level="INFO">${list} = [{'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}]</msg> +<status status="PASS" starttime="20210602 14:11:37.486" endtime="20210602 14:11:37.487"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>filter=${list}</arg> +</arguments> +<assign> +<var>${filter}</var> +</assign> +<msg timestamp="20210602 14:11:37.487" level="INFO">${filter} = {'filter': [{'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}]}</msg> +<status status="PASS" starttime="20210602 14:11:37.487" endtime="20210602 14:11:37.488"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.486" endtime="20210602 14:11:37.488"></status> +</kw> +<msg timestamp="20210602 14:11:37.488" level="INFO">${objectList} = {'filter': [{'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}]}</msg> +<status status="PASS" starttime="20210602 14:11:37.485" endtime="20210602 14:11:37.488"></status> +</kw> +<msg timestamp="20210602 14:11:37.489" level="INFO">${objectIds} = [107894, 107895]</msg> +<msg timestamp="20210602 14:11:37.489" level="INFO">${objectList} = {'filter': [{'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}]}</msg> +<status status="PASS" starttime="20210602 14:11:37.284" endtime="20210602 14:11:37.489"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:37.489" level="INFO">Length is 12</msg> +<msg timestamp="20210602 14:11:37.490" level="INFO">${len} = 12</msg> +<status status="PASS" starttime="20210602 14:11:37.489" endtime="20210602 14:11:37.490"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.507" endtime="20210602 14:11:37.507"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.507" endtime="20210602 14:11:37.508"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107894" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.508" endtime="20210602 14:11:37.509"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.508" endtime="20210602 14:11:37.509"></status> +</kw> +<kw name="${objdict} = 107895" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.510" endtime="20210602 14:11:37.510"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.509" endtime="20210602 14:11:37.510"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.508" endtime="20210602 14:11:37.510"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.506" endtime="20210602 14:11:37.511"></status> +</kw> +<msg timestamp="20210602 14:11:37.511" level="INFO">${objectIdsList} = [107882, 107883, 107884, 107885, 107886, 107887, 107888, 107889, 107890, 107891, 107892, 107893, 107894, 107895]</msg> +<status status="PASS" starttime="20210602 14:11:37.490" endtime="20210602 14:11:37.511"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.512" endtime="20210602 14:11:37.512"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.511" endtime="20210602 14:11:37.513"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.282" endtime="20210602 14:11:37.513"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.536" endtime="20210602 14:11:37.513"></status> +</kw> +<msg timestamp="20210602 14:11:37.513" level="INFO">${objectIds} = [107882, 107883, 107884, 107885, 107886, 107887, 107888, 107889, 107890, 107891, 107892, 107893, 107894, 107895]</msg> +<msg timestamp="20210602 14:11:37.513" level="INFO">${sourceList} = [{'objectId': 107882, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}, {'objectId': 107884, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}, {'objectId': 107885, 'protocolField': 'TSG_FILED_GTP_IMSI'}, ...</msg> +<msg timestamp="20210602 14:11:37.514" level="INFO">${destinationList} = [{'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107890, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}, {'objectId': 107891, 'protocolField': 'TSG_SECURITY...</msg> +<msg timestamp="20210602 14:11:37.514" level="INFO">${filterList} = [{'filter': [{'objectId': 107892, 'protocolField': 'TSG_FIELD_HTTP_URL'}]}, {'filter': [{'objectId': 107894, 'protocolField': 'TSG_FIELD_HTTP_HOST'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.532" endtime="20210602 14:11:37.514"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${sourceList}</arg> +</arguments> +<assign> +<var>${sourceList}</var> +</assign> +<msg timestamp="20210602 14:11:37.515" level="INFO">${sourceList} = [{"objectId": 107882, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}, {"objectId": 107884, "protocolField": "TSG_SECURITY_SOURCE_LOCATION"}, {"objectId": 107885, "protocolField": "TSG_FILED_GTP_IMSI"}, ...</msg> +<status status="PASS" starttime="20210602 14:11:37.514" endtime="20210602 14:11:37.515"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${destinationList}</arg> +</arguments> +<assign> +<var>${destinationList}</var> +</assign> +<msg timestamp="20210602 14:11:37.515" level="INFO">${destinationList} = [{"objectId": 107889, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}, {"objectId": 107890, "protocolField": "TSG_SECURITY_DESTINATION_LOCATION"}, {"objectId": 107891, "protocolField": "TSG_SECURITY...</msg> +<status status="PASS" starttime="20210602 14:11:37.515" endtime="20210602 14:11:37.515"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${filterList}</arg> +</arguments> +<assign> +<var>${filterList}</var> +</assign> +<msg timestamp="20210602 14:11:37.516" level="INFO">${filterList} = [{"filter": [{"objectId": 107892, "protocolField": "TSG_FIELD_HTTP_URL"}]}, {"filter": [{"objectId": 107894, "protocolField": "TSG_FIELD_HTTP_HOST"}]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.516" endtime="20210602 14:11:37.516"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"source": null</arg> +<arg>"source":${sourceList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.517" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:37.516" endtime="20210602 14:11:37.517"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"destination": null</arg> +<arg>"destination":${destinationList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.518" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:37.517" endtime="20210602 14:11:37.518"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"filterList": null</arg> +<arg>"filterList":${filterList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.518" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:37.518" endtime="20210602 14:11:37.519"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>处理策略数据:</arg> +<arg>"opAction": "add"</arg> +<arg>"returnData": 1</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"action": "allow"</arg> +<arg>"userTags": ""</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doLog": 1</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"effectiveRange":</arg> +<arg>"userRegion":</arg> +<arg>"appIdObjects":</arg> +<arg>"appSelectorObjects":</arg> +<arg>"isValid": 1</arg> +<arg>"scheduleId":</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.519" endtime="20210602 14:11:37.519"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>opAction</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${opAction}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>opAction</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.520" endtime="20210602 14:11:37.520"></status> +</kw> +<msg timestamp="20210602 14:11:37.520" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.521" level="INFO">${opAction} = add</msg> +<status status="PASS" starttime="20210602 14:11:37.520" endtime="20210602 14:11:37.521"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${opAction}" != "${EMPTY}"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"opAction": "${opAction}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"opAction": "${opAction}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.522" endtime="20210602 14:11:37.522"></status> +</kw> +<msg timestamp="20210602 14:11:37.522" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:37.521" endtime="20210602 14:11:37.522"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${returnData}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>returnData</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.523" endtime="20210602 14:11:37.523"></status> +</kw> +<msg timestamp="20210602 14:11:37.524" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.524" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:37.523" endtime="20210602 14:11:37.525"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${returnData}" != "${EMPTY}"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"returnData": 1</arg> +<arg>"returnData": "${returnData}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"returnData": 1</arg> +<arg>"returnData": "${returnData}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.526" endtime="20210602 14:11:37.526"></status> +</kw> +<msg timestamp="20210602 14:11:37.526" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest",...</msg> +<status status="PASS" starttime="20210602 14:11:37.525" endtime="20210602 14:11:37.526"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyName</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyName}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyName</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.527" endtime="20210602 14:11:37.527"></status> +</kw> +<msg timestamp="20210602 14:11:37.528" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.528" level="INFO">${policyName} = autotestdeny</msg> +<status status="PASS" starttime="20210602 14:11:37.527" endtime="20210602 14:11:37.528"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyName}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${policyName}"</arg> +<arg>ELSE</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${testName}"</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${policyName}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.529" endtime="20210602 14:11:37.529"></status> +</kw> +<msg timestamp="20210602 14:11:37.529" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autote...</msg> +<status status="PASS" starttime="20210602 14:11:37.528" endtime="20210602 14:11:37.530"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.530" endtime="20210602 14:11:37.531"></status> +</kw> +<msg timestamp="20210602 14:11:37.531" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.531" level="INFO">${policyType} = tsg_security</msg> +<status status="PASS" starttime="20210602 14:11:37.530" endtime="20210602 14:11:37.531"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"policyType": "${policyType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"policyType": "${policyType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.532" endtime="20210602 14:11:37.533"></status> +</kw> +<msg timestamp="20210602 14:11:37.533" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autote...</msg> +<status status="PASS" starttime="20210602 14:11:37.532" endtime="20210602 14:11:37.533"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>action</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${action}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>action</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.534" endtime="20210602 14:11:37.534"></status> +</kw> +<msg timestamp="20210602 14:11:37.534" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.534" level="INFO">${action} = deny</msg> +<status status="PASS" starttime="20210602 14:11:37.533" endtime="20210602 14:11:37.534"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${action}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"action": "allow"</arg> +<arg>"action": "${action}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"action": "allow"</arg> +<arg>"action": "${action}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.535" endtime="20210602 14:11:37.536"></status> +</kw> +<msg timestamp="20210602 14:11:37.536" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.535" endtime="20210602 14:11:37.536"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>method</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${method}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>method</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.537" endtime="20210602 14:11:37.537"></status> +</kw> +<msg timestamp="20210602 14:11:37.537" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.537" level="INFO">${method} = block</msg> +<status status="PASS" starttime="20210602 14:11:37.536" endtime="20210602 14:11:37.537"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>userTags</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${userTags}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>userTags</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.538" endtime="20210602 14:11:37.538"></status> +</kw> +<msg timestamp="20210602 14:11:37.539" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.539" level="INFO">${userTags} = </msg> +<status status="PASS" starttime="20210602 14:11:37.538" endtime="20210602 14:11:37.539"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${userTags}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"userTags": null</arg> +<arg>"userTags": ${userTags}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userTags": null</arg> +<arg>"userTags": ${userTags}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.540" endtime="20210602 14:11:37.540"></status> +</kw> +<msg timestamp="20210602 14:11:37.541" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.540" endtime="20210602 14:11:37.541"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>doBlacklist</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${doBlacklist}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>doBlacklist</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.542" endtime="20210602 14:11:37.542"></status> +</kw> +<msg timestamp="20210602 14:11:37.542" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.542" level="INFO">${doBlacklist} = 0</msg> +<status status="PASS" starttime="20210602 14:11:37.541" endtime="20210602 14:11:37.542"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${doBlacklist}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doBlacklist": ${doBlacklist}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doBlacklist": ${doBlacklist}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.543" endtime="20210602 14:11:37.543"></status> +</kw> +<msg timestamp="20210602 14:11:37.544" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.543" endtime="20210602 14:11:37.544"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>doLog</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${doLog}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>doLog</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.544" endtime="20210602 14:11:37.545"></status> +</kw> +<msg timestamp="20210602 14:11:37.545" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.545" level="INFO">${doLog} = 1</msg> +<status status="PASS" starttime="20210602 14:11:37.544" endtime="20210602 14:11:37.545"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${doLog}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"doLog": 1</arg> +<arg>"doLog": ${doLog}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"doLog": 1</arg> +<arg>"doLog": ${doLog}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.546" endtime="20210602 14:11:37.546"></status> +</kw> +<msg timestamp="20210602 14:11:37.547" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.546" endtime="20210602 14:11:37.547"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyDesc</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyDesc}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyDesc</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.548" endtime="20210602 14:11:37.548"></status> +</kw> +<msg timestamp="20210602 14:11:37.548" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.548" level="INFO">${policyDesc} = autotest</msg> +<status status="PASS" starttime="20210602 14:11:37.547" endtime="20210602 14:11:37.548"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyDesc}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"policyDesc": "${policyDesc}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"policyDesc": "${policyDesc}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.549" endtime="20210602 14:11:37.550"></status> +</kw> +<msg timestamp="20210602 14:11:37.550" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.549" endtime="20210602 14:11:37.550"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>effectiveRange</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${effectiveRange}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>effectiveRange</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.551" endtime="20210602 14:11:37.551"></status> +</kw> +<msg timestamp="20210602 14:11:37.551" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.551" level="INFO">${effectiveRange} = None</msg> +<status status="PASS" starttime="20210602 14:11:37.550" endtime="20210602 14:11:37.551"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${effectiveRange}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": ${effectiveRange}</arg> +<arg>ELSE</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": {}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": {}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.552" endtime="20210602 14:11:37.553"></status> +</kw> +<msg timestamp="20210602 14:11:37.553" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.552" endtime="20210602 14:11:37.553"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>userRegion</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${userRegion}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>userRegion</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.554" endtime="20210602 14:11:37.554"></status> +</kw> +<msg timestamp="20210602 14:11:37.555" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.555" level="INFO">${userRegion} = None</msg> +<status status="PASS" starttime="20210602 14:11:37.553" endtime="20210602 14:11:37.555"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>code</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${code}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>code</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.556" endtime="20210602 14:11:37.556"></status> +</kw> +<msg timestamp="20210602 14:11:37.557" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.557" level="INFO">${code} = 403</msg> +<status status="PASS" starttime="20210602 14:11:37.555" endtime="20210602 14:11:37.557"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>message</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${message}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>message</arg> +</arguments> +<msg timestamp="20210602 14:11:37.559" level="FAIL">Dictionary does not contain key 'message'.</msg> +<status status="FAIL" starttime="20210602 14:11:37.558" endtime="20210602 14:11:37.559"></status> +</kw> +<msg timestamp="20210602 14:11:37.559" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:37.560" level="INFO">${message} = Dictionary does not contain key 'message'.</msg> +<status status="PASS" starttime="20210602 14:11:37.557" endtime="20210602 14:11:37.560"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>html_profile</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${html_profile}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>html_profile</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.561" endtime="20210602 14:11:37.561"></status> +</kw> +<msg timestamp="20210602 14:11:37.561" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.561" level="INFO">${html_profile} = 2551</msg> +<status status="PASS" starttime="20210602 14:11:37.560" endtime="20210602 14:11:37.561"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${html_profile}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${html_profile}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${message}</arg> +</arguments> +<assign> +<var>${message}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${html_profile}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.562" endtime="20210602 14:11:37.563"></status> +</kw> +<msg timestamp="20210602 14:11:37.563" level="INFO">${message} = 2551</msg> +<status status="PASS" starttime="20210602 14:11:37.562" endtime="20210602 14:11:37.563"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${html_profile}" != "None"</arg> +<arg>Set Variable</arg> +<arg>html_profile</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>message</arg> +</arguments> +<assign> +<var>${messageKey}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>html_profile</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.564" endtime="20210602 14:11:37.564"></status> +</kw> +<msg timestamp="20210602 14:11:37.564" level="INFO">${messageKey} = html_profile</msg> +<status status="PASS" starttime="20210602 14:11:37.563" endtime="20210602 14:11:37.565"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>keyring</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${keyring}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>keyring</arg> +</arguments> +<msg timestamp="20210602 14:11:37.566" level="FAIL">Dictionary does not contain key 'keyring'.</msg> +<status status="FAIL" starttime="20210602 14:11:37.565" endtime="20210602 14:11:37.566"></status> +</kw> +<msg timestamp="20210602 14:11:37.566" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:37.566" level="INFO">${keyring} = Dictionary does not contain key 'keyring'.</msg> +<status status="PASS" starttime="20210602 14:11:37.565" endtime="20210602 14:11:37.566"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${keyring}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${keyring}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${keyring}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>""</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.567" endtime="20210602 14:11:37.568"></status> +</kw> +<msg timestamp="20210602 14:11:37.568" level="INFO">${keyring} = ""</msg> +<status status="PASS" starttime="20210602 14:11:37.567" endtime="20210602 14:11:37.568"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>decryption</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${decryption}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>decryption</arg> +</arguments> +<msg timestamp="20210602 14:11:37.569" level="FAIL">Dictionary does not contain key 'decryption'.</msg> +<status status="FAIL" starttime="20210602 14:11:37.569" endtime="20210602 14:11:37.569"></status> +</kw> +<msg timestamp="20210602 14:11:37.569" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:37.569" level="INFO">${decryption} = Dictionary does not contain key 'decryption'.</msg> +<status status="PASS" starttime="20210602 14:11:37.568" endtime="20210602 14:11:37.570"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${decryption}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${decryption}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${decryption}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>""</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.570" endtime="20210602 14:11:37.571"></status> +</kw> +<msg timestamp="20210602 14:11:37.571" level="INFO">${decryption} = ""</msg> +<status status="PASS" starttime="20210602 14:11:37.570" endtime="20210602 14:11:37.571"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>decrypt_mirror</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${decrypt_mirror}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>decrypt_mirror</arg> +</arguments> +<msg timestamp="20210602 14:11:37.572" level="FAIL">Dictionary does not contain key 'decrypt_mirror'.</msg> +<status status="FAIL" starttime="20210602 14:11:37.572" endtime="20210602 14:11:37.572"></status> +</kw> +<msg timestamp="20210602 14:11:37.573" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:37.573" level="INFO">${decrypt_mirror} = Dictionary does not contain key 'decrypt_mirror'.</msg> +<status status="PASS" starttime="20210602 14:11:37.571" endtime="20210602 14:11:37.573"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${decrypt_mirror}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${decrypt_mirror}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${decrypt_mirror}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>""</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.574" endtime="20210602 14:11:37.574"></status> +</kw> +<msg timestamp="20210602 14:11:37.575" level="INFO">${decrypt_mirror} = ""</msg> +<status status="PASS" starttime="20210602 14:11:37.573" endtime="20210602 14:11:37.575"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${decrypt_mirror}</arg> +</arguments> +<assign> +<var>${decrypt_mirror}</var> +</assign> +<msg timestamp="20210602 14:11:37.576" level="INFO">${decrypt_mirror} = "\"\""</msg> +<status status="PASS" starttime="20210602 14:11:37.575" endtime="20210602 14:11:37.576"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>appIdObjects</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${appIdObjects}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>appIdObjects</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.577" endtime="20210602 14:11:37.577"></status> +</kw> +<msg timestamp="20210602 14:11:37.577" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.577" level="INFO">${appIdObjects} = ['http']</msg> +<status status="PASS" starttime="20210602 14:11:37.576" endtime="20210602 14:11:37.578"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${appIdObjectIds}</var> +</assign> +<msg timestamp="20210602 14:11:37.578" level="INFO">${appIdObjectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:37.578" endtime="20210602 14:11:37.578"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>userRegionStr由:动作,协议,动作参数等决定,待完成;userregion在allow,monitor动作时多个协议为空;deny,多个协议时为子动作;Intercept,多个协议为空;http为,ssl为,判断appid对象的个数。</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.579" endtime="20210602 14:11:37.579"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<assign> +<var>${userRegionStr}</var> +</assign> +<msg timestamp="20210602 14:11:37.580" level="INFO">${userRegionStr} = </msg> +<status status="PASS" starttime="20210602 14:11:37.579" endtime="20210602 14:11:37.580"></status> +</kw> +<kw name="${key} IN [ @{appIdObjects} ]" type="for"> +<kw name="${key} = http" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>${key}</arg> +</arguments> +<assign> +<var>${appObjId}</var> +</assign> +<msg timestamp="20210602 14:11:37.582" level="INFO">${appObjId} = 75744</msg> +<status status="PASS" starttime="20210602 14:11:37.581" endtime="20210602 14:11:37.583"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${appIdObjectIds}</arg> +<arg>${appObjId}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.583" endtime="20210602 14:11:37.584"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${method}" == "block" or "${method}" == "alert"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"${key}","method": "${method}","code":${code},"${messageKey}":${message}}</arg> +<arg>ELSE IF</arg> +<arg>"${action}" == "deny"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"${key}","method": "${method}"}</arg> +<arg>ELSE IF</arg> +<arg>"${action}" == "intercept" and "${key}" == "ssl"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"SSL","keyring": ${keyring},"decryption":${decryption},"decrypt_mirror":${decrypt_mirror}}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"HTTP"}</arg> +</arguments> +<assign> +<var>${userRegionStr}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"protocol":"${key}","method": "${method}","code":${code},"${messageKey}":${message}}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.585" endtime="20210602 14:11:37.586"></status> +</kw> +<msg timestamp="20210602 14:11:37.586" level="INFO">${userRegionStr} = {"protocol":"http","method": "block","code":403,"html_profile":2551}</msg> +<status status="PASS" starttime="20210602 14:11:37.584" endtime="20210602 14:11:37.586"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.581" endtime="20210602 14:11:37.587"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:37.580" endtime="20210602 14:11:37.587"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${appIdObjects}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"appIdObjects": [null]</arg> +<arg>"appIdObjects": ${appIdObjectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"appIdObjects": [null]</arg> +<arg>"appIdObjects": ${appIdObjectIds}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.588" endtime="20210602 14:11:37.588"></status> +</kw> +<msg timestamp="20210602 14:11:37.588" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.587" endtime="20210602 14:11:37.589"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userRegion": null</arg> +<arg>"userRegion": ${userRegionStr}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.589" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.589" endtime="20210602 14:11:37.589"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userRegion": null</arg> +<arg>"userRegion": {}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.590" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.590" endtime="20210602 14:11:37.590"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>appSelectorObjects</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>appSelectorObjects</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.591" endtime="20210602 14:11:37.591"></status> +</kw> +<msg timestamp="20210602 14:11:37.592" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.592" level="INFO">${appSelectorObjects} = None</msg> +<status status="PASS" starttime="20210602 14:11:37.591" endtime="20210602 14:11:37.592"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${appSelectorObjects}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${appSelectorObjects}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.593" endtime="20210602 14:11:37.593"></status> +</kw> +<msg timestamp="20210602 14:11:37.593" level="INFO">${appSelectorObjects} = None</msg> +<status status="PASS" starttime="20210602 14:11:37.592" endtime="20210602 14:11:37.593"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${appSelectorObjects}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"appSelectorObjects": "add"</arg> +<arg>"appSelectorObjects": ${appSelectorObjects}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.594" endtime="20210602 14:11:37.594"></status> +</kw> +<msg timestamp="20210602 14:11:37.595" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.594" endtime="20210602 14:11:37.595"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>isValid</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${isValid}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>isValid</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.595" endtime="20210602 14:11:37.596"></status> +</kw> +<msg timestamp="20210602 14:11:37.596" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.596" level="INFO">${isValid} = 1</msg> +<status status="PASS" starttime="20210602 14:11:37.595" endtime="20210602 14:11:37.596"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${isValid}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${isValid}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.597" endtime="20210602 14:11:37.597"></status> +</kw> +<msg timestamp="20210602 14:11:37.598" level="INFO">${appSelectorObjects} = 1</msg> +<status status="PASS" starttime="20210602 14:11:37.597" endtime="20210602 14:11:37.598"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${isValid}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"isValid": 1</arg> +<arg>"isValid": ${isValid}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"isValid": 1</arg> +<arg>"isValid": ${isValid}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.599" endtime="20210602 14:11:37.599"></status> +</kw> +<msg timestamp="20210602 14:11:37.599" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.598" endtime="20210602 14:11:37.599"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>scheduleId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${scheduleId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>scheduleId</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.600" endtime="20210602 14:11:37.601"></status> +</kw> +<msg timestamp="20210602 14:11:37.601" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:37.601" level="INFO">${scheduleId} = None</msg> +<status status="PASS" starttime="20210602 14:11:37.600" endtime="20210602 14:11:37.601"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${scheduleId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${scheduleId}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${scheduleId}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.602" endtime="20210602 14:11:37.602"></status> +</kw> +<msg timestamp="20210602 14:11:37.603" level="INFO">${scheduleId} = None</msg> +<status status="PASS" starttime="20210602 14:11:37.602" endtime="20210602 14:11:37.603"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${scheduleId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"scheduleId": [null]</arg> +<arg>"scheduleId": ${scheduleId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.604" endtime="20210602 14:11:37.604"></status> +</kw> +<msg timestamp="20210602 14:11:37.604" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.603" endtime="20210602 14:11:37.604"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.605" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.605" endtime="20210602 14:11:37.605"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.606" level="INFO">${policyJson} = {'opAction': 'add', 'returnData': '1', 'policyList': {'policyName': 'autotestdeny', 'policyType': 'tsg_security', 'action': 'deny', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc': 'autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.605" endtime="20210602 14:11:37.606"></status> +</kw> +<kw name="CreatePolilcy" library="policy"> +<doc>场景策略:secuiryt、proxy策略 +数据分离,测试数据来自对应的yaml文件 +参数 ${policyList}</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数</arg> +<arg>${filepath}读取文件路径</arg> +<arg>${filename}读取文件名</arg> +<arg>${keywords}获取数据关键字</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.609" endtime="20210602 14:11:37.609"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建策略</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:37.610" endtime="20210602 14:11:37.610"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:37.610" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:37.610" endtime="20210602 14:11:37.610"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${policyList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:37.610" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotes...</msg> +<status status="PASS" starttime="20210602 14:11:37.610" endtime="20210602 14:11:37.610"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${policyUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version2}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:37.612" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:37.611" endtime="20210602 14:11:37.612"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:37.612" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v2, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:37.612" endtime="20210602 14:11:37.613"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:37.614" level="INFO">POST Request using : uri=/policy/compile, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestdeny", "policyType": "tsg_security", "action": "deny", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "effectiveRange": {}, "userRegion": {"protocol": "http", "method": "block", "code": 403, "html_profile": 2551}, "source": [{"objectId": 107882, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}, {"objectId": 107884, "protocolField": "TSG_SECURITY_SOURCE_LOCATION"}, {"objectId": 107885, "protocolField": "TSG_FILED_GTP_IMSI"}, {"objectId": 107886, "protocolField": "TSG_FILED_GTP_PHONE_NUMBER"}, {"objectId": 107887, "protocolField": "TSG_FILED_GTP_APN"}, {"objectId": 107888, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}], "destination": [{"objectId": 107889, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}, {"objectId": 107890, "protocolField": "TSG_SECURITY_DESTINATION_LOCATION"}, {"objectId": 107891, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}], "filterList": [{"filter": [{"objectId": 107892, "protocolField": "TSG_FIELD_HTTP_URL"}]}, {"filter": [{"objectId": 107894, "protocolField": "TSG_FIELD_HTTP_HOST"}]}], "appIdObjects": [75744], "appSelectorObjects": [], "isValid": 1, "scheduleId": []}} +json=None</msg> +<msg timestamp="20210602 14:11:38.294" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:37.613" endtime="20210602 14:11:38.294"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:38.295" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:38.294" endtime="20210602 14:11:38.295"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:38.295" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:38.295" endtime="20210602 14:11:38.296"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:38.296" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "policyList" : [ { + "action" : "deny", + "appIdObjects" : [ 75744 ], + "appSelectorObjects" : [ ], + "destination" : [ { + "objectId" : 107889, + "protocolField" : "TSG_SECURITY_DESTINATION_ADDR" + }, { + "objectId" : 107890, + "protocolField" : "TSG_SECURITY_DESTINATION_LOCATION" + }, { + "objectId" : 107891, + "protocolField" : "TSG_SECURITY_DESTINATION_ADDR" + } ], + "doLog" : 1, + "effectiveRange" : { }, + "evaluationLayer" : "any_layer", + "evaluationOrder" : 0.0, + "evaluationStage" : 0, + "filterList" : [ { + "filter" : [ { + "objectId" : 107892, + "protocolField" : "TSG_FIELD_HTTP_URL" + } ] + }, { + "filter" : [ { + "objectId" : 107894, + "protocolField" : "TSG_FIELD_HTTP_HOST" + } ] + } ], + "isInitialize" : 0, + "isValid" : 1, + "opTime" : "2021-06-02 14:11:37", + "opUser" : 425, + "policyDesc" : "autotest", + "policyId" : 52341, + "policyName" : "autotestdeny", + "policyType" : "tsg_security", + "scheduleId" : [ ], + "source" : [ { + "objectId" : 107882, + "protocolField" : "TSG_SECURITY_SOURCE_ADDR" + }, { + "objectId" : 107884, + "protocolField" : "TSG_SECURITY_SOURCE_LOCATION" + }, { + "objectId" : 107885, + "protocolField" : "TSG_FILED_GTP_IMSI" + }, { + "objectId" : 107886, + "protocolField" : "TSG_FILED_GTP_PHONE_NUMBER" + }, { + "objectId" : 107887, + "protocolField" : "TSG_FILED_GTP_APN" + }, { + "objectId" : 107888, + "protocolField" : "TSG_SECURITY_SOURCE_ADDR" + } ], + "userRegion" : { + "protocol" : "HTTP", + "method" : "block", + "code" : 403, + "html_profile" : 2551 + }, + "userTags" : "" + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:38.296" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:38.297" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'deny', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTIN...</msg> +<status status="PASS" starttime="20210602 14:11:38.296" endtime="20210602 14:11:38.297"></status> +</kw> +<msg timestamp="20210602 14:11:38.297" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'deny', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTIN...</msg> +<status status="PASS" starttime="20210602 14:11:37.611" endtime="20210602 14:11:38.297"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>GetPolicyIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${policyIds}</var> +</assign> +<kw name="GetPolicyIds" library="process_policy_body"> +<doc>获取结果中的策略类型及ID +策略接口返回json串 +返回结果格式:[{'policyType': 'tsg_security', 'policyIds': [108480]}, {'policyType': 'tsg_security', 'policyIds': [108481]}, {'policyType': 'tsg_security', 'policyIds': [108482]}, {'policyType': 'tsg_security', 'policyIds': [108483]}, {'policyType': 'tsg_security', 'policyIds': [108484]}]</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${policyIds}</var> +</assign> +<msg timestamp="20210602 14:11:38.299" level="INFO">${policyIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.298" endtime="20210602 14:11:38.299"></status> +</kw> +<kw name="${policy} IN [ @{value['data']['policyList']} ]" type="for"> +<kw name="${policy} = {'action': 'deny', 'appIdObjects': [75744], 'appSelectorObjects': [], 'destination': [{'objectId': 107889, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107890, 'protocolField': 'TSG..." type="foritem"> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<arguments> +<arg>${policy['policyId']}</arg> +</arguments> +<assign> +<var>${policyIdList}</var> +</assign> +<msg timestamp="20210602 14:11:38.300" level="INFO">${policyIdList} = [52341]</msg> +<status status="PASS" starttime="20210602 14:11:38.300" endtime="20210602 14:11:38.300"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>policyType=${policy['policyType']}</arg> +<arg>policyIds=${policyIdList}</arg> +</arguments> +<assign> +<var>${policyObj}</var> +</assign> +<msg timestamp="20210602 14:11:38.301" level="INFO">${policyObj} = {'policyType': 'tsg_security', 'policyIds': [52341]}</msg> +<status status="PASS" starttime="20210602 14:11:38.300" endtime="20210602 14:11:38.301"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${policyIds}</arg> +<arg>${policyObj}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.301" endtime="20210602 14:11:38.302"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.299" endtime="20210602 14:11:38.302"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.299" endtime="20210602 14:11:38.302"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${policyIds}</arg> +</arguments> +<msg timestamp="20210602 14:11:38.303" level="INFO">[{'policyType': 'tsg_security', 'policyIds': [52341]}]</msg> +<status status="PASS" starttime="20210602 14:11:38.302" endtime="20210602 14:11:38.303"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.298" endtime="20210602 14:11:38.303"></status> +</kw> +<msg timestamp="20210602 14:11:38.303" level="INFO">${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52341]}]</msg> +<status status="PASS" starttime="20210602 14:11:38.298" endtime="20210602 14:11:38.303"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:38.304" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:38.304" endtime="20210602 14:11:38.304"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:38.305" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:38.305" endtime="20210602 14:11:38.305"></status> +</kw> +<msg timestamp="20210602 14:11:38.306" level="INFO">${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52341]}]</msg> +<status status="PASS" starttime="20210602 14:11:37.608" endtime="20210602 14:11:38.306"></status> +</kw> +<msg timestamp="20210602 14:11:38.306" level="INFO">${objectId} = [107882, 107883, 107884, 107885, 107886, 107887, 107888, 107889, 107890, 107891, 107892, 107893, 107894, 107895]</msg> +<msg timestamp="20210602 14:11:38.306" level="INFO">${policyId} = [{'policyType': 'tsg_security', 'policyIds': [52341]}]</msg> +<status status="PASS" starttime="20210602 14:11:31.529" endtime="20210602 14:11:38.306"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${objectId}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.317" endtime="20210602 14:11:38.317"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.317" endtime="20210602 14:11:38.317"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107882" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.318" endtime="20210602 14:11:38.318"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.318" endtime="20210602 14:11:38.319"></status> +</kw> +<kw name="${objdict} = 107883" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.319" endtime="20210602 14:11:38.319"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.319" endtime="20210602 14:11:38.320"></status> +</kw> +<kw name="${objdict} = 107884" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.320" endtime="20210602 14:11:38.320"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.320" endtime="20210602 14:11:38.321"></status> +</kw> +<kw name="${objdict} = 107885" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.321" endtime="20210602 14:11:38.321"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.321" endtime="20210602 14:11:38.321"></status> +</kw> +<kw name="${objdict} = 107886" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.322" endtime="20210602 14:11:38.322"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.322" endtime="20210602 14:11:38.322"></status> +</kw> +<kw name="${objdict} = 107887" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.323" endtime="20210602 14:11:38.323"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.323" endtime="20210602 14:11:38.323"></status> +</kw> +<kw name="${objdict} = 107888" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.324" endtime="20210602 14:11:38.324"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.324" endtime="20210602 14:11:38.324"></status> +</kw> +<kw name="${objdict} = 107889" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.325" endtime="20210602 14:11:38.325"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.325" endtime="20210602 14:11:38.325"></status> +</kw> +<kw name="${objdict} = 107890" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.326" endtime="20210602 14:11:38.327"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.326" endtime="20210602 14:11:38.327"></status> +</kw> +<kw name="${objdict} = 107891" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.328" endtime="20210602 14:11:38.328"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.327" endtime="20210602 14:11:38.328"></status> +</kw> +<kw name="${objdict} = 107892" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.329" endtime="20210602 14:11:38.329"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.328" endtime="20210602 14:11:38.329"></status> +</kw> +<kw name="${objdict} = 107893" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.330" endtime="20210602 14:11:38.330"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.330" endtime="20210602 14:11:38.331"></status> +</kw> +<kw name="${objdict} = 107894" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.331" endtime="20210602 14:11:38.332"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.331" endtime="20210602 14:11:38.332"></status> +</kw> +<kw name="${objdict} = 107895" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.332" endtime="20210602 14:11:38.333"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.332" endtime="20210602 14:11:38.333"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.318" endtime="20210602 14:11:38.333"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.316" endtime="20210602 14:11:38.333"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${policyIds}</arg> +<arg>${policyId}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.344" endtime="20210602 14:11:38.344"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.345" endtime="20210602 14:11:38.345"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'policyType': 'tsg_security', 'policyIds': [52341]}" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.346" endtime="20210602 14:11:38.346"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.345" endtime="20210602 14:11:38.346"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.345" endtime="20210602 14:11:38.346"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.343" endtime="20210602 14:11:38.347"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:31.522" endtime="20210602 14:11:38.347"></status> +</kw> +<kw name="${key} = {'opAction': 'add', 'returnData': 1, 'policyName': 'autotestintercept', 'policyType': 'tsg_security', 'action': 'intercept', 'keyring': 1, 'decryption': 1, 'decrypt_mirror': {'enable': 1, 'mirror_prof..." type="foritem"> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>passssssssss</arg> +</arguments> +<msg timestamp="20210602 14:11:38.348" level="INFO">passssssssss</msg> +<status status="PASS" starttime="20210602 14:11:38.347" endtime="20210602 14:11:38.348"></status> +</kw> +<kw name="CreatePolicysAndObjects" library="policy"> +<doc>组织单个策略数据${modleFilePath}策略模板文件路径 ${policyData}从数据文件中获取的单个策略数据</doc> +<arguments> +<arg>${key}</arg> +<arg>${keyword}</arg> +</arguments> +<assign> +<var>${objectId}</var> +<var>${policyId}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>获取模板</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.353" endtime="20210602 14:11:38.353"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${policyModeJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.353" endtime="20210602 14:11:38.354"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyModeJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.354" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:38.354" endtime="20210602 14:11:38.354"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>用data数据替换模板内容生成策略新增数据</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.355" endtime="20210602 14:11:38.355"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>condation</arg> +</arguments> +<assign> +<var>${condation}</var> +</assign> +<msg timestamp="20210602 14:11:38.355" level="INFO">${condation} = [{'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'endpoint', 'objList': [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'po...</msg> +<status status="PASS" starttime="20210602 14:11:38.355" endtime="20210602 14:11:38.356"></status> +</kw> +<kw name="CreateCondation" library="policy"> +<doc>解析策略条件,根据key值判断其在source、destation、filter中</doc> +<arguments> +<arg>${condation}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${sourceList}</var> +<var>${destinationList}</var> +<var>${filterList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>循环读取对象list</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.356" endtime="20210602 14:11:38.357"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${sourceList}</var> +</assign> +<msg timestamp="20210602 14:11:38.357" level="INFO">${sourceList} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.357" endtime="20210602 14:11:38.358"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${destinationList}</var> +</assign> +<msg timestamp="20210602 14:11:38.358" level="INFO">${destinationList} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.358" endtime="20210602 14:11:38.358"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${filterList}</var> +</assign> +<msg timestamp="20210602 14:11:38.359" level="INFO">${filterList} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.359" endtime="20210602 14:11:38.359"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIdsList}</var> +</assign> +<msg timestamp="20210602 14:11:38.360" level="INFO">${objectIdsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.359" endtime="20210602 14:11:38.360"></status> +</kw> +<kw name="${key} IN [ @{objectListData} ]" type="for"> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'endpoint', 'objList': [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'por..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:38.361" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:38.360" endtime="20210602 14:11:38.361"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.362" endtime="20210602 14:11:38.362"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:38.363" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:38.362" endtime="20210602 14:11:38.363"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.363" endtime="20210602 14:11:38.364"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:38.364" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:38.364" endtime="20210602 14:11:38.364"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:38.365" level="INFO">${objList} = [{'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]}, {'addItemList': [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255...</msg> +<status status="PASS" starttime="20210602 14:11:38.365" endtime="20210602 14:11:38.365"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.365" endtime="20210602 14:11:38.366"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.366" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:38.366" endtime="20210602 14:11:38.366"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.367" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:38.367" endtime="20210602 14:11:38.367"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.367" endtime="20210602 14:11:38.367"></status> +</kw> +<msg timestamp="20210602 14:11:38.367" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:38.369" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:38.367" endtime="20210602 14:11:38.369"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.369" endtime="20210602 14:11:38.369"></status> +</kw> +<msg timestamp="20210602 14:11:38.369" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:38.369" endtime="20210602 14:11:38.369"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.370" endtime="20210602 14:11:38.370"></status> +</kw> +<msg timestamp="20210602 14:11:38.370" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:38.371" level="INFO">${objectSubType} = endpoint</msg> +<status status="PASS" starttime="20210602 14:11:38.369" endtime="20210602 14:11:38.371"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.372" endtime="20210602 14:11:38.373"></status> +</kw> +<msg timestamp="20210602 14:11:38.373" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:38.371" endtime="20210602 14:11:38.373"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:38.374" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:38.374" endtime="20210602 14:11:38.375"></status> +</kw> +<msg timestamp="20210602 14:11:38.375" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:38.375" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:38.373" endtime="20210602 14:11:38.375"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.376" endtime="20210602 14:11:38.376"></status> +</kw> +<msg timestamp="20210602 14:11:38.376" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:38.375" endtime="20210602 14:11:38.377"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.377" endtime="20210602 14:11:38.378"></status> +</kw> +<msg timestamp="20210602 14:11:38.378" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:38.377" endtime="20210602 14:11:38.378"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:38.379" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.378" endtime="20210602 14:11:38.379"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:38.379" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:38.379" endtime="20210602 14:11:38.380"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.381" endtime="20210602 14:11:38.381"></status> +</kw> +<msg timestamp="20210602 14:11:38.381" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:38.381" level="INFO">${addItemList} = [{'ip': '255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.255', 'port': '1-65535'}]</msg> +<status status="PASS" starttime="20210602 14:11:38.380" endtime="20210602 14:11:38.381"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:38.382" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:38.382" endtime="20210602 14:11:38.382"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.383" endtime="20210602 14:11:38.384"></status> +</kw> +<msg timestamp="20210602 14:11:38.384" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:38.383" endtime="20210602 14:11:38.384"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.385" endtime="20210602 14:11:38.385"></status> +</kw> +<msg timestamp="20210602 14:11:38.385" level="INFO">${addItemList} = [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:38.384" endtime="20210602 14:11:38.385"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.386" endtime="20210602 14:11:38.387"></status> +</kw> +<msg timestamp="20210602 14:11:38.387" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:38.386" endtime="20210602 14:11:38.387"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.388" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:38.387" endtime="20210602 14:11:38.388"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:38.388" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:38.388" endtime="20210602 14:11:38.389"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.400" endtime="20210602 14:11:38.400"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.401" endtime="20210602 14:11:38.401"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.402" endtime="20210602 14:11:38.403"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.402" endtime="20210602 14:11:38.403"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.401" endtime="20210602 14:11:38.403"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.399" endtime="20210602 14:11:38.403"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.380" endtime="20210602 14:11:38.403"></status> +</kw> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.2/24', 'port': '1-65535'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.404" endtime="20210602 14:11:38.405"></status> +</kw> +<msg timestamp="20210602 14:11:38.405" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:38.405" level="INFO">${addItemList} = [{'ip': '255.255.255.1-255.255.255.255', 'port': '0-65535'}, {'ip': '255.255.255.2/24', 'port': '1-65535'}]</msg> +<status status="PASS" starttime="20210602 14:11:38.404" endtime="20210602 14:11:38.406"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:38.406" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:38.406" endtime="20210602 14:11:38.406"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.408" endtime="20210602 14:11:38.408"></status> +</kw> +<msg timestamp="20210602 14:11:38.408" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:38.407" endtime="20210602 14:11:38.408"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.409" endtime="20210602 14:11:38.410"></status> +</kw> +<msg timestamp="20210602 14:11:38.410" level="INFO">${addItemList} = [{"ip": "255.255.255.1-255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.2/24", "port": "1-65535"}]</msg> +<status status="PASS" starttime="20210602 14:11:38.409" endtime="20210602 14:11:38.410"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.411" endtime="20210602 14:11:38.411"></status> +</kw> +<msg timestamp="20210602 14:11:38.411" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:38.410" endtime="20210602 14:11:38.412"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.412" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "su...</msg> +<status status="PASS" starttime="20210602 14:11:38.412" endtime="20210602 14:11:38.412"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:38.413" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:38.413" endtime="20210602 14:11:38.414"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.424" endtime="20210602 14:11:38.424"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.424" endtime="20210602 14:11:38.425"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.425" endtime="20210602 14:11:38.426"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.425" endtime="20210602 14:11:38.426"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.425" endtime="20210602 14:11:38.426"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.423" endtime="20210602 14:11:38.426"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.404" endtime="20210602 14:11:38.426"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.380" endtime="20210602 14:11:38.427"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:38.427" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定...</msg> +<status status="PASS" starttime="20210602 14:11:38.427" endtime="20210602 14:11:38.428"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.429" endtime="20210602 14:11:38.429"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.429" endtime="20210602 14:11:38.429"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:38.430" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:38.430" endtime="20210602 14:11:38.430"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.431" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u535...</msg> +<status status="PASS" starttime="20210602 14:11:38.431" endtime="20210602 14:11:38.431"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:38.432" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:38.432" endtime="20210602 14:11:38.432"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:38.433" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:38.433" endtime="20210602 14:11:38.434"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:38.434" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}, {"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.255", "port": "0-65535"}, {"ip": "255.255.255.255", "port": "1-65535"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:38.862" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:38.434" endtime="20210602 14:11:38.863"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:38.866" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:38.865" endtime="20210602 14:11:38.867"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:38.871" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:38.868" endtime="20210602 14:11:38.872"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:38.874" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "0", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"0-65535\"}", + "itemId" : 10074719, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107896, + "opTime" : "2021-06-02 14:11:38", + "opUser" : 425, + "port" : "0-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"1-65535\"}", + "itemId" : 10074720, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107896, + "opTime" : "2021-06-02 14:11:38", + "opUser" : 425, + "port" : "1-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107896, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:37", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + }, { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "0", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"0-65535\"}", + "itemId" : 10074721, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107897, + "opTime" : "2021-06-02 14:11:38", + "opUser" : 425, + "port" : "0-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.255", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.255", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.255\" ,\"port\":\"1-65535\"}", + "itemId" : 10074722, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107897, + "opTime" : "2021-06-02 14:11:38", + "opUser" : 425, + "port" : "1-65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107897, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:37", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:38.875" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:38.876" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2':...</msg> +<status status="PASS" starttime="20210602 14:11:38.873" endtime="20210602 14:11:38.876"></status> +</kw> +<msg timestamp="20210602 14:11:38.877" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2':...</msg> +<status status="PASS" starttime="20210602 14:11:38.431" endtime="20210602 14:11:38.877"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:38.881" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:38.880" endtime="20210602 14:11:38.881"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:38.883" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.882" endtime="20210602 14:11:38.883"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:38.884" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:38.883" endtime="20210602 14:11:38.884"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.886" endtime="20210602 14:11:38.886"></status> +</kw> +<msg timestamp="20210602 14:11:38.887" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:38.887" level="INFO">${data} = {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', '...</msg> +<status status="PASS" starttime="20210602 14:11:38.885" endtime="20210602 14:11:38.887"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.888" endtime="20210602 14:11:38.888"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': 0, '..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.889" endtime="20210602 14:11:38.890"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.889" endtime="20210602 14:11:38.890"></status> +</kw> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.255', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '0', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': 0, '..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.891" endtime="20210602 14:11:38.892"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.891" endtime="20210602 14:11:38.892"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.888" endtime="20210602 14:11:38.892"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.879" endtime="20210602 14:11:38.892"></status> +</kw> +<msg timestamp="20210602 14:11:38.893" level="INFO">${objectIds} = [107896, 107897]</msg> +<status status="PASS" starttime="20210602 14:11:38.878" endtime="20210602 14:11:38.893"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:38.894" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:38.893" endtime="20210602 14:11:38.894"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:38.895" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:38.894" endtime="20210602 14:11:38.895"></status> +</kw> +<msg timestamp="20210602 14:11:38.895" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:38.896" level="INFO">${objectIds} = [107896, 107897]</msg> +<status status="PASS" starttime="20210602 14:11:38.428" endtime="20210602 14:11:38.896"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:38.897" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:38.896" endtime="20210602 14:11:38.897"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.898" endtime="20210602 14:11:38.898"></status> +</kw> +<msg timestamp="20210602 14:11:38.898" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:38.897" endtime="20210602 14:11:38.898"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:38.899" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.899" endtime="20210602 14:11:38.899"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107896" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:38.901" level="INFO">${objectList} = {'objectId': 107896, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:38.900" endtime="20210602 14:11:38.901"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.901" endtime="20210602 14:11:38.901"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.900" endtime="20210602 14:11:38.902"></status> +</kw> +<kw name="${obj} = 107897" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:38.903" level="INFO">${objectList} = {'objectId': 107896, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:38.902" endtime="20210602 14:11:38.903"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.903" endtime="20210602 14:11:38.903"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.902" endtime="20210602 14:11:38.903"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.899" endtime="20210602 14:11:38.904"></status> +</kw> +<msg timestamp="20210602 14:11:38.904" level="INFO">${objectIds} = [107896, 107897]</msg> +<msg timestamp="20210602 14:11:38.904" level="INFO">${objectList} = {'objectId': 107896, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:38.363" endtime="20210602 14:11:38.904"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.905" endtime="20210602 14:11:38.906"></status> +</kw> +<msg timestamp="20210602 14:11:38.906" level="INFO">${objectList} = {'objectId': 107896, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:38.905" endtime="20210602 14:11:38.906"></status> +</kw> +<msg timestamp="20210602 14:11:38.906" level="INFO">${objectIds} = [107896, 107897]</msg> +<msg timestamp="20210602 14:11:38.907" level="INFO">${objectList} = {'objectId': 107896, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:38.361" endtime="20210602 14:11:38.907"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:38.907" level="INFO">Length is 0</msg> +<msg timestamp="20210602 14:11:38.908" level="INFO">${len} = 0</msg> +<status status="PASS" starttime="20210602 14:11:38.907" endtime="20210602 14:11:38.908"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectIds}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.908" endtime="20210602 14:11:38.909"></status> +</kw> +<msg timestamp="20210602 14:11:38.909" level="INFO">${objectIdsList} = [107896, 107897]</msg> +<status status="PASS" starttime="20210602 14:11:38.908" endtime="20210602 14:11:38.909"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.910" endtime="20210602 14:11:38.910"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.909" endtime="20210602 14:11:38.911"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.360" endtime="20210602 14:11:38.911"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_LOCATION', 'objectType': 'ip', 'objectSubType': 'geo_location', 'objList': [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:38.912" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:38.911" endtime="20210602 14:11:38.912"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.913" endtime="20210602 14:11:38.913"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:38.914" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:38.914" endtime="20210602 14:11:38.914"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.915" endtime="20210602 14:11:38.915"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:38.916" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:38.915" endtime="20210602 14:11:38.916"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:38.916" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:38.916" endtime="20210602 14:11:38.917"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.917" endtime="20210602 14:11:38.917"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.918" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:38.917" endtime="20210602 14:11:38.918"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.919" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:38.918" endtime="20210602 14:11:38.919"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.919" endtime="20210602 14:11:38.920"></status> +</kw> +<msg timestamp="20210602 14:11:38.920" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:38.920" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:38.919" endtime="20210602 14:11:38.920"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.921" endtime="20210602 14:11:38.921"></status> +</kw> +<msg timestamp="20210602 14:11:38.921" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:38.920" endtime="20210602 14:11:38.922"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.922" endtime="20210602 14:11:38.923"></status> +</kw> +<msg timestamp="20210602 14:11:38.923" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:38.923" level="INFO">${objectSubType} = geo_location</msg> +<status status="PASS" starttime="20210602 14:11:38.922" endtime="20210602 14:11:38.923"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.924" endtime="20210602 14:11:38.924"></status> +</kw> +<msg timestamp="20210602 14:11:38.925" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:38.923" endtime="20210602 14:11:38.925"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:38.926" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:38.925" endtime="20210602 14:11:38.926"></status> +</kw> +<msg timestamp="20210602 14:11:38.926" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:38.926" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:38.925" endtime="20210602 14:11:38.926"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.927" endtime="20210602 14:11:38.927"></status> +</kw> +<msg timestamp="20210602 14:11:38.928" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:38.927" endtime="20210602 14:11:38.928"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.929" endtime="20210602 14:11:38.929"></status> +</kw> +<msg timestamp="20210602 14:11:38.929" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:38.928" endtime="20210602 14:11:38.929"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:38.930" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.930" endtime="20210602 14:11:38.930"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:38.931" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:38.931" endtime="20210602 14:11:38.931"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.932" endtime="20210602 14:11:38.933"></status> +</kw> +<msg timestamp="20210602 14:11:38.933" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:38.933" level="INFO">${addItemList} = [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}, {'keywordArray': ['China.Duyun.*']}]</msg> +<status status="PASS" starttime="20210602 14:11:38.932" endtime="20210602 14:11:38.933"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:38.934" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:38.933" endtime="20210602 14:11:38.934"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.935" endtime="20210602 14:11:38.935"></status> +</kw> +<msg timestamp="20210602 14:11:38.935" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:38.934" endtime="20210602 14:11:38.935"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.936" endtime="20210602 14:11:38.937"></status> +</kw> +<msg timestamp="20210602 14:11:38.937" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:38.936" endtime="20210602 14:11:38.937"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.938" endtime="20210602 14:11:38.938"></status> +</kw> +<msg timestamp="20210602 14:11:38.938" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:38.937" endtime="20210602 14:11:38.939"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.939" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:38.939" endtime="20210602 14:11:38.939"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:38.940" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'a...</msg> +<status status="PASS" starttime="20210602 14:11:38.940" endtime="20210602 14:11:38.940"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.951" endtime="20210602 14:11:38.952"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.952" endtime="20210602 14:11:38.952"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.953" endtime="20210602 14:11:38.953"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.953" endtime="20210602 14:11:38.954"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.952" endtime="20210602 14:11:38.954"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.951" endtime="20210602 14:11:38.954"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.932" endtime="20210602 14:11:38.954"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.931" endtime="20210602 14:11:38.954"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:38.955" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单...</msg> +<status status="PASS" starttime="20210602 14:11:38.955" endtime="20210602 14:11:38.955"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.956" endtime="20210602 14:11:38.956"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:38.957" endtime="20210602 14:11:38.957"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:38.958" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:38.957" endtime="20210602 14:11:38.958"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:38.959" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\...</msg> +<status status="PASS" starttime="20210602 14:11:38.958" endtime="20210602 14:11:38.959"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:38.960" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:38.959" endtime="20210602 14:11:38.960"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:38.961" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:38.960" endtime="20210602 14:11:38.961"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:38.962" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}, {"keywordArray": ["China.Duyun.*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:39.706" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:38.961" endtime="20210602 14:11:39.707"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:39.711" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:39.708" endtime="20210602 14:11:39.712"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:39.714" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:39.713" endtime="20210602 14:11:39.715"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:39.717" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:38", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "Algeria." ], + "itemId" : 10074723, + "objectId" : 107898 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:38", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074724, + "objectId" : 107898 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:38", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074725, + "objectId" : 107898 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107898, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "geo_location", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:38", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:39.717" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:39.718" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:38', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:39.715" endtime="20210602 14:11:39.718"></status> +</kw> +<msg timestamp="20210602 14:11:39.719" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:38', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:38.959" endtime="20210602 14:11:39.719"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:39.723" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:39.722" endtime="20210602 14:11:39.723"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:39.724" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:39.723" endtime="20210602 14:11:39.724"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:39.725" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:39.725" endtime="20210602 14:11:39.726"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.727" endtime="20210602 14:11:39.728"></status> +</kw> +<msg timestamp="20210602 14:11:39.728" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:39.728" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:38', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...</msg> +<status status="PASS" starttime="20210602 14:11:39.726" endtime="20210602 14:11:39.728"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.729" endtime="20210602 14:11:39.729"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:38', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.731" endtime="20210602 14:11:39.731"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.730" endtime="20210602 14:11:39.731"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.730" endtime="20210602 14:11:39.732"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.721" endtime="20210602 14:11:39.732"></status> +</kw> +<msg timestamp="20210602 14:11:39.732" level="INFO">${objectIds} = [107898]</msg> +<status status="PASS" starttime="20210602 14:11:39.720" endtime="20210602 14:11:39.733"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:39.734" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:39.733" endtime="20210602 14:11:39.734"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:39.734" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:39.734" endtime="20210602 14:11:39.735"></status> +</kw> +<msg timestamp="20210602 14:11:39.735" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:39.735" level="INFO">${objectIds} = [107898]</msg> +<status status="PASS" starttime="20210602 14:11:38.956" endtime="20210602 14:11:39.735"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:39.736" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:39.736" endtime="20210602 14:11:39.736"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.737" endtime="20210602 14:11:39.738"></status> +</kw> +<msg timestamp="20210602 14:11:39.738" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:39.737" endtime="20210602 14:11:39.738"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:39.739" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:39.739" endtime="20210602 14:11:39.739"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107898" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:39.740" level="INFO">${objectList} = {'objectId': 107898, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:39.740" endtime="20210602 14:11:39.740"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.741" endtime="20210602 14:11:39.741"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.739" endtime="20210602 14:11:39.741"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.739" endtime="20210602 14:11:39.742"></status> +</kw> +<msg timestamp="20210602 14:11:39.742" level="INFO">${objectIds} = [107898]</msg> +<msg timestamp="20210602 14:11:39.742" level="INFO">${objectList} = {'objectId': 107898, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:38.914" endtime="20210602 14:11:39.742"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.743" endtime="20210602 14:11:39.744"></status> +</kw> +<msg timestamp="20210602 14:11:39.744" level="INFO">${objectList} = {'objectId': 107898, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:39.743" endtime="20210602 14:11:39.744"></status> +</kw> +<msg timestamp="20210602 14:11:39.744" level="INFO">${objectIds} = [107898]</msg> +<msg timestamp="20210602 14:11:39.745" level="INFO">${objectList} = {'objectId': 107898, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:38.912" endtime="20210602 14:11:39.745"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:39.745" level="INFO">Length is 2</msg> +<msg timestamp="20210602 14:11:39.745" level="INFO">${len} = 2</msg> +<status status="PASS" starttime="20210602 14:11:39.745" endtime="20210602 14:11:39.746"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.756" endtime="20210602 14:11:39.757"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.757" endtime="20210602 14:11:39.758"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107898" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.758" endtime="20210602 14:11:39.759"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.758" endtime="20210602 14:11:39.759"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.758" endtime="20210602 14:11:39.759"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.756" endtime="20210602 14:11:39.760"></status> +</kw> +<msg timestamp="20210602 14:11:39.760" level="INFO">${objectIdsList} = [107896, 107897, 107898]</msg> +<status status="PASS" starttime="20210602 14:11:39.746" endtime="20210602 14:11:39.760"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.761" endtime="20210602 14:11:39.761"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.760" endtime="20210602 14:11:39.762"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.911" endtime="20210602 14:11:39.762"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_IMSI', 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'objList': [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:39.763" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:39.762" endtime="20210602 14:11:39.763"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.763" endtime="20210602 14:11:39.764"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:39.764" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:39.764" endtime="20210602 14:11:39.765"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.765" endtime="20210602 14:11:39.766"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:39.766" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:39.766" endtime="20210602 14:11:39.766"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:39.767" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:39.767" endtime="20210602 14:11:39.767"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.767" endtime="20210602 14:11:39.768"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:39.768" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:39.768" endtime="20210602 14:11:39.768"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:39.769" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:39.769" endtime="20210602 14:11:39.769"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.770" endtime="20210602 14:11:39.770"></status> +</kw> +<msg timestamp="20210602 14:11:39.770" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:39.771" level="INFO">${objectType} = mobile_identity</msg> +<status status="PASS" starttime="20210602 14:11:39.769" endtime="20210602 14:11:39.771"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.771" endtime="20210602 14:11:39.772"></status> +</kw> +<msg timestamp="20210602 14:11:39.772" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:39.771" endtime="20210602 14:11:39.772"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.773" endtime="20210602 14:11:39.774"></status> +</kw> +<msg timestamp="20210602 14:11:39.774" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:39.774" level="INFO">${objectSubType} = imsi</msg> +<status status="PASS" starttime="20210602 14:11:39.773" endtime="20210602 14:11:39.774"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.775" endtime="20210602 14:11:39.775"></status> +</kw> +<msg timestamp="20210602 14:11:39.776" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:39.774" endtime="20210602 14:11:39.776"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:39.777" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:39.777" endtime="20210602 14:11:39.777"></status> +</kw> +<msg timestamp="20210602 14:11:39.777" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:39.778" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:39.776" endtime="20210602 14:11:39.778"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.778" endtime="20210602 14:11:39.779"></status> +</kw> +<msg timestamp="20210602 14:11:39.779" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:39.778" endtime="20210602 14:11:39.779"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.780" endtime="20210602 14:11:39.780"></status> +</kw> +<msg timestamp="20210602 14:11:39.781" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:39.779" endtime="20210602 14:11:39.781"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:39.781" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:39.781" endtime="20210602 14:11:39.781"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:39.782" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:39.782" endtime="20210602 14:11:39.782"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.783" endtime="20210602 14:11:39.784"></status> +</kw> +<msg timestamp="20210602 14:11:39.784" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:39.784" level="INFO">${addItemList} = [{'keywordArray': ['123*']}, {'keywordArray': ['456*']}, {'keywordArray': ['12345678912345*']}]</msg> +<status status="PASS" starttime="20210602 14:11:39.783" endtime="20210602 14:11:39.784"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:39.785" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:39.785" endtime="20210602 14:11:39.785"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.786" endtime="20210602 14:11:39.786"></status> +</kw> +<msg timestamp="20210602 14:11:39.787" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:39.785" endtime="20210602 14:11:39.787"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.787" endtime="20210602 14:11:39.788"></status> +</kw> +<msg timestamp="20210602 14:11:39.788" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:39.787" endtime="20210602 14:11:39.788"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.789" endtime="20210602 14:11:39.790"></status> +</kw> +<msg timestamp="20210602 14:11:39.790" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:39.789" endtime="20210602 14:11:39.790"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:39.791" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "t...</msg> +<status status="PASS" starttime="20210602 14:11:39.790" endtime="20210602 14:11:39.791"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:39.792" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [...</msg> +<status status="PASS" starttime="20210602 14:11:39.791" endtime="20210602 14:11:39.792"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.803" endtime="20210602 14:11:39.803"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.803" endtime="20210602 14:11:39.803"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': []..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.804" endtime="20210602 14:11:39.805"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.804" endtime="20210602 14:11:39.805"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.804" endtime="20210602 14:11:39.805"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.802" endtime="20210602 14:11:39.806"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.783" endtime="20210602 14:11:39.806"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.782" endtime="20210602 14:11:39.806"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:39.807" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'imsi', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'aut...</msg> +<status status="PASS" starttime="20210602 14:11:39.806" endtime="20210602 14:11:39.807"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.808" endtime="20210602 14:11:39.808"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:39.808" endtime="20210602 14:11:39.808"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:39.809" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:39.809" endtime="20210602 14:11:39.809"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:39.810" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "aut...</msg> +<status status="PASS" starttime="20210602 14:11:39.809" endtime="20210602 14:11:39.810"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:39.811" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:39.811" endtime="20210602 14:11:39.811"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:39.812" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:39.811" endtime="20210602 14:11:39.812"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:39.813" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "imsi", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["123*"]}, {"keywordArray": ["456*"]}, {"keywordArray": ["12345678912345*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:40.018" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:39.813" endtime="20210602 14:11:40.018"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:40.019" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:40.018" endtime="20210602 14:11:40.019"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:40.020" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:40.019" endtime="20210602 14:11:40.020"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:40.021" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:39", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123" ], + "itemId" : 10074726, + "objectId" : 107899 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:39", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "456" ], + "itemId" : 10074727, + "objectId" : 107899 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:39", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "12345678912345" ], + "itemId" : 10074728, + "objectId" : 107899 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107899, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "imsi", + "objectType" : "mobile_identity", + "opTime" : "2021-06-02 14:11:39", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:40.021" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:40.021" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:40.020" endtime="20210602 14:11:40.021"></status> +</kw> +<msg timestamp="20210602 14:11:40.022" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:39.810" endtime="20210602 14:11:40.022"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:40.024" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:40.024" endtime="20210602 14:11:40.024"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:40.025" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:40.025" endtime="20210602 14:11:40.026"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:40.026" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:40.026" endtime="20210602 14:11:40.026"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.027" endtime="20210602 14:11:40.028"></status> +</kw> +<msg timestamp="20210602 14:11:40.028" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:40.028" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...</msg> +<status status="PASS" starttime="20210602 14:11:40.027" endtime="20210602 14:11:40.028"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.029" endtime="20210602 14:11:40.029"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.030" endtime="20210602 14:11:40.030"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.030" endtime="20210602 14:11:40.030"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.029" endtime="20210602 14:11:40.031"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.023" endtime="20210602 14:11:40.031"></status> +</kw> +<msg timestamp="20210602 14:11:40.031" level="INFO">${objectIds} = [107899]</msg> +<status status="PASS" starttime="20210602 14:11:40.022" endtime="20210602 14:11:40.031"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:40.032" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:40.032" endtime="20210602 14:11:40.032"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:40.033" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:40.033" endtime="20210602 14:11:40.033"></status> +</kw> +<msg timestamp="20210602 14:11:40.033" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:40.034" level="INFO">${objectIds} = [107899]</msg> +<status status="PASS" starttime="20210602 14:11:39.807" endtime="20210602 14:11:40.034"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:40.034" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:40.034" endtime="20210602 14:11:40.034"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.035" endtime="20210602 14:11:40.036"></status> +</kw> +<msg timestamp="20210602 14:11:40.036" level="INFO">${protocolField} = TSG_FILED_GTP_IMSI</msg> +<status status="PASS" starttime="20210602 14:11:40.035" endtime="20210602 14:11:40.036"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:40.036" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:40.036" endtime="20210602 14:11:40.037"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107899" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:40.038" level="INFO">${objectList} = {'objectId': 107899, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:40.037" endtime="20210602 14:11:40.038"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.038" endtime="20210602 14:11:40.038"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.037" endtime="20210602 14:11:40.039"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.037" endtime="20210602 14:11:40.039"></status> +</kw> +<msg timestamp="20210602 14:11:40.039" level="INFO">${objectIds} = [107899]</msg> +<msg timestamp="20210602 14:11:40.039" level="INFO">${objectList} = {'objectId': 107899, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:39.765" endtime="20210602 14:11:40.039"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.040" endtime="20210602 14:11:40.041"></status> +</kw> +<msg timestamp="20210602 14:11:40.041" level="INFO">${objectList} = {'objectId': 107899, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:40.040" endtime="20210602 14:11:40.042"></status> +</kw> +<msg timestamp="20210602 14:11:40.042" level="INFO">${objectIds} = [107899]</msg> +<msg timestamp="20210602 14:11:40.042" level="INFO">${objectList} = {'objectId': 107899, 'protocolField': 'TSG_FILED_GTP_IMSI'}</msg> +<status status="PASS" starttime="20210602 14:11:39.763" endtime="20210602 14:11:40.043"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:40.044" level="INFO">Length is 3</msg> +<msg timestamp="20210602 14:11:40.044" level="INFO">${len} = 3</msg> +<status status="PASS" starttime="20210602 14:11:40.043" endtime="20210602 14:11:40.044"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.056" endtime="20210602 14:11:40.056"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.057" endtime="20210602 14:11:40.057"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107899" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.058" endtime="20210602 14:11:40.058"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.057" endtime="20210602 14:11:40.058"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.057" endtime="20210602 14:11:40.059"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.056" endtime="20210602 14:11:40.059"></status> +</kw> +<msg timestamp="20210602 14:11:40.059" level="INFO">${objectIdsList} = [107896, 107897, 107898, 107899]</msg> +<status status="PASS" starttime="20210602 14:11:40.044" endtime="20210602 14:11:40.060"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.061" endtime="20210602 14:11:40.061"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.060" endtime="20210602 14:11:40.061"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:39.762" endtime="20210602 14:11:40.062"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER', 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'objList': [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:40.062" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:40.062" endtime="20210602 14:11:40.063"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.063" endtime="20210602 14:11:40.064"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:40.064" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:40.064" endtime="20210602 14:11:40.064"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.065" endtime="20210602 14:11:40.065"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:40.066" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:40.066" endtime="20210602 14:11:40.066"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:40.067" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:40.066" endtime="20210602 14:11:40.067"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.067" endtime="20210602 14:11:40.067"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:40.068" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:40.068" endtime="20210602 14:11:40.068"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:40.069" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:40.068" endtime="20210602 14:11:40.069"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.070" endtime="20210602 14:11:40.070"></status> +</kw> +<msg timestamp="20210602 14:11:40.070" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:40.070" level="INFO">${objectType} = mobile_identity</msg> +<status status="PASS" starttime="20210602 14:11:40.069" endtime="20210602 14:11:40.070"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.071" endtime="20210602 14:11:40.072"></status> +</kw> +<msg timestamp="20210602 14:11:40.072" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc...</msg> +<status status="PASS" starttime="20210602 14:11:40.071" endtime="20210602 14:11:40.072"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.073" endtime="20210602 14:11:40.073"></status> +</kw> +<msg timestamp="20210602 14:11:40.073" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:40.073" level="INFO">${objectSubType} = phone_number</msg> +<status status="PASS" starttime="20210602 14:11:40.072" endtime="20210602 14:11:40.074"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.074" endtime="20210602 14:11:40.075"></status> +</kw> +<msg timestamp="20210602 14:11:40.075" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:40.074" endtime="20210602 14:11:40.075"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:40.077" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:40.076" endtime="20210602 14:11:40.077"></status> +</kw> +<msg timestamp="20210602 14:11:40.077" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:40.077" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:40.076" endtime="20210602 14:11:40.078"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.079" endtime="20210602 14:11:40.079"></status> +</kw> +<msg timestamp="20210602 14:11:40.079" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:40.078" endtime="20210602 14:11:40.079"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.080" endtime="20210602 14:11:40.080"></status> +</kw> +<msg timestamp="20210602 14:11:40.081" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:40.080" endtime="20210602 14:11:40.081"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:40.081" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:40.081" endtime="20210602 14:11:40.081"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:40.082" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:40.082" endtime="20210602 14:11:40.082"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.083" endtime="20210602 14:11:40.084"></status> +</kw> +<msg timestamp="20210602 14:11:40.084" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:40.084" level="INFO">${addItemList} = [{'keywordArray': ['123*']}, {'keywordArray': ['$123456789012345']}, {'keywordArray': ['12345']}]</msg> +<status status="PASS" starttime="20210602 14:11:40.083" endtime="20210602 14:11:40.084"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:40.085" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:40.085" endtime="20210602 14:11:40.085"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.086" endtime="20210602 14:11:40.086"></status> +</kw> +<msg timestamp="20210602 14:11:40.087" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:40.085" endtime="20210602 14:11:40.087"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.087" endtime="20210602 14:11:40.088"></status> +</kw> +<msg timestamp="20210602 14:11:40.088" level="INFO">${addItemList} = [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}]</msg> +<status status="PASS" starttime="20210602 14:11:40.087" endtime="20210602 14:11:40.089"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.090" endtime="20210602 14:11:40.090"></status> +</kw> +<msg timestamp="20210602 14:11:40.091" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:40.089" endtime="20210602 14:11:40.091"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:40.091" level="INFO">${objectJson} = [{"objectId": null, "objectType":"mobile_identity", "objectSubType":"phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectD...</msg> +<status status="PASS" starttime="20210602 14:11:40.091" endtime="20210602 14:11:40.092"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:40.092" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjec...</msg> +<status status="PASS" starttime="20210602 14:11:40.092" endtime="20210602 14:11:40.092"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.107" endtime="20210602 14:11:40.107"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.107" endtime="20210602 14:11:40.107"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObject..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.108" endtime="20210602 14:11:40.109"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.108" endtime="20210602 14:11:40.109"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.108" endtime="20210602 14:11:40.109"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.106" endtime="20210602 14:11:40.109"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.083" endtime="20210602 14:11:40.109"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.083" endtime="20210602 14:11:40.110"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:40.110" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'mobile_identity', 'objectSubType': 'phone_number', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectNam...</msg> +<status status="PASS" starttime="20210602 14:11:40.110" endtime="20210602 14:11:40.110"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.111" endtime="20210602 14:11:40.112"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:40.112" endtime="20210602 14:11:40.112"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:40.113" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:40.112" endtime="20210602 14:11:40.113"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:40.114" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectNam...</msg> +<status status="PASS" starttime="20210602 14:11:40.113" endtime="20210602 14:11:40.114"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:40.115" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:40.114" endtime="20210602 14:11:40.115"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:40.116" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:40.115" endtime="20210602 14:11:40.116"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:40.117" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "mobile_identity", "objectSubType": "phone_number", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["123*"]}, {"keywordArray": ["$123456789012345"]}, {"keywordArray": ["12345"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:41.019" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:40.116" endtime="20210602 14:11:41.020"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:41.024" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:41.022" endtime="20210602 14:11:41.025"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.028" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.027" endtime="20210602 14:11:41.028"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:41.030" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:39", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123" ], + "itemId" : 10074729, + "objectId" : 107900 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:39", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "123456789012345" ], + "itemId" : 10074730, + "objectId" : 107900 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:39", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "12345" ], + "itemId" : 10074731, + "objectId" : 107900 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107900, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "phone_number", + "objectType" : "mobile_identity", + "opTime" : "2021-06-02 14:11:39", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:41.031" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:41.032" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:41.029" endtime="20210602 14:11:41.032"></status> +</kw> +<msg timestamp="20210602 14:11:41.033" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:40.114" endtime="20210602 14:11:41.033"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:41.037" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:41.036" endtime="20210602 14:11:41.037"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:41.038" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.038" endtime="20210602 14:11:41.039"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:41.040" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:41.039" endtime="20210602 14:11:41.040"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.041" endtime="20210602 14:11:41.042"></status> +</kw> +<msg timestamp="20210602 14:11:41.042" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.043" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['1...</msg> +<status status="PASS" starttime="20210602 14:11:41.041" endtime="20210602 14:11:41.043"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.043" endtime="20210602 14:11:41.044"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:39', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['123'], 'itemId': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.045" endtime="20210602 14:11:41.046"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.045" endtime="20210602 14:11:41.046"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.044" endtime="20210602 14:11:41.046"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.035" endtime="20210602 14:11:41.047"></status> +</kw> +<msg timestamp="20210602 14:11:41.047" level="INFO">${objectIds} = [107900]</msg> +<status status="PASS" starttime="20210602 14:11:41.034" endtime="20210602 14:11:41.047"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:41.048" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:41.047" endtime="20210602 14:11:41.048"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.049" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.049" endtime="20210602 14:11:41.049"></status> +</kw> +<msg timestamp="20210602 14:11:41.050" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:41.050" level="INFO">${objectIds} = [107900]</msg> +<status status="PASS" starttime="20210602 14:11:40.111" endtime="20210602 14:11:41.050"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.051" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.050" endtime="20210602 14:11:41.051"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.052" endtime="20210602 14:11:41.052"></status> +</kw> +<msg timestamp="20210602 14:11:41.053" level="INFO">${protocolField} = TSG_FILED_GTP_PHONE_NUMBER</msg> +<status status="PASS" starttime="20210602 14:11:41.051" endtime="20210602 14:11:41.053"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:41.053" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.053" endtime="20210602 14:11:41.054"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107900" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:41.055" level="INFO">${objectList} = {'objectId': 107900, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:41.054" endtime="20210602 14:11:41.055"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.055" endtime="20210602 14:11:41.056"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.054" endtime="20210602 14:11:41.056"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.054" endtime="20210602 14:11:41.056"></status> +</kw> +<msg timestamp="20210602 14:11:41.057" level="INFO">${objectIds} = [107900]</msg> +<msg timestamp="20210602 14:11:41.057" level="INFO">${objectList} = {'objectId': 107900, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:40.065" endtime="20210602 14:11:41.057"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.058" endtime="20210602 14:11:41.058"></status> +</kw> +<msg timestamp="20210602 14:11:41.059" level="INFO">${objectList} = {'objectId': 107900, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:41.057" endtime="20210602 14:11:41.059"></status> +</kw> +<msg timestamp="20210602 14:11:41.059" level="INFO">${objectIds} = [107900]</msg> +<msg timestamp="20210602 14:11:41.059" level="INFO">${objectList} = {'objectId': 107900, 'protocolField': 'TSG_FILED_GTP_PHONE_NUMBER'}</msg> +<status status="PASS" starttime="20210602 14:11:40.063" endtime="20210602 14:11:41.059"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:41.060" level="INFO">Length is 4</msg> +<msg timestamp="20210602 14:11:41.060" level="INFO">${len} = 4</msg> +<status status="PASS" starttime="20210602 14:11:41.060" endtime="20210602 14:11:41.060"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.074" endtime="20210602 14:11:41.074"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.075" endtime="20210602 14:11:41.075"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107900" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.076" endtime="20210602 14:11:41.076"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.075" endtime="20210602 14:11:41.076"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.075" endtime="20210602 14:11:41.077"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.073" endtime="20210602 14:11:41.077"></status> +</kw> +<msg timestamp="20210602 14:11:41.077" level="INFO">${objectIdsList} = [107896, 107897, 107898, 107899, 107900]</msg> +<status status="PASS" starttime="20210602 14:11:41.061" endtime="20210602 14:11:41.077"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.078" endtime="20210602 14:11:41.079"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.077" endtime="20210602 14:11:41.079"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:40.062" endtime="20210602 14:11:41.079"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_FILED_GTP_APN', 'objectType': 'apn', 'objectSubType': '', 'objList': [{'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$w..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.080" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:41.080" endtime="20210602 14:11:41.080"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.081" endtime="20210602 14:11:41.081"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.082" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:41.081" endtime="20210602 14:11:41.082"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.083" endtime="20210602 14:11:41.083"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.083" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:41.083" endtime="20210602 14:11:41.084"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:41.084" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:41.084" endtime="20210602 14:11:41.084"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.085" endtime="20210602 14:11:41.085"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.086" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:41.086" endtime="20210602 14:11:41.086"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.087" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.087" endtime="20210602 14:11:41.087"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.088" endtime="20210602 14:11:41.088"></status> +</kw> +<msg timestamp="20210602 14:11:41.088" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.088" level="INFO">${objectType} = apn</msg> +<status status="PASS" starttime="20210602 14:11:41.087" endtime="20210602 14:11:41.089"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.089" endtime="20210602 14:11:41.090"></status> +</kw> +<msg timestamp="20210602 14:11:41.090" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.089" endtime="20210602 14:11:41.090"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.091" endtime="20210602 14:11:41.091"></status> +</kw> +<msg timestamp="20210602 14:11:41.091" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.091" level="INFO">${objectSubType} = </msg> +<status status="PASS" starttime="20210602 14:11:41.090" endtime="20210602 14:11:41.092"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.093" endtime="20210602 14:11:41.093"></status> +</kw> +<msg timestamp="20210602 14:11:41.093" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:41.092" endtime="20210602 14:11:41.093"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:41.094" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:41.094" endtime="20210602 14:11:41.095"></status> +</kw> +<msg timestamp="20210602 14:11:41.095" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:41.095" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:41.094" endtime="20210602 14:11:41.096"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.096" endtime="20210602 14:11:41.097"></status> +</kw> +<msg timestamp="20210602 14:11:41.097" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:41.096" endtime="20210602 14:11:41.097"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.098" endtime="20210602 14:11:41.098"></status> +</kw> +<msg timestamp="20210602 14:11:41.098" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:41.097" endtime="20210602 14:11:41.099"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:41.099" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.099" endtime="20210602 14:11:41.099"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:41.100" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:41.099" endtime="20210602 14:11:41.101"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.102" endtime="20210602 14:11:41.102"></status> +</kw> +<msg timestamp="20210602 14:11:41.102" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.102" level="INFO">${addItemList} = [{'keywordArray': ['*uawei.org']}, {'keywordArray': ['$huawei.com']}, {'keywordArray': ['$www.huawei.com']}]</msg> +<status status="PASS" starttime="20210602 14:11:41.101" endtime="20210602 14:11:41.102"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:41.103" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:41.103" endtime="20210602 14:11:41.103"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.104" endtime="20210602 14:11:41.104"></status> +</kw> +<msg timestamp="20210602 14:11:41.105" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:41.103" endtime="20210602 14:11:41.105"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.105" endtime="20210602 14:11:41.106"></status> +</kw> +<msg timestamp="20210602 14:11:41.106" level="INFO">${addItemList} = [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}]</msg> +<status status="PASS" starttime="20210602 14:11:41.105" endtime="20210602 14:11:41.106"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.107" endtime="20210602 14:11:41.107"></status> +</kw> +<msg timestamp="20210602 14:11:41.108" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:41.106" endtime="20210602 14:11:41.108"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.108" level="INFO">${objectJson} = [{"objectId": null, "objectType":"apn", "objectSubType":"", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObject...</msg> +<status status="PASS" starttime="20210602 14:11:41.108" endtime="20210602 14:11:41.109"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:41.109" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList'...</msg> +<status status="PASS" starttime="20210602 14:11:41.109" endtime="20210602 14:11:41.109"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.120" endtime="20210602 14:11:41.120"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.120" endtime="20210602 14:11:41.121"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addItemList':..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.121" endtime="20210602 14:11:41.122"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.121" endtime="20210602 14:11:41.122"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.121" endtime="20210602 14:11:41.122"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.119" endtime="20210602 14:11:41.123"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.101" endtime="20210602 14:11:41.123"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.101" endtime="20210602 14:11:41.123"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:41.124" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'apn', 'objectSubType': '', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'o...</msg> +<status status="PASS" starttime="20210602 14:11:41.123" endtime="20210602 14:11:41.124"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.125" endtime="20210602 14:11:41.125"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.125" endtime="20210602 14:11:41.126"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:41.126" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:41.126" endtime="20210602 14:11:41.126"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.127" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "apn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u63...</msg> +<status status="PASS" starttime="20210602 14:11:41.127" endtime="20210602 14:11:41.127"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:41.128" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:41.128" endtime="20210602 14:11:41.128"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:41.129" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:41.129" endtime="20210602 14:11:41.130"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:41.130" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "apn", "objectSubType": "", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["*uawei.org"]}, {"keywordArray": ["$huawei.com"]}, {"keywordArray": ["$www.huawei.com"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:41.250" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:41.130" endtime="20210602 14:11:41.250"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:41.251" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:41.250" endtime="20210602 14:11:41.251"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.251" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.251" endtime="20210602 14:11:41.252"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:41.252" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:40", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "uawei.org" ], + "itemId" : 10074732, + "objectId" : 107901 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:40", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "huawei.com" ], + "itemId" : 10074733, + "objectId" : 107901 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:40", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "www.huawei.com" ], + "itemId" : 10074734, + "objectId" : 107901 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107901, + "objectName" : "auttest单ip指定端口", + "objectType" : "apn", + "opTime" : "2021-06-02 14:11:40", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:41.253" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:41.253" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:40', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:41.252" endtime="20210602 14:11:41.253"></status> +</kw> +<msg timestamp="20210602 14:11:41.253" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:40', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:41.127" endtime="20210602 14:11:41.253"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:41.255" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:41.255" endtime="20210602 14:11:41.255"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:41.256" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.255" endtime="20210602 14:11:41.256"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:41.256" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:41.256" endtime="20210602 14:11:41.256"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.257" endtime="20210602 14:11:41.257"></status> +</kw> +<msg timestamp="20210602 14:11:41.258" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.258" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:40', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['u...</msg> +<status status="PASS" starttime="20210602 14:11:41.257" endtime="20210602 14:11:41.258"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.258" endtime="20210602 14:11:41.259"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:40', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['uawei.org'], 'ite..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.259" endtime="20210602 14:11:41.260"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.259" endtime="20210602 14:11:41.260"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.259" endtime="20210602 14:11:41.260"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.254" endtime="20210602 14:11:41.260"></status> +</kw> +<msg timestamp="20210602 14:11:41.261" level="INFO">${objectIds} = [107901]</msg> +<status status="PASS" starttime="20210602 14:11:41.254" endtime="20210602 14:11:41.261"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:41.261" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:41.261" endtime="20210602 14:11:41.262"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.262" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.262" endtime="20210602 14:11:41.262"></status> +</kw> +<msg timestamp="20210602 14:11:41.263" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:41.263" level="INFO">${objectIds} = [107901]</msg> +<status status="PASS" starttime="20210602 14:11:41.124" endtime="20210602 14:11:41.263"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.263" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.263" endtime="20210602 14:11:41.264"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.264" endtime="20210602 14:11:41.265"></status> +</kw> +<msg timestamp="20210602 14:11:41.265" level="INFO">${protocolField} = TSG_FILED_GTP_APN</msg> +<status status="PASS" starttime="20210602 14:11:41.264" endtime="20210602 14:11:41.265"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:41.266" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.265" endtime="20210602 14:11:41.266"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107901" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:41.267" level="INFO">${objectList} = {'objectId': 107901, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:41.266" endtime="20210602 14:11:41.267"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.267" endtime="20210602 14:11:41.268"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.266" endtime="20210602 14:11:41.268"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.266" endtime="20210602 14:11:41.268"></status> +</kw> +<msg timestamp="20210602 14:11:41.268" level="INFO">${objectIds} = [107901]</msg> +<msg timestamp="20210602 14:11:41.269" level="INFO">${objectList} = {'objectId': 107901, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:41.082" endtime="20210602 14:11:41.269"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.270" endtime="20210602 14:11:41.270"></status> +</kw> +<msg timestamp="20210602 14:11:41.270" level="INFO">${objectList} = {'objectId': 107901, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:41.269" endtime="20210602 14:11:41.271"></status> +</kw> +<msg timestamp="20210602 14:11:41.271" level="INFO">${objectIds} = [107901]</msg> +<msg timestamp="20210602 14:11:41.271" level="INFO">${objectList} = {'objectId': 107901, 'protocolField': 'TSG_FILED_GTP_APN'}</msg> +<status status="PASS" starttime="20210602 14:11:41.080" endtime="20210602 14:11:41.271"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:41.272" level="INFO">Length is 5</msg> +<msg timestamp="20210602 14:11:41.272" level="INFO">${len} = 5</msg> +<status status="PASS" starttime="20210602 14:11:41.271" endtime="20210602 14:11:41.272"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.284" endtime="20210602 14:11:41.284"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.285" endtime="20210602 14:11:41.285"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107901" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.285" endtime="20210602 14:11:41.286"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.285" endtime="20210602 14:11:41.286"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.285" endtime="20210602 14:11:41.286"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.283" endtime="20210602 14:11:41.286"></status> +</kw> +<msg timestamp="20210602 14:11:41.287" level="INFO">${objectIdsList} = [107896, 107897, 107898, 107899, 107900, 107901]</msg> +<status status="PASS" starttime="20210602 14:11:41.272" endtime="20210602 14:11:41.287"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.288" endtime="20210602 14:11:41.288"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.287" endtime="20210602 14:11:41.288"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.079" endtime="20210602 14:11:41.288"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_SOURCE_ADDR', 'objectType': 'ip', 'objectSubType': 'ip_learning', 'objList': [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', ..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.289" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:41.289" endtime="20210602 14:11:41.289"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.290" endtime="20210602 14:11:41.291"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.291" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:41.291" endtime="20210602 14:11:41.291"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.292" endtime="20210602 14:11:41.292"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.293" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:41.293" endtime="20210602 14:11:41.293"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:41.294" level="INFO">${objList} = [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:41.293" endtime="20210602 14:11:41.294"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.294" endtime="20210602 14:11:41.294"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.295" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:41.295" endtime="20210602 14:11:41.295"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.296" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.295" endtime="20210602 14:11:41.296"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.297" endtime="20210602 14:11:41.297"></status> +</kw> +<msg timestamp="20210602 14:11:41.297" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.297" level="INFO">${objectType} = ip</msg> +<status status="PASS" starttime="20210602 14:11:41.296" endtime="20210602 14:11:41.297"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.298" endtime="20210602 14:11:41.298"></status> +</kw> +<msg timestamp="20210602 14:11:41.299" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "s...</msg> +<status status="PASS" starttime="20210602 14:11:41.298" endtime="20210602 14:11:41.299"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.299" endtime="20210602 14:11:41.300"></status> +</kw> +<msg timestamp="20210602 14:11:41.300" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.300" level="INFO">${objectSubType} = ip_learning</msg> +<status status="PASS" starttime="20210602 14:11:41.299" endtime="20210602 14:11:41.300"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.301" endtime="20210602 14:11:41.302"></status> +</kw> +<msg timestamp="20210602 14:11:41.302" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:41.300" endtime="20210602 14:11:41.302"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:41.303" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:41.303" endtime="20210602 14:11:41.303"></status> +</kw> +<msg timestamp="20210602 14:11:41.303" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:41.304" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:41.302" endtime="20210602 14:11:41.304"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.305" endtime="20210602 14:11:41.305"></status> +</kw> +<msg timestamp="20210602 14:11:41.305" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:41.304" endtime="20210602 14:11:41.305"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.306" endtime="20210602 14:11:41.306"></status> +</kw> +<msg timestamp="20210602 14:11:41.307" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:41.306" endtime="20210602 14:11:41.307"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:41.307" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.307" endtime="20210602 14:11:41.307"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:41.308" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:41.308" endtime="20210602 14:11:41.308"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.310" endtime="20210602 14:11:41.310"></status> +</kw> +<msg timestamp="20210602 14:11:41.310" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.310" level="INFO">${addItemList} = [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]</msg> +<status status="PASS" starttime="20210602 14:11:41.309" endtime="20210602 14:11:41.310"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:41.311" level="INFO">${addItemList} = [{"fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:41.311" endtime="20210602 14:11:41.311"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.312" endtime="20210602 14:11:41.312"></status> +</kw> +<msg timestamp="20210602 14:11:41.312" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:41.311" endtime="20210602 14:11:41.313"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.313" endtime="20210602 14:11:41.314"></status> +</kw> +<msg timestamp="20210602 14:11:41.314" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"</msg> +<status status="PASS" starttime="20210602 14:11:41.313" endtime="20210602 14:11:41.314"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.315" endtime="20210602 14:11:41.315"></status> +</kw> +<msg timestamp="20210602 14:11:41.316" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:41.314" endtime="20210602 14:11:41.316"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.316" level="INFO">${objectJson} = [{"objectId": null, "objectType":"ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", ...</msg> +<status status="PASS" starttime="20210602 14:11:41.316" endtime="20210602 14:11:41.317"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:41.317" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad...</msg> +<status status="PASS" starttime="20210602 14:11:41.317" endtime="20210602 14:11:41.317"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.329" endtime="20210602 14:11:41.329"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.330" endtime="20210602 14:11:41.330"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'add..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.331" endtime="20210602 14:11:41.331"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.331" endtime="20210602 14:11:41.331"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.330" endtime="20210602 14:11:41.332"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.328" endtime="20210602 14:11:41.332"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.309" endtime="20210602 14:11:41.332"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.309" endtime="20210602 14:11:41.332"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:41.333" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单i...</msg> +<status status="PASS" starttime="20210602 14:11:41.332" endtime="20210602 14:11:41.333"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.334" endtime="20210602 14:11:41.334"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.335" endtime="20210602 14:11:41.335"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:41.336" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:41.335" endtime="20210602 14:11:41.336"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.336" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u...</msg> +<status status="PASS" starttime="20210602 14:11:41.336" endtime="20210602 14:11:41.336"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:41.338" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:41.337" endtime="20210602 14:11:41.338"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:41.339" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:41.338" endtime="20210602 14:11:41.339"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:41.340" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [], "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000", "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:41.370" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:41.339" endtime="20210602 14:11:41.370"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:41.371" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:41.370" endtime="20210602 14:11:41.371"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.372" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.371" endtime="20210602 14:11:41.372"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:41.373" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ ], + "agingTime" : 12, + "deleteItemIds" : [ ], + "fromFqdns" : [ "$www.baidu.com", "*jd.com" ], + "fromProtocol" : "HTTP,SSL", + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "learnedIpLimit" : 1000, + "learningDepth" : "2", + "memberType" : 3, + "objectDesc" : "test", + "objectId" : 107902, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "ip_learning", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:40", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ], + "voteClientNum" : 10 + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:41.373" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:41.373" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:41.373" endtime="20210602 14:11:41.373"></status> +</kw> +<msg timestamp="20210602 14:11:41.374" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:41.337" endtime="20210602 14:11:41.374"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:41.375" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:41.375" endtime="20210602 14:11:41.376"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:41.376" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.376" endtime="20210602 14:11:41.376"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:41.377" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:41.377" endtime="20210602 14:11:41.377"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.378" endtime="20210602 14:11:41.378"></status> +</kw> +<msg timestamp="20210602 14:11:41.378" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.379" level="INFO">${data} = {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusio...</msg> +<status status="PASS" starttime="20210602 14:11:41.377" endtime="20210602 14:11:41.379"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.379" endtime="20210602 14:11:41.379"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusion': 0, 'isInitia..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.380" endtime="20210602 14:11:41.381"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.380" endtime="20210602 14:11:41.381"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.380" endtime="20210602 14:11:41.381"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.375" endtime="20210602 14:11:41.381"></status> +</kw> +<msg timestamp="20210602 14:11:41.381" level="INFO">${objectIds} = [107902]</msg> +<status status="PASS" starttime="20210602 14:11:41.374" endtime="20210602 14:11:41.381"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:41.382" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:41.382" endtime="20210602 14:11:41.382"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.383" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.383" endtime="20210602 14:11:41.383"></status> +</kw> +<msg timestamp="20210602 14:11:41.383" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:41.384" level="INFO">${objectIds} = [107902]</msg> +<status status="PASS" starttime="20210602 14:11:41.333" endtime="20210602 14:11:41.384"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:41.384" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:41.384" endtime="20210602 14:11:41.384"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.385" endtime="20210602 14:11:41.386"></status> +</kw> +<msg timestamp="20210602 14:11:41.386" level="INFO">${protocolField} = TSG_SECURITY_SOURCE_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:41.385" endtime="20210602 14:11:41.386"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:41.386" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.386" endtime="20210602 14:11:41.387"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107902" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:41.388" level="INFO">${objectList} = {'objectId': 107902, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:41.387" endtime="20210602 14:11:41.388"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.388" endtime="20210602 14:11:41.389"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.387" endtime="20210602 14:11:41.389"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.387" endtime="20210602 14:11:41.389"></status> +</kw> +<msg timestamp="20210602 14:11:41.389" level="INFO">${objectIds} = [107902]</msg> +<msg timestamp="20210602 14:11:41.390" level="INFO">${objectList} = {'objectId': 107902, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:41.292" endtime="20210602 14:11:41.390"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.391" endtime="20210602 14:11:41.391"></status> +</kw> +<msg timestamp="20210602 14:11:41.391" level="INFO">${objectList} = {'objectId': 107902, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:41.390" endtime="20210602 14:11:41.391"></status> +</kw> +<msg timestamp="20210602 14:11:41.392" level="INFO">${objectIds} = [107902]</msg> +<msg timestamp="20210602 14:11:41.392" level="INFO">${objectList} = {'objectId': 107902, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:41.290" endtime="20210602 14:11:41.392"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:41.393" level="INFO">Length is 6</msg> +<msg timestamp="20210602 14:11:41.393" level="INFO">${len} = 6</msg> +<status status="PASS" starttime="20210602 14:11:41.392" endtime="20210602 14:11:41.393"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.404" endtime="20210602 14:11:41.405"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.405" endtime="20210602 14:11:41.405"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107902" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.406" endtime="20210602 14:11:41.406"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.406" endtime="20210602 14:11:41.407"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.406" endtime="20210602 14:11:41.407"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.404" endtime="20210602 14:11:41.407"></status> +</kw> +<msg timestamp="20210602 14:11:41.407" level="INFO">${objectIdsList} = [107896, 107897, 107898, 107899, 107900, 107901, 107902]</msg> +<status status="PASS" starttime="20210602 14:11:41.393" endtime="20210602 14:11:41.407"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.409" endtime="20210602 14:11:41.409"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.408" endtime="20210602 14:11:41.409"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.289" endtime="20210602 14:11:41.409"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_ADDR', 'objList': [{'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}]}" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.410" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:41.410" endtime="20210602 14:11:41.410"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.411" endtime="20210602 14:11:41.411"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.412" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:41.412" endtime="20210602 14:11:41.412"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.413" endtime="20210602 14:11:41.413"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:41.414" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:41.414" endtime="20210602 14:11:41.414"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:41.415" level="INFO">${objList} = [{'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:41.414" endtime="20210602 14:11:41.415"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.415" endtime="20210602 14:11:41.415"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.416" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:41.415" endtime="20210602 14:11:41.416"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.416" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.416" endtime="20210602 14:11:41.417"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:41.418" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:41.417" endtime="20210602 14:11:41.418"></status> +</kw> +<msg timestamp="20210602 14:11:41.418" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:41.418" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:41.417" endtime="20210602 14:11:41.418"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.419" endtime="20210602 14:11:41.420"></status> +</kw> +<msg timestamp="20210602 14:11:41.420" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.419" endtime="20210602 14:11:41.420"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<msg timestamp="20210602 14:11:41.421" level="FAIL">Dictionary does not contain key 'objectSubType'.</msg> +<status status="FAIL" starttime="20210602 14:11:41.421" endtime="20210602 14:11:41.421"></status> +</kw> +<msg timestamp="20210602 14:11:41.421" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:41.422" level="INFO">${objectSubType} = Dictionary does not contain key 'objectSubType'.</msg> +<status status="PASS" starttime="20210602 14:11:41.420" endtime="20210602 14:11:41.422"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.423" endtime="20210602 14:11:41.423"></status> +</kw> +<msg timestamp="20210602 14:11:41.423" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.422" endtime="20210602 14:11:41.423"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:41.425" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:41.424" endtime="20210602 14:11:41.425"></status> +</kw> +<msg timestamp="20210602 14:11:41.425" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:41.425" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:41.424" endtime="20210602 14:11:41.425"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.426" endtime="20210602 14:11:41.426"></status> +</kw> +<msg timestamp="20210602 14:11:41.427" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.426" endtime="20210602 14:11:41.427"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.428" endtime="20210602 14:11:41.428"></status> +</kw> +<msg timestamp="20210602 14:11:41.429" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.427" endtime="20210602 14:11:41.429"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:41.429" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:41.429" endtime="20210602 14:11:41.429"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:41.430" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:41.430" endtime="20210602 14:11:41.430"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.431" endtime="20210602 14:11:41.432"></status> +</kw> +<msg timestamp="20210602 14:11:41.432" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:41.432" level="INFO">${addItemList} = [{'ip': '255.255.255.254', 'port': '65535'}, {'ip': '255.255.255.254', 'port': '1'}]</msg> +<status status="PASS" starttime="20210602 14:11:41.431" endtime="20210602 14:11:41.432"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:41.433" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:41.432" endtime="20210602 14:11:41.433"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.434" endtime="20210602 14:11:41.434"></status> +</kw> +<msg timestamp="20210602 14:11:41.434" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:41.433" endtime="20210602 14:11:41.434"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.436" endtime="20210602 14:11:41.436"></status> +</kw> +<msg timestamp="20210602 14:11:41.436" level="INFO">${addItemList} = [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}]</msg> +<status status="PASS" starttime="20210602 14:11:41.435" endtime="20210602 14:11:41.436"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.437" endtime="20210602 14:11:41.438"></status> +</kw> +<msg timestamp="20210602 14:11:41.438" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.437" endtime="20210602 14:11:41.438"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.439" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:41.438" endtime="20210602 14:11:41.439"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:41.439" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIt...</msg> +<status status="PASS" starttime="20210602 14:11:41.439" endtime="20210602 14:11:41.439"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.451" endtime="20210602 14:11:41.451"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.451" endtime="20210602 14:11:41.451"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'addIte..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.452" endtime="20210602 14:11:41.452"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.452" endtime="20210602 14:11:41.453"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.452" endtime="20210602 14:11:41.453"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.450" endtime="20210602 14:11:41.453"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.431" endtime="20210602 14:11:41.453"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.430" endtime="20210602 14:11:41.453"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:41.454" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'endpoint', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定...</msg> +<status status="PASS" starttime="20210602 14:11:41.454" endtime="20210602 14:11:41.455"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.455" endtime="20210602 14:11:41.456"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:41.456" endtime="20210602 14:11:41.456"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:41.457" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:41.457" endtime="20210602 14:11:41.457"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:41.458" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u535...</msg> +<status status="PASS" starttime="20210602 14:11:41.458" endtime="20210602 14:11:41.458"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:41.460" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:41.459" endtime="20210602 14:11:41.460"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:41.461" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:41.460" endtime="20210602 14:11:41.461"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:41.462" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"ip": "255.255.255.254", "port": "65535"}, {"ip": "255.255.255.254", "port": "1"}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:42.022" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:41.461" endtime="20210602 14:11:42.023"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:42.027" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:42.025" endtime="20210602 14:11:42.028"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:42.031" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:42.029" endtime="20210602 14:11:42.032"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:42.034" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "addrType" : 4, + "clientIp1" : "255.255.255.254", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "65535", + "clientPort2" : "65535", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.254", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.254\" ,\"port\":\"65535\"}", + "itemId" : 10074735, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107903, + "opTime" : "2021-06-02 14:11:41", + "opUser" : 425, + "port" : "65535", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + }, { + "addrType" : 4, + "clientIp1" : "255.255.255.254", + "clientIp2" : "32", + "clientIpFormat" : "CIDR", + "clientPort1" : "1", + "clientPort2" : "1", + "clientPortFormat" : "range", + "direction" : 0, + "ip" : "255.255.255.254", + "isInitialize" : 0, + "isSession" : "endpoint", + "isValid" : 1, + "itemDesc" : "{ \"ip\":\"255.255.255.254\" ,\"port\":\"1\"}", + "itemId" : 10074736, + "itemName" : null, + "itemType" : "ip", + "objectId" : 107903, + "opTime" : "2021-06-02 14:11:41", + "opUser" : 425, + "port" : "1", + "protocol" : 0, + "serverIp1" : "0.0.0.0", + "serverIp2" : "255.255.255.255", + "serverIpFormat" : "mask", + "serverPort1" : "0", + "serverPort2" : "65535", + "serverPortFormat" : "mask" + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107903, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "endpoint", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:40", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:42.035" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:42.035" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPor...</msg> +<status status="PASS" starttime="20210602 14:11:42.033" endtime="20210602 14:11:42.036"></status> +</kw> +<msg timestamp="20210602 14:11:42.037" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPor...</msg> +<status status="PASS" starttime="20210602 14:11:41.458" endtime="20210602 14:11:42.037"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:42.041" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:42.040" endtime="20210602 14:11:42.041"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:42.043" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:42.042" endtime="20210602 14:11:42.043"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:42.044" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:42.044" endtime="20210602 14:11:42.044"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.046" endtime="20210602 14:11:42.047"></status> +</kw> +<msg timestamp="20210602 14:11:42.047" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:42.047" level="INFO">${data} = {'objectList': [{'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPort2': '65535', 'clientPortFormat': 'range...</msg> +<status status="PASS" starttime="20210602 14:11:42.045" endtime="20210602 14:11:42.048"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.048" endtime="20210602 14:11:42.048"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'addrType': 4, 'clientIp1': '255.255.255.254', 'clientIp2': '32', 'clientIpFormat': 'CIDR', 'clientPort1': '65535', 'clientPort2': '65535', 'clientPortFormat': 'range', 'direction': ..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.050" endtime="20210602 14:11:42.050"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.049" endtime="20210602 14:11:42.051"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.049" endtime="20210602 14:11:42.051"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.039" endtime="20210602 14:11:42.051"></status> +</kw> +<msg timestamp="20210602 14:11:42.052" level="INFO">${objectIds} = [107903]</msg> +<status status="PASS" starttime="20210602 14:11:42.038" endtime="20210602 14:11:42.052"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:42.053" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:42.052" endtime="20210602 14:11:42.053"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:42.054" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:42.053" endtime="20210602 14:11:42.054"></status> +</kw> +<msg timestamp="20210602 14:11:42.055" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:42.055" level="INFO">${objectIds} = [107903]</msg> +<status status="PASS" starttime="20210602 14:11:41.455" endtime="20210602 14:11:42.055"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:42.056" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:42.056" endtime="20210602 14:11:42.056"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.057" endtime="20210602 14:11:42.058"></status> +</kw> +<msg timestamp="20210602 14:11:42.058" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:42.057" endtime="20210602 14:11:42.058"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:42.059" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:42.058" endtime="20210602 14:11:42.059"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107903" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:42.060" level="INFO">${objectList} = {'objectId': 107903, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:42.060" endtime="20210602 14:11:42.061"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.061" endtime="20210602 14:11:42.061"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.059" endtime="20210602 14:11:42.062"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.059" endtime="20210602 14:11:42.062"></status> +</kw> +<msg timestamp="20210602 14:11:42.062" level="INFO">${objectIds} = [107903]</msg> +<msg timestamp="20210602 14:11:42.062" level="INFO">${objectList} = {'objectId': 107903, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:41.412" endtime="20210602 14:11:42.062"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.064" endtime="20210602 14:11:42.064"></status> +</kw> +<msg timestamp="20210602 14:11:42.064" level="INFO">${objectList} = {'objectId': 107903, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:42.063" endtime="20210602 14:11:42.064"></status> +</kw> +<msg timestamp="20210602 14:11:42.065" level="INFO">${objectIds} = [107903]</msg> +<msg timestamp="20210602 14:11:42.065" level="INFO">${objectList} = {'objectId': 107903, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:41.410" endtime="20210602 14:11:42.065"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:42.066" level="INFO">Length is 7</msg> +<msg timestamp="20210602 14:11:42.066" level="INFO">${len} = 7</msg> +<status status="PASS" starttime="20210602 14:11:42.065" endtime="20210602 14:11:42.066"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.077" endtime="20210602 14:11:42.077"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.078" endtime="20210602 14:11:42.078"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107903" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.079" endtime="20210602 14:11:42.079"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.078" endtime="20210602 14:11:42.079"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.078" endtime="20210602 14:11:42.079"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.076" endtime="20210602 14:11:42.080"></status> +</kw> +<msg timestamp="20210602 14:11:42.080" level="INFO">${objectIdsList} = [107896, 107897, 107898, 107899, 107900, 107901, 107902, 107903]</msg> +<status status="PASS" starttime="20210602 14:11:42.066" endtime="20210602 14:11:42.080"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.081" endtime="20210602 14:11:42.082"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.081" endtime="20210602 14:11:42.082"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:41.409" endtime="20210602 14:11:42.082"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION', 'objectSubType': 'geo_location', 'objList': [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}]}" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:42.083" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:42.083" endtime="20210602 14:11:42.083"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.084" endtime="20210602 14:11:42.085"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:42.085" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:42.085" endtime="20210602 14:11:42.085"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.087" endtime="20210602 14:11:42.087"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:42.088" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:42.087" endtime="20210602 14:11:42.088"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:42.089" level="INFO">${objList} = [{'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}]</msg> +<status status="PASS" starttime="20210602 14:11:42.088" endtime="20210602 14:11:42.089"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.089" endtime="20210602 14:11:42.090"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:42.090" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:42.090" endtime="20210602 14:11:42.090"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:42.091" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:42.091" endtime="20210602 14:11:42.091"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:42.092" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:42.092" endtime="20210602 14:11:42.092"></status> +</kw> +<msg timestamp="20210602 14:11:42.093" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:42.093" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:42.091" endtime="20210602 14:11:42.093"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.094" endtime="20210602 14:11:42.094"></status> +</kw> +<msg timestamp="20210602 14:11:42.095" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:42.093" endtime="20210602 14:11:42.095"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.096" endtime="20210602 14:11:42.096"></status> +</kw> +<msg timestamp="20210602 14:11:42.096" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:42.096" level="INFO">${objectSubType} = geo_location</msg> +<status status="PASS" starttime="20210602 14:11:42.095" endtime="20210602 14:11:42.096"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.097" endtime="20210602 14:11:42.097"></status> +</kw> +<msg timestamp="20210602 14:11:42.097" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:42.097" endtime="20210602 14:11:42.097"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:42.098" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:42.098" endtime="20210602 14:11:42.098"></status> +</kw> +<msg timestamp="20210602 14:11:42.098" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:42.099" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:42.097" endtime="20210602 14:11:42.099"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.099" endtime="20210602 14:11:42.101"></status> +</kw> +<msg timestamp="20210602 14:11:42.101" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:42.099" endtime="20210602 14:11:42.101"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.101" endtime="20210602 14:11:42.103"></status> +</kw> +<msg timestamp="20210602 14:11:42.103" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:42.101" endtime="20210602 14:11:42.103"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:42.103" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:42.103" endtime="20210602 14:11:42.103"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:42.104" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:42.103" endtime="20210602 14:11:42.104"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.105" endtime="20210602 14:11:42.105"></status> +</kw> +<msg timestamp="20210602 14:11:42.105" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:42.105" level="INFO">${addItemList} = [{'keywordArray': ['Algeria.*']}, {'keywordArray': ['China.Duyun.*']}]</msg> +<status status="PASS" starttime="20210602 14:11:42.104" endtime="20210602 14:11:42.106"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:42.106" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:42.106" endtime="20210602 14:11:42.106"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.107" endtime="20210602 14:11:42.107"></status> +</kw> +<msg timestamp="20210602 14:11:42.108" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:42.107" endtime="20210602 14:11:42.108"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.109" endtime="20210602 14:11:42.109"></status> +</kw> +<msg timestamp="20210602 14:11:42.109" level="INFO">${addItemList} = [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}]</msg> +<status status="PASS" starttime="20210602 14:11:42.108" endtime="20210602 14:11:42.109"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.110" endtime="20210602 14:11:42.111"></status> +</kw> +<msg timestamp="20210602 14:11:42.111" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:42.110" endtime="20210602 14:11:42.111"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:42.112" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test"...</msg> +<status status="PASS" starttime="20210602 14:11:42.112" endtime="20210602 14:11:42.112"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:42.113" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'a...</msg> +<status status="PASS" starttime="20210602 14:11:42.112" endtime="20210602 14:11:42.113"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.124" endtime="20210602 14:11:42.124"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.124" endtime="20210602 14:11:42.125"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.125" endtime="20210602 14:11:42.126"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.125" endtime="20210602 14:11:42.126"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.125" endtime="20210602 14:11:42.126"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.123" endtime="20210602 14:11:42.126"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.104" endtime="20210602 14:11:42.127"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.104" endtime="20210602 14:11:42.127"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:42.128" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'geo_location', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单...</msg> +<status status="PASS" starttime="20210602 14:11:42.127" endtime="20210602 14:11:42.128"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.128" endtime="20210602 14:11:42.129"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:42.129" endtime="20210602 14:11:42.129"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:42.130" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:42.130" endtime="20210602 14:11:42.130"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:42.131" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\...</msg> +<status status="PASS" starttime="20210602 14:11:42.130" endtime="20210602 14:11:42.131"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:42.132" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:42.131" endtime="20210602 14:11:42.132"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:42.133" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:42.132" endtime="20210602 14:11:42.133"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:42.134" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "geo_location", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [{"keywordArray": ["Algeria.*"]}, {"keywordArray": ["China.Duyun.*"]}], "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:43.668" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:42.134" endtime="20210602 14:11:43.669"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:43.671" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:43.670" endtime="20210602 14:11:43.672"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:43.675" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:43.673" endtime="20210602 14:11:43.676"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:43.678" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:42", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "Algeria." ], + "itemId" : 10074738, + "objectId" : 107904 + }, { + "isValid" : 1, + "opUser" : 425, + "opTime" : "2021-06-02 14:11:42", + "isInitialize" : 0, + "itemName" : null, + "itemDesc" : null, + "exprType" : 0, + "isHexbin" : 0, + "keywordArray" : [ "China.Duyun." ], + "itemId" : 10074739, + "objectId" : 107904 + } ], + "deleteItemIds" : [ ], + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "memberType" : 1, + "objectDesc" : "test", + "objectId" : 107904, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "geo_location", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:41", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ] + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:43.678" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:43.679" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:42', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:43.677" endtime="20210602 14:11:43.680"></status> +</kw> +<msg timestamp="20210602 14:11:43.680" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:42', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType...</msg> +<status status="PASS" starttime="20210602 14:11:42.131" endtime="20210602 14:11:43.681"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:43.685" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:43.684" endtime="20210602 14:11:43.685"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:43.686" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:43.686" endtime="20210602 14:11:43.687"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:43.688" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:43.687" endtime="20210602 14:11:43.688"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.689" endtime="20210602 14:11:43.690"></status> +</kw> +<msg timestamp="20210602 14:11:43.690" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:43.690" level="INFO">${data} = {'objectList': [{'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:42', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['A...</msg> +<status status="PASS" starttime="20210602 14:11:43.688" endtime="20210602 14:11:43.691"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.691" endtime="20210602 14:11:43.692"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [{'isValid': 1, 'opUser': 425, 'opTime': '2021-06-02 14:11:42', 'isInitialize': 0, 'itemName': None, 'itemDesc': None, 'exprType': 0, 'isHexbin': 0, 'keywordArray': ['Algeria.'], 'item..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.693" endtime="20210602 14:11:43.693"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.692" endtime="20210602 14:11:43.694"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.692" endtime="20210602 14:11:43.694"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.683" endtime="20210602 14:11:43.694"></status> +</kw> +<msg timestamp="20210602 14:11:43.695" level="INFO">${objectIds} = [107904]</msg> +<status status="PASS" starttime="20210602 14:11:43.682" endtime="20210602 14:11:43.695"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:43.696" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:43.695" endtime="20210602 14:11:43.696"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:43.697" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:43.696" endtime="20210602 14:11:43.697"></status> +</kw> +<msg timestamp="20210602 14:11:43.698" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:43.698" level="INFO">${objectIds} = [107904]</msg> +<status status="PASS" starttime="20210602 14:11:42.128" endtime="20210602 14:11:43.698"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:43.699" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:43.698" endtime="20210602 14:11:43.699"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.700" endtime="20210602 14:11:43.700"></status> +</kw> +<msg timestamp="20210602 14:11:43.701" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_LOCATION</msg> +<status status="PASS" starttime="20210602 14:11:43.699" endtime="20210602 14:11:43.701"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:43.701" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:43.701" endtime="20210602 14:11:43.702"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107904" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:43.703" level="INFO">${objectList} = {'objectId': 107904, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:43.702" endtime="20210602 14:11:43.703"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.704" endtime="20210602 14:11:43.704"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.702" endtime="20210602 14:11:43.704"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.702" endtime="20210602 14:11:43.704"></status> +</kw> +<msg timestamp="20210602 14:11:43.705" level="INFO">${objectIds} = [107904]</msg> +<msg timestamp="20210602 14:11:43.705" level="INFO">${objectList} = {'objectId': 107904, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:42.086" endtime="20210602 14:11:43.705"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.706" endtime="20210602 14:11:43.707"></status> +</kw> +<msg timestamp="20210602 14:11:43.707" level="INFO">${objectList} = {'objectId': 107904, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:43.705" endtime="20210602 14:11:43.707"></status> +</kw> +<msg timestamp="20210602 14:11:43.707" level="INFO">${objectIds} = [107904]</msg> +<msg timestamp="20210602 14:11:43.707" level="INFO">${objectList} = {'objectId': 107904, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}</msg> +<status status="PASS" starttime="20210602 14:11:42.084" endtime="20210602 14:11:43.708"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:43.708" level="INFO">Length is 8</msg> +<msg timestamp="20210602 14:11:43.708" level="INFO">${len} = 8</msg> +<status status="PASS" starttime="20210602 14:11:43.708" endtime="20210602 14:11:43.708"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.722" endtime="20210602 14:11:43.722"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.723" endtime="20210602 14:11:43.723"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107904" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.723" endtime="20210602 14:11:43.724"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.723" endtime="20210602 14:11:43.724"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.723" endtime="20210602 14:11:43.724"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.721" endtime="20210602 14:11:43.724"></status> +</kw> +<msg timestamp="20210602 14:11:43.725" level="INFO">${objectIdsList} = [107896, 107897, 107898, 107899, 107900, 107901, 107902, 107903, 107904]</msg> +<status status="PASS" starttime="20210602 14:11:43.709" endtime="20210602 14:11:43.725"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.726" endtime="20210602 14:11:43.727"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.725" endtime="20210602 14:11:43.727"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:42.083" endtime="20210602 14:11:43.727"></status> +</kw> +<kw name="${key} = {'protocolField': 'TSG_SECURITY_DESTINATION_ADDR', 'objectSubType': 'ip_learning', 'objList': [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth'..." type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${key}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:43.728" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:43.728" endtime="20210602 14:11:43.728"></status> +</kw> +<kw name="CreateObjectList" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${key}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.729" endtime="20210602 14:11:43.730"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:43.730" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:43.730" endtime="20210602 14:11:43.730"></status> +</kw> +<kw name="CreateObjects" library="object"> +<doc>处理对象</doc> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${objectIds}</var> +<var>${objectList}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>针对位置进行处理</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.732" endtime="20210602 14:11:43.732"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>protocolField</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<msg timestamp="20210602 14:11:43.732" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:43.732" endtime="20210602 14:11:43.733"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objList</arg> +</arguments> +<assign> +<var>${objList}</var> +</assign> +<msg timestamp="20210602 14:11:43.733" level="INFO">${objList} = [{'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}]</msg> +<status status="PASS" starttime="20210602 14:11:43.733" endtime="20210602 14:11:43.733"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>${objJson}对象模板取自全局变量</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.734" endtime="20210602 14:11:43.734"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objModeJson}</arg> +</arguments> +<assign> +<var>${objJson}</var> +</assign> +<msg timestamp="20210602 14:11:43.735" level="INFO">${objJson} = {"datafomat": "complate", "opAction": "add", "returnData": 1, "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "obj...</msg> +<status status="PASS" starttime="20210602 14:11:43.734" endtime="20210602 14:11:43.735"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objListMode}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:43.735" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:43.735" endtime="20210602 14:11:43.735"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectType</arg> +</arguments> +<msg timestamp="20210602 14:11:43.736" level="FAIL">Dictionary does not contain key 'objectType'.</msg> +<status status="FAIL" starttime="20210602 14:11:43.736" endtime="20210602 14:11:43.737"></status> +</kw> +<msg timestamp="20210602 14:11:43.737" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:43.737" level="INFO">${objectType} = Dictionary does not contain key 'objectType'.</msg> +<status status="PASS" starttime="20210602 14:11:43.736" endtime="20210602 14:11:43.737"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectType": "ip"</arg> +<arg>"objectType":"${objectType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.738" endtime="20210602 14:11:43.738"></status> +</kw> +<msg timestamp="20210602 14:11:43.738" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType": "endpoint", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "...</msg> +<status status="PASS" starttime="20210602 14:11:43.737" endtime="20210602 14:11:43.738"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectSubType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectSubType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.739" endtime="20210602 14:11:43.740"></status> +</kw> +<msg timestamp="20210602 14:11:43.740" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:43.740" level="INFO">${objectSubType} = ip_learning</msg> +<status status="PASS" starttime="20210602 14:11:43.739" endtime="20210602 14:11:43.740"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"objectSubType": "endpoint"</arg> +<arg>"objectSubType":"${objectSubType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.741" endtime="20210602 14:11:43.741"></status> +</kw> +<msg timestamp="20210602 14:11:43.741" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:43.740" endtime="20210602 14:11:43.742"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${objectId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objectData}</arg> +<arg>objectId</arg> +</arguments> +<msg timestamp="20210602 14:11:43.743" level="FAIL">Dictionary does not contain key 'objectId'.</msg> +<status status="FAIL" starttime="20210602 14:11:43.742" endtime="20210602 14:11:43.743"></status> +</kw> +<msg timestamp="20210602 14:11:43.743" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:43.743" level="INFO">${objectId} = Dictionary does not contain key 'objectId'.</msg> +<status status="PASS" starttime="20210602 14:11:43.742" endtime="20210602 14:11:43.743"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"objectId": null</arg> +<arg>"objectId":${objectId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.744" endtime="20210602 14:11:43.745"></status> +</kw> +<msg timestamp="20210602 14:11:43.745" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:43.744" endtime="20210602 14:11:43.745"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"option": "update"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.746" endtime="20210602 14:11:43.747"></status> +</kw> +<msg timestamp="20210602 14:11:43.747" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:43.746" endtime="20210602 14:11:43.747"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectJsonList}</var> +</assign> +<msg timestamp="20210602 14:11:43.748" level="INFO">${objectJsonList} = []</msg> +<status status="PASS" starttime="20210602 14:11:43.747" endtime="20210602 14:11:43.748"></status> +</kw> +<kw name="Evaluate" library="BuiltIn"> +<doc>Evaluates the given expression in Python and returns the results.</doc> +<arguments> +<arg>type(${objList})</arg> +</arguments> +<assign> +<var>${objListType}</var> +</assign> +<msg timestamp="20210602 14:11:43.749" level="INFO">${objListType} = <class 'list'></msg> +<status status="PASS" starttime="20210602 14:11:43.749" endtime="20210602 14:11:43.749"></status> +</kw> +<kw name="${obj} IN [ @{objList} ]" type="for"> +<kw name="${obj} = {'addItemList': [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]}" type="foritem"> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${addItemList}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${obj}</arg> +<arg>addItemList</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.751" endtime="20210602 14:11:43.751"></status> +</kw> +<msg timestamp="20210602 14:11:43.751" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:43.751" level="INFO">${addItemList} = [{'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'learningDepth': '2', 'agingTime': '12', 'voteClientNum': '10', 'learnedIpLimit': '1000'}]</msg> +<status status="PASS" starttime="20210602 14:11:43.750" endtime="20210602 14:11:43.752"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<msg timestamp="20210602 14:11:43.752" level="INFO">${addItemList} = [{"fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:43.752" endtime="20210602 14:11:43.752"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>[{"</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.753" endtime="20210602 14:11:43.754"></status> +</kw> +<msg timestamp="20210602 14:11:43.754" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"}]</msg> +<status status="PASS" starttime="20210602 14:11:43.753" endtime="20210602 14:11:43.754"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${addItemList}</arg> +</arguments> +<assign> +<var>${addItemList}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${addItemList}</arg> +<arg>"}]</arg> +<arg>"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.755" endtime="20210602 14:11:43.755"></status> +</kw> +<msg timestamp="20210602 14:11:43.756" level="INFO">${addItemList} = "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000"</msg> +<status status="PASS" starttime="20210602 14:11:43.755" endtime="20210602 14:11:43.756"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${objectSubType}" == "ip_learning"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +<arg>ELSE IF</arg> +<arg>"${return}"!="FAIL"</arg> +<arg>Replace String</arg> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": ${addItemList}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>"addItemList": [null]</arg> +<arg>"addItemList": [], ${addItemList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.757" endtime="20210602 14:11:43.757"></status> +</kw> +<msg timestamp="20210602 14:11:43.757" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:43.756" endtime="20210602 14:11:43.757"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${objectJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${objectJson}</var> +</assign> +<msg timestamp="20210602 14:11:43.758" level="INFO">${objectJson} = [{"objectId": null, "objectType": "ip", "objectSubType":"ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test",...</msg> +<status status="PASS" starttime="20210602 14:11:43.758" endtime="20210602 14:11:43.759"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${objectJson}</arg> +</arguments> +<assign> +<var>${objDictionary}</var> +</assign> +<msg timestamp="20210602 14:11:43.759" level="INFO">${objDictionary} = [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'ad...</msg> +<status status="PASS" starttime="20210602 14:11:43.759" endtime="20210602 14:11:43.759"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectJsonList}</arg> +<arg>${objDictionary}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.776" endtime="20210602 14:11:43.776"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.777" endtime="20210602 14:11:43.777"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单ip指定端口', 'objectDesc': 'test', 'subObjectIds': [], 'add..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.778" endtime="20210602 14:11:43.778"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.777" endtime="20210602 14:11:43.778"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.777" endtime="20210602 14:11:43.779"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.775" endtime="20210602 14:11:43.779"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.750" endtime="20210602 14:11:43.779"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.750" endtime="20210602 14:11:43.779"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>opAction=add</arg> +<arg>returnData=1</arg> +<arg>objectList=${objectJsonList}</arg> +</arguments> +<assign> +<var>${objectData}</var> +</assign> +<msg timestamp="20210602 14:11:43.780" level="INFO">${objectData} = {'opAction': 'add', 'returnData': '1', 'objectList': [{'objectId': None, 'objectType': 'ip', 'objectSubType': 'ip_learning', 'isValid': 1, 'isInitialize': 0, 'isExclusion': 0, 'objectName': 'auttest单i...</msg> +<status status="PASS" starttime="20210602 14:11:43.780" endtime="20210602 14:11:43.780"></status> +</kw> +<kw name="createObject" library="object"> +<arguments> +<arg>${objectData}</arg> +</arguments> +<assign> +<var>${rescode}</var> +<var>${objectIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${ipList}对象dict</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.781" endtime="20210602 14:11:43.781"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建IP</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:43.782" endtime="20210602 14:11:43.782"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${ipList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:43.783" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:43.782" endtime="20210602 14:11:43.783"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${ipList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:43.783" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u...</msg> +<status status="PASS" starttime="20210602 14:11:43.783" endtime="20210602 14:11:43.784"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${objectUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:43.785" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:43.784" endtime="20210602 14:11:43.785"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:43.786" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v1, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:43.785" endtime="20210602 14:11:43.786"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:43.787" level="INFO">POST Request using : uri=/policy/object, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "objectList": [{"objectId": null, "objectType": "ip", "objectSubType": "ip_learning", "isValid": 1, "isInitialize": 0, "isExclusion": 0, "objectName": "auttest\u5355ip\u6307\u5b9a\u7aef\u53e3", "objectDesc": "test", "subObjectIds": [], "addItemList": [], "fromFqdns": ["$www.baidu.com", "*jd.com"], "fromProtocol": "HTTP,SSL", "learningDepth": "2", "agingTime": "12", "voteClientNum": "10", "learnedIpLimit": "1000", "updateItemList": [], "deleteItemIds": [], "iconColor": "#31739C"}]} +json=None</msg> +<msg timestamp="20210602 14:11:44.368" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:43.786" endtime="20210602 14:11:44.368"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:44.369" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:44.369" endtime="20210602 14:11:44.370"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:44.370" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:44.370" endtime="20210602 14:11:44.371"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:44.372" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "objectList" : [ { + "addItemList" : [ ], + "agingTime" : 12, + "deleteItemIds" : [ ], + "fromFqdns" : [ "$www.baidu.com", "*jd.com" ], + "fromProtocol" : "HTTP,SSL", + "iconColor" : "#31739C", + "isDisplay" : null, + "isExclusion" : 0, + "isInitialize" : 0, + "isValid" : 1, + "learnedIpLimit" : 1000, + "learningDepth" : "2", + "memberType" : 3, + "objectDesc" : "test", + "objectId" : 107905, + "objectName" : "auttest单ip指定端口", + "objectSubType" : "ip_learning", + "objectType" : "ip", + "opTime" : "2021-06-02 14:11:43", + "opUser" : 425, + "subObjectIds" : [ ], + "updateItemList" : [ ], + "voteClientNum" : 10 + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:44.372" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:44.372" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:44.371" endtime="20210602 14:11:44.372"></status> +</kw> +<msg timestamp="20210602 14:11:44.373" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '...</msg> +<status status="PASS" starttime="20210602 14:11:43.784" endtime="20210602 14:11:44.373"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>getObjectListIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${objectIds}</var> +</assign> +<kw name="getObjectListIds" library="process_object_body"> +<doc>获取结果中的对象ID</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>Call Get-ObjectIds</arg> +</arguments> +<msg timestamp="20210602 14:11:44.374" level="INFO">Call Get-ObjectIds</msg> +<status status="PASS" starttime="20210602 14:11:44.374" endtime="20210602 14:11:44.374"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectIds}</var> +</assign> +<msg timestamp="20210602 14:11:44.375" level="INFO">${objectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:44.375" endtime="20210602 14:11:44.375"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${objectIdsTemp}</var> +</assign> +<msg timestamp="20210602 14:11:44.376" level="INFO">${objectIdsTemp} = </msg> +<status status="PASS" starttime="20210602 14:11:44.375" endtime="20210602 14:11:44.376"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${data}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${value}</arg> +<arg>data</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.377" endtime="20210602 14:11:44.377"></status> +</kw> +<msg timestamp="20210602 14:11:44.377" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.377" level="INFO">${data} = {'objectList': [{'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusio...</msg> +<status status="PASS" starttime="20210602 14:11:44.376" endtime="20210602 14:11:44.377"></status> +</kw> +<kw name="Return From Keyword If" library="BuiltIn"> +<doc>Returns from the enclosing user keyword if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"=="FAIL"</arg> +<arg>${objectIdsTemp}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.378" endtime="20210602 14:11:44.378"></status> +</kw> +<kw name="${object} IN [ @{value['data']['objectList']} ]" type="for"> +<kw name="${object} = {'addItemList': [], 'agingTime': 12, 'deleteItemIds': [], 'fromFqdns': ['$www.baidu.com', '*jd.com'], 'fromProtocol': 'HTTP,SSL', 'iconColor': '#31739C', 'isDisplay': None, 'isExclusion': 0, 'isInitia..." type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${object['objectId']}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.379" endtime="20210602 14:11:44.379"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.379" endtime="20210602 14:11:44.379"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.378" endtime="20210602 14:11:44.380"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.374" endtime="20210602 14:11:44.380"></status> +</kw> +<msg timestamp="20210602 14:11:44.380" level="INFO">${objectIds} = [107905]</msg> +<status status="PASS" starttime="20210602 14:11:44.373" endtime="20210602 14:11:44.380"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:44.381" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:44.380" endtime="20210602 14:11:44.381"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:44.382" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:44.382" endtime="20210602 14:11:44.382"></status> +</kw> +<msg timestamp="20210602 14:11:44.382" level="INFO">${rescode} = 200</msg> +<msg timestamp="20210602 14:11:44.383" level="INFO">${objectIds} = [107905]</msg> +<status status="PASS" starttime="20210602 14:11:43.781" endtime="20210602 14:11:44.383"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:44.383" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:44.383" endtime="20210602 14:11:44.384"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${protocolField}</arg> +</arguments> +<assign> +<var>${protocolField}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${protocolField}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.384" endtime="20210602 14:11:44.385"></status> +</kw> +<msg timestamp="20210602 14:11:44.385" level="INFO">${protocolField} = TSG_SECURITY_DESTINATION_ADDR</msg> +<status status="PASS" starttime="20210602 14:11:44.384" endtime="20210602 14:11:44.385"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${objectsList}</var> +</assign> +<msg timestamp="20210602 14:11:44.386" level="INFO">${objectsList} = []</msg> +<status status="PASS" starttime="20210602 14:11:44.385" endtime="20210602 14:11:44.386"></status> +</kw> +<kw name="${obj} IN [ @{objectIds} ]" type="for"> +<kw name="${obj} = 107905" type="foritem"> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>objectId=${objectIds}[0]</arg> +<arg>protocolField=${protocolField}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<msg timestamp="20210602 14:11:44.387" level="INFO">${objectList} = {'objectId': 107905, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:44.386" endtime="20210602 14:11:44.387"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${objectsList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.387" endtime="20210602 14:11:44.388"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.386" endtime="20210602 14:11:44.388"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.386" endtime="20210602 14:11:44.388"></status> +</kw> +<msg timestamp="20210602 14:11:44.388" level="INFO">${objectIds} = [107905]</msg> +<msg timestamp="20210602 14:11:44.388" level="INFO">${objectList} = {'objectId': 107905, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:43.731" endtime="20210602 14:11:44.388"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Set Variable</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>OrangeFilter</arg> +<arg>${objectList}</arg> +</arguments> +<assign> +<var>${objectList}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.389" endtime="20210602 14:11:44.390"></status> +</kw> +<msg timestamp="20210602 14:11:44.390" level="INFO">${objectList} = {'objectId': 107905, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:44.389" endtime="20210602 14:11:44.390"></status> +</kw> +<msg timestamp="20210602 14:11:44.390" level="INFO">${objectIds} = [107905]</msg> +<msg timestamp="20210602 14:11:44.391" level="INFO">${objectList} = {'objectId': 107905, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}</msg> +<status status="PASS" starttime="20210602 14:11:43.729" endtime="20210602 14:11:44.391"></status> +</kw> +<kw name="Get Length" library="BuiltIn"> +<doc>Returns and logs the length of the given item as an integer.</doc> +<arguments> +<arg>${objectIdsList}</arg> +</arguments> +<assign> +<var>${len}</var> +</assign> +<msg timestamp="20210602 14:11:44.391" level="INFO">Length is 9</msg> +<msg timestamp="20210602 14:11:44.391" level="INFO">${len} = 9</msg> +<status status="PASS" starttime="20210602 14:11:44.391" endtime="20210602 14:11:44.392"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${len} != 0</arg> +<arg>AppendListToList</arg> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${objectIds}</arg> +</arguments> +<assign> +<var>${objectIdsList}</var> +</assign> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIdsList}</arg> +<arg>${objectIds}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.403" endtime="20210602 14:11:44.403"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.403" endtime="20210602 14:11:44.404"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107905" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.404" endtime="20210602 14:11:44.405"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.404" endtime="20210602 14:11:44.405"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.404" endtime="20210602 14:11:44.405"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.402" endtime="20210602 14:11:44.405"></status> +</kw> +<msg timestamp="20210602 14:11:44.406" level="INFO">${objectIdsList} = [107896, 107897, 107898, 107899, 107900, 107901, 107902, 107903, 107904, 107905]</msg> +<status status="PASS" starttime="20210602 14:11:44.392" endtime="20210602 14:11:44.406"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN"</arg> +<arg>Append To List</arg> +<arg>${sourceList}</arg> +<arg>${objectList}</arg> +<arg>ELSE IF</arg> +<arg>"${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN"</arg> +<arg>Append To List</arg> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +<arg>ELSE</arg> +<arg>Append To List</arg> +<arg>${filterList}</arg> +<arg>${objectList}</arg> +</arguments> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${destinationList}</arg> +<arg>${objectList}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.407" endtime="20210602 14:11:44.407"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.406" endtime="20210602 14:11:44.408"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:43.728" endtime="20210602 14:11:44.408"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.360" endtime="20210602 14:11:44.408"></status> +</kw> +<msg timestamp="20210602 14:11:44.408" level="INFO">${objectIds} = [107896, 107897, 107898, 107899, 107900, 107901, 107902, 107903, 107904, 107905]</msg> +<msg timestamp="20210602 14:11:44.408" level="INFO">${sourceList} = [{'objectId': 107896, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}, {'objectId': 107898, 'protocolField': 'TSG_SECURITY_SOURCE_LOCATION'}, {'objectId': 107899, 'protocolField': 'TSG_FILED_GTP_IMSI'}, ...</msg> +<msg timestamp="20210602 14:11:44.409" level="INFO">${destinationList} = [{'objectId': 107903, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107904, 'protocolField': 'TSG_SECURITY_DESTINATION_LOCATION'}, {'objectId': 107905, 'protocolField': 'TSG_SECURITY...</msg> +<msg timestamp="20210602 14:11:44.409" level="INFO">${filterList} = []</msg> +<status status="PASS" starttime="20210602 14:11:38.356" endtime="20210602 14:11:44.409"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${sourceList}</arg> +</arguments> +<assign> +<var>${sourceList}</var> +</assign> +<msg timestamp="20210602 14:11:44.410" level="INFO">${sourceList} = [{"objectId": 107896, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}, {"objectId": 107898, "protocolField": "TSG_SECURITY_SOURCE_LOCATION"}, {"objectId": 107899, "protocolField": "TSG_FILED_GTP_IMSI"}, ...</msg> +<status status="PASS" starttime="20210602 14:11:44.409" endtime="20210602 14:11:44.410"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${destinationList}</arg> +</arguments> +<assign> +<var>${destinationList}</var> +</assign> +<msg timestamp="20210602 14:11:44.410" level="INFO">${destinationList} = [{"objectId": 107903, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}, {"objectId": 107904, "protocolField": "TSG_SECURITY_DESTINATION_LOCATION"}, {"objectId": 107905, "protocolField": "TSG_SECURITY...</msg> +<status status="PASS" starttime="20210602 14:11:44.410" endtime="20210602 14:11:44.411"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${filterList}</arg> +</arguments> +<assign> +<var>${filterList}</var> +</assign> +<msg timestamp="20210602 14:11:44.411" level="INFO">${filterList} = []</msg> +<status status="PASS" starttime="20210602 14:11:44.411" endtime="20210602 14:11:44.411"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"source": null</arg> +<arg>"source":${sourceList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:44.412" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:44.412" endtime="20210602 14:11:44.412"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"destination": null</arg> +<arg>"destination":${destinationList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:44.414" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:44.413" endtime="20210602 14:11:44.414"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"filterList": null</arg> +<arg>"filterList":${filterList}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:44.415" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:44.415" endtime="20210602 14:11:44.415"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>处理策略数据:</arg> +<arg>"opAction": "add"</arg> +<arg>"returnData": 1</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"action": "allow"</arg> +<arg>"userTags": ""</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doLog": 1</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"effectiveRange":</arg> +<arg>"userRegion":</arg> +<arg>"appIdObjects":</arg> +<arg>"appSelectorObjects":</arg> +<arg>"isValid": 1</arg> +<arg>"scheduleId":</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.416" endtime="20210602 14:11:44.416"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>opAction</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${opAction}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>opAction</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.417" endtime="20210602 14:11:44.417"></status> +</kw> +<msg timestamp="20210602 14:11:44.417" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.417" level="INFO">${opAction} = add</msg> +<status status="PASS" starttime="20210602 14:11:44.416" endtime="20210602 14:11:44.418"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${opAction}" != "${EMPTY}"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"opAction": "${opAction}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"opAction": "add"</arg> +<arg>"opAction": "${opAction}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.419" endtime="20210602 14:11:44.419"></status> +</kw> +<msg timestamp="20210602 14:11:44.419" level="INFO">${policyJson} = {"opAction": "add", "returnData": 1, "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "...</msg> +<status status="PASS" starttime="20210602 14:11:44.418" endtime="20210602 14:11:44.419"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${returnData}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>returnData</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.420" endtime="20210602 14:11:44.420"></status> +</kw> +<msg timestamp="20210602 14:11:44.420" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.421" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.419" endtime="20210602 14:11:44.421"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${returnData}" != "${EMPTY}"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"returnData": 1</arg> +<arg>"returnData": "${returnData}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"returnData": 1</arg> +<arg>"returnData": "${returnData}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.421" endtime="20210602 14:11:44.422"></status> +</kw> +<msg timestamp="20210602 14:11:44.422" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotest", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest",...</msg> +<status status="PASS" starttime="20210602 14:11:44.421" endtime="20210602 14:11:44.422"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyName</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyName}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyName</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.423" endtime="20210602 14:11:44.423"></status> +</kw> +<msg timestamp="20210602 14:11:44.423" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.424" level="INFO">${policyName} = autotestintercept</msg> +<status status="PASS" starttime="20210602 14:11:44.423" endtime="20210602 14:11:44.424"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyName}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${policyName}"</arg> +<arg>ELSE</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${testName}"</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyName": "autotest"</arg> +<arg>"policyName": "${policyName}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.425" endtime="20210602 14:11:44.425"></status> +</kw> +<msg timestamp="20210602 14:11:44.425" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:44.424" endtime="20210602 14:11:44.425"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyType</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyType}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyType</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.426" endtime="20210602 14:11:44.426"></status> +</kw> +<msg timestamp="20210602 14:11:44.427" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.427" level="INFO">${policyType} = tsg_security</msg> +<status status="PASS" starttime="20210602 14:11:44.426" endtime="20210602 14:11:44.427"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyType}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"policyType": "${policyType}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyType": "tsg_security"</arg> +<arg>"policyType": "${policyType}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.428" endtime="20210602 14:11:44.428"></status> +</kw> +<msg timestamp="20210602 14:11:44.428" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "allow", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "a...</msg> +<status status="PASS" starttime="20210602 14:11:44.427" endtime="20210602 14:11:44.429"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>action</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${action}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>action</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.429" endtime="20210602 14:11:44.430"></status> +</kw> +<msg timestamp="20210602 14:11:44.430" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.430" level="INFO">${action} = intercept</msg> +<status status="PASS" starttime="20210602 14:11:44.429" endtime="20210602 14:11:44.430"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${action}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"action": "allow"</arg> +<arg>"action": "${action}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"action": "allow"</arg> +<arg>"action": "${action}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.431" endtime="20210602 14:11:44.431"></status> +</kw> +<msg timestamp="20210602 14:11:44.432" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.430" endtime="20210602 14:11:44.432"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>method</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${method}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>method</arg> +</arguments> +<msg timestamp="20210602 14:11:44.433" level="FAIL">Dictionary does not contain key 'method'.</msg> +<status status="FAIL" starttime="20210602 14:11:44.432" endtime="20210602 14:11:44.433"></status> +</kw> +<msg timestamp="20210602 14:11:44.433" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:44.433" level="INFO">${method} = Dictionary does not contain key 'method'.</msg> +<status status="PASS" starttime="20210602 14:11:44.432" endtime="20210602 14:11:44.433"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>userTags</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${userTags}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>userTags</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.434" endtime="20210602 14:11:44.434"></status> +</kw> +<msg timestamp="20210602 14:11:44.435" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.435" level="INFO">${userTags} = </msg> +<status status="PASS" starttime="20210602 14:11:44.434" endtime="20210602 14:11:44.435"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${userTags}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"userTags": null</arg> +<arg>"userTags": ${userTags}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userTags": null</arg> +<arg>"userTags": ${userTags}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.436" endtime="20210602 14:11:44.436"></status> +</kw> +<msg timestamp="20210602 14:11:44.436" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.435" endtime="20210602 14:11:44.437"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>doBlacklist</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${doBlacklist}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>doBlacklist</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.437" endtime="20210602 14:11:44.438"></status> +</kw> +<msg timestamp="20210602 14:11:44.438" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.438" level="INFO">${doBlacklist} = 0</msg> +<status status="PASS" starttime="20210602 14:11:44.437" endtime="20210602 14:11:44.438"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${doBlacklist}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doBlacklist": ${doBlacklist}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"doBlacklist": 0</arg> +<arg>"doBlacklist": ${doBlacklist}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.439" endtime="20210602 14:11:44.439"></status> +</kw> +<msg timestamp="20210602 14:11:44.439" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.438" endtime="20210602 14:11:44.440"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>doLog</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${doLog}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>doLog</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.440" endtime="20210602 14:11:44.441"></status> +</kw> +<msg timestamp="20210602 14:11:44.441" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.441" level="INFO">${doLog} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.440" endtime="20210602 14:11:44.441"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${doLog}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"doLog": 1</arg> +<arg>"doLog": ${doLog}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"doLog": 1</arg> +<arg>"doLog": ${doLog}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.442" endtime="20210602 14:11:44.442"></status> +</kw> +<msg timestamp="20210602 14:11:44.443" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.441" endtime="20210602 14:11:44.443"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>policyDesc</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${policyDesc}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>policyDesc</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.443" endtime="20210602 14:11:44.444"></status> +</kw> +<msg timestamp="20210602 14:11:44.444" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.444" level="INFO">${policyDesc} = autotest</msg> +<status status="PASS" starttime="20210602 14:11:44.443" endtime="20210602 14:11:44.444"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${policyDesc}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"policyDesc": "${policyDesc}"</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"policyDesc": "autotest"</arg> +<arg>"policyDesc": "${policyDesc}"</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.445" endtime="20210602 14:11:44.445"></status> +</kw> +<msg timestamp="20210602 14:11:44.446" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.445" endtime="20210602 14:11:44.446"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>effectiveRange</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${effectiveRange}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>effectiveRange</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.446" endtime="20210602 14:11:44.447"></status> +</kw> +<msg timestamp="20210602 14:11:44.447" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.447" level="INFO">${effectiveRange} = None</msg> +<status status="PASS" starttime="20210602 14:11:44.446" endtime="20210602 14:11:44.447"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${effectiveRange}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": ${effectiveRange}</arg> +<arg>ELSE</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": {}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"effectiveRange": null</arg> +<arg>"effectiveRange": {}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.448" endtime="20210602 14:11:44.449"></status> +</kw> +<msg timestamp="20210602 14:11:44.449" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.448" endtime="20210602 14:11:44.449"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>userRegion</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${userRegion}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>userRegion</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.450" endtime="20210602 14:11:44.450"></status> +</kw> +<msg timestamp="20210602 14:11:44.450" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.450" level="INFO">${userRegion} = None</msg> +<status status="PASS" starttime="20210602 14:11:44.449" endtime="20210602 14:11:44.450"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>code</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${code}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>code</arg> +</arguments> +<msg timestamp="20210602 14:11:44.451" level="FAIL">Dictionary does not contain key 'code'.</msg> +<status status="FAIL" starttime="20210602 14:11:44.451" endtime="20210602 14:11:44.452"></status> +</kw> +<msg timestamp="20210602 14:11:44.452" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:44.452" level="INFO">${code} = Dictionary does not contain key 'code'.</msg> +<status status="PASS" starttime="20210602 14:11:44.451" endtime="20210602 14:11:44.452"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>message</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${message}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>message</arg> +</arguments> +<msg timestamp="20210602 14:11:44.453" level="FAIL">Dictionary does not contain key 'message'.</msg> +<status status="FAIL" starttime="20210602 14:11:44.453" endtime="20210602 14:11:44.453"></status> +</kw> +<msg timestamp="20210602 14:11:44.454" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:44.454" level="INFO">${message} = Dictionary does not contain key 'message'.</msg> +<status status="PASS" starttime="20210602 14:11:44.452" endtime="20210602 14:11:44.454"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>html_profile</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${html_profile}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>html_profile</arg> +</arguments> +<msg timestamp="20210602 14:11:44.455" level="FAIL">Dictionary does not contain key 'html_profile'.</msg> +<status status="FAIL" starttime="20210602 14:11:44.455" endtime="20210602 14:11:44.455"></status> +</kw> +<msg timestamp="20210602 14:11:44.456" level="INFO">${return} = FAIL</msg> +<msg timestamp="20210602 14:11:44.456" level="INFO">${html_profile} = Dictionary does not contain key 'html_profile'.</msg> +<status status="PASS" starttime="20210602 14:11:44.454" endtime="20210602 14:11:44.456"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${html_profile}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${html_profile}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${message}</arg> +</arguments> +<assign> +<var>${message}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${message}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.457" endtime="20210602 14:11:44.457"></status> +</kw> +<msg timestamp="20210602 14:11:44.458" level="INFO">${message} = Dictionary does not contain key 'message'.</msg> +<status status="PASS" starttime="20210602 14:11:44.456" endtime="20210602 14:11:44.458"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${html_profile}" != "None"</arg> +<arg>Set Variable</arg> +<arg>html_profile</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>message</arg> +</arguments> +<assign> +<var>${messageKey}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>message</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.459" endtime="20210602 14:11:44.459"></status> +</kw> +<msg timestamp="20210602 14:11:44.459" level="INFO">${messageKey} = message</msg> +<status status="PASS" starttime="20210602 14:11:44.458" endtime="20210602 14:11:44.460"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>keyring</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${keyring}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>keyring</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.460" endtime="20210602 14:11:44.461"></status> +</kw> +<msg timestamp="20210602 14:11:44.461" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.461" level="INFO">${keyring} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.460" endtime="20210602 14:11:44.461"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${keyring}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${keyring}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${keyring}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${keyring}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.462" endtime="20210602 14:11:44.463"></status> +</kw> +<msg timestamp="20210602 14:11:44.463" level="INFO">${keyring} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.462" endtime="20210602 14:11:44.463"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>decryption</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${decryption}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>decryption</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.464" endtime="20210602 14:11:44.464"></status> +</kw> +<msg timestamp="20210602 14:11:44.465" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.465" level="INFO">${decryption} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.464" endtime="20210602 14:11:44.465"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${decryption}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${decryption}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${decryption}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${decryption}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.466" endtime="20210602 14:11:44.466"></status> +</kw> +<msg timestamp="20210602 14:11:44.466" level="INFO">${decryption} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.465" endtime="20210602 14:11:44.467"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>decrypt_mirror</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${decrypt_mirror}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>decrypt_mirror</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.467" endtime="20210602 14:11:44.468"></status> +</kw> +<msg timestamp="20210602 14:11:44.468" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.468" level="INFO">${decrypt_mirror} = {'enable': 1, 'mirror_profile': 493}</msg> +<status status="PASS" starttime="20210602 14:11:44.467" endtime="20210602 14:11:44.468"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${decrypt_mirror}" != "None"</arg> +<arg>Set Variable</arg> +<arg>${decrypt_mirror}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>""</arg> +</arguments> +<assign> +<var>${decrypt_mirror}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${decrypt_mirror}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.469" endtime="20210602 14:11:44.470"></status> +</kw> +<msg timestamp="20210602 14:11:44.470" level="INFO">${decrypt_mirror} = {'enable': 1, 'mirror_profile': 493}</msg> +<status status="PASS" starttime="20210602 14:11:44.469" endtime="20210602 14:11:44.470"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${decrypt_mirror}</arg> +</arguments> +<assign> +<var>${decrypt_mirror}</var> +</assign> +<msg timestamp="20210602 14:11:44.471" level="INFO">${decrypt_mirror} = {"enable": 1, "mirror_profile": 493}</msg> +<status status="PASS" starttime="20210602 14:11:44.470" endtime="20210602 14:11:44.471"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>appIdObjects</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${appIdObjects}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>appIdObjects</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.472" endtime="20210602 14:11:44.472"></status> +</kw> +<msg timestamp="20210602 14:11:44.472" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.472" level="INFO">${appIdObjects} = ['http', 'ssl']</msg> +<status status="PASS" starttime="20210602 14:11:44.471" endtime="20210602 14:11:44.473"></status> +</kw> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${appIdObjectIds}</var> +</assign> +<msg timestamp="20210602 14:11:44.473" level="INFO">${appIdObjectIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:44.473" endtime="20210602 14:11:44.473"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>userRegionStr由:动作,协议,动作参数等决定,待完成;userregion在allow,monitor动作时多个协议为空;deny,多个协议时为子动作;Intercept,多个协议为空;http为,ssl为,判断appid对象的个数。</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.474" endtime="20210602 14:11:44.474"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<assign> +<var>${userRegionStr}</var> +</assign> +<msg timestamp="20210602 14:11:44.475" level="INFO">${userRegionStr} = </msg> +<status status="PASS" starttime="20210602 14:11:44.474" endtime="20210602 14:11:44.475"></status> +</kw> +<kw name="${key} IN [ @{appIdObjects} ]" type="for"> +<kw name="${key} = http" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>${key}</arg> +</arguments> +<assign> +<var>${appObjId}</var> +</assign> +<msg timestamp="20210602 14:11:44.476" level="INFO">${appObjId} = 75744</msg> +<status status="PASS" starttime="20210602 14:11:44.476" endtime="20210602 14:11:44.476"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${appIdObjectIds}</arg> +<arg>${appObjId}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.477" endtime="20210602 14:11:44.477"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${method}" == "block" or "${method}" == "alert"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"${key}","method": "${method}","code":${code},"${messageKey}":${message}}</arg> +<arg>ELSE IF</arg> +<arg>"${action}" == "deny"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"${key}","method": "${method}"}</arg> +<arg>ELSE IF</arg> +<arg>"${action}" == "intercept" and "${key}" == "ssl"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"SSL","keyring": ${keyring},"decryption":${decryption},"decrypt_mirror":${decrypt_mirror}}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"HTTP"}</arg> +</arguments> +<assign> +<var>${userRegionStr}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"protocol":"HTTP"}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.478" endtime="20210602 14:11:44.478"></status> +</kw> +<msg timestamp="20210602 14:11:44.479" level="INFO">${userRegionStr} = {"protocol":"HTTP"}</msg> +<status status="PASS" starttime="20210602 14:11:44.477" endtime="20210602 14:11:44.479"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.476" endtime="20210602 14:11:44.479"></status> +</kw> +<kw name="${key} = ssl" type="foritem"> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${objprotol}</arg> +<arg>${key}</arg> +</arguments> +<assign> +<var>${appObjId}</var> +</assign> +<msg timestamp="20210602 14:11:44.480" level="INFO">${appObjId} = 77159</msg> +<status status="PASS" starttime="20210602 14:11:44.479" endtime="20210602 14:11:44.480"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${appIdObjectIds}</arg> +<arg>${appObjId}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.480" endtime="20210602 14:11:44.480"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${method}" == "block" or "${method}" == "alert"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"${key}","method": "${method}","code":${code},"${messageKey}":${message}}</arg> +<arg>ELSE IF</arg> +<arg>"${action}" == "deny"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"${key}","method": "${method}"}</arg> +<arg>ELSE IF</arg> +<arg>"${action}" == "intercept" and "${key}" == "ssl"</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"SSL","keyring": ${keyring},"decryption":${decryption},"decrypt_mirror":${decrypt_mirror}}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>{"protocol":"HTTP"}</arg> +</arguments> +<assign> +<var>${userRegionStr}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"protocol":"SSL","keyring": ${keyring},"decryption":${decryption},"decrypt_mirror":${decrypt_mirror}}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.481" endtime="20210602 14:11:44.482"></status> +</kw> +<msg timestamp="20210602 14:11:44.482" level="INFO">${userRegionStr} = {"protocol":"SSL","keyring": 1,"decryption":1,"decrypt_mirror":{"enable": 1, "mirror_profile": 493}}</msg> +<status status="PASS" starttime="20210602 14:11:44.481" endtime="20210602 14:11:44.482"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.479" endtime="20210602 14:11:44.482"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:44.475" endtime="20210602 14:11:44.482"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${appIdObjects}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"appIdObjects": [null]</arg> +<arg>"appIdObjects": ${appIdObjectIds}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"appIdObjects": [null]</arg> +<arg>"appIdObjects": ${appIdObjectIds}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.483" endtime="20210602 14:11:44.484"></status> +</kw> +<msg timestamp="20210602 14:11:44.484" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.483" endtime="20210602 14:11:44.484"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userRegion": null</arg> +<arg>"userRegion": ${userRegionStr}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:44.485" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.484" endtime="20210602 14:11:44.485"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"userRegion": null</arg> +<arg>"userRegion": {}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:44.486" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.485" endtime="20210602 14:11:44.486"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>appSelectorObjects</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>appSelectorObjects</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.486" endtime="20210602 14:11:44.487"></status> +</kw> +<msg timestamp="20210602 14:11:44.487" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.487" level="INFO">${appSelectorObjects} = None</msg> +<status status="PASS" starttime="20210602 14:11:44.486" endtime="20210602 14:11:44.487"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${appSelectorObjects}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${appSelectorObjects}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.488" endtime="20210602 14:11:44.489"></status> +</kw> +<msg timestamp="20210602 14:11:44.489" level="INFO">${appSelectorObjects} = None</msg> +<status status="PASS" starttime="20210602 14:11:44.488" endtime="20210602 14:11:44.489"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${appSelectorObjects}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"appSelectorObjects": "add"</arg> +<arg>"appSelectorObjects": ${appSelectorObjects}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.490" endtime="20210602 14:11:44.490"></status> +</kw> +<msg timestamp="20210602 14:11:44.491" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.490" endtime="20210602 14:11:44.491"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>isValid</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${isValid}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>isValid</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.492" endtime="20210602 14:11:44.492"></status> +</kw> +<msg timestamp="20210602 14:11:44.492" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.492" level="INFO">${isValid} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.491" endtime="20210602 14:11:44.493"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${isValid}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${appSelectorObjects}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${isValid}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.493" endtime="20210602 14:11:44.494"></status> +</kw> +<msg timestamp="20210602 14:11:44.494" level="INFO">${appSelectorObjects} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.493" endtime="20210602 14:11:44.494"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${isValid}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"isValid": 1</arg> +<arg>"isValid": ${isValid}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>"isValid": 1</arg> +<arg>"isValid": ${isValid}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.495" endtime="20210602 14:11:44.496"></status> +</kw> +<msg timestamp="20210602 14:11:44.496" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.495" endtime="20210602 14:11:44.496"></status> +</kw> +<kw name="Run Keyword And Ignore Error" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments and ignores possible error.</doc> +<arguments> +<arg>Get From Dictionary</arg> +<arg>${policyData}</arg> +<arg>scheduleId</arg> +</arguments> +<assign> +<var>${return}</var> +<var>${scheduleId}</var> +</assign> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyData}</arg> +<arg>scheduleId</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.497" endtime="20210602 14:11:44.498"></status> +</kw> +<msg timestamp="20210602 14:11:44.498" level="INFO">${return} = PASS</msg> +<msg timestamp="20210602 14:11:44.498" level="INFO">${scheduleId} = None</msg> +<status status="PASS" starttime="20210602 14:11:44.497" endtime="20210602 14:11:44.498"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL"</arg> +<arg>Set Variable</arg> +<arg>${scheduleId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${EMPTY}</arg> +</arguments> +<assign> +<var>${scheduleId}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${scheduleId}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.499" endtime="20210602 14:11:44.499"></status> +</kw> +<msg timestamp="20210602 14:11:44.500" level="INFO">${scheduleId} = None</msg> +<status status="PASS" starttime="20210602 14:11:44.499" endtime="20210602 14:11:44.500"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${return}"!="FAIL" and "${scheduleId}" != "None"</arg> +<arg>Replace String</arg> +<arg>${policyJson}</arg> +<arg>"scheduleId": [null]</arg> +<arg>"scheduleId": ${scheduleId}</arg> +<arg>ELSE</arg> +<arg>Set Variable</arg> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.501" endtime="20210602 14:11:44.502"></status> +</kw> +<msg timestamp="20210602 14:11:44.502" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.500" endtime="20210602 14:11:44.503"></status> +</kw> +<kw name="Replace String" library="String"> +<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc> +<arguments> +<arg>${policyJson}</arg> +<arg>[null]</arg> +<arg>[]</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:44.504" level="INFO">${policyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.503" endtime="20210602 14:11:44.504"></status> +</kw> +<kw name="Loads" library="json"> +<doc>Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance +containing a JSON document) to a Python object.</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyJson}</var> +</assign> +<msg timestamp="20210602 14:11:44.504" level="INFO">${policyJson} = {'opAction': 'add', 'returnData': '1', 'policyList': {'policyName': 'autotestintercept', 'policyType': 'tsg_security', 'action': 'intercept', 'userTags': '', 'doBlacklist': 0, 'doLog': 1, 'policyDesc'...</msg> +<status status="PASS" starttime="20210602 14:11:44.504" endtime="20210602 14:11:44.505"></status> +</kw> +<kw name="CreatePolilcy" library="policy"> +<doc>场景策略:secuiryt、proxy策略 +数据分离,测试数据来自对应的yaml文件 +参数 ${policyList}</doc> +<arguments> +<arg>${policyJson}</arg> +</arguments> +<assign> +<var>${policyIds}</var> +</assign> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数</arg> +<arg>${filepath}读取文件路径</arg> +<arg>${filename}读取文件名</arg> +<arg>${keywords}获取数据关键字</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.507" endtime="20210602 14:11:44.508"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>创建策略</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:44.508" endtime="20210602 14:11:44.508"></status> +</kw> +<kw name="Get From Dictionary" library="Collections"> +<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc> +<arguments> +<arg>${policyList}</arg> +<arg>returnData</arg> +</arguments> +<assign> +<var>${returnData}</var> +</assign> +<msg timestamp="20210602 14:11:44.509" level="INFO">${returnData} = 1</msg> +<status status="PASS" starttime="20210602 14:11:44.508" endtime="20210602 14:11:44.509"></status> +</kw> +<kw name="Dumps" library="json"> +<doc>Serialize ``obj`` to a JSON formatted ``str``.</doc> +<arguments> +<arg>${policyList}</arg> +</arguments> +<assign> +<var>${bodyJson}</var> +</assign> +<msg timestamp="20210602 14:11:44.510" level="INFO">${bodyJson} = {"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc"...</msg> +<status status="PASS" starttime="20210602 14:11:44.509" endtime="20210602 14:11:44.510"></status> +</kw> +<kw name="BasePostRequestForV2" library="common"> +<arguments> +<arg>${policyUrl}</arg> +<arg>${bodyJson}</arg> +<arg>${version2}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>{"Authorization":"${token}","Content-Type":"application/json"}</arg> +</arguments> +<assign> +<var>${headers}</var> +</assign> +<msg timestamp="20210602 14:11:44.511" level="INFO">${headers} = {"Authorization":"e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&","Content-Type":"application/json"}</msg> +<status status="PASS" starttime="20210602 14:11:44.511" endtime="20210602 14:11:44.511"></status> +</kw> +<kw name="Create Session" library="RequestsLibrary"> +<doc>Create Session: create a HTTP session to a server</doc> +<arguments> +<arg>api</arg> +<arg>http://${host}:${port}/${apiVersion}</arg> +<arg>${headers}</arg> +</arguments> +<msg timestamp="20210602 14:11:44.512" level="INFO">Creating Session using : alias=api, url=http://192.168.44.72:8080/v2, headers={'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg> +<status status="PASS" starttime="20210602 14:11:44.511" endtime="20210602 14:11:44.513"></status> +</kw> +<kw name="Post Request" library="RequestsLibrary"> +<doc>Send a POST request on the session object found using the +given `alias`</doc> +<arguments> +<arg>api</arg> +<arg>${requestUri}</arg> +<arg>data=${data}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:44.513" level="INFO">POST Request using : uri=/policy/compile, params=None, files=None, allow_redirects=True, timeout=None +headers={'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'e7e248dc-6514-4437-aad8-c80d27ac5ea1&425&', 'Content-Type': 'application/json'} +data={"opAction": "add", "returnData": "1", "policyList": {"policyName": "autotestintercept", "policyType": "tsg_security", "action": "intercept", "userTags": "", "doBlacklist": 0, "doLog": 1, "policyDesc": "autotest", "effectiveRange": {}, "userRegion": {"protocol": "SSL", "keyring": 1, "decryption": 1, "decrypt_mirror": {"enable": 1, "mirror_profile": 493}}, "source": [{"objectId": 107896, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}, {"objectId": 107898, "protocolField": "TSG_SECURITY_SOURCE_LOCATION"}, {"objectId": 107899, "protocolField": "TSG_FILED_GTP_IMSI"}, {"objectId": 107900, "protocolField": "TSG_FILED_GTP_PHONE_NUMBER"}, {"objectId": 107901, "protocolField": "TSG_FILED_GTP_APN"}, {"objectId": 107902, "protocolField": "TSG_SECURITY_SOURCE_ADDR"}], "destination": [{"objectId": 107903, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}, {"objectId": 107904, "protocolField": "TSG_SECURITY_DESTINATION_LOCATION"}, {"objectId": 107905, "protocolField": "TSG_SECURITY_DESTINATION_ADDR"}], "filterList": [], "appIdObjects": [75744, 77159], "appSelectorObjects": [], "isValid": 1, "scheduleId": []}} +json=None</msg> +<msg timestamp="20210602 14:11:45.180" level="INFO">${response} = <Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:44.513" endtime="20210602 14:11:45.181"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>return data =${response}</arg> +</arguments> +<msg timestamp="20210602 14:11:45.184" level="INFO">return data =<Response [200]></msg> +<status status="PASS" starttime="20210602 14:11:45.183" endtime="20210602 14:11:45.185"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${response.status_code}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:45.188" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:45.187" endtime="20210602 14:11:45.189"></status> +</kw> +<kw name="To Json" library="RequestsLibrary"> +<doc>Convert a string to a JSON object</doc> +<arguments> +<arg>${response.content}</arg> +</arguments> +<assign> +<var>${response}</var> +</assign> +<msg timestamp="20210602 14:11:45.192" level="INFO">To JSON using : content={ + "code" : 200, + "msg" : "Success", + "data" : { + "policyList" : [ { + "action" : "intercept", + "appIdObjects" : [ 75744, 77159 ], + "appSelectorObjects" : [ ], + "destination" : [ { + "objectId" : 107903, + "protocolField" : "TSG_SECURITY_DESTINATION_ADDR" + }, { + "objectId" : 107904, + "protocolField" : "TSG_SECURITY_DESTINATION_LOCATION" + }, { + "objectId" : 107905, + "protocolField" : "TSG_SECURITY_DESTINATION_ADDR" + } ], + "doLog" : 1, + "effectiveRange" : { }, + "evaluationLayer" : "any_layer", + "evaluationOrder" : 0.0, + "evaluationStage" : 0, + "filterList" : [ ], + "isInitialize" : 0, + "isValid" : 1, + "opTime" : "2021-06-02 14:11:44", + "opUser" : 425, + "policyDesc" : "autotest", + "policyId" : 52342, + "policyName" : "autotestintercept", + "policyType" : "tsg_security", + "scheduleId" : [ ], + "source" : [ { + "objectId" : 107896, + "protocolField" : "TSG_SECURITY_SOURCE_ADDR" + }, { + "objectId" : 107898, + "protocolField" : "TSG_SECURITY_SOURCE_LOCATION" + }, { + "objectId" : 107899, + "protocolField" : "TSG_FILED_GTP_IMSI" + }, { + "objectId" : 107900, + "protocolField" : "TSG_FILED_GTP_PHONE_NUMBER" + }, { + "objectId" : 107901, + "protocolField" : "TSG_FILED_GTP_APN" + }, { + "objectId" : 107902, + "protocolField" : "TSG_SECURITY_SOURCE_ADDR" + } ], + "userRegion" : { + "protocol" : "SSL", + "keyring" : 1, + "decryption" : 1, + "decrypt_mirror" : { + "enable" : 1, + "mirror_profile" : 493 + } + }, + "userTags" : "" + } ] + }, + "success" : true +} </msg> +<msg timestamp="20210602 14:11:45.193" level="INFO">To JSON using : pretty_print=False </msg> +<msg timestamp="20210602 14:11:45.193" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'intercept', 'appIdObjects': [75744, 77159], 'appSelectorObjects': [], 'destination': [{'objectId': 107903, 'protocolField': 'TSG_SEC...</msg> +<status status="PASS" starttime="20210602 14:11:45.191" endtime="20210602 14:11:45.194"></status> +</kw> +<msg timestamp="20210602 14:11:45.195" level="INFO">${response} = {'code': 200, 'msg': 'Success', 'data': {'policyList': [{'action': 'intercept', 'appIdObjects': [75744, 77159], 'appSelectorObjects': [], 'destination': [{'objectId': 107903, 'protocolField': 'TSG_SEC...</msg> +<status status="PASS" starttime="20210602 14:11:44.510" endtime="20210602 14:11:45.195"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>"${returnData}" == "1"</arg> +<arg>GetPolicyIds</arg> +<arg>${response}</arg> +<arg>ELSE</arg> +<arg>Create List</arg> +</arguments> +<assign> +<var>${policyIds}</var> +</assign> +<kw name="GetPolicyIds" library="process_policy_body"> +<doc>获取结果中的策略类型及ID +策略接口返回json串 +返回结果格式:[{'policyType': 'tsg_security', 'policyIds': [108480]}, {'policyType': 'tsg_security', 'policyIds': [108481]}, {'policyType': 'tsg_security', 'policyIds': [108482]}, {'policyType': 'tsg_security', 'policyIds': [108483]}, {'policyType': 'tsg_security', 'policyIds': [108484]}]</doc> +<arguments> +<arg>${response}</arg> +</arguments> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<assign> +<var>${policyIds}</var> +</assign> +<msg timestamp="20210602 14:11:45.199" level="INFO">${policyIds} = []</msg> +<status status="PASS" starttime="20210602 14:11:45.199" endtime="20210602 14:11:45.200"></status> +</kw> +<kw name="${policy} IN [ @{value['data']['policyList']} ]" type="for"> +<kw name="${policy} = {'action': 'intercept', 'appIdObjects': [75744, 77159], 'appSelectorObjects': [], 'destination': [{'objectId': 107903, 'protocolField': 'TSG_SECURITY_DESTINATION_ADDR'}, {'objectId': 107904, 'protocol..." type="foritem"> +<kw name="Create List" library="BuiltIn"> +<doc>Returns a list containing given items.</doc> +<arguments> +<arg>${policy['policyId']}</arg> +</arguments> +<assign> +<var>${policyIdList}</var> +</assign> +<msg timestamp="20210602 14:11:45.202" level="INFO">${policyIdList} = [52342]</msg> +<status status="PASS" starttime="20210602 14:11:45.201" endtime="20210602 14:11:45.202"></status> +</kw> +<kw name="Create Dictionary" library="BuiltIn"> +<doc>Creates and returns a dictionary based on the given ``items``.</doc> +<arguments> +<arg>policyType=${policy['policyType']}</arg> +<arg>policyIds=${policyIdList}</arg> +</arguments> +<assign> +<var>${policyObj}</var> +</assign> +<msg timestamp="20210602 14:11:45.204" level="INFO">${policyObj} = {'policyType': 'tsg_security', 'policyIds': [52342]}</msg> +<status status="PASS" starttime="20210602 14:11:45.203" endtime="20210602 14:11:45.204"></status> +</kw> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${policyIds}</arg> +<arg>${policyObj}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.205" endtime="20210602 14:11:45.205"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.201" endtime="20210602 14:11:45.206"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.200" endtime="20210602 14:11:45.206"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>${policyIds}</arg> +</arguments> +<msg timestamp="20210602 14:11:45.207" level="INFO">[{'policyType': 'tsg_security', 'policyIds': [52342]}]</msg> +<status status="PASS" starttime="20210602 14:11:45.206" endtime="20210602 14:11:45.207"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.198" endtime="20210602 14:11:45.208"></status> +</kw> +<msg timestamp="20210602 14:11:45.208" level="INFO">${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52342]}]</msg> +<status status="PASS" starttime="20210602 14:11:45.196" endtime="20210602 14:11:45.208"></status> +</kw> +<kw name="Set Variable" library="BuiltIn"> +<doc>Returns the given values which can then be assigned to a variables.</doc> +<arguments> +<arg>${response['code']}</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:45.209" level="INFO">${rescode} = 200</msg> +<status status="PASS" starttime="20210602 14:11:45.209" endtime="20210602 14:11:45.209"></status> +</kw> +<kw name="Should Be Equal As Strings" library="BuiltIn"> +<doc>Fails if objects are unequal after converting them to strings.</doc> +<arguments> +<arg>${rescode}</arg> +<arg>200</arg> +</arguments> +<msg timestamp="20210602 14:11:45.210" level="INFO">Argument types are: +<class 'int'> +<type 'unicode'></msg> +<status status="PASS" starttime="20210602 14:11:45.210" endtime="20210602 14:11:45.211"></status> +</kw> +<msg timestamp="20210602 14:11:45.211" level="INFO">${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52342]}]</msg> +<status status="PASS" starttime="20210602 14:11:44.507" endtime="20210602 14:11:45.211"></status> +</kw> +<msg timestamp="20210602 14:11:45.212" level="INFO">${objectId} = [107896, 107897, 107898, 107899, 107900, 107901, 107902, 107903, 107904, 107905]</msg> +<msg timestamp="20210602 14:11:45.212" level="INFO">${policyId} = [{'policyType': 'tsg_security', 'policyIds': [52342]}]</msg> +<status status="PASS" starttime="20210602 14:11:38.352" endtime="20210602 14:11:45.212"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${objectIds}</arg> +<arg>${objectId}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.225" endtime="20210602 14:11:45.225"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.226" endtime="20210602 14:11:45.226"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = 107896" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.227" endtime="20210602 14:11:45.227"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.226" endtime="20210602 14:11:45.227"></status> +</kw> +<kw name="${objdict} = 107897" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.228" endtime="20210602 14:11:45.228"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.227" endtime="20210602 14:11:45.228"></status> +</kw> +<kw name="${objdict} = 107898" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.228" endtime="20210602 14:11:45.229"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.228" endtime="20210602 14:11:45.229"></status> +</kw> +<kw name="${objdict} = 107899" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.230" endtime="20210602 14:11:45.230"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.229" endtime="20210602 14:11:45.230"></status> +</kw> +<kw name="${objdict} = 107900" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.231" endtime="20210602 14:11:45.231"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.230" endtime="20210602 14:11:45.232"></status> +</kw> +<kw name="${objdict} = 107901" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.232" endtime="20210602 14:11:45.232"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.232" endtime="20210602 14:11:45.233"></status> +</kw> +<kw name="${objdict} = 107902" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.233" endtime="20210602 14:11:45.234"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.233" endtime="20210602 14:11:45.234"></status> +</kw> +<kw name="${objdict} = 107903" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.234" endtime="20210602 14:11:45.235"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.234" endtime="20210602 14:11:45.235"></status> +</kw> +<kw name="${objdict} = 107904" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.235" endtime="20210602 14:11:45.236"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.235" endtime="20210602 14:11:45.236"></status> +</kw> +<kw name="${objdict} = 107905" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.236" endtime="20210602 14:11:45.237"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.236" endtime="20210602 14:11:45.237"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.226" endtime="20210602 14:11:45.237"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.224" endtime="20210602 14:11:45.237"></status> +</kw> +<kw name="AppendListToList" library="common"> +<doc>把${addList}逐个添加到${souceList},然后返回 ${souceList} +入参:${souceList} ${addList} +出:参${souceList}</doc> +<arguments> +<arg>${policyIds}</arg> +<arg>${policyId}</arg> +</arguments> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>参数${objids}拼接后的list;参数${objectIds}对象ids</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.248" endtime="20210602 14:11:45.248"></status> +</kw> +<kw name="Comment" library="BuiltIn"> +<doc>Displays the given messages in the log file as keyword arguments.</doc> +<arguments> +<arg>如果参数${objectIds}返回多个id则逐个添加</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.249" endtime="20210602 14:11:45.249"></status> +</kw> +<kw name="${objdict} IN [ @{addList} ]" type="for"> +<kw name="${objdict} = {'policyType': 'tsg_security', 'policyIds': [52342]}" type="foritem"> +<kw name="Append To List" library="Collections"> +<doc>Adds ``values`` to the end of ``list``.</doc> +<arguments> +<arg>${souceList}</arg> +<arg>${objdict}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.250" endtime="20210602 14:11:45.250"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.249" endtime="20210602 14:11:45.250"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.249" endtime="20210602 14:11:45.250"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.247" endtime="20210602 14:11:45.250"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:38.347" endtime="20210602 14:11:45.251"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:21.768" endtime="20210602 14:11:45.251"></status> +</kw> +<msg timestamp="20210602 14:11:45.251" level="INFO">${objectIds} = [107866, 107867, 107868, 107869, 107870, 107871, 107872, 107873, 107874, 107875, 107876, 107877, 107878, 107879, 107880, 107881, 107882, 107883, 107884, 107885, 107886, 107887, 107888, 107889, 107890,...</msg> +<msg timestamp="20210602 14:11:45.252" level="INFO">${policyIds} = [{'policyType': 'tsg_security', 'policyIds': [52340]}, {'policyType': 'tsg_security', 'policyIds': [52341]}, {'policyType': 'tsg_security', 'policyIds': [52342]}]</msg> +<status status="PASS" starttime="20210602 14:11:21.694" endtime="20210602 14:11:45.252"></status> +</kw> +<tags> +<tag>admission</tag> +<tag>basic</tag> +</tags> +<status status="PASS" starttime="20210602 14:11:21.692" endtime="20210602 14:11:45.252" critical="yes"></status> +</test> +<status status="PASS" starttime="20210602 14:11:21.591" endtime="20210602 14:11:45.253"></status> +</suite> +<status status="PASS" starttime="20210602 14:11:21.588" endtime="20210602 14:11:45.255"></status> +</suite> +<status status="PASS" starttime="20210602 14:11:21.585" endtime="20210602 14:11:45.257"></status> +</suite> +<status status="PASS" starttime="20210602 14:11:21.581" endtime="20210602 14:11:45.259"></status> +</suite> +<kw name="LogoutAndDelLocalIP" library="login_logout_switch" type="teardown"> +<tags> +<tag>adc_api</tag> +<tag>adc_log</tag> +<tag>adc_verify</tag> +<tag>tsg_adc</tag> +<tag>tsg_adc_wp</tag> +<tag>tsg_bf_api</tag> +<tag>tsg_device</tag> +</tags> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>'${loginType}' == 'api'</arg> +<arg>BifangLogoutAndDelLocalIP</arg> +<arg>ELSE IF</arg> +<arg>'${loginType}' != '${None}'</arg> +<arg>UiLogoutAndDelLocalIP</arg> +</arguments> +<kw name="BifangLogoutAndDelLocalIP" library="login_logout"> +<tags> +<tag>tsg_adc</tag> +<tag>tsg_bf_api</tag> +</tags> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>ApiLogoutAndDelLocalIP</arg> +</arguments> +<msg timestamp="20210602 14:11:45.262" level="INFO">ApiLogoutAndDelLocalIP</msg> +<status status="PASS" starttime="20210602 14:11:45.262" endtime="20210602 14:11:45.263"></status> +</kw> +<kw name="Log" library="BuiltIn"> +<doc>Logs the given message with the given level.</doc> +<arguments> +<arg>to_LogoutAndDelLocalIP_LogoutAndDelLocalIP</arg> +</arguments> +<msg timestamp="20210602 14:11:45.263" level="INFO">to_LogoutAndDelLocalIP_LogoutAndDelLocalIP</msg> +<status status="PASS" starttime="20210602 14:11:45.263" endtime="20210602 14:11:45.263"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${addTsgUIAPIFlag}==1</arg> +<arg>SecurityPolicyAllowTSGUIAPIDEL</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.264" endtime="20210602 14:11:45.264"></status> +</kw> +<kw name="Run Keyword If" library="BuiltIn"> +<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc> +<arguments> +<arg>${addTestClentIPFlag}==1</arg> +<arg>DelLocalIPObject</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.264" endtime="20210602 14:11:45.264"></status> +</kw> +<kw name="ApiLogout" library="login_logout"> +<tags> +<tag>tsg_adc</tag> +<tag>tsg_bf_api</tag> +</tags> +<kw name="Post" library="REST"> +<tags> +<tag>http</tag> +</tags> +<doc>*Sends a POST request to the endpoint.*</doc> +<arguments> +<arg>/${version}/user/logout</arg> +<arg>headers=${headers}</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.265" endtime="20210602 14:11:45.312"></status> +</kw> +<kw name="Object" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON object.*</doc> +<arguments> +<arg>response body</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.312" endtime="20210602 14:11:45.313"></status> +</kw> +<kw name="Integer" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON integer.*</doc> +<arguments> +<arg>$.code</arg> +<arg>200</arg> +</arguments> +<status status="PASS" starttime="20210602 14:11:45.313" endtime="20210602 14:11:45.359"></status> +</kw> +<kw name="Integer" library="REST"> +<tags> +<tag>assertions</tag> +</tags> +<doc>*Asserts the field as JSON integer.*</doc> +<arguments> +<arg>$.code</arg> +</arguments> +<assign> +<var>${rescode}</var> +</assign> +<msg timestamp="20210602 14:11:45.386" level="INFO">${rescode} = [200]</msg> +<status status="PASS" starttime="20210602 14:11:45.359" endtime="20210602 14:11:45.386"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.265" endtime="20210602 14:11:45.387"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.262" endtime="20210602 14:11:45.387"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.261" endtime="20210602 14:11:45.387"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:45.260" endtime="20210602 14:11:45.388"></status> +</kw> +<status status="PASS" starttime="20210602 14:11:19.695" endtime="20210602 14:11:45.388"></status> +</suite> +<statistics> +<total> +<stat pass="1" fail="0">Critical Tests</stat> +<stat pass="1" fail="0">All Tests</stat> +</total> +<tag> +<stat pass="1" fail="0">admission</stat> +<stat pass="1" fail="0">basic</stat> +</tag> +<suite> +<stat pass="1" fail="0" id="s1" name="Gap Tsg Api">Gap Tsg Api</stat> +<stat pass="1" fail="0" id="s1-s1" name="Case">Gap Tsg Api.Case</stat> +<stat pass="1" fail="0" id="s1-s1-s1" name="Security">Gap Tsg Api.Case.Security</stat> +<stat pass="1" fail="0" id="s1-s1-s1-s1" name="Http">Gap Tsg Api.Case.Security.Http</stat> +<stat pass="1" fail="0" id="s1-s1-s1-s1-s1" name="Demo">Gap Tsg Api.Case.Security.Http.Demo</stat> +</suite> +</statistics> +<errors> +<msg timestamp="20210602 14:11:21.687" level="ERROR">Error in file 'C:\Users\admin\Desktop\gap_tsg_api\gap_tsg_api\case\security\http\demo.robot': Resource file '..\..\..\keyword\common\verify.robot' does not exist.</msg> +</errors> +</robot> diff --git a/report.html b/report.html new file mode 100644 index 0000000..3e506f0 --- /dev/null +++ b/report.html @@ -0,0 +1,2431 @@ +<!DOCTYPE html> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<meta http-equiv="Pragma" content="no-cache"> +<meta http-equiv="Expires" content="-1"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta content="Robot Framework 3.1.2 (Python 3.6.8 on win32)" name="Generator"> +<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA=="> +<style media="all" type="text/css"> +/* Generic and misc styles */ +body { + font-family: Helvetica, sans-serif; + font-size: 0.8em; + color: black; + padding: 6px; + background: white; +} +table { + table-layout: fixed; + word-wrap: break-word; + empty-cells: show; + font-size: 1em; +} +th, td { + vertical-align: top; +} +br { + mso-data-placement: same-cell; /* maintain line breaks in Excel */ +} +hr { + background: #ccc; + height: 1px; + border: 0; +} +a, a:link, a:visited { + text-decoration: none; + color: #15c; +} +a > img { + border: 1px solid #15c !important; +} +a:hover, a:active { + text-decoration: underline; + color: #61c; +} +.parent-name { + font-size: 0.7em; + letter-spacing: -0.07em; +} +.message { + white-space: pre-wrap; +} +/* Headers */ +#header { + width: 65em; + height: 3em; + margin: 6px 0; +} +h1 { + float: left; + margin: 0 0 0.5em 0; + width: 75%; +} +h2 { + clear: left; +} +#generated { + float: right; + text-align: right; + font-size: 0.9em; + white-space: nowrap; +} +/* Documentation headers */ +.doc > h2 { + font-size: 1.2em; +} +.doc > h3 { + font-size: 1.1em; +} +.doc > h4 { + font-size: 1.0em; +} +/* Status text colors -- !important allows using them in links */ +.fail { + color: #f33 !important; + font-weight: bold; +} +.pass { + color: #393 !important; +} +.label { + padding: 2px 5px; + font-size: 0.75em; + letter-spacing: 1px; + white-space: nowrap; + color: black; + background-color: #ddd; + border-radius: 3px; +} +.label.debug, .label.trace, .label.error, .label.keyword { + letter-spacing: 0; +} +.label.error, .label.fail, .label.pass, .label.warn { + color: #fff !important; + font-weight: bold; +} +.label.error, .label.fail { + background-color: #d9534f; +} +.label.pass { + background-color: #5cb85c; +} +.label.warn { + background-color: #ec971f; +} +/* Top right header */ +#top-right-header { + position: fixed; + top: 0; + right: 0; + z-index: 1000; + width: 12em; + text-align: center; +} +#report-or-log-link a { + display: block; + background: black; + color: white; + text-decoration: none; + font-weight: bold; + letter-spacing: 0.1em; + padding: 0.3em 0; + border-bottom-left-radius: 4px; +} +#report-or-log-link a:hover { + color: #ddd; +} +#log-level-selector { + padding: 0.3em 0; + font-size: 0.9em; + border-bottom-left-radius: 4px; + background: #ddd; +} +/* Statistics table */ +.statistics { + width: 65em; + border-collapse: collapse; + empty-cells: show; + margin-bottom: 1em; +} +.statistics tr:hover { + background: #f4f4f4; + cursor: pointer; +} +.statistics th, .statistics td { + border: 1px solid #ccc; + padding: 0.1em 0.3em; +} +.statistics th { + background-color: #ddd; + padding: 0.2em 0.3em; +} +.statistics td { + vertical-align: middle; +} +.stats-col-stat { + width: 4.5em; + text-align: center; +} +.stats-col-elapsed { + width: 5.5em; + text-align: center; +} +.stats-col-graph { + width: 9em; +} +th.stats-col-graph:hover { + cursor: default; +} +.stat-name { + float: left; +} +.stat-name a, .stat-name span { + font-weight: bold; +} +.tag-links { + font-size: 0.9em; + float: right; + margin-top: 0.05em; +} +.tag-links span { + margin-left: 0.2em; +} +/* Statistics graph */ +.graph, .empty-graph { + border: 1px solid #ccc; + width: auto; + height: 7px; + padding: 0; + background: #f33; +} +.empty-graph { + background: #eee; +} +.pass-bar, .fail-bar { + float: left; + height: 100%; +} +.pass-bar { + background: #1d4; +} +/* Tablesorter - adapted from provided Blue Skin */ +.tablesorter-header { + background-image: url(data:image/gif;base64,R0lGODlhCwAJAIAAAH9/fwAAACH5BAEAAAEALAAAAAALAAkAAAIRjAOnBr3cnIr0WUjTrC9e9BQAOw==); + background-repeat: no-repeat; + background-position: center right; + cursor: pointer; +} +.tablesorter-header:hover { + background-color: #ccc; +} +.tablesorter-headerAsc { + background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlBWnFr3cnIr0WQOyBmvzp13CpxQAOw==); + background-color: #ccc !important; +} +.tablesorter-headerDesc { + background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlAWnBr3cnIr0WROyDmvzp13CpxQAOw==); + background-color: #ccc !important; +} +.sorter-false { + background-image: none; + cursor: default; +} +.sorter-false:hover { + background-color: #ddd; +} +</style> +<style media="all" type="text/css"> +/* Generic table styles */ +table { + margin: 0 1px; + background: white; +} +tr { + background: white; +} +th { + background: #ddd; + color: black; +} +/* Summary and total/tag/suite details */ +.details { + border: 1px solid #ccc; + border-collapse: collapse; + clear: both; + width: 65em; + margin-bottom: 1em; +} +.details th { + background: white; + width: 10em; + white-space: nowrap; + text-align: left; + vertical-align: top; + padding: 0.2em 0.4em; +} +.details td { + vertical-align: top; + padding: 0.2em 0.4em; +} +.selector th, .selector td { + padding-top: 0.5em; + padding-bottom: 0.5em; + white-space: normal; +} +.first-selector th, .first-selector td{ + padding-bottom: 0.2em; +} +.middle-selector th, .middle-selector td { + padding-top: 0.2em; + padding-bottom: 0.2em; +} +.last-selector th, .last-selector td{ + padding-top: 0.2em; +} +#print-selector { + display: none; +} +/* Search */ +#search-suite, #search-test, #search-include, #search-exclude { + width: 25em; +} +#search a:hover { + text-decoration: none; +} +#search-help div { + margin: 0.5em 0.5em 0.7em 0; + padding: 0.7em; + background: #eee; + border: 1px solid #ccc; + border-radius: 3px; +} +#search-help h3, #search-help p { + margin: 0 0 0.7em 0; +} +.search-help-examples { + table-layout: auto; + width: 100%; +} +.search-help-examples, .search-help-examples tr, +.search-help-examples th, .search-help-examples td { + background: transparent; + margin: 0; +} +.search-help-examples th, .search-help-examples td { + padding: 0.2em 0.7em 0.2em 0; +} +.help-item { + width: 10%; +} +.help-explanation { + width: 65%; +} +.help-examples { + width: 25%; +} +/* Tabs - adapted from http://www.htmldog.com/articles/tabs */ +#detail-tabs { + list-style: none; + padding: 0; + margin: 0 1em; +} +.detail-tab { + float: left; + background: #ddd; + border: 1px solid #ccc; + border-bottom-width: 0; + margin: 0 0.5em 0 0; + padding-top: 0.1em; + border-radius: 3px 3px 0 0; +} +.detail-tab:hover { + background: #ccc; +} +.detail-tab a { + color: black; + text-decoration: none; + font-weight: bold; + padding: 0 1em; +} +.detail-tab-selected { + position: relative; + top: 1px; + background: white; +} +.detail-tab-selected:hover { + background: white; +} +/* Test details table */ +#test-details { + width: 100%; + border-spacing: 1px; + background-color: #ccc; +} +#test-details > tbody > tr:hover { + background: #f4f4f4; + cursor: pointer; +} +#test-details th, #test-details td { + padding: 0.2em; +} +.details-limited { + max-height: 20em; + overflow: auto; +} +.details-col-header { + padding-right: 1em; +} +.details-col-toggle { + float: left; + color: #6c6c6c; /* same as in sort icon */ + cursor: pointer; +} +.details-col-toggle:hover { + color: black; +} +.details-col-name { + min-width: 20em; + font-weight: bold; +} +.details-col-doc { + min-width: 10em; +} +.details-col-tags { + min-width: 10em; +} +.details-col-crit { + width: 3.5em; + text-align: center; +} +.details-col-status { + width: 4.5em; + text-align: center; +} +.details-col-msg { + min-width: 20em; +} +.details-col-elapsed { + width: 7em; + text-align: center; +} +.details-col-times { + width: 11em; + white-space: nowrap; + text-align: center; +} +.hidden .details-col-header, td.hidden > div { + display: none; +} +.hidden { + width: 13px; + min-width: 0; + background-image: none; +} +th.hidden:hover { + background-color: #ccc; +} +</style> +<style media="print" type="text/css"> +body { + background: white !important; + padding: 0; + font-size: 8pt; +} +a:link, a:visited { + color: black; +} +#header { + width: auto; +} +.details, .statistics { + width: 100%; +} +#generated-ago, #top-right-header, #normal-selector, #search-buttons, +.folding-button, .expand, .hidden, .details-col-toggle { + display: none; +} +.element-header-text, .children { + margin: 0; +} +#test-details { + border-collapse: collapse; + table-layout: auto; +} +#test-details th, #test-details td { + border: 1px solid black; +} +.details-col-header { + padding: 0; +} +#print-selector { + display: table-cell; +} +.tablesorter-header { + background-image: none; + background: #ddd !important; +} +</style> +<style media="all" type="text/css"> +#javascript-disabled { + width: 600px; + margin: 100px auto 0 auto; + padding: 20px; + color: black; + border: 1px solid #ccc; + background: #eee; +} +#javascript-disabled h1 { + width: 100%; + float: none; +} +#javascript-disabled ul { + font-size: 1.2em; +} +#javascript-disabled li { + margin: 0.5em 0; +} +#javascript-disabled b { + font-style: italic; +} +</style> +<style media="all" type="text/css"> +.doc > * { + margin: 0.7em 1em 0.1em 1em; + padding: 0; +} +.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 { + margin: 0.7em 0 0.1em 0; +} +.doc > *:first-child { + margin-top: 0.1em; +} +.doc table { + border: 1px solid #ccc; + background: transparent; + border-collapse: collapse; + empty-cells: show; + font-size: 0.9em; +} +.doc table th, .doc table td { + border: 1px solid #ccc; + background: transparent; + padding: 0.1em 0.3em; + height: 1.2em; +} +.doc table th { + text-align: center; + letter-spacing: 0.1em; +} +.doc pre { + font-size: 1.1em; + letter-spacing: 0.05em; + background: #f4f4f4; +} +.doc code { + padding: 0 0.2em; + letter-spacing: 0.05em; + background: #eee; +} +.doc li { + list-style-position: inside; + list-style-type: square; +} +.doc img { + border: 1px solid #ccc; +} +.doc hr { + background: #ccc; + height: 1px; + border: 0; +} +</style> +<script type="text/javascript"> +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w}); +</script> +<script type="text/javascript"> +/* + * jQuery Templates Plugin 1.0.0pre + * http://github.com/jquery/jquery-tmpl + * Requires jQuery 1.4.2 + * + * Copyright Software Freedom Conservancy, Inc. + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + */ +(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery); +</script> +<script type="text/javascript"> +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){return function(e){"use strict";var t=e.tablesorter={version:"2.30.5",parsers:[],widgets:[],defaults:{theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,tabIndex:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,resort:!0,headers:{},ignoreCase:!0,sortForce:null,sortList:[],sortAppend:null,sortStable:!1,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",duplicateSpan:!0,textExtraction:"basic",textAttribute:"data-text",textSorter:null,numberSorter:null,initWidgets:!0,widgetClass:"widget-{name}",widgets:[],widgetOptions:{zebra:["even","odd"]},initialized:null,tableClass:"",cssAsc:"",cssDesc:"",cssNone:"",cssHeader:"",cssHeaderRow:"",cssProcessing:"",cssChildRow:"tablesorter-childRow",cssInfoBlock:"tablesorter-infoOnly",cssNoSort:"tablesorter-noSort",cssIgnoreRow:"tablesorter-ignoreRow",cssIcon:"tablesorter-icon",cssIconNone:"",cssIconAsc:"",cssIconDesc:"",cssIconDisabled:"",pointerClick:"click",pointerDown:"mousedown",pointerUp:"mouseup",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[],globalize:0,imgAttr:0},css:{table:"tablesorter",cssHasChild:"tablesorter-hasChildRow",childRow:"tablesorter-childRow",colgroup:"tablesorter-colgroup",header:"tablesorter-header",headerRow:"tablesorter-headerRow",headerIn:"tablesorter-header-inner",icon:"tablesorter-icon",processing:"tablesorter-processing",sortAsc:"tablesorter-headerAsc",sortDesc:"tablesorter-headerDesc",sortNone:"tablesorter-headerUnSorted"},language:{sortAsc:"Ascending sort applied, ",sortDesc:"Descending sort applied, ",sortNone:"No sort applied, ",sortDisabled:"sorting is disabled",nextAsc:"activate to apply an ascending sort",nextDesc:"activate to apply a descending sort",nextNone:"activate to remove the sort"},regex:{templateContent:/\{content\}/g,templateIcon:/\{icon\}/g,templateName:/\{name\}/i,spaces:/\s+/g,nonWord:/\W/g,formElements:/(input|select|button|textarea)/i,chunk:/(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,chunks:/(^\\0|\\0$)/,hex:/^0x[0-9a-f]+$/i,comma:/,/g,digitNonUS:/[\s|\.]/g,digitNegativeTest:/^\s*\([.\d]+\)/,digitNegativeReplace:/^\s*\(([.\d]+)\)/,digitTest:/^[\-+(]?\d+[)]?$/,digitReplace:/[,.'"\s]/g},string:{max:1,min:-1,emptymin:1,emptymax:-1,zero:0,none:0,"null":0,top:!0,bottom:!1},keyCodes:{enter:13},dates:{},instanceMethods:{},setup:function(r,o){if(r&&r.tHead&&0!==r.tBodies.length&&!0!==r.hasInitialized){var s="",a=e(r),n=e.metadata;r.hasInitialized=!1,r.isProcessing=!0,r.config=o,e.data(r,"tablesorter",o),t.debug(o,"core")&&(console[console.group?"group":"log"]("Initializing tablesorter v"+t.version),e.data(r,"startoveralltimer",new Date)),o.supportsDataObject=function(e){return e[0]=parseInt(e[0],10),e[0]>1||1===e[0]&&parseInt(e[1],10)>=4}(e.fn.jquery.split(".")),o.emptyTo=o.emptyTo.toLowerCase(),o.stringTo=o.stringTo.toLowerCase(),o.last={sortList:[],clickedIndex:-1},/tablesorter\-/.test(a.attr("class"))||(s=""!==o.theme?" tablesorter-"+o.theme:""),o.namespace?o.namespace="."+o.namespace.replace(t.regex.nonWord,""):o.namespace=".tablesorter"+Math.random().toString(16).slice(2),o.table=r,o.$table=a.addClass(t.css.table+" "+o.tableClass+s+" "+o.namespace.slice(1)).attr("role","grid"),o.$headers=a.find(o.selectorHeaders),o.$table.children().children("tr").attr("role","row"),o.$tbodies=a.children("tbody:not(."+o.cssInfoBlock+")").attr({"aria-live":"polite","aria-relevant":"all"}),o.$table.children("caption").length&&((s=o.$table.children("caption")[0]).id||(s.id=o.namespace.slice(1)+"caption"),o.$table.attr("aria-labelledby",s.id)),o.widgetInit={},o.textExtraction=o.$table.attr("data-text-extraction")||o.textExtraction||"basic",t.buildHeaders(o),t.fixColumnWidth(r),t.addWidgetFromClass(r),t.applyWidgetOptions(r),t.setupParsers(o),o.totalRows=0,o.debug&&t.validateOptions(o),o.delayInit||t.buildCache(o),t.bindEvents(r,o.$headers,!0),t.bindMethods(o),o.supportsDataObject&&void 0!==a.data().sortlist?o.sortList=a.data().sortlist:n&&a.metadata()&&a.metadata().sortlist&&(o.sortList=a.metadata().sortlist),t.applyWidget(r,!0),o.sortList.length>0?t.sortOn(o,o.sortList,{},!o.initWidgets):(t.setHeadersCss(o),o.initWidgets&&t.applyWidget(r,!1)),o.showProcessing&&a.unbind("sortBegin"+o.namespace+" sortEnd"+o.namespace).bind("sortBegin"+o.namespace+" sortEnd"+o.namespace,function(e){clearTimeout(o.timerProcessing),t.isProcessing(r),"sortBegin"===e.type&&(o.timerProcessing=setTimeout(function(){t.isProcessing(r,!0)},500))}),r.hasInitialized=!0,r.isProcessing=!1,t.debug(o,"core")&&(console.log("Overall initialization time:"+t.benchmark(e.data(r,"startoveralltimer"))),t.debug(o,"core")&&console.groupEnd&&console.groupEnd()),a.triggerHandler("tablesorter-initialized",r),"function"==typeof o.initialized&&o.initialized(r)}else t.debug(o,"core")&&(r.hasInitialized?console.warn("Stopping initialization. Tablesorter has already been initialized"):console.error("Stopping initialization! No table, thead or tbody",r))},bindMethods:function(r){var o=r.$table,s=r.namespace,a="sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(s+" ");o.unbind(a.replace(t.regex.spaces," ")).bind("sortReset"+s,function(e,r){e.stopPropagation(),t.sortReset(this.config,function(e){e.isApplyingWidgets?setTimeout(function(){t.applyWidget(e,"",r)},100):t.applyWidget(e,"",r)})}).bind("updateAll"+s,function(e,r,o){e.stopPropagation(),t.updateAll(this.config,r,o)}).bind("update"+s+" updateRows"+s,function(e,r,o){e.stopPropagation(),t.update(this.config,r,o)}).bind("updateHeaders"+s,function(e,r){e.stopPropagation(),t.updateHeaders(this.config,r)}).bind("updateCell"+s,function(e,r,o,s){e.stopPropagation(),t.updateCell(this.config,r,o,s)}).bind("addRows"+s,function(e,r,o,s){e.stopPropagation(),t.addRows(this.config,r,o,s)}).bind("updateComplete"+s,function(){this.isUpdating=!1}).bind("sorton"+s,function(e,r,o,s){e.stopPropagation(),t.sortOn(this.config,r,o,s)}).bind("appendCache"+s,function(r,o,s){r.stopPropagation(),t.appendCache(this.config,s),e.isFunction(o)&&o(this)}).bind("updateCache"+s,function(e,r,o){e.stopPropagation(),t.updateCache(this.config,r,o)}).bind("applyWidgetId"+s,function(e,r){e.stopPropagation(),t.applyWidgetId(this,r)}).bind("applyWidgets"+s,function(e,r){e.stopPropagation(),t.applyWidget(this,!1,r)}).bind("refreshWidgets"+s,function(e,r,o){e.stopPropagation(),t.refreshWidgets(this,r,o)}).bind("removeWidget"+s,function(e,r,o){e.stopPropagation(),t.removeWidget(this,r,o)}).bind("destroy"+s,function(e,r,o){e.stopPropagation(),t.destroy(this,r,o)}).bind("resetToLoadState"+s,function(o){o.stopPropagation(),t.removeWidget(this,!0,!1);var s=e.extend(!0,{},r.originalSettings);(r=e.extend(!0,{},t.defaults,s)).originalSettings=s,this.hasInitialized=!1,t.setup(this,r)})},bindEvents:function(r,o,s){var a,n=(r=e(r)[0]).config,i=n.namespace,l=null;!0!==s&&(o.addClass(i.slice(1)+"_extra_headers"),(a=t.getClosest(o,"table")).length&&"TABLE"===a[0].nodeName&&a[0]!==r&&e(a[0]).addClass(i.slice(1)+"_extra_table")),a=(n.pointerDown+" "+n.pointerUp+" "+n.pointerClick+" sort keyup ").replace(t.regex.spaces," ").split(" ").join(i+" "),o.find(n.selectorSort).add(o.filter(n.selectorSort)).unbind(a).bind(a,function(r,o){var s,a,i,d=e(r.target),c=" "+r.type+" ";if(!(1!==(r.which||r.button)&&!c.match(" "+n.pointerClick+" | sort | keyup ")||" keyup "===c&&r.which!==t.keyCodes.enter||c.match(" "+n.pointerClick+" ")&&void 0!==r.which||c.match(" "+n.pointerUp+" ")&&l!==r.target&&!0!==o)){if(c.match(" "+n.pointerDown+" "))return l=r.target,void("1"===(i=d.jquery.split("."))[0]&&i[1]<4&&r.preventDefault());if(l=null,s=t.getClosest(e(this),"."+t.css.header),t.regex.formElements.test(r.target.nodeName)||d.hasClass(n.cssNoSort)||d.parents("."+n.cssNoSort).length>0||s.hasClass("sorter-false")||d.parents("button").length>0)return!n.cancelSelection;n.delayInit&&t.isEmptyObject(n.cache)&&t.buildCache(n),n.last.clickedIndex=s.attr("data-column")||s.index(),(a=n.$headerIndexed[n.last.clickedIndex][0])&&!a.sortDisabled&&t.initSort(n,a,r)}}),n.cancelSelection&&o.attr("unselectable","on").bind("selectstart",!1).css({"user-select":"none",MozUserSelect:"none"})},buildHeaders:function(r){var o,s,a,n;for(r.headerList=[],r.headerContent=[],r.sortVars=[],t.debug(r,"core")&&(a=new Date),r.columns=t.computeColumnIndex(r.$table.children("thead, tfoot").children("tr")),s=r.cssIcon?'<i class="'+(r.cssIcon===t.css.icon?t.css.icon:r.cssIcon+" "+t.css.icon)+'"></i>':"",r.$headers=e(e.map(r.$table.find(r.selectorHeaders),function(o,a){var n,i,l,d,c,g=e(o);if(!t.getClosest(g,"tr").hasClass(r.cssIgnoreRow))return/(th|td)/i.test(o.nodeName)||(c=t.getClosest(g,"th, td"),g.attr("data-column",c.attr("data-column"))),n=t.getColumnData(r.table,r.headers,a,!0),r.headerContent[a]=g.html(),""===r.headerTemplate||g.find("."+t.css.headerIn).length||(d=r.headerTemplate.replace(t.regex.templateContent,g.html()).replace(t.regex.templateIcon,g.find("."+t.css.icon).length?"":s),r.onRenderTemplate&&(i=r.onRenderTemplate.apply(g,[a,d]))&&"string"==typeof i&&(d=i),g.html('<div class="'+t.css.headerIn+'">'+d+"</div>")),r.onRenderHeader&&r.onRenderHeader.apply(g,[a,r,r.$table]),l=parseInt(g.attr("data-column"),10),o.column=l,c=t.getOrder(t.getData(g,n,"sortInitialOrder")||r.sortInitialOrder),r.sortVars[l]={count:-1,order:c?r.sortReset?[1,0,2]:[1,0]:r.sortReset?[0,1,2]:[0,1],lockedOrder:!1},void 0!==(c=t.getData(g,n,"lockedOrder")||!1)&&!1!==c&&(r.sortVars[l].lockedOrder=!0,r.sortVars[l].order=t.getOrder(c)?[1,1]:[0,0]),r.headerList[a]=o,g.addClass(t.css.header+" "+r.cssHeader),t.getClosest(g,"tr").addClass(t.css.headerRow+" "+r.cssHeaderRow).attr("role","row"),r.tabIndex&&g.attr("tabindex",0),o})),r.$headerIndexed=[],n=0;n<r.columns;n++)t.isEmptyObject(r.sortVars[n])&&(r.sortVars[n]={}),o=r.$headers.filter('[data-column="'+n+'"]'),r.$headerIndexed[n]=o.length?o.not(".sorter-false").length?o.not(".sorter-false").filter(":last"):o.filter(":last"):e();r.$table.find(r.selectorHeaders).attr({scope:"col",role:"columnheader"}),t.updateHeader(r),t.debug(r,"core")&&(console.log("Built headers:"+t.benchmark(a)),console.log(r.$headers))},addInstanceMethods:function(r){e.extend(t.instanceMethods,r)},setupParsers:function(e,r){var o,s,a,n,i,l,d,c,g,p,u,f,h,m,b=e.table,y=0,w=t.debug(e,"core"),x={};if(e.$tbodies=e.$table.children("tbody:not(."+e.cssInfoBlock+")"),h=void 0===r?e.$tbodies:r,0===(m=h.length))return w?console.warn("Warning: *Empty table!* Not building a parser cache"):"";for(w&&(f=new Date,console[console.group?"group":"log"]("Detecting parsers for each column")),s={extractors:[],parsers:[]};y<m;){if((o=h[y].rows).length)for(i=0,n=e.columns,l=0;l<n;l++){if((d=e.$headerIndexed[i])&&d.length&&(c=t.getColumnData(b,e.headers,i),u=t.getParserById(t.getData(d,c,"extractor")),p=t.getParserById(t.getData(d,c,"sorter")),g="false"===t.getData(d,c,"parser"),e.empties[i]=(t.getData(d,c,"empty")||e.emptyTo||(e.emptyToBottom?"bottom":"top")).toLowerCase(),e.strings[i]=(t.getData(d,c,"string")||e.stringTo||"max").toLowerCase(),g&&(p=t.getParserById("no-parser")),u||(u=!1),p||(p=t.detectParserForColumn(e,o,-1,i)),w&&(x["("+i+") "+d.text()]={parser:p.id,extractor:u?u.id:"none",string:e.strings[i],empty:e.empties[i]}),s.parsers[i]=p,s.extractors[i]=u,(a=d[0].colSpan-1)>0))for(i+=a,n+=a;a+1>0;)s.parsers[i-a]=p,s.extractors[i-a]=u,a--;i++}y+=s.parsers.length?m:1}w&&(t.isEmptyObject(x)?console.warn(" No parsers detected!"):console[console.table?"table":"log"](x),console.log("Completed detecting parsers"+t.benchmark(f)),console.groupEnd&&console.groupEnd()),e.parsers=s.parsers,e.extractors=s.extractors},addParser:function(e){var r,o=t.parsers.length,s=!0;for(r=0;r<o;r++)t.parsers[r].id.toLowerCase()===e.id.toLowerCase()&&(s=!1);s&&(t.parsers[t.parsers.length]=e)},getParserById:function(e){if("false"==e)return!1;var r,o=t.parsers.length;for(r=0;r<o;r++)if(t.parsers[r].id.toLowerCase()===e.toString().toLowerCase())return t.parsers[r];return!1},detectParserForColumn:function(r,o,s,a){for(var n,i,l,d=t.parsers.length,c=!1,g="",p=t.debug(r,"core"),u=!0;""===g&&u;)(l=o[++s])&&s<50?l.className.indexOf(t.cssIgnoreRow)<0&&(c=o[s].cells[a],g=t.getElementText(r,c,a),i=e(c),p&&console.log("Checking if value was empty on row "+s+", column: "+a+': "'+g+'"')):u=!1;for(;--d>=0;)if((n=t.parsers[d])&&"text"!==n.id&&n.is&&n.is(g,r.table,c,i))return n;return t.getParserById("text")},getElementText:function(r,o,s){if(!o)return"";var a,n=r.textExtraction||"",i=o.jquery?o:e(o);return"string"==typeof n?"basic"===n&&void 0!==(a=i.attr(r.textAttribute))?e.trim(a):e.trim(o.textContent||i.text()):"function"==typeof n?e.trim(n(i[0],r.table,s)):"function"==typeof(a=t.getColumnData(r.table,n,s))?e.trim(a(i[0],r.table,s)):e.trim(i[0].textContent||i.text())},getParsedText:function(e,r,o,s){void 0===s&&(s=t.getElementText(e,r,o));var a=""+s,n=e.parsers[o],i=e.extractors[o];return n&&(i&&"function"==typeof i.format&&(s=i.format(s,e.table,r,o)),a="no-parser"===n.id?"":n.format(""+s,e.table,r,o),e.ignoreCase&&"string"==typeof a&&(a=a.toLowerCase())),a},buildCache:function(r,o,s){var a,n,i,l,d,c,g,p,u,f,h,m,b,y,w,x,v,C,$,I,D,R,T=r.table,L=r.parsers,A=t.debug(r,"core");if(r.$tbodies=r.$table.children("tbody:not(."+r.cssInfoBlock+")"),g=void 0===s?r.$tbodies:s,r.cache={},r.totalRows=0,!L)return A?console.warn("Warning: *Empty table!* Not building a cache"):"";for(A&&(m=new Date),r.showProcessing&&t.isProcessing(T,!0),c=0;c<g.length;c++){for(x=[],a=r.cache[c]={normalized:[]},b=g[c]&&g[c].rows.length||0,l=0;l<b;++l)if(y={child:[],raw:[]},p=e(g[c].rows[l]),u=[],!p.hasClass(r.selectorRemove.slice(1)))if(p.hasClass(r.cssChildRow)&&0!==l)for(D=a.normalized.length-1,(w=a.normalized[D][r.columns]).$row=w.$row.add(p),p.prev().hasClass(r.cssChildRow)||p.prev().addClass(t.css.cssHasChild),f=p.children("th, td"),D=w.child.length,w.child[D]=[],C=0,I=r.columns,d=0;d<I;d++)(h=f[d])&&(w.child[D][d]=t.getParsedText(r,h,d),(v=f[d].colSpan-1)>0&&(C+=v,I+=v)),C++;else{for(y.$row=p,y.order=l,C=0,I=r.columns,d=0;d<I;++d){if((h=p[0].cells[d])&&C<r.columns&&(!($=void 0!==L[C])&&A&&console.warn("No parser found for row: "+l+", column: "+d+'; cell containing: "'+e(h).text()+'"; does it have a header?'),n=t.getElementText(r,h,C),y.raw[C]=n,i=t.getParsedText(r,h,C,n),u[C]=i,$&&"numeric"===(L[C].type||"").toLowerCase()&&(x[C]=Math.max(Math.abs(i)||0,x[C]||0)),(v=h.colSpan-1)>0)){for(R=0;R<=v;)i=r.duplicateSpan||0===R?n:"string"!=typeof r.textExtraction?t.getElementText(r,h,C+R)||"":"",y.raw[C+R]=i,u[C+R]=i,R++;C+=v,I+=v}C++}u[r.columns]=y,a.normalized[a.normalized.length]=u}a.colMax=x,r.totalRows+=a.normalized.length}if(r.showProcessing&&t.isProcessing(T),A){for(D=Math.min(5,r.cache[0].normalized.length),console[console.group?"group":"log"]("Building cache for "+r.totalRows+" rows (showing "+D+" rows in log) and "+r.columns+" columns"+t.benchmark(m)),n={},d=0;d<r.columns;d++)for(C=0;C<D;C++)n["row: "+C]||(n["row: "+C]={}),n["row: "+C][r.$headerIndexed[d].text()]=r.cache[0].normalized[C][d];console[console.table?"table":"log"](n),console.groupEnd&&console.groupEnd()}e.isFunction(o)&&o(T)},getColumnText:function(r,o,s,a){var n,i,l,d,c,g,p,u,f,h,m="function"==typeof s,b="all"===o,y={raw:[],parsed:[],$cell:[]},w=(r=e(r)[0]).config;if(!t.isEmptyObject(w)){for(c=w.$tbodies.length,n=0;n<c;n++)for(g=(l=w.cache[n].normalized).length,i=0;i<g;i++)d=l[i],a&&!d[w.columns].$row.is(a)||(h=!0,u=b?d.slice(0,w.columns):d[o],d=d[w.columns],p=b?d.raw:d.raw[o],f=b?d.$row.children():d.$row.children().eq(o),m&&(h=s({tbodyIndex:n,rowIndex:i,parsed:u,raw:p,$row:d.$row,$cell:f})),!1!==h&&(y.parsed[y.parsed.length]=u,y.raw[y.raw.length]=p,y.$cell[y.$cell.length]=f));return y}t.debug(w,"core")&&console.warn("No cache found - aborting getColumnText function!")},setHeadersCss:function(r){var o,s,a=r.sortList,n=a.length,i=t.css.sortNone+" "+r.cssNone,l=[t.css.sortAsc+" "+r.cssAsc,t.css.sortDesc+" "+r.cssDesc],d=[r.cssIconAsc,r.cssIconDesc,r.cssIconNone],c=["ascending","descending"],g=function(e,r){e.removeClass(i).addClass(l[r]).attr("aria-sort",c[r]).find("."+t.css.icon).removeClass(d[2]).addClass(d[r])},p=r.$table.find("tfoot tr").children("td, th").add(e(r.namespace+"_extra_headers")).removeClass(l.join(" ")),u=r.$headers.add(e("thead "+r.namespace+"_extra_headers")).removeClass(l.join(" ")).addClass(i).attr("aria-sort","none").find("."+t.css.icon).removeClass(d.join(" ")).end();for(u.not(".sorter-false").find("."+t.css.icon).addClass(d[2]),r.cssIconDisabled&&u.filter(".sorter-false").find("."+t.css.icon).addClass(r.cssIconDisabled),o=0;o<n;o++)if(2!==a[o][1]){if(u=r.$headers.filter(function(e){for(var o=!0,s=r.$headers.eq(e),a=parseInt(s.attr("data-column"),10),n=a+t.getClosest(s,"th, td")[0].colSpan;a<n;a++)o=!!o&&(o||t.isValueInArray(a,r.sortList)>-1);return o}),(u=u.not(".sorter-false").filter('[data-column="'+a[o][0]+'"]'+(1===n?":last":""))).length)for(s=0;s<u.length;s++)u[s].sortDisabled||g(u.eq(s),a[o][1]);p.length&&g(p.filter('[data-column="'+a[o][0]+'"]'),a[o][1])}for(n=r.$headers.length,o=0;o<n;o++)t.setColumnAriaLabel(r,r.$headers.eq(o))},getClosest:function(t,r){return e.fn.closest?t.closest(r):t.is(r)?t:t.parents(r).filter(":first")},setColumnAriaLabel:function(r,o,s){if(o.length){var a=parseInt(o.attr("data-column"),10),n=r.sortVars[a],i=o.hasClass(t.css.sortAsc)?"sortAsc":o.hasClass(t.css.sortDesc)?"sortDesc":"sortNone",l=e.trim(o.text())+": "+t.language[i];o.hasClass("sorter-false")||!1===s?l+=t.language.sortDisabled:(i=(n.count+1)%n.order.length,s=n.order[i],l+=t.language[0===s?"nextAsc":1===s?"nextDesc":"nextNone"]),o.attr("aria-label",l)}},updateHeader:function(e){var r,o,s,a,n=e.table,i=e.$headers.length;for(r=0;r<i;r++)s=e.$headers.eq(r),a=t.getColumnData(n,e.headers,r,!0),o="false"===t.getData(s,a,"sorter")||"false"===t.getData(s,a,"parser"),t.setColumnSort(e,s,o)},setColumnSort:function(e,t,r){var o=e.table.id;t[0].sortDisabled=r,t[r?"addClass":"removeClass"]("sorter-false").attr("aria-disabled",""+r),e.tabIndex&&(r?t.removeAttr("tabindex"):t.attr("tabindex","0")),o&&(r?t.removeAttr("aria-controls"):t.attr("aria-controls",o))},updateHeaderSortCount:function(r,o){var s,a,n,i,l,d,c,g,p=o||r.sortList,u=p.length;for(r.sortList=[],i=0;i<u;i++)if(c=p[i],(s=parseInt(c[0],10))<r.columns){switch(r.sortVars[s].order||(g=t.getOrder(r.sortInitialOrder)?r.sortReset?[1,0,2]:[1,0]:r.sortReset?[0,1,2]:[0,1],r.sortVars[s].order=g,r.sortVars[s].count=0),g=r.sortVars[s].order,a=(""+c[1]).match(/^(1|d|s|o|n)/),a=a?a[0]:""){case"1":case"d":a=1;break;case"s":a=l||0;break;case"o":a=0===(d=g[(l||0)%g.length])?1:1===d?0:2;break;case"n":a=g[++r.sortVars[s].count%g.length];break;default:a=0}l=0===i?a:l,n=[s,parseInt(a,10)||0],r.sortList[r.sortList.length]=n,a=e.inArray(n[1],g),r.sortVars[s].count=a>=0?a:n[1]%g.length}},updateAll:function(e,r,o){var s=e.table;s.isUpdating=!0,t.refreshWidgets(s,!0,!0),t.buildHeaders(e),t.bindEvents(s,e.$headers,!0),t.bindMethods(e),t.commonUpdate(e,r,o)},update:function(e,r,o){e.table.isUpdating=!0,t.updateHeader(e),t.commonUpdate(e,r,o)},updateHeaders:function(e,r){e.table.isUpdating=!0,t.buildHeaders(e),t.bindEvents(e.table,e.$headers,!0),t.resortComplete(e,r)},updateCell:function(r,o,s,a){if(e(o).closest("tr").hasClass(r.cssChildRow))console.warn('Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead');else{if(t.isEmptyObject(r.cache))return t.updateHeader(r),void t.commonUpdate(r,s,a);r.table.isUpdating=!0,r.$table.find(r.selectorRemove).remove();var n,i,l,d,c,g,p=r.$tbodies,u=e(o),f=p.index(t.getClosest(u,"tbody")),h=r.cache[f],m=t.getClosest(u,"tr");if(o=u[0],p.length&&f>=0){if(l=p.eq(f).find("tr").not("."+r.cssChildRow).index(m),c=h.normalized[l],(g=m[0].cells.length)!==r.columns)for(d=0,n=!1,i=0;i<g;i++)n||m[0].cells[i]===o?n=!0:d+=m[0].cells[i].colSpan;else d=u.index();n=t.getElementText(r,o,d),c[r.columns].raw[d]=n,n=t.getParsedText(r,o,d,n),c[d]=n,"numeric"===(r.parsers[d].type||"").toLowerCase()&&(h.colMax[d]=Math.max(Math.abs(n)||0,h.colMax[d]||0)),!1!==(n="undefined"!==s?s:r.resort)?t.checkResort(r,n,a):t.resortComplete(r,a)}else t.debug(r,"core")&&console.error("updateCell aborted, tbody missing or not within the indicated table"),r.table.isUpdating=!1}},addRows:function(r,o,s,a){var n,i,l,d,c,g,p,u,f,h,m,b,y,w="string"==typeof o&&1===r.$tbodies.length&&/<tr/.test(o||""),x=r.table;if(w)o=e(o),r.$tbodies.append(o);else if(!(o&&o instanceof e&&t.getClosest(o,"table")[0]===r.table))return t.debug(r,"core")&&console.error("addRows method requires (1) a jQuery selector reference to rows that have already been added to the table, or (2) row HTML string to be added to a table with only one tbody"),!1;if(x.isUpdating=!0,t.isEmptyObject(r.cache))t.updateHeader(r),t.commonUpdate(r,s,a);else{for(c=o.filter("tr").attr("role","row").length,l=r.$tbodies.index(o.parents("tbody").filter(":first")),r.parsers&&r.parsers.length||t.setupParsers(r),d=0;d<c;d++){for(f=0,p=o[d].cells.length,u=r.cache[l].normalized.length,m=[],h={child:[],raw:[],$row:o.eq(d),order:u},g=0;g<p;g++)b=o[d].cells[g],n=t.getElementText(r,b,f),h.raw[f]=n,i=t.getParsedText(r,b,f,n),m[f]=i,"numeric"===(r.parsers[f].type||"").toLowerCase()&&(r.cache[l].colMax[f]=Math.max(Math.abs(i)||0,r.cache[l].colMax[f]||0)),(y=b.colSpan-1)>0&&(f+=y),f++;m[r.columns]=h,r.cache[l].normalized[u]=m}t.checkResort(r,s,a)}},updateCache:function(e,r,o){e.parsers&&e.parsers.length||t.setupParsers(e,o),t.buildCache(e,r,o)},appendCache:function(e,r){var o,s,a,n,i,l,d,c=e.table,g=e.$tbodies,p=[],u=e.cache;if(t.isEmptyObject(u))return e.appender?e.appender(c,p):c.isUpdating?e.$table.triggerHandler("updateComplete",c):"";for(t.debug(e,"core")&&(d=new Date),l=0;l<g.length;l++)if((a=g.eq(l)).length){for(n=t.processTbody(c,a,!0),s=(o=u[l].normalized).length,i=0;i<s;i++)p[p.length]=o[i][e.columns].$row,e.appender&&(!e.pager||e.pager.removeRows||e.pager.ajax)||n.append(o[i][e.columns].$row);t.processTbody(c,n,!1)}e.appender&&e.appender(c,p),t.debug(e,"core")&&console.log("Rebuilt table"+t.benchmark(d)),r||e.appender||t.applyWidget(c),c.isUpdating&&e.$table.triggerHandler("updateComplete",c)},commonUpdate:function(e,r,o){e.$table.find(e.selectorRemove).remove(),t.setupParsers(e),t.buildCache(e),t.checkResort(e,r,o)},initSort:function(r,o,s){if(r.table.isUpdating)return setTimeout(function(){t.initSort(r,o,s)},50);var a,n,i,l,d,c,g,p=!s[r.sortMultiSortKey],u=r.table,f=r.$headers.length,h=t.getClosest(e(o),"th, td"),m=parseInt(h.attr("data-column"),10),b=r.sortVars[m].order;if(h=h[0],r.$table.triggerHandler("sortStart",u),c=(r.sortVars[m].count+1)%b.length,r.sortVars[m].count=s[r.sortResetKey]?2:c,r.sortRestart)for(i=0;i<f;i++)g=r.$headers.eq(i),m!==(c=parseInt(g.attr("data-column"),10))&&(p||g.hasClass(t.css.sortNone))&&(r.sortVars[c].count=-1);if(p){if(r.sortList=[],r.last.sortList=[],null!==r.sortForce)for(a=r.sortForce,n=0;n<a.length;n++)a[n][0]!==m&&(r.sortList[r.sortList.length]=a[n]);if((l=b[r.sortVars[m].count])<2&&(r.sortList[r.sortList.length]=[m,l],h.colSpan>1))for(n=1;n<h.colSpan;n++)r.sortList[r.sortList.length]=[m+n,l],r.sortVars[m+n].count=e.inArray(l,b)}else if(r.sortList=e.extend([],r.last.sortList),t.isValueInArray(m,r.sortList)>=0)for(n=0;n<r.sortList.length;n++)(c=r.sortList[n])[0]===m&&(c[1]=b[r.sortVars[m].count],2===c[1]&&(r.sortList.splice(n,1),r.sortVars[m].count=-1));else if((l=b[r.sortVars[m].count])<2&&(r.sortList[r.sortList.length]=[m,l],h.colSpan>1))for(n=1;n<h.colSpan;n++)r.sortList[r.sortList.length]=[m+n,l],r.sortVars[m+n].count=e.inArray(l,b);if(r.last.sortList=e.extend([],r.sortList),r.sortList.length&&r.sortAppend&&(a=e.isArray(r.sortAppend)?r.sortAppend:r.sortAppend[r.sortList[0][0]],!t.isEmptyObject(a)))for(n=0;n<a.length;n++)if(a[n][0]!==m&&t.isValueInArray(a[n][0],r.sortList)<0){if(l=a[n][1],d=(""+l).match(/^(a|d|s|o|n)/))switch(c=r.sortList[0][1],d[0]){case"d":l=1;break;case"s":l=c;break;case"o":l=0===c?1:0;break;case"n":l=(c+1)%b.length;break;default:l=0}r.sortList[r.sortList.length]=[a[n][0],l]}r.$table.triggerHandler("sortBegin",u),setTimeout(function(){t.setHeadersCss(r),t.multisort(r),t.appendCache(r),r.$table.triggerHandler("sortBeforeEnd",u),r.$table.triggerHandler("sortEnd",u)},1)},multisort:function(e){var r,o,s,a,n=e.table,i=[],l=0,d=e.textSorter||"",c=e.sortList,g=c.length,p=e.$tbodies.length;if(!e.serverSideSorting&&!t.isEmptyObject(e.cache)){if(t.debug(e,"core")&&(o=new Date),"object"==typeof d)for(s=e.columns;s--;)"function"==typeof(a=t.getColumnData(n,d,s))&&(i[s]=a);for(r=0;r<p;r++)s=e.cache[r].colMax,e.cache[r].normalized.sort(function(r,o){var a,p,u,f,h,m,b;for(a=0;a<g;a++){if(u=c[a][0],f=c[a][1],l=0===f,e.sortStable&&r[u]===o[u]&&1===g)return r[e.columns].order-o[e.columns].order;if(p=/n/i.test(t.getSortType(e.parsers,u)),p&&e.strings[u]?(p="boolean"==typeof t.string[e.strings[u]]?(l?1:-1)*(t.string[e.strings[u]]?-1:1):e.strings[u]?t.string[e.strings[u]]||0:0,h=e.numberSorter?e.numberSorter(r[u],o[u],l,s[u],n):t["sortNumeric"+(l?"Asc":"Desc")](r[u],o[u],p,s[u],u,e)):(m=l?r:o,b=l?o:r,h="function"==typeof d?d(m[u],b[u],l,u,n):"function"==typeof i[u]?i[u](m[u],b[u],l,u,n):t["sortNatural"+(l?"Asc":"Desc")](r[u],o[u],u,e)),h)return h}return r[e.columns].order-o[e.columns].order});t.debug(e,"core")&&console.log("Applying sort "+c.toString()+t.benchmark(o))}},resortComplete:function(t,r){t.table.isUpdating&&t.$table.triggerHandler("updateComplete",t.table),e.isFunction(r)&&r(t.table)},checkResort:function(r,o,s){var a=e.isArray(o)?o:r.sortList;!1===(void 0===o?r.resort:o)||r.serverSideSorting||r.table.isProcessing?(t.resortComplete(r,s),t.applyWidget(r.table,!1)):a.length?t.sortOn(r,a,function(){t.resortComplete(r,s)},!0):t.sortReset(r,function(){t.resortComplete(r,s),t.applyWidget(r.table,!1)})},sortOn:function(r,o,s,a){var n=r.table;r.$table.triggerHandler("sortStart",n),t.updateHeaderSortCount(r,o),t.setHeadersCss(r),r.delayInit&&t.isEmptyObject(r.cache)&&t.buildCache(r),r.$table.triggerHandler("sortBegin",n),t.multisort(r),t.appendCache(r,a),r.$table.triggerHandler("sortBeforeEnd",n),r.$table.triggerHandler("sortEnd",n),t.applyWidget(n),e.isFunction(s)&&s(n)},sortReset:function(r,o){r.sortList=[],t.setHeadersCss(r),t.multisort(r),t.appendCache(r);var s;for(s=0;s<r.columns;s++)r.sortVars[s].count=-1;e.isFunction(o)&&o(r.table)},getSortType:function(e,t){return e&&e[t]?e[t].type||"":""},getOrder:function(e){return/^d/i.test(e)||1===e},sortNatural:function(e,r){if(e===r)return 0;e=e.toString(),r=r.toString();var o,s,a,n,i,l,d=t.regex;if(d.hex.test(r)){if(o=parseInt((e||"").match(d.hex),16),s=parseInt((r||"").match(d.hex),16),o<s)return-1;if(o>s)return 1}for(o=(e||"").replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0"),s=(r||"").replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0"),l=Math.max(o.length,s.length),i=0;i<l;i++){if(a=isNaN(o[i])?o[i]||0:parseFloat(o[i])||0,n=isNaN(s[i])?s[i]||0:parseFloat(s[i])||0,isNaN(a)!==isNaN(n))return isNaN(a)?1:-1;if(typeof a!=typeof n&&(a+="",n+=""),a<n)return-1;if(a>n)return 1}return 0},sortNaturalAsc:function(e,r,o,s){if(e===r)return 0;var a=t.string[s.empties[o]||s.emptyTo];return""===e&&0!==a?"boolean"==typeof a?a?-1:1:-a||-1:""===r&&0!==a?"boolean"==typeof a?a?1:-1:a||1:t.sortNatural(e,r)},sortNaturalDesc:function(e,r,o,s){if(e===r)return 0;var a=t.string[s.empties[o]||s.emptyTo];return""===e&&0!==a?"boolean"==typeof a?a?-1:1:a||1:""===r&&0!==a?"boolean"==typeof a?a?1:-1:-a||-1:t.sortNatural(r,e)},sortText:function(e,t){return e>t?1:e<t?-1:0},getTextValue:function(e,t,r){if(r){var o,s=e?e.length:0,a=r+t;for(o=0;o<s;o++)a+=e.charCodeAt(o);return t*a}return 0},sortNumericAsc:function(e,r,o,s,a,n){if(e===r)return 0;var i=t.string[n.empties[a]||n.emptyTo];return""===e&&0!==i?"boolean"==typeof i?i?-1:1:-i||-1:""===r&&0!==i?"boolean"==typeof i?i?1:-1:i||1:(isNaN(e)&&(e=t.getTextValue(e,o,s)),isNaN(r)&&(r=t.getTextValue(r,o,s)),e-r)},sortNumericDesc:function(e,r,o,s,a,n){if(e===r)return 0;var i=t.string[n.empties[a]||n.emptyTo];return""===e&&0!==i?"boolean"==typeof i?i?-1:1:i||1:""===r&&0!==i?"boolean"==typeof i?i?1:-1:-i||-1:(isNaN(e)&&(e=t.getTextValue(e,o,s)),isNaN(r)&&(r=t.getTextValue(r,o,s)),r-e)},sortNumeric:function(e,t){return e-t},addWidget:function(e){e.id&&!t.isEmptyObject(t.getWidgetById(e.id))&&console.warn('"'+e.id+'" widget was loaded more than once!'),t.widgets[t.widgets.length]=e},hasWidget:function(t,r){return(t=e(t)).length&&t[0].config&&t[0].config.widgetInit[r]||!1},getWidgetById:function(e){var r,o,s=t.widgets.length;for(r=0;r<s;r++)if((o=t.widgets[r])&&o.id&&o.id.toLowerCase()===e.toLowerCase())return o},applyWidgetOptions:function(r){var o,s,a,n=r.config,i=n.widgets.length;if(i)for(o=0;o<i;o++)(s=t.getWidgetById(n.widgets[o]))&&s.options&&(a=e.extend(!0,{},s.options),n.widgetOptions=e.extend(!0,a,n.widgetOptions),e.extend(!0,t.defaults.widgetOptions,s.options))},addWidgetFromClass:function(e){var r,o,s=e.config,a="^"+s.widgetClass.replace(t.regex.templateName,"(\\S+)+")+"$",n=new RegExp(a,"g"),i=(e.className||"").split(t.regex.spaces);if(i.length)for(r=i.length,o=0;o<r;o++)i[o].match(n)&&(s.widgets[s.widgets.length]=i[o].replace(n,"$1"))},applyWidgetId:function(r,o,s){var a,n,i,l=(r=e(r)[0]).config,d=l.widgetOptions,c=t.debug(l,"core"),g=t.getWidgetById(o);g&&(i=g.id,a=!1,e.inArray(i,l.widgets)<0&&(l.widgets[l.widgets.length]=i),c&&(n=new Date),!s&&l.widgetInit[i]||(l.widgetInit[i]=!0,r.hasInitialized&&t.applyWidgetOptions(r),"function"==typeof g.init&&(a=!0,c&&console[console.group?"group":"log"]("Initializing "+i+" widget"),g.init(r,g,l,d))),s||"function"!=typeof g.format||(a=!0,c&&console[console.group?"group":"log"]("Updating "+i+" widget"),g.format(r,l,d,!1)),c&&a&&(console.log("Completed "+(s?"initializing ":"applying ")+i+" widget"+t.benchmark(n)),console.groupEnd&&console.groupEnd()))},applyWidget:function(r,o,s){var a,n,i,l,d,c=(r=e(r)[0]).config,g=t.debug(c,"core"),p=[];if(!1===o||!r.hasInitialized||!r.isApplyingWidgets&&!r.isUpdating){if(g&&(d=new Date),t.addWidgetFromClass(r),clearTimeout(c.timerReady),c.widgets.length){for(r.isApplyingWidgets=!0,c.widgets=e.grep(c.widgets,function(t,r){return e.inArray(t,c.widgets)===r}),n=(i=c.widgets||[]).length,a=0;a<n;a++)(l=t.getWidgetById(i[a]))&&l.id?(l.priority||(l.priority=10),p[a]=l):g&&console.warn('"'+i[a]+'" was enabled, but the widget code has not been loaded!');for(p.sort(function(e,t){return e.priority<t.priority?-1:e.priority===t.priority?0:1}),n=p.length,g&&console[console.group?"group":"log"]("Start "+(o?"initializing":"applying")+" widgets"),a=0;a<n;a++)(l=p[a])&&l.id&&t.applyWidgetId(r,l.id,o);g&&console.groupEnd&&console.groupEnd()}c.timerReady=setTimeout(function(){r.isApplyingWidgets=!1,e.data(r,"lastWidgetApplication",new Date),c.$table.triggerHandler("tablesorter-ready"),o||"function"!=typeof s||s(r),g&&(l=c.widgets.length,console.log("Completed "+(!0===o?"initializing ":"applying ")+l+" widget"+(1!==l?"s":"")+t.benchmark(d)))},10)}},removeWidget:function(r,o,s){var a,n,i,l,d=(r=e(r)[0]).config;if(!0===o)for(o=[],l=t.widgets.length,i=0;i<l;i++)(n=t.widgets[i])&&n.id&&(o[o.length]=n.id);else o=(e.isArray(o)?o.join(","):o||"").toLowerCase().split(/[\s,]+/);for(l=o.length,a=0;a<l;a++)n=t.getWidgetById(o[a]),(i=e.inArray(o[a],d.widgets))>=0&&!0!==s&&d.widgets.splice(i,1),n&&n.remove&&(t.debug(d,"core")&&console.log((s?"Refreshing":"Removing")+' "'+o[a]+'" widget'),n.remove(r,d,d.widgetOptions,s),d.widgetInit[o[a]]=!1);d.$table.triggerHandler("widgetRemoveEnd",r)},refreshWidgets:function(r,o,s){var a,n,i=(r=e(r)[0]).config.widgets,l=t.widgets,d=l.length,c=[],g=function(t){e(t).triggerHandler("refreshComplete")};for(a=0;a<d;a++)(n=l[a])&&n.id&&(o||e.inArray(n.id,i)<0)&&(c[c.length]=n.id);t.removeWidget(r,c.join(","),!0),!0!==s?(t.applyWidget(r,o||!1,g),o&&t.applyWidget(r,!1,g)):g(r)},benchmark:function(e){return" ("+((new Date).getTime()-e.getTime())+" ms)"},log:function(){console.log(arguments)},debug:function(e,t){return e&&(!0===e.debug||"string"==typeof e.debug&&e.debug.indexOf(t)>-1)},isEmptyObject:function(e){for(var t in e)return!1;return!0},isValueInArray:function(e,t){var r,o=t&&t.length||0;for(r=0;r<o;r++)if(t[r][0]===e)return r;return-1},formatFloat:function(r,o){if("string"!=typeof r||""===r)return r;var s;return r=(o&&o.config?!1!==o.config.usNumberFormat:void 0===o||o)?r.replace(t.regex.comma,""):r.replace(t.regex.digitNonUS,"").replace(t.regex.comma,"."),t.regex.digitNegativeTest.test(r)&&(r=r.replace(t.regex.digitNegativeReplace,"-$1")),s=parseFloat(r),isNaN(s)?e.trim(r):s},isDigit:function(e){return isNaN(e)?t.regex.digitTest.test(e.toString().replace(t.regex.digitReplace,"")):""!==e},computeColumnIndex:function(r,o){var s,a,n,i,l,d,c,g,p,u,f=o&&o.columns||0,h=[],m=new Array(f);for(s=0;s<r.length;s++)for(d=r[s].cells,a=0;a<d.length;a++){for(c=s,g=(l=d[a]).rowSpan||1,p=l.colSpan||1,void 0===h[c]&&(h[c]=[]),n=0;n<h[c].length+1;n++)if(void 0===h[c][n]){u=n;break}for(f&&l.cellIndex===u||(l.setAttribute?l.setAttribute("data-column",u):e(l).attr("data-column",u)),n=c;n<c+g;n++)for(void 0===h[n]&&(h[n]=[]),m=h[n],i=u;i<u+p;i++)m[i]="x"}return t.checkColumnCount(r,h,m.length),m.length},checkColumnCount:function(e,t,r){var o,s,a=!0,n=[];for(o=0;o<t.length;o++)if(t[o]&&(s=t[o].length,t[o].length!==r)){a=!1;break}a||(e.each(function(e,t){var r=t.parentElement.nodeName;n.indexOf(r)<0&&n.push(r)}),console.error("Invalid or incorrect number of columns in the "+n.join(" or ")+"; expected "+r+", but found "+s+" columns"))},fixColumnWidth:function(r){var o,s,a,n,i,l=(r=e(r)[0]).config,d=l.$table.children("colgroup");if(d.length&&d.hasClass(t.css.colgroup)&&d.remove(),l.widthFixed&&0===l.$table.children("colgroup").length){for(d=e('<colgroup class="'+t.css.colgroup+'">'),o=l.$table.width(),n=(a=l.$tbodies.find("tr:first").children(":visible")).length,i=0;i<n;i++)s=parseInt(a.eq(i).width()/o*1e3,10)/10+"%",d.append(e("<col>").css("width",s));l.$table.prepend(d)}},getData:function(t,r,o){var s,a,n="",i=e(t);return i.length?(s=!!e.metadata&&i.metadata(),a=" "+(i.attr("class")||""),void 0!==i.data(o)||void 0!==i.data(o.toLowerCase())?n+=i.data(o)||i.data(o.toLowerCase()):s&&void 0!==s[o]?n+=s[o]:r&&void 0!==r[o]?n+=r[o]:" "!==a&&a.match(" "+o+"-")&&(n=a.match(new RegExp("\\s"+o+"-([\\w-]+)"))[1]||""),e.trim(n)):""},getColumnData:function(t,r,o,s,a){if("object"!=typeof r||null===r)return r;var n,i=(t=e(t)[0]).config,l=a||i.$headers,d=i.$headerIndexed&&i.$headerIndexed[o]||l.find('[data-column="'+o+'"]:last');if(void 0!==r[o])return s?r[o]:r[l.index(d)];for(n in r)if("string"==typeof n&&d.filter(n).add(d.find(n)).length)return r[n]},isProcessing:function(r,o,s){var a=(r=e(r))[0].config,n=s||r.find("."+t.css.header);o?(void 0!==s&&a.sortList.length>0&&(n=n.filter(function(){return!this.sortDisabled&&t.isValueInArray(parseFloat(e(this).attr("data-column")),a.sortList)>=0})),r.add(n).addClass(t.css.processing+" "+a.cssProcessing)):r.add(n).removeClass(t.css.processing+" "+a.cssProcessing)},processTbody:function(t,r,o){if(t=e(t)[0],o)return t.isProcessing=!0,r.before('<colgroup class="tablesorter-savemyplace"/>'),e.fn.detach?r.detach():r.remove();var s=e(t).find("colgroup.tablesorter-savemyplace");r.insertAfter(s),s.remove(),t.isProcessing=!1},clearTableBody:function(t){e(t)[0].config.$tbodies.children().detach()},characterEquivalents:{a:"áàâãäąå",A:"ÁÀÂÃÄĄÅ",c:"çćč",C:"ÇĆČ",e:"éèêëěę",E:"ÉÈÊËĚĘ",i:"íìİîïı",I:"ÍÌİÎÏ",o:"óòôõöō",O:"ÓÒÔÕÖŌ",ss:"ß",SS:"ẞ",u:"úùûüů",U:"ÚÙÛÜŮ"},replaceAccents:function(e){var r,o="[",s=t.characterEquivalents;if(!t.characterRegex){t.characterRegexArray={};for(r in s)"string"==typeof r&&(o+=s[r],t.characterRegexArray[r]=new RegExp("["+s[r]+"]","g"));t.characterRegex=new RegExp(o+"]")}if(t.characterRegex.test(e))for(r in s)"string"==typeof r&&(e=e.replace(t.characterRegexArray[r],r));return e},validateOptions:function(r){var o,s,a,n,i="headers sortForce sortList sortAppend widgets".split(" "),l=r.originalSettings;if(l){t.debug(r,"core")&&(n=new Date);for(o in l)if("undefined"===(a=typeof t.defaults[o]))console.warn('Tablesorter Warning! "table.config.'+o+'" option not recognized');else if("object"===a)for(s in l[o])a=t.defaults[o]&&typeof t.defaults[o][s],e.inArray(o,i)<0&&"undefined"===a&&console.warn('Tablesorter Warning! "table.config.'+o+"."+s+'" option not recognized');t.debug(r,"core")&&console.log("validate options time:"+t.benchmark(n))}},restoreHeaders:function(r){var o,s,a=e(r)[0].config,n=a.$table.find(a.selectorHeaders),i=n.length;for(o=0;o<i;o++)(s=n.eq(o)).find("."+t.css.headerIn).length&&s.html(a.headerContent[o])},destroy:function(r,o,s){if((r=e(r)[0]).hasInitialized){t.removeWidget(r,!0,!1);var a,n=e(r),i=r.config,l=n.find("thead:first"),d=l.find("tr."+t.css.headerRow).removeClass(t.css.headerRow+" "+i.cssHeaderRow),c=n.find("tfoot:first > tr").children("th, td");!1===o&&e.inArray("uitheme",i.widgets)>=0&&(n.triggerHandler("applyWidgetId",["uitheme"]),n.triggerHandler("applyWidgetId",["zebra"])),l.find("tr").not(d).remove(),a="sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave "+"keypress sortBegin sortEnd resetToLoadState ".split(" ").join(i.namespace+" "),n.removeData("tablesorter").unbind(a.replace(t.regex.spaces," ")),i.$headers.add(c).removeClass([t.css.header,i.cssHeader,i.cssAsc,i.cssDesc,t.css.sortAsc,t.css.sortDesc,t.css.sortNone].join(" ")).removeAttr("data-column").removeAttr("aria-label").attr("aria-disabled","true"),d.find(i.selectorSort).unbind("mousedown mouseup keypress ".split(" ").join(i.namespace+" ").replace(t.regex.spaces," ")),t.restoreHeaders(r),n.toggleClass(t.css.table+" "+i.tableClass+" tablesorter-"+i.theme,!1===o),n.removeClass(i.namespace.slice(1)),r.hasInitialized=!1,delete r.config.cache,"function"==typeof s&&s(r),t.debug(i,"core")&&console.log("tablesorter has been removed")}}};e.fn.tablesorter=function(r){return this.each(function(){var o=this,s=e.extend(!0,{},t.defaults,r,t.instanceMethods);s.originalSettings=r,!o.hasInitialized&&t.buildTable&&"TABLE"!==this.nodeName?t.buildTable(o,s):t.setup(o,s)})},window.console&&window.console.log||(t.logs=[],console={},console.log=console.warn=console.error=console.table=function(){var e=arguments.length>1?arguments:arguments[0];t.logs[t.logs.length]={date:Date.now(),log:e}}),t.addParser({id:"no-parser",is:function(){return!1},format:function(){return""},type:"text"}),t.addParser({id:"text",is:function(){return!0},format:function(r,o){var s=o.config;return r&&(r=e.trim(s.ignoreCase?r.toLocaleLowerCase():r),r=s.sortLocaleCompare?t.replaceAccents(r):r),r},type:"text"}),t.regex.nondigit=/[^\w,. \-()]/g,t.addParser({id:"digit",is:function(e){return t.isDigit(e)},format:function(r,o){var s=t.formatFloat((r||"").replace(t.regex.nondigit,""),o);return r&&"number"==typeof s?s:r?e.trim(r&&o.config.ignoreCase?r.toLocaleLowerCase():r):r},type:"numeric"}),t.regex.currencyReplace=/[+\-,. ]/g,t.regex.currencyTest=/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/,t.addParser({id:"currency",is:function(e){return e=(e||"").replace(t.regex.currencyReplace,""),t.regex.currencyTest.test(e)},format:function(r,o){var s=t.formatFloat((r||"").replace(t.regex.nondigit,""),o);return r&&"number"==typeof s?s:r?e.trim(r&&o.config.ignoreCase?r.toLocaleLowerCase():r):r},type:"numeric"}),t.regex.urlProtocolTest=/^(https?|ftp|file):\/\//,t.regex.urlProtocolReplace=/(https?|ftp|file):\/\/(www\.)?/,t.addParser({id:"url",is:function(e){return t.regex.urlProtocolTest.test(e)},format:function(r){return r?e.trim(r.replace(t.regex.urlProtocolReplace,"")):r},type:"text"}),t.regex.dash=/-/g,t.regex.isoDate=/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/,t.addParser({id:"isoDate",is:function(e){return t.regex.isoDate.test(e)},format:function(e){var r=e?new Date(e.replace(t.regex.dash,"/")):e;return r instanceof Date&&isFinite(r)?r.getTime():e},type:"numeric"}),t.regex.percent=/%/g,t.regex.percentTest=/(\d\s*?%|%\s*?\d)/,t.addParser({id:"percent",is:function(e){return t.regex.percentTest.test(e)&&e.length<15},format:function(e,r){return e?t.formatFloat(e.replace(t.regex.percent,""),r):e},type:"numeric"}),t.addParser({id:"image",is:function(e,t,r,o){return o.find("img").length>0},format:function(t,r,o){return e(o).find("img").attr(r.config.imgAttr||"alt")||t},parsed:!0,type:"text"}),t.regex.dateReplace=/(\S)([AP]M)$/i,t.regex.usLongDateTest1=/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i,t.regex.usLongDateTest2=/^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i,t.addParser({id:"usLongDate",is:function(e){return t.regex.usLongDateTest1.test(e)||t.regex.usLongDateTest2.test(e)},format:function(e){var r=e?new Date(e.replace(t.regex.dateReplace,"$1 $2")):e;return r instanceof Date&&isFinite(r)?r.getTime():e},type:"numeric"}),t.regex.shortDateTest=/(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/,t.regex.shortDateReplace=/[\-.,]/g,t.regex.shortDateXXY=/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,t.regex.shortDateYMD=/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,t.convertFormat=function(e,r){e=(e||"").replace(t.regex.spaces," ").replace(t.regex.shortDateReplace,"/"),"mmddyyyy"===r?e=e.replace(t.regex.shortDateXXY,"$3/$1/$2"):"ddmmyyyy"===r?e=e.replace(t.regex.shortDateXXY,"$3/$2/$1"):"yyyymmdd"===r&&(e=e.replace(t.regex.shortDateYMD,"$1/$2/$3"));var o=new Date(e);return o instanceof Date&&isFinite(o)?o.getTime():""},t.addParser({id:"shortDate",is:function(e){return e=(e||"").replace(t.regex.spaces," ").replace(t.regex.shortDateReplace,"/"),t.regex.shortDateTest.test(e)},format:function(e,r,o,s){if(e){var a=r.config,n=a.$headerIndexed[s],i=n.length&&n.data("dateFormat")||t.getData(n,t.getColumnData(r,a.headers,s),"dateFormat")||a.dateFormat;return n.length&&n.data("dateFormat",i),t.convertFormat(e,i)||e}return e},type:"numeric"}),t.regex.timeTest=/^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i,t.regex.timeMatch=/(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i,t.addParser({id:"time",is:function(e){return t.regex.timeTest.test(e)},format:function(e){var r,o=(e||"").match(t.regex.timeMatch),s=new Date(e),a=e&&(null!==o?o[0]:"00:00 AM"),n=a?new Date("2000/01/01 "+a.replace(t.regex.dateReplace,"$1 $2")):a;return n instanceof Date&&isFinite(n)?(r=s instanceof Date&&isFinite(s)?s.getTime():0,r?parseFloat(n.getTime()+"."+s.getTime()):n.getTime()):e},type:"numeric"}),t.addParser({id:"metadata",is:function(){return!1},format:function(t,r,o){var s=r.config,a=s.parserMetadataName?s.parserMetadataName:"sortValue";return e(o).metadata()[a]},type:"numeric"}),t.addWidget({id:"zebra",priority:90,format:function(t,r,o){var s,a,n,i,l,d,c,g=new RegExp(r.cssChildRow,"i"),p=r.$tbodies.add(e(r.namespace+"_extra_table").children("tbody:not(."+r.cssInfoBlock+")"));for(l=0;l<p.length;l++)for(n=0,c=(s=p.eq(l).children("tr:visible").not(r.selectorRemove)).length,d=0;d<c;d++)a=s.eq(d),g.test(a[0].className)||n++,i=n%2==0,a.removeClass(o.zebra[i?1:0]).addClass(o.zebra[i?0:1])},remove:function(e,r,o,s){if(!s){var a,n,i=r.$tbodies,l=(o.zebra||["even","odd"]).join(" ");for(a=0;a<i.length;a++)(n=t.processTbody(e,i.eq(a),!0)).children().removeClass(l),t.processTbody(e,n,!1)}}})}(e),e.tablesorter}); +</script> +<script type="text/javascript"> +/* + Copyright 2008-2013 + Matthias Ehmann, + Michael Gerhaeuser, + Carsten Miller, + Bianca Valentin, + Alfred Wassermann, + Peter Wilfahrt + Dual licensed under the Apache License Version 2.0, or LGPL Version 3 licenses. + You should have received a copy of the GNU Lesser General Public License + along with JSXCompressor. If not, see <http://www.gnu.org/licenses/>. + You should have received a copy of the Apache License along with JSXCompressor. + If not, see <http://www.apache.org/licenses/>. +*/ +(function(){var e,r,n;(function(t){function o(e,r){return C.call(e,r)}function i(e,r){var n,t,o,i,a,u,c,f,s,l,p=r&&r.split("/"),h=k.map,d=h&&h["*"]||{};if(e&&"."===e.charAt(0))if(r){for(p=p.slice(0,p.length-1),e=p.concat(e.split("/")),f=0;e.length>f;f+=1)if(l=e[f],"."===l)e.splice(f,1),f-=1;else if(".."===l){if(1===f&&(".."===e[2]||".."===e[0]))break;f>0&&(e.splice(f-1,2),f-=2)}e=e.join("/")}else 0===e.indexOf("./")&&(e=e.substring(2));if((p||d)&&h){for(n=e.split("/"),f=n.length;f>0;f-=1){if(t=n.slice(0,f).join("/"),p)for(s=p.length;s>0;s-=1)if(o=h[p.slice(0,s).join("/")],o&&(o=o[t])){i=o,a=f;break}if(i)break;!u&&d&&d[t]&&(u=d[t],c=f)}!i&&u&&(i=u,a=c),i&&(n.splice(0,a,i),e=n.join("/"))}return e}function a(e,r){return function(){return h.apply(t,v.call(arguments,0).concat([e,r]))}}function u(e){return function(r){return i(r,e)}}function c(e){return function(r){b[e]=r}}function f(e){if(o(m,e)){var r=m[e];delete m[e],y[e]=!0,p.apply(t,r)}if(!o(b,e)&&!o(y,e))throw Error("No "+e);return b[e]}function s(e){var r,n=e?e.indexOf("!"):-1;return n>-1&&(r=e.substring(0,n),e=e.substring(n+1,e.length)),[r,e]}function l(e){return function(){return k&&k.config&&k.config[e]||{}}}var p,h,d,g,b={},m={},k={},y={},C=Object.prototype.hasOwnProperty,v=[].slice;d=function(e,r){var n,t=s(e),o=t[0];return e=t[1],o&&(o=i(o,r),n=f(o)),o?e=n&&n.normalize?n.normalize(e,u(r)):i(e,r):(e=i(e,r),t=s(e),o=t[0],e=t[1],o&&(n=f(o))),{f:o?o+"!"+e:e,n:e,pr:o,p:n}},g={require:function(e){return a(e)},exports:function(e){var r=b[e];return r!==void 0?r:b[e]={}},module:function(e){return{id:e,uri:"",exports:b[e],config:l(e)}}},p=function(e,r,n,i){var u,s,l,p,h,k,C=[];if(i=i||e,"function"==typeof n){for(r=!r.length&&n.length?["require","exports","module"]:r,h=0;r.length>h;h+=1)if(p=d(r[h],i),s=p.f,"require"===s)C[h]=g.require(e);else if("exports"===s)C[h]=g.exports(e),k=!0;else if("module"===s)u=C[h]=g.module(e);else if(o(b,s)||o(m,s)||o(y,s))C[h]=f(s);else{if(!p.p)throw Error(e+" missing "+s);p.p.load(p.n,a(i,!0),c(s),{}),C[h]=b[s]}l=n.apply(b[e],C),e&&(u&&u.exports!==t&&u.exports!==b[e]?b[e]=u.exports:l===t&&k||(b[e]=l))}else e&&(b[e]=n)},e=r=h=function(e,r,n,o,i){return"string"==typeof e?g[e]?g[e](r):f(d(e,r).f):(e.splice||(k=e,r.splice?(e=r,r=n,n=null):e=t),r=r||function(){},"function"==typeof n&&(n=o,o=i),o?p(t,e,r,n):setTimeout(function(){p(t,e,r,n)},4),h)},h.config=function(e){return k=e,k.deps&&h(k.deps,k.callback),h},n=function(e,r,n){r.splice||(n=r,r=[]),o(b,e)||o(m,e)||(m[e]=[e,r,n])},n.amd={jQuery:!0}})(),n("../node_modules/almond/almond",function(){}),n("jxg",[],function(){var e={};return"object"!=typeof JXG||JXG.extend||(e=JXG),e.extend=function(e,r,n,t){var o,i;n=n||!1,t=t||!1;for(o in r)(!n||n&&r.hasOwnProperty(o))&&(i=t?o.toLowerCase():o,e[i]=r[o])},e.extend(e,{boards:{},readers:{},elements:{},registerElement:function(e,r){e=e.toLowerCase(),this.elements[e]=r},registerReader:function(e,r){var n,t;for(n=0;r.length>n;n++)t=r[n].toLowerCase(),"function"!=typeof this.readers[t]&&(this.readers[t]=e)},shortcut:function(e,r){return function(){return e[r].apply(this,arguments)}},getRef:function(e,r){return e.select(r)},getReference:function(e,r){return e.select(r)},debugInt:function(){var e,r;for(e=0;arguments.length>e;e++)r=arguments[e],"object"==typeof window&&window.console&&console.log?console.log(r):"object"==typeof document&&document.getElementById("debug")&&(document.getElementById("debug").innerHTML+=r+"<br/>")},debugWST:function(){var r=Error();e.debugInt.apply(this,arguments),r&&r.stack&&(e.debugInt("stacktrace"),e.debugInt(r.stack.split("\n").slice(1).join("\n")))},debugLine:function(){var r=Error();e.debugInt.apply(this,arguments),r&&r.stack&&e.debugInt("Called from",r.stack.split("\n").slice(2,3).join("\n"))},debug:function(){e.debugInt.apply(this,arguments)}}),e}),n("utils/zip",["jxg"],function(e){var r=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255],n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,99,99],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],i=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=256;return e.Util=e.Util||{},e.Util.Unzip=function(c){function f(){return R+=8,O>X?c[X++]:-1}function s(){B=1}function l(){var e;try{return R++,e=1&B,B>>=1,0===B&&(B=f(),e=1&B,B=128|B>>1),e}catch(r){throw r}}function p(e){var n=0,t=e;try{for(;t--;)n=n<<1|l();e&&(n=r[n]>>8-e)}catch(o){throw o}return n}function h(){J=0}function d(e){j++,G[J++]=e,z.push(String.fromCharCode(e)),32768===J&&(J=0)}function g(){this.b0=0,this.b1=0,this.jump=null,this.jumppos=-1}function b(){for(;;){if(M[H]>=x)return-1;if(U[M[H]]===H)return M[H]++;M[H]++}}function m(){var e,r=P[F];if(17===H)return-1;if(F++,H++,e=b(),e>=0)r.b0=e;else if(r.b0=32768,m())return-1;if(e=b(),e>=0)r.b1=e,r.jump=null;else if(r.b1=32768,r.jump=P[F],r.jumppos=F,m())return-1;return H--,0}function k(e,r,n){var t;for(P=e,F=0,U=n,x=r,t=0;17>t;t++)M[t]=0;return H=0,m()?-1:0}function y(e){for(var r,n,t,o=0,i=e[o];;)if(t=l()){if(!(32768&i.b1))return i.b1;for(i=i.jump,r=e.length,n=0;r>n;n++)if(e[n]===i){o=n;break}}else{if(!(32768&i.b0))return i.b0;o++,i=e[o]}}function C(){var u,c,b,m,C,v,A,j,w,U,x,S,z,I,E,L,O;do if(u=l(),b=p(2),0===b)for(s(),U=f(),U|=f()<<8,S=f(),S|=f()<<8,65535&(U^~S)&&e.debug("BlockLen checksum mismatch\n");U--;)c=f(),d(c);else if(1===b)for(;;)if(C=r[p(7)]>>1,C>23?(C=C<<1|l(),C>199?(C-=128,C=C<<1|l()):(C-=48,C>143&&(C+=136))):C+=256,256>C)d(C);else{if(256===C)break;for(C-=257,w=p(t[C])+n[C],C=r[p(5)]>>3,i[C]>8?(x=p(8),x|=p(i[C]-8)<<8):x=p(i[C]),x+=o[C],C=0;w>C;C++)c=G[32767&J-x],d(c)}else if(2===b){for(A=Array(320),I=257+p(5),E=1+p(5),L=4+p(4),C=0;19>C;C++)A[C]=0;for(C=0;L>C;C++)A[a[C]]=p(3);for(w=q.length,m=0;w>m;m++)q[m]=new g;if(k(q,19,A,0))return h(),1;for(z=I+E,m=0,O=-1;z>m;)if(O++,C=y(q),16>C)A[m++]=C;else if(16===C){if(C=3+p(2),m+C>z)return h(),1;for(v=m?A[m-1]:0;C--;)A[m++]=v}else{if(C=17===C?3+p(3):11+p(7),m+C>z)return h(),1;for(;C--;)A[m++]=0}for(w=T.length,m=0;w>m;m++)T[m]=new g;if(k(T,I,A,0))return h(),1;for(w=T.length,m=0;w>m;m++)q[m]=new g;for(j=[],m=I;A.length>m;m++)j[m-I]=A[m];if(k(q,E,j,0))return h(),1;for(;;)if(C=y(T),C>=256){if(C-=256,0===C)break;for(C-=1,w=p(t[C])+n[C],C=y(q),i[C]>8?(x=p(8),x|=p(i[C]-8)<<8):x=p(i[C]),x+=o[C];w--;)c=G[32767&J-x],d(c)}else d(C)}while(!u);return h(),s(),0}function v(){var e,r,n,t,o,i,a,c,s=[];try{if(z=[],L=!1,s[0]=f(),s[1]=f(),120===s[0]&&218===s[1]&&(C(),E[I]=[z.join(""),"geonext.gxt"],I++),31===s[0]&&139===s[1]&&(S(),E[I]=[z.join(""),"file"],I++),80===s[0]&&75===s[1]&&(L=!0,s[2]=f(),s[3]=f(),3===s[2]&&4===s[3])){for(s[0]=f(),s[1]=f(),A=f(),A|=f()<<8,c=f(),c|=f()<<8,f(),f(),f(),f(),a=f(),a|=f()<<8,a|=f()<<16,a|=f()<<24,i=f(),i|=f()<<8,i|=f()<<16,i|=f()<<24,o=f(),o|=f()<<8,o|=f()<<16,o|=f()<<24,t=f(),t|=f()<<8,n=f(),n|=f()<<8,e=0,N=[];t--;)r=f(),"/"===r|":"===r?e=0:u-1>e&&(N[e++]=String.fromCharCode(r));for(w||(w=N),e=0;n>e;)r=f(),e++;j=0,8===c&&(C(),E[I]=Array(2),E[I][0]=z.join(""),E[I][1]=N.join(""),I++),S()}}catch(l){throw l}}var A,j,w,U,x,S,z=[],I=0,E=[],G=Array(32768),J=0,L=!1,O=c.length,X=0,B=1,R=0,T=Array(288),q=Array(32),F=0,P=null,H=(Array(64),Array(64),0),M=Array(17),N=[];M[0]=0,S=function(){var e,r,n,t,o,i,a=[];if(8&A&&(a[0]=f(),a[1]=f(),a[2]=f(),a[3]=f(),80===a[0]&&75===a[1]&&7===a[2]&&8===a[3]?(e=f(),e|=f()<<8,e|=f()<<16,e|=f()<<24):e=a[0]|a[1]<<8|a[2]<<16|a[3]<<24,r=f(),r|=f()<<8,r|=f()<<16,r|=f()<<24,n=f(),n|=f()<<8,n|=f()<<16,n|=f()<<24),L&&v(),a[0]=f(),8===a[0]){if(A=f(),f(),f(),f(),f(),f(),t=f(),4&A)for(a[0]=f(),a[2]=f(),H=a[0]+256*a[1],o=0;H>o;o++)f();if(8&A)for(o=0,N=[],i=f();i;)("7"===i||":"===i)&&(o=0),u-1>o&&(N[o++]=i),i=f();if(16&A)for(i=f();i;)i=f();2&A&&(f(),f()),C(),e=f(),e|=f()<<8,e|=f()<<16,e|=f()<<24,n=f(),n|=f()<<8,n|=f()<<16,n|=f()<<24,L&&v()}},e.Util.Unzip.prototype.unzipFile=function(e){var r;for(this.unzip(),r=0;E.length>r;r++)if(E[r][1]===e)return E[r][0];return""},e.Util.Unzip.prototype.unzip=function(){return v(),E}},e.Util}),n("utils/encoding",["jxg"],function(e){var r=0,n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,0,12,24,36,60,96,84,12,12,12,48,72,12,12,12,12,12,12,12,12,12,12,12,12,12,0,12,12,12,12,12,0,12,0,12,12,12,24,12,12,12,12,12,24,12,24,12,12,12,12,12,12,12,12,12,24,12,12,12,12,12,24,12,12,12,12,12,12,12,24,12,12,12,12,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,12,12,12,12,12];return e.Util=e.Util||{},e.Util.UTF8={encode:function(e){var r,n,t="",o=e.length;if(e=e.replace(/\r\n/g,"\n"),"function"==typeof unescape&&"function"==typeof encodeURIComponent)return unescape(encodeURIComponent(e));for(r=0;o>r;r++)n=e.charCodeAt(r),128>n?t+=String.fromCharCode(n):n>127&&2048>n?(t+=String.fromCharCode(192|n>>6),t+=String.fromCharCode(128|63&n)):(t+=String.fromCharCode(224|n>>12),t+=String.fromCharCode(128|63&n>>6),t+=String.fromCharCode(128|63&n));return t},decode:function(e){var t,o,i,a=0,u=0,c=r,f=[],s=e.length,l=[];for(t=0;s>t;t++)o=e.charCodeAt(t),i=n[o],u=c!==r?63&o|u<<6:255>>i&o,c=n[256+c+i],c===r&&(u>65535?f.push(55232+(u>>10),56320+(1023&u)):f.push(u),a++,0===a%1e4&&(l.push(String.fromCharCode.apply(null,f)),f=[]));return l.push(String.fromCharCode.apply(null,f)),l.join("")},asciiCharCodeAt:function(e,r){var n=e.charCodeAt(r);if(n>255)switch(n){case 8364:n=128;break;case 8218:n=130;break;case 402:n=131;break;case 8222:n=132;break;case 8230:n=133;break;case 8224:n=134;break;case 8225:n=135;break;case 710:n=136;break;case 8240:n=137;break;case 352:n=138;break;case 8249:n=139;break;case 338:n=140;break;case 381:n=142;break;case 8216:n=145;break;case 8217:n=146;break;case 8220:n=147;break;case 8221:n=148;break;case 8226:n=149;break;case 8211:n=150;break;case 8212:n=151;break;case 732:n=152;break;case 8482:n=153;break;case 353:n=154;break;case 8250:n=155;break;case 339:n=156;break;case 382:n=158;break;case 376:n=159;break;default:}return n}},e.Util.UTF8}),n("utils/base64",["jxg","utils/encoding"],function(e,r){function n(e,r){return 255&e.charCodeAt(r)}function t(e,r){var n=o.indexOf(e.charAt(r));if(-1===n)throw Error("JSXGraph/utils/base64: Can't decode string (invalid character).");return n}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i="=";return e.Util=e.Util||{},e.Util.Base64={encode:function(e){var t,a,u,c,f,s=[];for(f=r.encode(e),u=f.length,c=u%3,t=0;u-c>t;t+=3)a=n(f,t)<<16|n(f,t+1)<<8|n(f,t+2),s.push(o.charAt(a>>18),o.charAt(63&a>>12),o.charAt(63&a>>6),o.charAt(63&a));switch(c){case 1:a=n(f,u-1),s.push(o.charAt(a>>2),o.charAt(63&a<<4),i,i);break;case 2:a=n(f,u-2)<<8|n(f,u-1),s.push(o.charAt(a>>10),o.charAt(63&a>>4),o.charAt(63&a<<2),i)}return s.join("")},decode:function(e,n){var o,a,u,c,f,s,l=[],p=[];if(o=e.replace(/[^A-Za-z0-9\+\/=]/g,""),u=o.length,0!==u%4)throw Error("JSXGraph/utils/base64: Can't decode string (invalid input length).");for(o.charAt(u-1)===i&&(c=1,o.charAt(u-2)===i&&(c=2),u-=4),a=0;u>a;a+=4)f=t(o,a)<<18|t(o,a+1)<<12|t(o,a+2)<<6|t(o,a+3),p.push(f>>16,255&f>>8,255&f),0===a%1e4&&(l.push(String.fromCharCode.apply(null,p)),p=[]);switch(c){case 1:f=t(o,u)<<12|t(o,u+1)<<6|t(o,u+2),p.push(f>>10,255&f>>2);break;case 2:f=t(o,a)<<6|t(o,a+1),p.push(f>>4)}return l.push(String.fromCharCode.apply(null,p)),s=l.join(""),n&&(s=r.decode(s)),s},decodeAsArray:function(e){var r,n=this.decode(e),t=[],o=n.length;for(r=0;o>r;r++)t[r]=n.charCodeAt(r);return t}},e.Util.Base64}),n("../build/compressor.deps.js",["jxg","utils/zip","utils/base64"],function(e,r,n){return e.decompress=function(e){return unescape(new r.Unzip(n.decodeAsArray(e)).unzip()[0][0])},e}),window.JXG=r("../build/compressor.deps.js")})(); +</script> +<script type="text/javascript"> +window.fileLoading = (function () { + var fileLoadingCallbacks = {}; + var timestamp = new Date().getTime(); + function loadKeywordsFile(filename, callback) { + fileLoadingCallbacks[filename] = callback; + var script = document.createElement('script'); + script.type = 'text/javascript'; + // timestamp as an argument to prevent browsers from caching scripts + // see: http://stackoverflow.com/questions/866619/how-to-force-ie-to-reload-javascript + script.src = filename+'?time='+timestamp; + document.getElementsByTagName("head")[0].appendChild(script); + } + function getCallbackHandlerForKeywords(parent) { + var callableList = []; + return function (callable) { + if (!parent.isChildrenLoaded) { + callableList.push(callable); + if (callableList.length == 1) { + loadKeywordsFile(parent.childFileName, function () { + parent.isChildrenLoaded = true; + for (var i = 0; i < callableList.length; i++) { + callableList[i](); + } + }); + } + } else { + callable(); + } + } + } + function notifyFileLoaded(filename) { + fileLoadingCallbacks[filename](); + } + return { + getCallbackHandlerForKeywords: getCallbackHandlerForKeywords, + notify: notifyFileLoaded + } +}()); +</script> +<script type="text/javascript"> +window.model = (function () { + function Suite(data) { + var suite = createModelObject(data); + suite.source = data.source; + suite.relativeSource = data.relativeSource; + suite.fullName = data.parent ? data.parent.fullName + '.' + data.name : data.name; + setStats(suite, data.statistics); + suite.metadata = data.metadata; + suite.populateKeywords = createIterablePopulator('Keyword'); + suite.populateTests = createIterablePopulator('Test'); + suite.populateSuites = createIterablePopulator('Suite'); + suite.childrenNames = ['keyword', 'suite', 'test']; + suite.callWhenChildrenReady = function (callable) { callable(); }; + suite.message = data.message; + suite.children = function () { + return suite.keywords().concat(suite.tests()).concat(suite.suites()); + }; + suite.searchTests = function (predicate) { + var tests = []; + var suites = this.suites(); + for (var i in suites) + tests = tests.concat(suites[i].searchTests(predicate)); + return tests.concat(util.filter(this.tests(), predicate)); + }; + suite.searchTestsInSuite = function (pattern, matcher) { + if (!matcher) + matcher = util.Matcher(pattern); + if (matcher.matchesAny([suite.fullName, suite.name])) + return suite.allTests(); + var tests = []; + var suites = this.suites(); + for (var i in suites) + tests = tests.concat(suites[i].searchTestsInSuite(pattern, matcher)); + return tests; + }; + suite.searchTestsByTag = function (tag) { + return suite.searchTests(function (test) { + if (tag.info == "critical" || tag.info == "non-critical") + return containsTagPattern(test.tags, tag.label); + if (tag.combined) + return containsTagPattern(test.tags, tag.combined); + return containsTag(test.tags, tag.label); + }); + }; + suite.findSuiteByName = function (name) { + return findSuiteByName(suite, name); + }; + suite.allTests = function () { + return suite.searchTests(function (test) { + return true; + }); + }; + suite.criticalTests = function () { + return suite.searchTests(function (test) { + return test.isCritical; + }); + }; + return suite; + } + function containsTag(testTags, tagname) { + testTags = util.map(testTags, util.normalize); + return util.contains(testTags, util.normalize(tagname)); + } + function containsTagPattern(testTags, pattern) { + var patterns; + if (pattern.indexOf('NOT') != -1) { + patterns = pattern.split('NOT'); + if (!util.normalize(patterns[0])) + return util.all(util.map(patterns.slice(1), function (p) { + return !containsTagPattern(testTags, p); + })); + return containsTagPattern(testTags, patterns[0]) && + util.all(util.map(patterns.slice(1), function (p) { + return !containsTagPattern(testTags, p); + })); + } + if (pattern.indexOf('OR') != -1) { + patterns = pattern.split('OR'); + return util.any(util.map(patterns, function (p) { + return containsTagPattern(testTags, p); + })); + } + if (pattern.indexOf('AND') != -1) { + patterns = pattern.split('AND'); + return util.all(util.map(patterns, function (p) { + return containsTagPattern(testTags, p); + })); + } + return util.Matcher(pattern).matchesAny(testTags); + } + function findSuiteByName(suite, name) { + if (suite.fullName == name) + return suite; + var subSuites = suite.suites(); + for (var i in subSuites) { + var match = findSuiteByName(subSuites[i], name); + if (match) + return match; + } + return null; + } + function setStats(suite, stats) { + for (var name in stats) { + suite[name] = stats[name]; + } + } + function createModelObject(data) { + return { + name: data.name, + doc: data.doc, + status: data.status, + times: data.times, + id: data.parent ? data.parent.id + '-' + data.id : data.id + }; + } + function Test(data) { + var test = createModelObject(data); + test.fullName = data.parent.fullName + '.' + test.name; + test.formatParentName = function () { return util.formatParentName(test); }; + test.timeout = data.timeout; + test.populateKeywords = createIterablePopulator('Keyword'); + test.childrenNames = ['keyword']; + test.isChildrenLoaded = data.isChildrenLoaded; + test.callWhenChildrenReady = window.fileLoading.getCallbackHandlerForKeywords(test); + test.children = function () { + if (test.isChildrenLoaded) + return test.keywords(); + }; + test.isCritical = data.isCritical; + test.tags = data.tags; + test.message = data.message; + test.matchesTagPattern = function (pattern) { + return containsTagPattern(test.tags, pattern); + }; + test.matchesNamePattern = function (pattern) { + return util.Matcher(pattern).matchesAny([test.name, test.fullName]); + }; + return test; + } + function Keyword(data) { + var kw = createModelObject(data); + kw.libname = data.libname; + kw.type = data.type; + kw.arguments = data.args; + kw.assign = data.assign + (data.assign ? ' =' : ''); + kw.tags = data.tags; + kw.timeout = data.timeout; + kw.populateMessages = createIterablePopulator('Message'); + kw.populateKeywords = createIterablePopulator('Keyword'); + kw.childrenNames = ['keyword', 'message']; + kw.isChildrenLoaded = data.isChildrenLoaded; + kw.callWhenChildrenReady = window.fileLoading.getCallbackHandlerForKeywords(kw); + kw.children = function () { + if (kw.isChildrenLoaded) + return kw.keywords(); + }; + return kw; + } + function Message(level, date, text, link) { + return { + level: level, + time: util.timeFromDate(date), + date: util.dateFromDate(date), + text: text, + link: link + }; + } + function Times(timedata) { + var start = timedata[0]; + var end = timedata[1]; + var elapsed = timedata[2]; + return { + elapsedMillis: elapsed, + elapsedTime: util.formatElapsed(elapsed), + startTime: util.dateTimeFromDate(start), + endTime: util.dateTimeFromDate(end) + }; + } + function createIterablePopulator(name) { + return function (populator) { + populateIterable(this, name, populator); + }; + } + function populateIterable(obj, name, populator) { + name = name.toLowerCase() + 's'; + obj[name] = createGetAllFunction(populator.numberOfItems, populator.creator); + } + function createGetAllFunction(numberOfElements, creator) { + var cached = null; + return function () { + if (cached === null) { + cached = []; + for (var i = 0; i < numberOfElements(); i++) { + cached.push(creator(i)); + } + } + return cached; + }; + } + return { + Suite: Suite, + Test: Test, + Keyword: Keyword, + Message: Message, + Times: Times, + containsTag: containsTag, // Exposed for tests + containsTagPattern: containsTagPattern // Exposed for tests + }; +}()); +window.stats = (function () { + function Statistics(totalElems, tagElems, suiteElems) { + return {total: util.map(totalElems, totalStatElem), + tag: util.map(tagElems, tagStatElem), + suite: util.map(suiteElems, suiteStatElem)}; + } + function statElem(stat) { + stat.total = stat.pass + stat.fail; + var percents = calculatePercents(stat.total, stat.pass, stat.fail); + stat.passPercent = percents[0]; + stat.failPercent = percents[1]; + var widths = calculateWidths(stat.passPercent, stat.failPercent); + stat.passWidth = widths[0]; + stat.failWidth = widths[1]; + return stat; + } + function totalStatElem(data) { + var stat = statElem(data); + stat.type = stat.label == 'Critical Tests' ? 'critical' : 'all'; + return stat; + } + function tagStatElem(data) { + var stat = statElem(data); + stat.links = parseLinks(stat.links); + return stat; + } + function suiteStatElem(data) { + var stat = statElem(data); + stat.fullName = stat.label; + stat.formatParentName = function () { return util.formatParentName(stat); }; + return stat; + } + function parseLinks(linksData) { + if (!linksData) + return []; + return util.map(linksData.split(':::'), function (link) { + var index = link.indexOf(':'); + return {title: link.slice(0, index), url: link.slice(index+1)}; + }); + } + function calculatePercents(total, passed, failed) { + if (total == 0) + return [0.0, 0.0]; + var pass = 100.0 * passed / total; + var fail = 100.0 * failed / total; + if (pass > 0 && pass < 0.1) + return [0.1, 99.9]; + if (fail > 0 && fail < 0.1) + return [99.9, 0.1]; + return [Math.round(pass*10)/10, Math.round(fail*10)/10]; + } + function calculateWidths(num1, num2) { + if (num1 + num2 == 0) + return [0.0, 0.0]; + // Make small percentages better visible + if (num1 > 0 && num1 < 1) + return [1.0, 99.0]; + if (num2 > 0 && num2 < 1) + return [99.0, 1.0]; + // Handle situation where both are rounded up + while (num1 + num2 > 100) { + if (num1 > num2) + num1 -= 0.1; + if (num2 > num1) + num2 -= 0.1; + } + return [num1, num2]; + } + return { + Statistics: Statistics + }; +}()); +</script> +<script type="text/javascript"> +window.util = function () { + function map(elems, func) { + var ret = []; + for (var i = 0, len = elems.length; i < len; i++) { + ret[i] = func(elems[i]); + } + return ret; + } + function filter(elems, predicate) { + var ret = []; + for (var i = 0, len = elems.length; i < len; i++) { + if (predicate(elems[i])) + ret.push(elems[i]); + } + return ret; + } + function all(elems) { + for (var i = 0, len = elems.length; i < len; i++) { + if (!elems[i]) + return false; + } + return true; + } + function any(elems) { + for (var i = 0, len = elems.length; i < len; i++) { + if (elems[i]) + return elems[i]; + } + return false; + } + function contains(elems, e) { + for (var i = 0, len = elems.length; i < len; i++) { + if (elems[i] == e) + return true; + } + return false; + } + function last(items) { + return items[items.length-1]; + } + function unescape(string) { + return string.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&'); + } + function escape(string) { + return string.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); + } + function normalize(string) { + return string.toLowerCase().replace(/ /g, '').replace(/_/g, ''); + } + function regexpEscape(string) { + return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&"); + } + function Matcher(pattern) { + pattern = regexpEscape(normalize(pattern)); + var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$'; + var regexp = new RegExp(rePattern); + function matches(string) { + return regexp.test(normalize(string)); + } + return { + matches: matches, + matchesAny: function (strings) { + for (var i = 0, len = strings.length; i < len; i++) + if (matches(strings[i])) + return true; + return false; + } + }; + } + function formatParentName(item) { + var parentName = item.fullName.slice(0, item.fullName.length - item.name.length); + return parentName.replace(/\./g, ' . '); + } + function timeFromDate(date) { + if (!date) + return 'N/A'; + return formatTime(date.getHours(), date.getMinutes(), + date.getSeconds(), date.getMilliseconds()); + } + function dateFromDate(date) { + if (!date) + return 'N/A'; + return padTo(date.getFullYear(), 4) + + padTo(date.getMonth() + 1, 2) + + padTo(date.getDate(), 2); + } + function dateTimeFromDate(date) { + if (!date) + return 'N/A'; + return dateFromDate(date) + ' ' + timeFromDate(date); + } + function formatTime(hours, minutes, seconds, milliseconds) { + return padTo(hours, 2) + ':' + + padTo(minutes, 2) + ':' + + padTo(seconds, 2) + '.' + + padTo(milliseconds, 3); + } + function formatElapsed(elapsed) { + var millis = elapsed; + var hours = Math.floor(millis / (60 * 60 * 1000)); + millis -= hours * 60 * 60 * 1000; + var minutes = Math.floor(millis / (60 * 1000)); + millis -= minutes * 60 * 1000; + var seconds = Math.floor(millis / 1000); + millis -= seconds * 1000; + return formatTime(hours, minutes, seconds, millis); + } + function padTo(number, len) { + var numString = number + ""; + while (numString.length < len) numString = "0" + numString; + return numString; + } + function timestamp(millis) { + // used also by tools that do not set window.output.baseMillis + var base = window.output ? window.output.baseMillis : 0; + return new Date(base + millis); + } + function createGeneratedString(timestamp) { + var date = new Date(timestamp); + var dt = dateTimeFromDate(date).slice(0, 17); // drop millis + var offset = date.getTimezoneOffset(); + var sign = offset > 0 ? '-' : '+'; + var hh = Math.floor(Math.abs(offset) / 60); + var mm = Math.abs(offset) % 60; + return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2); + } + function createGeneratedAgoString(timestamp) { + function timeString(time, shortUnit) { + var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute', + s: 'second'}[shortUnit]; + var end = time == 1 ? ' ' : 's '; + return time + ' ' + unit + end; + } + function compensateLeapYears(days, years) { + // Not a perfect algorithm but ought to be enough + return days - Math.floor(years / 4); + } + var generated = Math.round(timestamp / 1000); + var current = Math.round(new Date().getTime() / 1000); + var elapsed = current - generated; + var prefix = ''; + if (elapsed < 0) { + prefix = '- '; + elapsed = Math.abs(elapsed); + } + var secs = elapsed % 60; + var mins = Math.floor(elapsed / 60) % 60; + var hours = Math.floor(elapsed / (60*60)) % 24; + var days = Math.floor(elapsed / (60*60*24)) % 365; + var years = Math.floor(elapsed / (60*60*24*365)); + if (years) { + days = compensateLeapYears(days, years); + return prefix + timeString(years, 'y') + timeString(days, 'd'); + } else if (days) { + return prefix + timeString(days, 'd') + timeString(hours, 'h'); + } else if (hours) { + return prefix + timeString(hours, 'h') + timeString(mins, 'm'); + } else if (mins) { + return prefix + timeString(mins, 'm') + timeString(secs, 's'); + } else { + return prefix + timeString(secs, 's'); + } + } + function parseQueryString(query) { + var result = {}; + if (!query) + return result; + var params = query.split('&'); + var parts; + function decode(item) { + return decodeURIComponent(item.replace('+', ' ')); + } + for (var i = 0, len = params.length; i < len; i++) { + parts = params[i].split('='); + result[decode(parts.shift())] = decode(parts.join('=')); + } + return result; + } + return { + map: map, + filter: filter, + all: all, + any: any, + contains: contains, + last: last, + escape: escape, + unescape: unescape, + normalize: normalize, + regexpEscape: regexpEscape, + Matcher: Matcher, + formatParentName: formatParentName, + timeFromDate: timeFromDate, + dateFromDate: dateFromDate, + dateTimeFromDate: dateTimeFromDate, + formatElapsed: formatElapsed, + timestamp: timestamp, + createGeneratedString: createGeneratedString, + createGeneratedAgoString: createGeneratedAgoString, + parseQueryString: parseQueryString + }; +}(); +</script> +<script type="text/javascript"> +window.testdata = function () { + var elementsById = {}; + var idCounter = 0; + var _statistics = null; + var LEVELS = ['TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FAIL']; + var STATUSES = ['FAIL', 'PASS', 'NOT_RUN']; + var KEYWORDS = ['KEYWORD', 'SETUP', 'TEARDOWN', 'FOR', 'VAR']; + function addElement(elem) { + if (!elem.id) + elem.id = uniqueId(); + elementsById[elem.id] = elem; + return elem; + } + function uniqueId() { + idCounter++; + return 'element-id-' + idCounter; + } + function times(stats) { + var startMillis = stats[1]; + var elapsed = stats[2]; + if (startMillis === null) + return [null, null, elapsed]; + return [util.timestamp(startMillis), + util.timestamp(startMillis + elapsed), + elapsed]; + } + function message(element, strings) { + return addElement(model.Message(LEVELS[element[1]], + util.timestamp(element[0]), + strings.get(element[2]), + strings.get(element[3]))); + } + function parseStatus(stats) { + return STATUSES[stats[0]]; + } + function childCreator(parent, childType) { + return function (elem, strings, index) { + return addElement(childType(parent, elem, strings, index)); + }; + } + function createKeyword(parent, element, strings, index) { + var kw = model.Keyword({ + parent: parent, + type: KEYWORDS[element[0]], + id: 'k' + (index + 1), + name: strings.get(element[1]), + libname: strings.get(element[2]), + timeout: strings.get(element[3]), + args: strings.get(element[5]), + assign: strings.get(element[6]), + tags: strings.get(element[7]), + doc: function () { + var doc = strings.get(element[4]); + this.doc = function () { return doc; }; + return doc; + }, + status: parseStatus(element[8], strings), + times: model.Times(times(element[8])), + isChildrenLoaded: typeof(element[9]) !== 'number' + }); + lazyPopulateKeywordsFromFile(kw, element[9], strings); + kw.populateMessages(Populator(element[10], strings, message)); + return kw; + } + function lazyPopulateKeywordsFromFile(parent, modelOrIndex, strings) { + var model, index, populator; + var creator = childCreator(parent, createKeyword); + if (parent.isChildrenLoaded) { + model = modelOrIndex; + populator = Populator(model, strings, creator); + } else { + index = modelOrIndex; + parent.childFileName = window.settings['splitLogBase'] + '-' + index + '.js'; + populator = SplitLogPopulator(index, creator); + } + parent.populateKeywords(populator); + } + function tags(taglist, strings) { + return util.map(taglist, strings.get); + } + function createTest(parent, element, strings, index) { + var statusElement = element[5]; + var test = model.Test({ + parent: parent, + id: 't' + (index + 1), + name: strings.get(element[0]), + doc: function () { + var doc = strings.get(element[3]); + this.doc = function () { return doc; }; + return doc; + }, + timeout: strings.get(element[1]), + isCritical: element[2], + status: parseStatus(statusElement), + message: function () { + var msg = createMessage(statusElement, strings); + this.message = function () { return msg; }; + return msg; + }, + times: model.Times(times(statusElement)), + tags: tags(element[4], strings), + isChildrenLoaded: typeof(element[6]) !== 'number' + }); + lazyPopulateKeywordsFromFile(test, element[6], strings); + return test; + } + function createMessage(statusElement, strings) { + return statusElement.length == 4 ? strings.get(statusElement[3]) : ''; + } + function createSuite(parent, element, strings, index) { + var statusElement = element[5]; + var suite = model.Suite({ + parent: parent, + id: 's' + ((index || 0) + 1), + name: strings.get(element[0]), + source: strings.get(element[1]), + relativeSource: strings.get(element[2]), + doc: function () { + var doc = strings.get(element[3]); + this.doc = function () { return doc; }; + return doc; + }, + status: parseStatus(statusElement), + message: function () { + var msg = createMessage(statusElement, strings); + this.message = function () { return msg; }; + return msg; + }, + times: model.Times(times(statusElement)), + statistics: suiteStats(util.last(element)), + metadata: parseMetadata(element[4], strings) + }); + suite.populateKeywords(Populator(element[8], strings, childCreator(suite, createKeyword))); + suite.populateTests(Populator(element[7], strings, childCreator(suite, createTest))); + suite.populateSuites(Populator(element[6], strings, childCreator(suite, createSuite))); + return suite; + } + function parseMetadata(data, strings) { + var metadata = []; + for (var i=0; i<data.length; i+=2) { + metadata.push([strings.get(data[i]), strings.get(data[i+1])]); + } + return metadata; + } + function suiteStats(stats) { + return { + total: stats[0], + totalPassed: stats[1], + totalFailed: stats[0] - stats[1], + critical: stats[2], + criticalPassed: stats[3], + criticalFailed: stats[2] - stats[3] + }; + } + function Populator(items, strings, creator) { + return { + numberOfItems: function () { + return items.length; + }, + creator: function (index) { + return creator(items[index], strings, index); + } + }; + } + function SplitLogPopulator(structureIndex, creator) { + return { + numberOfItems: function () { + return window['keywords'+structureIndex].length; + }, + creator: function (index) { + return creator(window['keywords'+structureIndex][index], + StringStore(window['strings'+structureIndex]), + index); + } + }; + } + function suite() { + var elem = window.output.suite; + if (elementsById[elem.id]) + return elem; + var root = addElement(createSuite(null, elem, StringStore(window.output.strings))); + window.output.suite = root; + return root; + } + function findLoaded(id) { + return elementsById[id]; + } + function ensureLoaded(id, callback) { + var ids = id.split('-'); + var root = suite(); + ids.shift(); + loadItems(ids, root, [root.id], callback); + } + function loadItems(ids, current, result, callback) { + if (!ids.length) { + callback(result); + return; + } + current.callWhenChildrenReady(function () { + var id = ids.shift(); + var type = id[0]; + var index = parseInt(id.substring(1)) - 1; + var item = selectFrom(current, type, index); + if (item) + result.push(item.id); + else // Invalid id. Should this be reported somewhere? + ids = []; + loadItems(ids, item, result, callback); + }); + } + function selectFrom(element, type, index) { + if (type === 'k') { + return element.keywords()[index]; + } else if (type === 't') { + return element.tests()[index]; + } else { + return element.suites()[index]; + } + } + function errorIterator() { + return { + next: function () { + return message(window.output.errors.shift(), + StringStore(window.output.strings)); + }, + hasNext: function () { + return window.output.errors.length > 0; + } + }; + } + function statistics() { + if (!_statistics) { + var statData = window.output.stats; + _statistics = stats.Statistics(statData[0], statData[1], statData[2]); + } + return _statistics; + } + function StringStore(strings) { + function getText(id) { + var text = strings[id]; + if (!text) + return ''; + if (text[0] == '*') + return text.substring(1); + var extracted = extract(text); + strings[id] = '*' + extracted; + return extracted; + } + function extract(text) { + var decoded = JXG.Util.Base64.decodeAsArray(text); + var extracted = (new JXG.Util.Unzip(decoded)).unzip()[0][0]; + return JXG.Util.UTF8.decode(extracted); + } + function get(id) { + if (id === null) return null; + return getText(id); + } + return {get: get}; + } + return { + suite: suite, + errorIterator: errorIterator, + findLoaded: findLoaded, + ensureLoaded: ensureLoaded, + statistics: statistics, + StringStore: StringStore, // exposed for tests + LEVELS: LEVELS + }; +}(); +</script> +<script type="text/javascript"> +function removeJavaScriptDisabledWarning() { + // Not using jQuery here for maximum speed + document.getElementById('javascript-disabled').style.display = 'none'; +} +function addJavaScriptDisabledWarning(error) { + if (window.console) + console.error('Opening failed: ' + error.name + ': ' + error.message); + document.getElementById('javascript-disabled').style.display = 'block'; +} +function initLayout(suiteName, type) { + parseTemplates(); + setTitle(suiteName, type); + addHeader(); + addReportOrLogLink(type); +} +function parseTemplates() { + $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) { + $.template(elem.id, elem.text); + }); +} +function testOrTask(text) { + return text.replace(/{(.*)}/, function (match, group, offset, string) { + if (!window.settings.rpa) + return group; + return {'TEST': 'TASK', 'Test': 'Task', 'test': 'task'}[group]; + }); +} +function setTitle(suiteName, type) { + var givenTitle = window.settings.title; + var title = givenTitle ? givenTitle : suiteName + " " + type; + document.title = util.unescape(title); +} +function addHeader() { + var generated = util.timestamp(window.output.generated); + $.tmpl('<h1>${title}</h1>' + + '<div id="generated">' + + '<span>Generated<br>${generated}</span><br>' + + '<span id="generated-ago">${ago} ago</span>' + + '</div>' + + '<div id="top-right-header">' + + '<div id="report-or-log-link"><a href="#"></a></div>' + + '</div>', { + generated: util.createGeneratedString(generated), + ago: util.createGeneratedAgoString(generated), + title: document.title + }).appendTo($('#header')); +} +function addReportOrLogLink(myType) { + var url; + var text; + var container = $('#report-or-log-link'); + if (myType == 'Report') { + url = window.settings.logURL; + text = 'LOG'; + } else { + url = window.settings.reportURL; + text = 'REPORT'; + } + if (url) { + container.find('a').attr('href', url); + container.find('a').text(text); + } else { + container.remove(); + } +} +function addStatistics() { + var statHeaders = + '<th class="stats-col-stat">Total</th>' + + '<th class="stats-col-stat">Pass</th>' + + '<th class="stats-col-stat">Fail</th>' + + '<th class="stats-col-elapsed">Elapsed</th>' + + '<th class="stats-col-graph">Pass / Fail</th>'; + var statTable = + '<h2>{Test} Statistics</h2>' + + '<table class="statistics" id="total-stats"><thead><tr>' + + '<th class="stats-col-name">Total Statistics</th>' + statHeaders + + '</tr></thead></table>' + + '<table class="statistics" id="tag-stats"><thead><tr>' + + '<th class="stats-col-name">Statistics by Tag</th>' + statHeaders + + '</tr></thead></table>' + + '<table class="statistics" id="suite-stats"><thead><tr>' + + '<th class="stats-col-name">Statistics by Suite</th>' + statHeaders + + '</tr></thead></table>'; + $(testOrTask(statTable)).appendTo('#statistics-container'); + util.map(['total', 'tag', 'suite'], addStatTable); + addTooltipsToElapsedTimes(); + enableStatisticsSorter(); +} +function addTooltipsToElapsedTimes() { + $('.stats-col-elapsed').attr('title', + testOrTask('Total execution time of these {test}s. ') + + 'Excludes suite setups and teardowns.'); + $('#suite-stats').find('.stats-col-elapsed').attr('title', + 'Total execution time of this suite.'); +} +function enableStatisticsSorter() { + $.tablesorter.addParser({ + id: 'statName', + type: 'numeric', + is: function(s) { + return false; // do not auto-detect + }, + format: function(string, table, cell, cellIndex) { + // Rows have class in format 'row-<index>'. + var index = $(cell).parent().attr('class').substring(4); + return parseInt(index); + } + }); + $(".statistics").tablesorter({ + sortInitialOrder: 'desc', + headers: {0: {sorter:'statName', sortInitialOrder: 'asc'}, + 5: {sorter: false}} + }); +} +function addStatTable(tableName) { + var stats = window.testdata.statistics()[tableName]; + if (tableName == 'tag' && stats.length == 0) { + renderNoTagStatTable(); + } else { + renderStatTable(tableName, stats); + } +} +function renderNoTagStatTable() { + $('<tbody><tr class="row-0">' + + '<td class="stats-col-name">No Tags</td>' + + '<td class="stats-col-stat"></td>' + + '<td class="stats-col-stat"></td>' + + '<td class="stats-col-stat"></td>' + + '<td class="stats-col-elapsed"></td>' + + '<td class="stats-col-graph">' + + '<div class="empty-graph"></div>' + + '</td>' + + '</tr></tbody>').appendTo('#tag-stats'); +} +function renderStatTable(tableName, stats) { + var template = tableName + 'StatisticsRowTemplate'; + var tbody = $('<tbody></tbody>'); + for (var i = 0, len = stats.length; i < len; i++) { + $.tmpl(template, stats[i], {index: i}).appendTo(tbody); + } + tbody.appendTo('#' + tableName + '-stats'); +} +$.template('statColumnsTemplate', + '<td class="stats-col-stat">${total}</td>' + + '<td class="stats-col-stat">${pass}</td>' + + '<td class="stats-col-stat">${fail}</td>' + + '<td class="stats-col-elapsed">${elapsed}</td>' + + '<td class="stats-col-graph">' + + '{{if total}}' + + '<div class="graph">' + + '<div class="pass-bar" style="width: ${passWidth}%" title="${passPercent}%"></div>' + + '<div class="fail-bar" style="width: ${failWidth}%" title="${failPercent}%"></div>' + + '</div>' + + '{{else}}' + + '<div class="empty-graph"></div>' + + '{{/if}}' + + '</td>' +); +$.template('suiteStatusMessageTemplate', + '${critical} critical {{= testOrTask("{test}")}}, ' + + '${criticalPassed} passed, ' + + '<span class="{{if criticalFailed}}fail{{else}}pass{{/if}}">${criticalFailed} failed</span><br>' + + '${total} {{= testOrTask("{test}")}} total, ' + + '${totalPassed} passed, ' + + '<span class="{{if totalFailed}}fail{{else}}pass{{/if}}">${totalFailed} failed</span>' +); +// For complete cross-browser experience.. +// http://www.quirksmode.org/js/events_order.html +function stopPropagation(event) { + var event = event || window.event; + event.cancelBubble = true; + if (event.stopPropagation) + event.stopPropagation(); +} +</script> +<script type="text/javascript"> +storage = function () { + var prefix = 'robot-framework-'; + var storage; + function init(user) { + prefix += user + '-'; + storage = getStorage(); + } + function getStorage() { + // Use localStorage if it's accessible, normal object otherwise. + // Inspired by https://stackoverflow.com/questions/11214404 + try { + localStorage.setItem(prefix, prefix); + localStorage.removeItem(prefix); + return localStorage; + } catch (exception) { + return {}; + } + } + function get(name, defaultValue) { + var value = storage[prefix + name]; + if (typeof value === 'undefined') + return defaultValue; + return value; + } + function set(name, value) { + storage[prefix + name] = value; + } + return {init: init, get: get, set: set}; +}(); +</script> +<script type="text/javascript"> +window.output = {}; +</script> +<script type="text/javascript"> +window.output["suite"] = [1,2,3,0,[],[1,0,25693],[[4,5,6,0,[],[1,1886,23678],[[7,8,9,0,[],[1,1890,23672],[[10,11,12,0,[],[1,1893,23667],[[13,14,15,0,[],[1,1896,23662],[],[[16,0,1,0,[17,18],[1,1997,23560],[]]],[],[1,1,1,1]]],[],[],[1,1,1,1]]],[],[],[1,1,1,1]]],[],[],[1,1,1,1]]],[],[],[1,1,1,1]]; +</script> +<script type="text/javascript"> +window.output["strings"] = []; +</script> +<script type="text/javascript"> +window.output["strings"] = window.output["strings"].concat(["*","*Gap Tsg Api","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api","*.","*Case","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case","*case","*Security","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case\\security","*case/security","*Http","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case\\security\\http","*case/security/http","*Demo","*C:\\Users\\admin\\Desktop\\gap_tsg_api\\gap_tsg_api\\case\\security\\http\\demo.robot","*case/security/http/demo.robot","*policy_http_allow","*admission","*basic"]); +</script> +<script type="text/javascript"> +window.output["stats"] = [[{"elapsed":"00:00:24","fail":0,"label":"Critical Tests","pass":1},{"elapsed":"00:00:24","fail":0,"label":"All Tests","pass":1}],[{"elapsed":"00:00:24","fail":0,"label":"admission","pass":1},{"elapsed":"00:00:24","fail":0,"label":"basic","pass":1}],[{"elapsed":"00:00:26","fail":0,"id":"s1","label":"Gap Tsg Api","name":"Gap Tsg Api","pass":1},{"elapsed":"00:00:24","fail":0,"id":"s1-s1","label":"Gap Tsg Api.Case","name":"Case","pass":1},{"elapsed":"00:00:24","fail":0,"id":"s1-s1-s1","label":"Gap Tsg Api.Case.Security","name":"Security","pass":1},{"elapsed":"00:00:24","fail":0,"id":"s1-s1-s1-s1","label":"Gap Tsg Api.Case.Security.Http","name":"Http","pass":1},{"elapsed":"00:00:24","fail":0,"id":"s1-s1-s1-s1-s1","label":"Gap Tsg Api.Case.Security.Http.Demo","name":"Demo","pass":1}]]; +</script> +<script type="text/javascript"> +window.output["baseMillis"] = 1622614279695; +</script> +<script type="text/javascript"> +window.output["generated"] = 26158; +</script> +<script type="text/javascript"> +window.settings = {"background":{"fail":"#f66","nonCriticalFail":"#9e9","pass":"#9e9"},"logURL":"log.html","rpa":false,"title":""}; +</script> +<title></title> +</head> +<body> +<div id="javascript-disabled"> + <h1>Opening Robot Framework report failed</h1> + <ul> + <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li> + <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li> + <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li> + </ul> +</div> +<script type="text/javascript">removeJavaScriptDisabledWarning();</script> + +<div id="header"></div> +<div id="statistics-container"></div> +<div id="test-details-container"></div> + +<script type="text/javascript"> +$(document).ready(function () { + try { + var topsuite = window.testdata.suite(); + } catch (error) { + addJavaScriptDisabledWarning(error); + return; + } + window.prevLocationHash = ''; + setBackground(topsuite); + initLayout(topsuite.name, 'Report'); + storage.init('report'); + addSummary(topsuite); + addStatistics(); + addDetails(); + window.onhashchange = showDetailsByHash; +}); + +function setBackground(topsuite) { + var color; + if (topsuite.criticalFailed) + color = window.settings.background.fail; + else if (topsuite.totalFailed) + color = window.settings.background.nonCriticalFail; + else + color = window.settings.background.pass; + $('body').css('background-color', color); +} + +function addSummary(topsuite) { + var opts = {logURL: window.settings.logURL}; + $.tmpl('summaryTableTemplate', topsuite, opts).insertAfter($('#header')); +} + +function addDetails() { + addCustomSortersForDetails(); + if (window.location.hash) + showDetailsByHash(); + else + renderTotalSelector(); +} + +function addCustomSortersForDetails() { + $.tablesorter.addParser({ + id: 'criticality', + type: 'numeric', + is: function(s) { + return false; // do not auto-detect + }, + format: function(s) { + return s === 'yes' ? 0 : 1; + } + }); + $.tablesorter.addParser({ + id: 'times', + type: 'text', + is: function(s) { + return false; // do not auto-detect + }, + format: function(s) { + return s.substring(0, 21); // return only start time + } + }); +} + +function showDetailsByHash() { + // Cannot use window.location.hash because Firefox incorrectly decodes it: + // http://stackoverflow.com/questions/1703552/encoding-of-window-location-hash + var hash = window.location.href.split('#').slice(1).join('#'); + if (!hash || hash == window.prevLocationHash) + return; + var parts = hash.split('?'); + var name = parts.shift(); + var query = parts.join('?'); + if (name == 'search') { + var params = util.parseQueryString(query); + searchExecuted(params.suite || '', params.test || '', + params.include || '', params.exclude || ''); + return; + } + query = decodeURIComponent(query); + var action = {'totals': totalDetailSelected, + 'tags': tagDetailSelected, + 'suites': suiteDetailSelected}[name]; + if (action) + action(query); +} + +function totalDetailSelected(name) { + renderTotalSelector(name); + if (name) { + renderTotalDetails(name); + var title = name == 'critical' ? 'Critical {Test}s' : 'All {Test}s' + updatePrintSelector(testOrTask(title)); + } + scrollToSelector('totals', name); +} + +function renderTotalSelector(name) { + var args = {linkTarget: (name) ? 'totals?'+name : 'totals', + totalTabStatus: 'detail-tab-selected'}; + renderSelector(args, 'totalDetailsSelectorTemplate', {selected: name}); +} + +function renderTotalDetails(name) { + var index = (name == 'critical') ? 0 : 1; + var stat = window.testdata.statistics().total[index]; + var tests = getTotalTests(name); + stat.totalTime = calculateTotalTime(tests); + $.tmpl('tagOrTotalDetailsTemplate', stat).appendTo('#details-header'); + drawTestDetailsTable(tests, true); +} + +function updatePrintSelector(name, info) { + if (info) + name += ' (' + info + ')'; + $('#print-selector').html(name); +} + +function tagDetailSelected(name) { + renderTagSelector(name); + if (name) { + var tag = findTag(name); + if (tag) { + renderTagDetails(tag); + updatePrintSelector(name, tag.info); + } + } + scrollToSelector('tags', name); +} + +function findTag(name) { + var tags = window.testdata.statistics().tag; + for (var i = 0, len = tags.length; i < len; i++) { + if (tags[i].label == name) + return tags[i]; + } + return null; +} + +function renderTagSelector(name) { + var args = {linkTarget: (name) ? 'tags?'+name : 'tags', + tagTabStatus: 'detail-tab-selected'}; + var stats = {tags: window.testdata.statistics().tag, selected: name}; + renderSelector(args, 'tagDetailsSelectorTemplate', stats); +} + +function renderTagDetails(tag) { + var tests = getTestsHavingTag(tag); + tag.totalTime = calculateTotalTime(tests); + $.tmpl('tagOrTotalDetailsTemplate', tag).appendTo('#details-header'); + drawTestDetailsTable(tests, true); +} + +function suiteDetailSelected(id) { + renderSuiteSelector(id); + if (id) + renderSuiteDetails(id); + scrollToSelector('suites', id); +} + +function renderSuiteSelector(id) { + var args = {linkTarget: (id) ? 'suites?'+id : 'suites', + suiteTabStatus: 'detail-tab-selected'}; + var stats = {suites: window.testdata.statistics().suite, + selected: id}; + renderSelector(args, 'suiteDetailsSelectorTemplate', stats); +} + +function renderSuiteDetails(id) { + window.testdata.ensureLoaded(id, function (ids) { + var suite = window.testdata.findLoaded(id); + var opts = {logURL: window.settings.logURL}; + $.tmpl('suiteDetailsTemplate', suite, opts).appendTo('#details-header'); + drawTestDetailsTable(suite.allTests(), false); + updatePrintSelector(suite.fullName); + }); +} + +function searchExecuted(suite, test, include, exclude) { + renderSearchSelector(suite, test, include, exclude); + if (suite || test || include || exclude) { + renderSearchDetails(suite, test, include, exclude); + scrollToSelector('search' + + '?suite=' + encodeURIComponent(suite) + + '&test=' + encodeURIComponent(test) + + '&include=' + encodeURIComponent(include) + + '&exclude=' + encodeURIComponent(exclude)); + } else { + scrollToSelector('search'); + } +} + +function renderSearchSelector(suite, test, include, exclude) { + var args = {linkTarget: (suite || test || include || exclude) ? + ('search?suite=' + suite + '&test=' + test + '&include=' + include + '&exclude=' + exclude) : + 'search', + searchTabStatus: 'detail-tab-selected'}; + var search = {suite: suite, test: test, include: include, exclude: exclude}; + renderSelector(args, 'searchSelectorTemplate', search); +} + +function renderSearchDetails(suite, test, include, exclude) { + var tests = searchTests(util.escape(suite), util.escape(test), + util.escape(include), util.escape(exclude)); + var passed = calculatePassed(tests); + var stats = {total: tests.length, + pass: passed, + fail: tests.length - passed, + totalTime: calculateTotalTime(tests)}; + $.tmpl('tagOrTotalDetailsTemplate', stats).appendTo('#details-header'); + drawTestDetailsTable(tests, true); +} + +function searchTests(suitePattern, testPattern, includePattern, excludePattern) { + var tests; + if (suitePattern) + tests = window.testdata.suite().searchTestsInSuite(suitePattern); + else + tests = window.testdata.suite().allTests(); + return util.filter(tests, function (test) { + if (testPattern && !test.matchesNamePattern(testPattern)) + return false; + if (includePattern && !test.matchesTagPattern(includePattern)) + return false; + return !(excludePattern && test.matchesTagPattern(excludePattern)); + }); +} + +function scrollToSelector(base, query) { + $('#test-details-container').css('min-height', $(window).height()); + var anchor = query ? base + '?' + encodeURIComponent(query) : base; + window.location.hash = ''; + window.location.hash = window.prevLocationHash = anchor; +} + +function renderSelector(args, template, stats) { + window.elementsToRender = []; + var container = $('#test-details-container'); + container.empty(); + $.tmpl('detailsHeaderTemplate', args).appendTo(container); + $.tmpl(template, stats).appendTo(container); +} + +function drawTestDetailsTable(tests, sortByStatus) { + if (!tests.length) + return; + renderTestDetailsHeader(); + window.elementsToRender = tests; + var target = $('#test-details').find('tbody'); + renderTestDetails(sortByStatus, target); +} + +function renderTestDetailsHeader() { + var header = $.tmpl('testDetailsTableTemplate'); + hideHiddenDetailsColumns(header); + header.appendTo('#test-details-container'); +} + +function sortByStatus(t1, t2) { + if (t1.status != t2.status) + return t1.status == 'FAIL' ? -1 : 1; + if (t1.isCritical != t2.isCritical) + return t1.isCritical ? -1 : 1; + return t1.fullName < t2.fullName ? -1 : 1; +} + +function getTestsHavingTag(tag) { + return window.testdata.suite().searchTestsByTag(tag).sort(sortByStatus); +} + +function getTotalTests(name) { + if (name == 'critical') + return window.testdata.suite().criticalTests().sort(sortByStatus); + return window.testdata.suite().allTests().sort(sortByStatus); +} + +function calculateTotalTime(tests) { + var total = 0; + for (var i = 0, len = tests.length; i < len; i++) + total += tests[i].times.elapsedMillis; + return util.formatElapsed(total); +} + +function calculatePassed(tests) { + var passed = util.filter(tests, function (test) { + return test.status == 'PASS'; + }); + return passed.length; +} + +function renderTestDetails(sortByStatus, target) { + if (!window.elementsToRender.length) + return; + var tests = popUpTo(window.elementsToRender, 50); + renderTestDetailsRows(tests, target); + if (window.elementsToRender.length) + setTimeout(function () {renderTestDetails(sortByStatus, target);}, 0); + else + configureTableSorter(sortByStatus); +} + +function renderTestDetailsRows(tests, target) { + var rows = $.tmpl('testDetailsTableRowTemplate', tests, + {logURL: window.settings.logURL}); + rows.find('a').click(stopPropagation); + hideHiddenDetailsColumns(rows); + rows.appendTo(target); +} + +function configureTableSorter(sortByStatus) { + var config = {headers: {3: {sorter: 'criticality'}, + 6: {sortInitialOrder: 'desc'}, + 7: {sorter: 'times'}}, + selectorSort: '.details-col-header'}; + if (sortByStatus) + config['sortList'] = [[4, 0], [3, 0]]; + $('#test-details').tablesorter(config); +} + +function popUpTo(list, upTo) { + var result = []; + while (list.length > 0 && result.length < upTo) + result.push(list.shift()); + return result; +} + +function toggleDetailsColumn(name) { + var column = $('.details-col-' + name); + column.toggleClass('hidden'); + var hidden = column.hasClass('hidden'); + storage.set(name, hidden ? 'hidden' : 'visible'); + column.find('.details-col-toggle').html(hidden ? '…' : '×'); +} + +function hideHiddenDetailsColumns(elem) { + var names = ['doc', 'tags', 'msg', 'elapsed', 'times']; + for (var i = 0; i < names.length; i++) { + var name = names[i]; + if (storage.get(name, 'visible') == 'hidden') { + var column = elem.find('.details-col-' + name); + column.addClass('hidden'); + column.find('.details-col-toggle').html('…'); + } + } +} +</script> + +<script type="text/x-jquery-tmpl" id="summaryTableTemplate"> + <h2>Summary Information</h2> + <table class="details"> + <tr> + <th>Status:</th> + {{if criticalFailed}} + <td><a href="#totals?critical" onclick="totalDetailSelected('critical')" + class="fail">${criticalFailed} critical {{= testOrTask('{test}')}}{{if criticalFailed != 1}}s{{/if}} failed</a></td> + {{else totalFailed}} + <td><a href="#totals?critical" onclick="totalDetailSelected('critical')" + class="pass">All critical {{= testOrTask('{test}')}}s passed</a></td> + {{else}} + <td><a href="#totals?all" onclick="totalDetailSelected('all')" + class="pass">All {{= testOrTask('{test}')}}s passed</a></td> + {{/if}} + </tr> + {{if doc()}} + <tr> + <th>Documentation:</th> + <td class="doc">{{html doc()}}</td> + </tr> + {{/if}} + {{each metadata}} + <tr> + <th>{{html $value[0]}}:</th> + <td class="doc">{{html $value[1]}}</td> + </tr> + {{/each}} + {{if times.startTime != 'N/A'}} + <tr> + <th>Start Time:</th> + <td>${times.startTime}</td> + </tr> + {{/if}} + {{if times.endTime != 'N/A'}} + <tr> + <th>End Time:</th> + <td>${times.endTime}</td> + </tr> + {{/if}} + <tr> + <th>Elapsed Time:</th> + <td>${times.elapsedTime}</td> + </tr> + {{if $item.logURL}} + <tr> + <th>Log File:</th> + <td><a href="${$item.logURL}">${$item.logURL}</a></td> + </tr> + {{/if}} + </table> +</script> + +<script type="text/x-jquery-tmpl" id="totalStatisticsRowTemplate"> + <tr onclick="totalDetailSelected('${type}')" class="row-${$item.index}"> + <td class="stats-col-name"> + <div class="stat-name"> + <a href="#totals?${type}">{{html label}}</a> + </div> + </td> + {{tmpl($data) 'statColumnsTemplate'}} + </tr> +</script> + +<script type="text/x-jquery-tmpl" id="tagStatisticsRowTemplate"> + <tr onclick="tagDetailSelected('${label}')" class="row-${$item.index}"> + <td class="stats-col-name" title="{{html doc}}"> + <div class="stat-name"> + <a href="#tags?${label}">{{html label}}</a> + {{if info}}(${info}){{/if}} + </div> + <div class="tag-links"> + {{each links}} + <span>[<a href="{{html $value.url}}" onclick="stopPropagation(event)" + title="{{html $value.url}}">{{html $value.title}}</a>]</span> + {{/each}} + </div> + </td> + {{tmpl($data) 'statColumnsTemplate'}} + </tr> +</script> + +<script type="text/x-jquery-tmpl" id="suiteStatisticsRowTemplate"> + <tr onclick="suiteDetailSelected('${id}')" class="row-${$item.index}"> + <td class="stats-col-name" title="{{html label}}"> + <div class="stat-name"> + <a href="#suites?${id}"><span class="parent-name">{{html formatParentName}}</span>{{html name}}</a> + </div> + </td> + {{tmpl($data) 'statColumnsTemplate'}} + </tr> +</script> + +<script type="text/x-jquery-tmpl" id="detailsHeaderTemplate"> + <h2 id="${linkTarget}">{{= testOrTask('{Test}')}} Details</h2> + <ul id="detail-tabs"> + <li class="${totalTabStatus} detail-tab"> + <a href="#totals" onclick="renderTotalSelector()">Totals</a> + </li> + <li class="${tagTabStatus} detail-tab"> + <a href="#tags" onclick="renderTagSelector()">Tags</a> + </li> + <li class="${suiteTabStatus} detail-tab"> + <a href="#suites" onclick="renderSuiteSelector()">Suites</a> + </li> + <li class="${searchTabStatus} detail-tab"> + <a href="#search" onclick="renderSearchSelector()">Search</a> + </li> + </ul> +</script> + +<script type="text/x-jquery-tmpl" id="totalDetailsSelectorTemplate"> + <table class="details" id="details-header"> + <tr class="selector"> + <th>Type:</th> + <td id="normal-selector"> + <input id="radio-critical" type="radio" name="totals-radio" + onclick="totalDetailSelected('critical')" + {{if selected == 'critical'}}checked="checked"{{/if}}> + <label for="radio-critical">Critical {{= testOrTask('{Test}')}}s</label><br> + <input id="radio-all" type="radio" name="totals-radio" + onclick="totalDetailSelected('all')" + {{if selected == 'all'}}checked="checked"{{/if}}> + <label for="radio-all">All {{= testOrTask('{Test}')}}s</label> + </td> + <td id="print-selector"></td> + </tr> + </table> +</script> + +<script type="text/x-jquery-tmpl" id="tagDetailsSelectorTemplate"> + <table class="details" id="details-header"> + <tr class="selector"> + <th>Name:</th> + <td id="normal-selector"> + <select id="tag-detail-selector" + onchange="tagDetailSelected(this.options[this.selectedIndex].value)"> + <option value="">Select tag...</option> + {{each tags}} + <option value="${$value.label}" + {{if $value.label == selected}}selected="selected"{{/if}}> + {{html $value.label}} {{if $value.info}}(${$value.info}){{/if}} + </option> + {{/each}} + </select> + </td> + <td id="print-selector"></td> + </tr> + </table> +</script> + +<script type="text/x-jquery-tmpl" id="suiteDetailsSelectorTemplate"> + <table class="details" id="details-header"> + <tr class="selector"> + <th>Name:</th> + <td id="normal-selector"> + <select id="suite-detail-selector" + onchange="suiteDetailSelected(this.options[this.selectedIndex].value)"> + <option value="">Select suite...</option> + {{each suites}} + <option value="${$value.id}" + {{if $value.id == selected}}selected="selected"{{/if}}> + {{html $value.label}} + </option> + {{/each}} + </select> + </td> + <td id="print-selector"></td> + </tr> + </table> +</script> + +<script type="text/x-jquery-tmpl" id="searchSelectorTemplate"> + <form action="javascript:void(0)"> + <table class="details" id="details-header"> + <tr class="selector first-selector"> + <th><label for="search-suite">Suite:</label></th> + <td><input id="search-suite" type="text" value="${suite}"></td> + </tr> + <tr class="selector middle-selector"> + <th><label for="search-test">{{= testOrTask('{Test}')}}:</label></th> + <td><input id="search-test" type="text" value="${test}"></td> + </tr> + <tr class="selector middle-selector"> + <th><label for="search-include">Include:</label></th> + <td><input id="search-include" type="text" value="${include}"></td> + </tr> + <tr class="selector middle-selector"> + <th><label for="search-exclude">Exclude:</label></th> + <td><input id="search-exclude" type="text" value="${exclude}"></td> + </tr> + <tr class="selector last-selector" id="search-buttons"> + <th></th> + <td> + <input type="submit" value="Search" + onclick="searchExecuted($('#search-suite').val(), + $('#search-test').val(), + $('#search-include').val(), + $('#search-exclude').val()); + return false;"> + <input type="button" value="Clear" + onclick="$('#search-suite').val(''); + $('#search-test').val(''); + $('#search-include').val(''); + $('#search-exclude').val('');"> + <a href="javascript:void(0)" onclick="$('#search-help').toggle()" + title="Toggle search help.">Help</a> + </td> + </tr> + <tr id="search-help" style="display: none"> + <th></th> + <td> + <div> + <h3>Search fields</h3> + <p> + {{= testOrTask('{Test}')}}s can be searched based on suite and + {{= testOrTask('{test}')}} names as well as based on tags. If + multiple search criteria are used, only + {{= testOrTask('{test}')}}s matching all of them are included. + Search fields have same semantics as + <em>‑‑suite</em>, + <em>‑‑{{= testOrTask('{test}')}}</em>, + <em>‑‑include</em> and + <em>‑‑exclude</em> command line options, respectively. + </p> + <table class="search-help-examples"> + <col class="help-item"> + <col class="help-explanation"> + <col class="help-examples> + <tr> + <th>Field</th> + <th>Explanation</th> + <th>Examples</th> + </tr> + <tr> + <td>Suite</td> + <td> + {{= testOrTask('{Test}')}}s in matching suites are included. + The pattern can match either suite's name or its full name + that contains also parent suite names. + </td> + <td>My Suite<br>Root.Parent.Sui*</td> + </tr> + <tr> + <td>{{= testOrTask('{Test}')}}</td> + <td> + Matching {{= testOrTask('{test}')}}s are included. The + pattern can match either {{= testOrTask('{test}')}}'s name + or its full name that contains also parent suite names. + </td> + <td>Example Name<br>Root.Pa*.T???</td> + </tr> + <tr> + <td>Include</td> + <td> + {{= testOrTask('{Test}')}}s that contain matching tags are + included. + </td> + <td>smoke<br>bug-*</td> + </tr> + <tr> + <td>Exclude</td> + <td> + {{= testOrTask('{Test}')}}s that contain matching tags are + not included. + </td> + <td>slow<br>feature-4?</td> + </tr> + </table> + <h3>Patterns</h3> + <p> + All searches support <em>*</em> and <em>?</em> wildcards and are + case, space and underscore insensitive. Tag related searches also + support <em>AND</em>, <em>OR</em> and <em>NOT</em> (case-sensitive) + combining operators. If operators are used together, their + precedence, from highest to lowest, is <em>AND</em>, <em>OR</em>, + <em>NOT</em>. See <em>Simple patterns</em> and + <em>Tag patterns</em> sections in + <a href="http://robotframework.org/robotframework/#user-guide">Robot + Framework User Guide</a> for more details. + </p> + <table class="search-help-examples"> + <col class="help-item"> + <col class="help-explanation"> + <col class="help-examples> + <tr> + <th>Pattern</th> + <th>Explanation</th> + <th>Examples</th> + </tr> + <tr> + <td>*</td> + <td>Matches anything, even an empty string.</td> + <td>f*<br>sprint-*</td> + </tr> + <tr> + <td>?</td> + <td>Matches any single character.</td> + <td>f??<br>sprint-1?</td> + </tr> + <tr> + <td>AND</td> + <td>Matches if all patterns match.</td> + <td>foo AND bar<br>x AND y* AND z??</td> + </tr> + <tr> + <td>OR</td> + <td>Matches if any pattern matches.</td> + <td>foo OR bar<br>x OR y* OR z1 AND z2</td> + </tr> + <tr> + <td>NOT</td> + <td> + Matches if (optional) pattern before matches and pattern + after does not. + </td> + <td>foo NOT bar<br>* NOT id-* AND smoke<br>NOT bar</td> + </tr> + </table> + </div> + </td> + </tr> + </table> + </form> +</script> + +<script type="text/x-jquery-tmpl" id="tagOrTotalDetailsTemplate"> + <tr> + <th>Status:</th> + <td>${total} total, ${pass} passed, {{if fail}}<span class="fail">${fail} failed</span>{{else}}<span class="pass">0 failed</span>{{/if}}</td> + </tr> + {{if doc}} + <tr> + <th>Documentation:</th> + <td>{{html doc}}</td> + </tr> + {{/if}} + {{if combined}} + <tr> + <th>Pattern:</th> + <td>{{html combined}}</td> + </tr> + {{/if}} + {{if links}}{{if links.length}} + <tr> + <th>Links:</th> + <td>{{each links}}<a href="{{html $value.url}}" + title="{{html $value.url}}">{{html $value.title}}</a> {{/each}}</td> + </tr> + {{/if}}{{/if}} + <tr> + <th>Total Time:</th> + <td>${totalTime}</td> + </tr> +</script> + +<script type="text/x-jquery-tmpl" id="suiteDetailsTemplate"> + <tr> + <th>Status:</th> + <td>{{tmpl($data) 'suiteStatusMessageTemplate'}}</td> + </tr> + {{if doc()}} + <tr> + <th>Documentation:</th> + <td class="doc">{{html doc()}}</td> + </tr> + {{/if}} + {{each metadata}} + <tr> + <th>{{html $value[0]}}:</th> + <td class="doc">{{html $value[1]}}</td> + </tr> + {{/each}} + {{if message()}} + <tr> + <th>Message:</th> + <td class="message">{{html message()}}</td> + </tr> + {{/if}} + <tr> + <th>Start / End Time:</th> + <td>${times.startTime} / ${times.endTime}</td> + </tr> + <tr> + <th>Elapsed Time:</th> + <td>${times.elapsedTime}</td> + </tr> + {{if $item.logURL}} + <tr> + <th>Log File:</th> + <td><a href="${$item.logURL}#${id}" + title="{{html fullName}}">${$item.logURL}#${id}</a></td> + </tr> + {{/if}} +</script> + +<script type="text/x-jquery-tmpl" id="testDetailsTableTemplate"> + <table id="test-details"> + <thead> + <tr> + <th class="details-col-name" title="Name"> + <div class='details-col-header'>Name</div> + </th> + <th class="details-col-doc" title="Documentation"> + <div class='details-col-toggle' onclick="toggleDetailsColumn('doc')">×</div> + <div class='details-col-header'>Documentation</div> + </th> + <th class="details-col-tags" title="Tags"> + <div class='details-col-toggle' onclick="toggleDetailsColumn('tags')">×</div> + <div class='details-col-header'>Tags</div> + </th> + <th class="details-col-crit" title="Critical"> + <div class='details-col-header'>Crit.</div> + </th> + <th class="details-col-status" title="Status"> + <div class='details-col-header'>Status</div> + </th> + <th class="details-col-msg" title="Message"> + <div class='details-col-toggle' onclick="toggleDetailsColumn('msg')">×</div> + <div class='details-col-header'>Message</div> + </th> + <th class="details-col-elapsed" title="Elapsed Time"> + <div class='details-col-toggle' onclick="toggleDetailsColumn('elapsed')">×</div> + <div class='details-col-header'>Elapsed</div> + </th> + <th class="details-col-times" title="Start Time / End Time"> + <div class='details-col-toggle' onclick="toggleDetailsColumn('times')">×</div> + <div class='details-col-header'>Start / End</div> + </th> + </tr> + </thead> + <tbody></tbody> + </table> +</script> + +<script type="text/x-jquery-tmpl" id="testDetailsTableRowTemplate"> + {{if $item.logURL}} + <tr onclick="location = '${$item.logURL}#${id}'" title="{{html fullName}}"> + <td class="details-col-name"> + <div><a href="${$item.logURL}#${id}"><span class="parent-name">{{html formatParentName}}</span>{{html name}}</a></div> + </td> + {{else}} + <tr title="{{html fullName}}"> + <td class="details-col-name"> + <div><span class="parent-name">{{html formatParentName}}</span>{{html name}}</div> + </td> + {{/if}} + <td class="details-col-doc"><div class="doc details-limited">{{html doc()}}</div></td> + <td class="details-col-tags"><div>{{html tags.join(', ')}}</div></td> + <td class="details-col-crit"><div>{{if isCritical}}yes{{else}}no{{/if}}</div></td> + <td class="details-col-status"><div><span class="label ${status.toLowerCase()}">${status}</span></div></td> + <td class="details-col-msg"><div class="message details-limited">{{html message()}}</div></td> + <td class="details-col-elapsed"><div>${times.elapsedTime}</div></td> + <td class="details-col-times"><div>${times.startTime}<br>${times.endTime}</div></td> + </tr> +</script> + +</body> +</html> diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e24e346 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,58 @@ +pip>=19.3.0 +bcrypt>=3.1.7 +certifi>=2019.11.28 +cffi>=1.14.0 +chardet>=3.0.4 +Click>=7.0 +cryptography>=2.8 +decorator>=4.4.1 +docutils>=0.16 +flex>=6.14.1 +genson>=1.1.0 +get>=2019.4.13 +idna>=2.9 +importlib-metadata>=1.5.0 +jsonpath-ng>=1.4.3 +jsonpointer>=2.0 +jsonschema>=3.2.0 +numpy>=1.18.1 +paramiko>=2.7.1 +Pillow>=7.0.0 +ply>=3.11 +post>=2019.4.13 +public>=2019.4.13 +pyasn1>=0.4.8 +pycparser>=2.20 +pycryptodomex>=3.9.7 +Pygments>=2.5.2 +PyNaCl>=1.3.0 +Pypubsub>=4.0.3 +pyrsistent>=0.15.7 +pysmi>=0.3.4 +pysnmp>=4.4.12 +pytz>=2019.3 +pywin32>=227 +PyYAML>=5.3 +query-string>=2019.4.13 +request>=2019.4.13 +requests>=2.23.0 +RESTinstance>=1.0.2 +rfc3987>=1.3.8 +robotframework>=3.1.2 +robotframework-ftplibrary>=1.8 +robotframework-requests>=0.6.4 +robotframework-ride>=1.7.4.1 +robotframework-selenium2library>=3.0.0 +robotframework-seleniumlibrary>=4.3.0 +robotframework-snmplibrary>=0.2.1 +robotframework-sshlibrary>=3.4.0 +scp>=0.13.2 +selenium>=3.141.0 +setuptools>=40.6.2 +six>=1.14.0 +strict-rfc3339>=0.7 +tzlocal>=2.0.0 +urllib3>=1.25.8 +validate-email>=1.3 +wxPython>=4.0.7.post2 +zipp>=3.0.0 diff --git a/执行方式.txt b/执行方式.txt new file mode 100644 index 0000000..d0feddf --- /dev/null +++ b/执行方式.txt @@ -0,0 +1,100 @@ +windows: +linux: +前提条件环境具备:TSG系统、python3.6以上版本、robotframe3.1.2以上版本,及类库: +Package Version +------------------------------- ----------- +appdirs 1.4.4 +attrs 19.3.0 +bcrypt 3.1.7 +certifi 2019.11.28 +cffi 1.14.0 +chardet 3.0.4 +Click 7.0 +colorama 0.4.4 +coverage 5.3 +cryptography 2.8 +DateTime 4.3 +decorator 4.4.1 +distlib 0.3.1 +docutils 0.16 +filelock 3.0.12 +flex 6.14.1 +genson 1.1.0 +get 2019.4.13 +idna 2.9 +imageio 2.9.0 +importlib-metadata 1.5.0 +importlib-resources 3.3.0 +json-tools 0.4.1 +jsoncomparedeep 1.20 +jsonpath 0.82 +jsonpath-ng 1.4.3 +jsonpath-rw 1.4.0 +jsonpath-rw-ext 1.2.2 +jsonpointer 2.0 +jsonschema 3.2.0 +MouseInfo 0.1.3 +mss 6.1.0 +numpy 1.18.1 +opencv-python 4.5.1.48 +paramiko 2.7.1 +pbr 5.5.1 +Pillow 7.0.0 +pip 20.3.3 +pluggy 0.13.1 +ply 3.11 +post 2019.4.13 +public 2019.4.13 +py 1.9.0 +pyasn1 0.4.8 +PyAutoGUI 0.9.52 +pycparser 2.20 +pycryptodomex 3.9.7 +PyGetWindow 0.0.9 +Pygments 2.5.2 +PyMsgBox 1.0.9 +PyMySQL 1.0.2 +PyNaCl 1.3.0 +pyperclip 1.8.2 +Pypubsub 4.0.3 +PyRect 0.1.4 +pyrsistent 0.15.7 +PyScreeze 0.1.27 +pysmi 0.3.4 +pysnmp 4.4.12 +PyTweening 1.0.3 +pytz 2019.3 +pywin32 227 +PyYAML 5.3 +query-string 2019.4.13 +request 2019.4.13 +requests 2.23.0 +RESTinstance 1.0.2 +rfc3987 1.3.8 +robotframework 4.0.1 +robotframework-autorecorder 0.1.0 +robotframework-databaselibrary 1.2.4 +robotframework-difflibrary 0.1.0 +robotframework-ftplibrary 1.8 +robotframework-jsonlibrary 0.3.1 +robotframework-requests 0.6.4 +robotframework-ride 1.7.4.1 +robotframework-screencaplibrary 1.5.1 +robotframework-selenium2library 3.0.0 +robotframework-seleniumlibrary 4.3.0 +robotframework-snmplibrary 0.2.1 +robotframework-sshlibrary 3.4.0 +scp 0.13.2 +selenium 3.141.0 +setuptools 40.6.2 +six 1.14.0 +strict-rfc3339 0.7 +tox 3.0.0 +tzlocal 2.0.0 +urllib3 1.25.8 +validate-email 1.3 +virtualenv 20.2.1 +wheel 0.36.2 +wxPython 4.0.7.post2 +zipp 3.0.0 +zope.interface 5.1.0
\ No newline at end of file |
