From 39d50093ae80d961f7ff138f844b34da153306ed Mon Sep 17 00:00:00 2001 From: n1474335 <n1474335@gmail.com> Date: Tue, 20 Dec 2016 18:49:25 +0000 Subject: [PATCH] Tweaks to 'XPath expression' and 'CSS selector' operations. Closes #13. --- build/prod/cyberchef.htm | 35 +++++---- build/prod/index.html | 2 +- build/prod/scripts.js | 31 +++++--- src/js/config/Categories.js | 2 + src/js/config/OperationConfig.js | 16 ++--- src/js/lib/xpath.js | 16 ++--- src/js/operations/Code.js | 117 ++++++++++++++++++++++++++++++- src/js/operations/Extract.js | 115 ------------------------------ src/static/stats.txt | 24 +++---- 9 files changed, 189 insertions(+), 169 deletions(-) mode change 100644 => 100755 src/js/lib/xpath.js diff --git a/build/prod/cyberchef.htm b/build/prod/cyberchef.htm index 538a7e35..ab9f4e68 100755 --- a/build/prod/cyberchef.htm +++ b/build/prod/cyberchef.htm @@ -91,11 +91,11 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -*/.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}#content-wrapper{top:0;left:0;width:100%;height:100%}#banner{height:30px;text-align:center;line-height:30px}#wrapper{top:30px;bottom:0}div#operations,div#recipe{width:50%;height:100%}div#input,div#output{width:100%;height:50%}.title{padding:10px;height:43px}.textarea-wrapper{top:43px;bottom:0;width:100%;overflow:hidden}#output-html,textarea{width:100%;height:100%;border:none;padding:3px;-moz-padding-start:3px;-moz-padding-end:3px}#input-text,#output-html,#output-text{position:relative;border-width:0;margin:0;resize:none;background-color:transparent;white-space:pre-wrap;word-wrap:break-word}#output-html{display:none;overflow-y:auto;-moz-padding-start:1px}.split{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:auto;position:relative}.gutter.gutter-horizontal,.split.split-horizontal{height:100%;float:left}#input-highlighter,#output-highlighter{position:absolute;left:0;top:0;width:100%;height:100%;padding:3px;margin:0;overflow:hidden;letter-spacing:normal;white-space:pre-wrap;word-wrap:break-word;color:#fff;background-color:transparent;border:none}#op_list,#rec_list,.op_list{margin:0;padding:0;list-style-type:none}#op_list,#rec_list{position:absolute;top:43px;bottom:0;width:100%}.io-btn-group,.io-info{margin-top:-4px;float:right}#rec_list{bottom:120px;overflow:auto}.operation{cursor:pointer;padding:10px;list-style-type:none;position:relative}#controls{position:absolute;width:100%;height:120px;bottom:0;padding:10px}.io-info{margin-right:20px;height:30px;text-align:right;line-height:10px}.arg-group,.inline-args input[type=checkbox]{margin-top:10px}#input-info{line-height:15px}.arg-group{display:table;width:100%}.arg-group-text{display:block}.inline-args{float:left;width:auto;margin-right:30px;height:34px}.inline-args input[type=number]{width:100px}.arg-input{display:table-cell;width:100%;padding:6px 12px}.short-string{width:150px}select{display:block}.arg[disabled]{cursor:not-allowed;opacity:1}textarea.arg{width:100%;min-height:50px;height:70px;margin-top:5px;border:1px solid #ddd;resize:vertical}.arg-label{display:table-cell;width:1px;padding-right:10px;font-weight:400;white-space:pre}.title,optgroup{font-weight:700}.editable-option{position:relative;display:inline-block}.editable-option-input{position:absolute;top:1px;left:1px;width:calc(100% - 20px);height:calc(100% - 2px)!important;border:none!important}#operational-controls{width:65%;float:left;text-align:center}#bake-group{display:table;width:100%}#bake{display:table-cell;width:100%;border-top-right-radius:0;border-bottom-right-radius:0}#auto-bake-label{display:table-cell;padding:1px;line-height:1.35;width:60px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid #5cb85c}#auto-bake-label:hover{border-left-color:#398439}#auto-bake-label div{font-size:10px;padding:2px}#extra-controls{float:right;width:35%;padding-left:10px}.op-icon{float:right;margin-left:10px;margin-top:3px}.recip-icons{position:absolute;top:13px;right:10px;height:16px}.recip-icon{margin-right:10px;vertical-align:baseline;float:right}.disable-icon{width:16px;height:16px;margin-top:-1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAACfElEQVQ4y6WTPWgTYRjHf8nlfVvuoDVIP4Yuki4WHKoUqggFRUTsUEGkVG2hmCq6OnTwIxYHB+eijZOKdLNDW1pKKyGigh8dBHUJElxyBgx3vEnukvdyDrUhRXDxGR+e/+/583xEwjDkfyIGwNVTzURm4tYAMA6MAoN/0tvAMrA48uL+l2bx4w0iYRjSuHKC6OnTZLqHk8CcaZq9bW1tSCkBqNVq+L5PpVIpAHdGfr5LN9bXiT7Z2nGgteb1/qFkLBJZ6OjowHEc8vk8pVIJgHg8TldXF52dnb2u6y5s7R/iuF5JSyAKkLl4eyAMwznLsrBtm1wu99Z13amk+BFJih8R13WXANrb27EsizAM5zIXbw+wC9Baj0spe5VSFAqFt4ZhXJ6ufXuK55E5cDKVSCTGenp6yGazKKWQUvZqrcebgCAIRqWUOI6DEOLR1K8POapVMgfPpoC7u2LLspYcx0FKSRAEo60OBg3DwPd9Jr5vPqWvj8zh83vEwL2J75vnfN/HMAy01oPNNQZBQBAEO1OvVsl0D/8lTuZfpYDd7gRBQKuD7XK5jGmarB679PIv8deVFJUKq8cuTZqmSblcRmu93QpYVkohhMCyrLE94n2/UlSrbJy5kRBCXBNCoJRCa73cClh0XbfgeR6WZZHNZunv719KvnmeYnWVVxdmJ2Ox2DMhxFHP83Bdt6C1XgR2LvHzQDvvb84npZQL8Xgc0zSJRqN7br7RaFCpVCiVStRqtZmhh9fTh754TQdMr82nPc+bsW27UCwWUUpRr9ep1+sopSgWi9i2XfA8b2Z6bT6ttabp4GMi0uz0aXbhn890+MFM85mO5MIdwP/Eb1pMUCdctYRzAAAAAElFTkSuQmCC) no-repeat}.disable-icon-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFUlEQVR4XqWTP0tbURjGn9zY3mjBwsUhBQtS6XKxiNypIGZJ6SKYUYdaKWg7OrrE3pYO+Qit3dpFuuQO6lI7Z4nESQdjlJbkJh0MksSb3Jvk9H0gjZFu9YWH83LO7zn/3nNCSincJobAeP1sEDBFi6J50UyPy4l2RNuioz756Ts0tt1OB4jH2a52Ne2HGh9PwrJm2EcxZx/HyPRYMDgB2u02/N3d1c7w8BZMM1ptNJBPp3GwsUExB/s4RoYsPf0JOkFgdoH34YkJ/D48xC/HyTTOzl5ayWSIktwxqlVo0SjIkKWnP0Hg+4swjGitVMJFNpu5o+svptfXv6DZBDIZezoWS3Db3A0ZsvRcH8H354dGR9EoFHA3EvlorqycwvOAXM4G8Pav+f7YmEOGLD1gsIzl54+V+vBK/Yw9ZAv1LQW1FrdFSnKVfQTK5liPUfRI9I8ArqiPjLAF9vcHVybyzlpasgcZeq7voNXKNSsV3DMMXB4fp/8xLyzYuLri2DIZsvQM3sFOzXURiUR4zsQNcyrFleFVKpNyP2/IkKVnsArbF65bbkqplJSJZrl5x5qbs7G3h3artSyV+arr+lMyZOnpP2Wp6ZFos3R+vvUgCGDNzgKalkA4rECIr07662J2i0X4nrfJJ33jJT6Zmvpcr9XWCicn5WI+j7rrAmKgmLOPY2TI0sPgb8TBZOi/PpN1qnDr7/wH3jxgB/FKIXkAAAAASUVORK5CYII=) no-repeat}.breakpoint{float:right;width:14px;height:14px;background-color:#eee;border:1px solid #aaa}.breakpoint-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEXIUkvzUVHzTEzzn5785eXrbW24BgbzWVnze3vzVVXzY2Pyion509PzbW3zXV1UMxj0l5f1srKbRTRgOxzJDg796ur74ODfIyP5zs6LLx3pNTXYGxuxdkVZNhn////sCC1eAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAABWSURBVBjTnc+7EoAgDERRTOQVxMEZFAf//z8FjAUFDbfb060QU2FwxngimxnCea3bjegSgz+0tguAfBgIy64QGfZQdg91dgAtqUZgnfz6IacYVWvu2AvR4wNAv0nxrAAAAABJRU5ErkJggg==) -2px -2px no-repeat #eee}.banner-right{float:right;margin-right:10px}#banner img{margin-bottom:2px;margin-left:8px}.category-title{display:block;padding:10px}.category{margin:0!important;border-radius:0!important;border:none}#search{border-radius:0;border:none}.loading_file{background:url(data:image/gif;base64,R0lGODlhPAA8APcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQhCAD/ACwAAAAAPAA8AAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAZ9puy5VjEixj/hZsAAECGfhlDFrSl5hPBdCA6dgxSkF26dyIfItox48aXgfk+qASQYiC/dOXKmXMXkyGxJDOS9pA1cMyBjhLUDJQXNOg5fkUV+hqStGaoqY4+dBBEMF7Vcuj2ZVVIpasRfwXrwS14rmq7tQTLzR0oRokWePoa7kt3jh1Igf7mxcMXEp+dx4wJ7sMK8fBAd+aEWoZ4To6Zz3nY4f2HL7NVjMPWfDazpthos1XPqY2oLs5qOeVG/6sbFF3Gcp7l/NL9b945c+j2XuR2Kxxxgf3ubX5OXSG9dsqrG5xXbyGvUqRO/mk/qA+d0HeUDUoDlak9qvEFgVaNh5BW+/ak5sGHzjvo3YPGbHIfKfsNpM5Z+h00Ty6eaHLKOQUaaI45+MyG0DXPRCiZPYFp6OGHBvWTHYj8TPdPP/w0www0IF6GDjqRDdQPMzQy40yLBwZljnLZ1EhjOh/2Y15VRA3kjY/MAOmhP0MGBQ9B/vgoTYvx8OZbQf5I0ww2LQokzzrvWNjlmGSS2U887tjz4TzqrNNdQu3omN5+9Jh2zogC4XPWnQUKeZZoB8FmlZja+VmVOgk1eWWBglKYUD3nnJOch+2gkw6KCvmTD55ldopRPPJQJ89LIe3DmzqchhRnbxnJF1SCh2vd0185RULkz6yAxjprqBflKBSsa7nKJ0bsRLpOQfl06JA/+ExXKaqpLhRdPgWtIyk90cp43FXw+WoOsP/Ig55kppUjm3ZM/plXVZbVc1Y59BS6q4HvDmRqVeYQStytQSkpULlBpWeqOefoYyJx9rwTz2bs1CtZPfp62F+2LfYDD0yeZkxmQAAh+QQhCAD/ACwCAAIAKQAfAAAI/gD/CRxIsKDBgv3q8JF2sKHDhwLNCZkx40g/iBgJInt0i2C7JhQpninIpIWbjAVLrTGT5tBAfUtCzqAysFwMAAAcdEEpcNodM0DbEBsoKAdFIYgGGjKAE0CHdTydyQHKMtdAeqSYKNlEsI+Aph648fz3hyodfwXvoS3ooekViO7WDkx0Z9C8fRnDufDAxJ1DfaMC6yvI7+LYeg/fhcrEuJS8sZD/XePEOFMnbJHHxgNVOVS7zGPdLQZFDTRkdM+gml7N+mA+e3JbP+wmLdo02RBRM9t9G3fDbLt3R8vn+6C44MyiFXe9zRmzafOWN1xnTrr167j9xcber1+5ctWxHwv0/h28+H/ryn+Pjr2d+nL0xPtTf+78P3/oyqkWHxAAIfkEIQgA/wAsBAACAC8AFgAACP4A/wkcSLCgwYH9LnHqdrChw4cN2ckxY6ZOP4gYH2qj9YxgvDwUKTIqCOeKoowQh3HKpOnVwH14Qpr5M1CdlhkzfPRB2TAcqUxAO2EbGEoNxTilBnq6gXOGknc8DXoLBZQltIH3duW5Q4vgpRpNl4yLajBVVVH+CuZLW3BJUzxk7bEdCIvUqnv8MprDsgROPISU9PhqyC+a4bwE+12Meq8gGAgAHsAzeO8Zs8vS8JGF2KsBgM8bDK5rdplZs3WbH+r5/JkDt4L4LF9+Zi/1Qw+sQRy0Z/lZOtsPH12wIAKxwXnm6gGHCE8XveXQDfLTNzd61HbozqGzHlWfPHPlwiRv554xHbvw4veRh9jvHDz05c6tx6huXzvw6DTPz0hP3v6MAQEAIfkEIQgA/wAsCQACAC8AFgAACP4A/wkcSLAgQX+6eqEzyLChw4cC5YHKlGmUP4gYH7LLdo6gvVIUKc4qSCnQqYwQwzVjxszaQH4gQ6Ya+G6QGTNuPKFsCC8aS2bO1g0EtokiqGEDbaW5aebOvJ0G3T37yayjwHzRSpFqRjDWGaZ41EE1SO0ntIsE96EliIepprH61gq8Fo2avn4Z2QXCM4newH6pKC1r2O+cYbwH5WbMVxAQkBk/nhbUZ66cZXT7xkJU1mOG5yQG6VkeXU/zQ0qeP48ruK+yZXP6TD9kkpoJQ8rlzkmW3bBUkSJO+DXMJ48x74fzkNk7zry584GSRj0f262EAQhmzC2cjvEFgO8JACFh5v6wXofv36FYJe+wBnoClfCxh4gDwoRg2eanRFVNYEAAIfkEIQgA/wAsEQACACkAOAAACP4A/wkcSPCfP27e5hVcyLChw3/4njFjFs3fw4sL67GTR1CftIkTsRW8tYoYxoXvyqlUN7DfR5DUBtJjlSmTJ18nB947p7KcOXoDvzWb+CzcQGebamYidS/nP3s8e3IUyA+dtGjmCC5TmqlUPKf/0vU8Z5Fgv7IESyndBVbgOnTo+KF9KG9VqVv4Wvp6JfKiv7kn9xX8BMfMG3ttE19zY6axncRtXzVufIclZKd4Jue5DHbXnDl6+nEGa69a3tGoUzs9VUs1xnFRcAAptM61QywzcuvIZJvhPSW5c8vpzbBLcBuqiDMEA0RIM3DKF57L1S269eu2z03FLhDMhxDFuN//mwGgfAXR1995KF++C3Z968sHgMO9z4byKMT/S/TDzDb9AAYoIEHzqLNOPeLRY45KZGHXDzo9lcOOgxD2ZNl18fRkzmnYtYNOOv3wM+CIysmTzjv6tdMTOtztFKE72LkoFXdiMQhYQfnoA5Y/+KA3kIfq/OXQOuegQ8+NDPVzjjnniAiWOhoqRFA+9zgp0D4LMihYTv5UqNKEA6lzzjnpEFRPhOUAlZOSEW4HT4RlXhmVT1tyGVWcAkE5lo/7LHmOPj7mZM878QQqD5wF7VNPnaq1syQ6SBLnzz2IuRYQACH5BCEIAP8ALBoAAgAgADgAAAj+AP/989fOXT6BCBMqXMhwn7ly5c75Y0ix4j9+6CBCXKdwG7VwFhn6y6gxHcJ81Zgxc+Yt5MJ3Gs29Q2hOpcpo+1wm7DcP3Tl5CcvZZBYNn06F/SYqlGaz21Gd+KpF25ZToD9qyco9ZdhP4a9PmT4d3FqRnKdMaEmRrZgMbdp4aymWclsqLkVpokKZ6mqXYb5x+voKHvyvFzLCCdXxSfNmFDzE/wSZmbxmFuJ8dyZPrgS5kGY0vyD/OwQnTjZ0otst0yq6teuQ6+i5BsSkCTTRXGboJsJ3sLwlunX3QbwPuG4ajSBbQqJbSmtQZgqJe029umtJM3acEv2JAgAAGHqGC6YH4vt3J4jflTePA/KdBN8ZEBONRcSKeuqs648rL93M1Bqhhtg952hUjjsDFqgRUIilo5FEcfmDj3j/tIOOOv4otVU/55hzDj/8vQMiQg49WNVTBvZWj4HlyPaUOiySqGA55pyo00MGjvjPPh2eow+FIbETY0L71GPjUzNqSFg/8PyHWEAAIfkEIQgA/wAsJAAEABYALgAACP4A//1jl+6dwIMIEx7kl65cOXPuFEo8KM+hw3P8JkqMZ7Ecun0aJZ6z2C6kxH3pzrHrd9BfOnLyTP5jifDbM2bPMso8GM8Zs5/Rdh4k9xMoPqECoxWVhlQgOmjQpPlrKpBfPJ1Us4acpi1rPFSbPgWr13RVprOcmCHdR+rsWVxNXbnVRI3qq0+gzBlsOo9bRK2AAyeEd0/rJzx5tlElZKbxHJo76+Fp3LgTUn6TKadqCstOYz9ZcTEalU6w6dM7T3ERA7eprCEzZhiBLNMek9ix4yCV1wT3jC9NJemI3QMaVT1OrNj7i7r5wUMx0mSNUgBAgBFNcWUAwN2AGaSxMBdwB2AAUVMY4zfQTugP33ooIWbwm6owIAAh+QQhCAD/ACwkAAkAFgAvAAAI/gD/7Ut3jl2/fwj9zYuHD6HDhw4PPnRnrpw5iRAzOsRXsVy5cxpD/ovn0eO5fSI1niuJLqXGeefMofPnUmO/exhr6twJER07ng7vTWvmDJw+oNWYKW1Wjme/aEqVbgNqLSqzdED/XXv2TN69rPna2ctKtmzNevnK/iplCiTQVpnihqK5E1+puHF9Ob2LtxhQZaPioiL7TFYweGYTKy7bq1CiZFmLyTFjhk5Ol/jyUKZciWc9zZsPvV1Duc1UoJv0AMInb7FrkZ+0iM4658YMGk+AGjsyo/cNQjyBGek94wYooFmIJ7n80N6v1g/nNNnCj25GdhkqaFgHVJsEAOA3H3jj6UkBeAAIOPH8duG8A2xAw2lYgMFau6zbQoHLGhAAIfkEIQgA/wAsGwARAB8AKQAACP4A/wkcSLCgQYLz6h1cyHCgPnTlzL3j17AiwXTlMpaLZ9Fiv3May7XraFFdyHkkS5ozh29fyor77Ol7SbOmzZsOKeI0+E2aNHk7CVpjRhSav6D/9kkjStQbUn9LmYpD+o9cNKLTqAo8hw3cPa1gw4pdOK0VrG1asYXKlEnU0aD6SrFliwspPlNzM72iiowTW0/ntPIypUqfvbGId94aVAqspTRmzOyhSq1OZDNpRiGFRudymrpIB12206/mPWb0ClrKQ6jf25TvjhBB8q5mMFfrCIYLMqN3EnIvaVyoUKK0wFg7es/IASvlmwMAoqsYWK6Ich/fUsaIHl3DyK1HdhwY8QYv5aEB3E0UFEfLXE0pFyB8MI60HytSYAMCACH5BCEIAP8ALBEAGgApACAAAAj+AP8JHEiwoMGDCP/x65ewoUOE7tChw/ewokN15TKa82exY8F+6DJmdOex5D9/IUXCM1ky3rmM6FialLfu3T6ZOHPq3MlTJzpr19r1bLjuGTNm0DgONchP2tGj25Ya3Of0qTWpBsc1O+psHlaD3aRR46fvq9mzJZ2xEoZ2YC5NmTKdaitOVNxMmoKh/WY37qZnbVndJaUUITLAHfNhu1cwl6lW/Qob9MFBRCaKD+fVmWPHq8ccAEJLiFSQGa93BNHBMcPazrqO9zyEDs2EIJciQ6AwFFhsDWszaoZ1pDdi9oBGAxfhmMGcysB1dH67OecxHwcABFoQzMKc+ZGVAtsk1WFDxxy9krDSAKpHsFON7lEKpjPGbumcIkCW7Ebbb1etoQEBACH5BCEIAP8ALAkAJAAvABYAAAj+AP8JHEiwoMGDCA3OU7eu3j9+CSNKjEjPXLly5/xlnMiRYz90Fy+yO7evo8mEH0OWU4fupMuD8UKaw+fvpU2C7dCl6wfxps+fQCP6QRQUoblq4BB6+yAgQY57RQlyY0Z12sEXALIWWBRVIDxoVKkmJYivQ9asTLr+ewc27DmDO846mKT2X7Ww0WoaPIKBQ5CC07Cd3FcuX0Fu0qz501vQXS5mBckkcdLK8MR7o0KNgvoTzIzPQk4VvLZsHkF4oDKpJhXPJ74lnz/DIThoTpw9/QZi66Q6E6drPu09iV2D1EBTacwo9zNQnqjent791Jdkho0rBAMpV07HtMB5ozokiXLH2ScwQ5nK/6N1ZvuegvCyyatbkJKcN3dy05fYT5mxogEBACH5BCEIAP8ALAQAJAAvABYAAAj+AP/RA0TG1b+DCBMqXMiwIUMtCwAsUOewosWK9IBFBABAg76LIEH2QweII0cO2kKqdDjynwiTIVbKZBjv3ygMGkD0m8lzoT5lO3sKHUq0IiZQRRvKS/euITkmNXSEwZc0YbtyWNExzDKj641QVQ/eO4cVqzuF+ZR07fom7L+xZcvJWyhmrQ9Ubv+lK3vOH0M2RpKcUehN3Mp+8vgpbIdOnT+/C+Mds6Zw0R09wj5e3BcNWrR9RBGZGR2nl0Jx2u4lvPeMmetoVHvqwzN6NKWEq0CBKhX037pmrpk1WycUn57aZ3QhDLYpk/NTCPFBC+5MtdB9dsygCZRQlXPnoawp/8sXrRk0e6CHPiMlK19CZd8zmVJ4j13svAhtgfI0CjL+iv1oQxlPAQEAIfkEIQgA/wAsAgAaACkAIAAACP4A//3L50+gwYMIEypcKHDfvRIbhDCcSDEhPwwAAAiQWLEjQ0MHMgLgoMyjSYSZEIjcYOyky3/+NmQsgOXlS35LQLSxybOnz59Agy60l2mQL6EU9fCYwcMd0oXMls6YgWTf04SZpk5NEu5qQidam3hNWMsIEib9xibcRy2t2rc2Y92Ca3AdnjNrEOmjK8iM3zS54Oq749fvJLqJCrs5ShcSnTuNEKZbd9IfPrcM6VUDhzAWKVPW+HXsd87cOdEnX2VaDUoaQnborBrcZ66c7XOyO+4rtXr1XIPSnDmDhrme7eP0TOoz1VtTNIPdmEln9rzhuePmcnfkRyqTplUHpSVNZ/Zsr3XT+jB7/CaMmXZw46Eh3FdPO9Brzpo9K0i3X7pzFQUEACH5BCEIAP8ALAIAEQAgACkAAAj+AP8J/EeOmr+BCBMqXDgQy4cOIxhKnOhoAoCLKCZqTFjk4sUO4TaKnFPAoweRIsNBaTBgRDGUKDclgkmzps2bC/UdxLlwHz4oSMzwVMivyIwZNIQOHcgJx9EZSKYtFbgqx1Mk0Kb+84fk6A08WgXyc8NkZtizaNPCxCdLlDO0m9iYYSMvbDa5ZszU4adVVt68d9CF1fNXz9ljdOrk6YeW3zfGaiMnXPYMbbxSmTi92heWVabPmrJO5Ufq8+dbYWGZ9iQ1bC1RpGQlpFePJ75x6hJiiyZNHeSp15gJfyYYobx3fGn2kyZc+DaE5aKX+y2SH/Pm5waqkx69Zr9owqsZITTHvVxymO/ATUfIrvzZc9J3au0H793AgAAh+QQhCAD/ACwCAAkAFgAvAAAI/gD/CRxIsJo/gv/WoUPH7yBCgfQ2SKSH0J/Dh/+uUQDA8QM4jCA5JeAIQMEnkBi7TSBZgRpKjNUqAKBQ6SVIY4ia2dzJMx23izwF5mGi5EnQgaWEzFg65eg/NUuXKjl31NGNqEucnpvTo8YTaE4FvgIVtqxZkPuABuWXb0+dRWH5zTFDF+7RWWnomqnD7agvNXrraDvqrw5dNJjC9ouEp9TZx5Aj62MWzFtZXp0ydbLntFzmTJlG9TvKDDRoUvCcmjJtKqw2UaNKqeXZL93syGXLUQ2LTxqzZtdGH63GrDiz3bSjGWe2zek1487SuYYWDRvCfPps7otHkeC6c+joId1Gqa6ceXPzCKMzb57d0X7n2JeT59Rf/HLSw9p7F290QAAh+QQhCAD/ACwCAAQAFgAvAAAI/gD/CRxIsKBAUkUOGVxYUE0CAAVwMGRoiwOAiww+TTToisJFiIo2GlTxEYO/jd1OEtzRAUa7fAztIUGSxF7BffwmfhsyoycTcyIJwtLRc8YOWUEHjhNSlAi3pAO7EZkxRBVUgtE+XbvKtaC7ciq5bspzZ0/XXXHMqO3D9ZFatXfaXVWF5u0dru0stUGz52nXYbi6Ch7MkF/Yq/z2lRIFq2u/UJkiN76aTFPkTKKAQo226bKoclf9iYqsKTDXfrRIBSPMurVrfuXAuRPczRkzZ/q4yrPNjFm0wyLL9e4d7R5XacOldWUHLZo04En90YPuWnA8eYL3nStXTh31iem4IXOfF3q7eHZc1Yk3R54ru3Pn1hXMl3tjv3swCa47h256QAA7) center center no-repeat #f5f5f5}#alert{position:fixed;width:30%;margin:30px auto;top:10px;left:0;right:0;z-index:2000;display:none}#alert a{text-decoration:underline}.option-item .bootstrap-switch{margin:15px 10px}.option-item button{margin:10px}.option-item input[type=number]{margin:15px 10px;width:80px;height:28px;padding:3px 10px;vertical-align:middle}.option-item select{margin:10px;display:inline-block}button img,span.btn img{margin-right:3px;margin-bottom:1px}#edit-favourites{float:right;margin-top:-5px}#edit-favourites-list{margin:10px}.about-img-left{float:left;margin:10px 20px 20px 0}.about-img-right{float:right;margin:10px 0 20px 20px}.save-link-options{float:right}.save-link-options input{margin-left:10px}#save-footer{border-top:none;margin-top:0}a:focus,button{outline:0;-moz-outline-style:none}.btn-default{border-color:#ddd}.btn-default:focus{background-color:#fff;border-color:#adadad}.btn-default:active,.btn-default:hover{background-color:#ebebeb;border-color:#adadad}.alert,.btn,.btn-lg,.dropdown-menu,.form-control,.modal-content,.nav-tabs>li>a,.popover,.tooltip-inner{border-radius:0!important}input[type=search]{-webkit-appearance:searchfield;box-shadow:none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.modal{overflow-y:auto}.form-control{background-color:transparent}code{border:0;white-space:pre-wrap}.bootstrap-switch,.bootstrap-switch-container,.bootstrap-switch-handle-off,.bootstrap-switch-handle-on,.bootstrap-switch-label,pre{border-radius:0!important}#banner,.title{border-bottom:1px solid #ddd}blockquote{font-size:inherit}.panel-body:after,.panel-body:before{content:""}.sortable-ghost{opacity:.6}.colorpicker-element{float:left;margin-right:15px}.colorpicker-color,.colorpicker-color div{height:100px}.word-wrap{white-space:pre!important;word-wrap:normal!important;overflow-x:scroll!important}.clearfix{height:0}.blur{color:transparent!important;text-shadow:rgba(0,0,0,.95) 0 0 10px!important}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.konami{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg);-moz-transform:rotate(180deg)}.hl1,.hlyellow{background-color:#fff000}.hl2,.hlblue{background-color:#95dfff}.hl3,.hlred{background-color:#ffb6b6}.hl4,.hlorange{background-color:#fcf8e3}.hl5,.hlgreen{background-color:#8de768}.title{color:#424242;background-color:#fafafa}.gutter{background-color:#eee;background-repeat:no-repeat;background-position:50%}.gutter.gutter-horizontal{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAeCAYAAAAGos/EAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAlSURBVChTYzxz5sx/BiBgAhEgwPju3TtUEZZ79+6BGcNcDQMDACWJMFs4hNOSAAAAAElFTkSuQmCC);cursor:ew-resize}.gutter.gutter-vertical{background-image:url(data:image/png;base64,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);cursor:ns-resize}.operation{border:1px solid #999;border-top-width:0}.op_list .operation{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#rec_list .operation{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.arg-input,select{height:34px;border:1px solid #ddd;background-color:#fff;color:#424242}#controls{border-top:1px solid #ddd;background-color:#fafafa}.textarea-wrapper div,.textarea-wrapper textarea{font-family:Consolas,monospace;font-size:inherit}.io-info{font-weight:400;font-size:8pt}.arg-title,.category-title{font-weight:700}.arg-input{font-size:15px;line-height:1.428571429}select{padding:6px 8px}.arg[disabled]{background-color:#eee}textarea.arg{color:#424242}.break{color:#b94a48!important;background-color:#f2dede!important;border-color:#eed3d7!important}.category-title{background-color:#fafafa;border-bottom:1px solid #eee}.category-title[aria-expanded=true],.category-title[href='#catFavourites']{border-bottom-color:#ddd}.category-title.collapsed{border-bottom-color:#eee}.category-title:hover{color:#3a87ad}#search{border-bottom:1px solid #e3e3e3}.dropping-file{border:5px dashed #3a87ad!important}.selected-op{color:#c09853!important;background-color:#fcf8e3!important;border-color:#fbeed5!important}.option-item input[type=number]{font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;border:1px solid #ccc}.favourites-hover{color:#468847;background-color:#dff0d8;border:2px dashed #468847!important;padding:8px 8px 9px}#edit-favourites-list{border:1px solid #bce8f1}#edit-favourites-list .operation{border-left:none;border-right:none}#edit-favourites-list .operation:last-child{border-bottom:none}.subtext{font-style:italic;font-size:13px;color:#999}#save-footer{border-bottom:1px solid #e5e5e5}.flow-control-op{color:#396f3a!important;background-color:#c7e4ba!important;border-color:#b3dba2!important}.flow-control-op.break{color:#94312f!important;background-color:#eabfbf!important;border-color:#e2aeb5!important}#support-modal textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}#load-text,#save-text{font-family:Consolas,monospace}button.dropdown-toggle{background-color:#f4f4f4}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background-color:#fafafa}::-webkit-scrollbar-thumb{background-color:#ccc}::-webkit-scrollbar-thumb:hover{background-color:#bbb}::-webkit-scrollbar-corner{background-color:#fafafa}.disabled{color:#999!important;background-color:#dfdfdf!important;border-color:#cdcdcd!important}.grey{color:#333;background-color:#f5f5f5;border-color:#ddd}.dark-blue{color:#fff;background-color:#428bca;border-color:#428bca}.red{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.amber{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.green{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.blue{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}</style></head><body><span id="edit-favourites" class="btn btn-default btn-sm"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABsklEQVR4Xo2SMWhTURSGvytBC0IpAYtCB0sKQmqyOSovGRzcRIOhs4NZdFRB8HUTB0EcFHQrVE0VN4eCvqjgkEqFRDMZ2kGIVI1FENS+9ngOF8rz8Sj94Of8/Oe/lztc12+yE4LHkQ25rS2YOtcnzafHhTB/9BLG8MPtUDthRoc9m5tkovn1/PRFTOazO5DTpbpfJOnNl8MDpcZ2ni826M0VwuJMJ0xf4EQE/r4hSXf+hJRmXqczNHMk2Xsct3yfEP5/4qFSnYOqJF+6jxioUsy69l3k2IU+/FmF3yvsipFJ2HeYpXsF3Ns7/gXT1fOMjk+yG36urfDx5QP/gle3MAIgKlfOMDY+wU6sr32mEz0FqAAtXtwEEbEZqGTYroqs1jNlO+tY15+BXBxjUD1daS0uREj8AzaELCRex/ona5UWoD5xwfOHUQCQH4th4xtp/M4O+e6ps+WWef8TuxPoDKaOjEI83Nb3wcCUzLCOddXbhGfXQERsytfFEZH3+22K5qbIlLEzj054chXknU1Ep/TmEPWmwHKTeZXufMe8z8E1L0PthrBwxfkfCbNASDbpDv8AjqMNNGMVxw0AAAAASUVORK5CYII="> Edit</span><div id="alert" class="alert alert-danger"><button type="button" class="close" id="alert-close">×</button> <span id="alert-content"></span></div><div id="content-wrapper"><div id="banner" class="green"><span style="float: left; margin-left: 10px">Compile time: 14/12/2016 16:37:29 UTC</span> <span id="notice"><script type="text/javascript">// Must be text/javascript rather than application/javascript otherwise IE won't recognise it... +*/.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}#content-wrapper{top:0;left:0;width:100%;height:100%}#banner{height:30px;text-align:center;line-height:30px}#wrapper{top:30px;bottom:0}div#operations,div#recipe{width:50%;height:100%}div#input,div#output{width:100%;height:50%}.title{padding:10px;height:43px}.textarea-wrapper{top:43px;bottom:0;width:100%;overflow:hidden}#output-html,textarea{width:100%;height:100%;border:none;padding:3px;-moz-padding-start:3px;-moz-padding-end:3px}#input-text,#output-html,#output-text{position:relative;border-width:0;margin:0;resize:none;background-color:transparent;white-space:pre-wrap;word-wrap:break-word}#output-html{display:none;overflow-y:auto;-moz-padding-start:1px}.split{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:auto;position:relative}.gutter.gutter-horizontal,.split.split-horizontal{height:100%;float:left}#input-highlighter,#output-highlighter{position:absolute;left:0;top:0;width:100%;height:100%;padding:3px;margin:0;overflow:hidden;letter-spacing:normal;white-space:pre-wrap;word-wrap:break-word;color:#fff;background-color:transparent;border:none}#op_list,#rec_list,.op_list{margin:0;padding:0;list-style-type:none}#op_list,#rec_list{position:absolute;top:43px;bottom:0;width:100%}.io-btn-group,.io-info{margin-top:-4px;float:right}#rec_list{bottom:120px;overflow:auto}.operation{cursor:pointer;padding:10px;list-style-type:none;position:relative}#controls{position:absolute;width:100%;height:120px;bottom:0;padding:10px}.io-info{margin-right:20px;height:30px;text-align:right;line-height:10px}.arg-group,.inline-args input[type=checkbox]{margin-top:10px}#input-info{line-height:15px}.arg-group{display:table;width:100%}.arg-group-text{display:block}.inline-args{float:left;width:auto;margin-right:30px;height:34px}.inline-args input[type=number]{width:100px}.arg-input{display:table-cell;width:100%;padding:6px 12px}.short-string{width:150px}select{display:block}.arg[disabled]{cursor:not-allowed;opacity:1}textarea.arg{width:100%;min-height:50px;height:70px;margin-top:5px;border:1px solid #ddd;resize:vertical}.arg-label{display:table-cell;width:1px;padding-right:10px;font-weight:400;white-space:pre}.title,optgroup{font-weight:700}.editable-option{position:relative;display:inline-block}.editable-option-input{position:absolute;top:1px;left:1px;width:calc(100% - 20px);height:calc(100% - 2px)!important;border:none!important}#operational-controls{width:65%;float:left;text-align:center}#bake-group{display:table;width:100%}#bake{display:table-cell;width:100%;border-top-right-radius:0;border-bottom-right-radius:0}#auto-bake-label{display:table-cell;padding:1px;line-height:1.35;width:60px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid #5cb85c}#auto-bake-label:hover{border-left-color:#398439}#auto-bake-label div{font-size:10px;padding:2px}#extra-controls{float:right;width:35%;padding-left:10px}.op-icon{float:right;margin-left:10px;margin-top:3px}.recip-icons{position:absolute;top:13px;right:10px;height:16px}.recip-icon{margin-right:10px;vertical-align:baseline;float:right}.disable-icon{width:16px;height:16px;margin-top:-1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAACfElEQVQ4y6WTPWgTYRjHf8nlfVvuoDVIP4Yuki4WHKoUqggFRUTsUEGkVG2hmCq6OnTwIxYHB+eijZOKdLNDW1pKKyGigh8dBHUJElxyBgx3vEnukvdyDrUhRXDxGR+e/+/583xEwjDkfyIGwNVTzURm4tYAMA6MAoN/0tvAMrA48uL+l2bx4w0iYRjSuHKC6OnTZLqHk8CcaZq9bW1tSCkBqNVq+L5PpVIpAHdGfr5LN9bXiT7Z2nGgteb1/qFkLBJZ6OjowHEc8vk8pVIJgHg8TldXF52dnb2u6y5s7R/iuF5JSyAKkLl4eyAMwznLsrBtm1wu99Z13amk+BFJih8R13WXANrb27EsizAM5zIXbw+wC9Baj0spe5VSFAqFt4ZhXJ6ufXuK55E5cDKVSCTGenp6yGazKKWQUvZqrcebgCAIRqWUOI6DEOLR1K8POapVMgfPpoC7u2LLspYcx0FKSRAEo60OBg3DwPd9Jr5vPqWvj8zh83vEwL2J75vnfN/HMAy01oPNNQZBQBAEO1OvVsl0D/8lTuZfpYDd7gRBQKuD7XK5jGmarB679PIv8deVFJUKq8cuTZqmSblcRmu93QpYVkohhMCyrLE94n2/UlSrbJy5kRBCXBNCoJRCa73cClh0XbfgeR6WZZHNZunv719KvnmeYnWVVxdmJ2Ox2DMhxFHP83Bdt6C1XgR2LvHzQDvvb84npZQL8Xgc0zSJRqN7br7RaFCpVCiVStRqtZmhh9fTh754TQdMr82nPc+bsW27UCwWUUpRr9ep1+sopSgWi9i2XfA8b2Z6bT6ttabp4GMi0uz0aXbhn890+MFM85mO5MIdwP/Eb1pMUCdctYRzAAAAAElFTkSuQmCC) no-repeat}.disable-icon-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFUlEQVR4XqWTP0tbURjGn9zY3mjBwsUhBQtS6XKxiNypIGZJ6SKYUYdaKWg7OrrE3pYO+Qit3dpFuuQO6lI7Z4nESQdjlJbkJh0MksSb3Jvk9H0gjZFu9YWH83LO7zn/3nNCSincJobAeP1sEDBFi6J50UyPy4l2RNuioz756Ts0tt1OB4jH2a52Ne2HGh9PwrJm2EcxZx/HyPRYMDgB2u02/N3d1c7w8BZMM1ptNJBPp3GwsUExB/s4RoYsPf0JOkFgdoH34YkJ/D48xC/HyTTOzl5ayWSIktwxqlVo0SjIkKWnP0Hg+4swjGitVMJFNpu5o+svptfXv6DZBDIZezoWS3Db3A0ZsvRcH8H354dGR9EoFHA3EvlorqycwvOAXM4G8Pav+f7YmEOGLD1gsIzl54+V+vBK/Yw9ZAv1LQW1FrdFSnKVfQTK5liPUfRI9I8ArqiPjLAF9vcHVybyzlpasgcZeq7voNXKNSsV3DMMXB4fp/8xLyzYuLri2DIZsvQM3sFOzXURiUR4zsQNcyrFleFVKpNyP2/IkKVnsArbF65bbkqplJSJZrl5x5qbs7G3h3artSyV+arr+lMyZOnpP2Wp6ZFos3R+vvUgCGDNzgKalkA4rECIr07662J2i0X4nrfJJ33jJT6Zmvpcr9XWCicn5WI+j7rrAmKgmLOPY2TI0sPgb8TBZOi/PpN1qnDr7/wH3jxgB/FKIXkAAAAASUVORK5CYII=) no-repeat}.breakpoint{float:right;width:14px;height:14px;background-color:#eee;border:1px solid #aaa}.breakpoint-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEXIUkvzUVHzTEzzn5785eXrbW24BgbzWVnze3vzVVXzY2Pyion509PzbW3zXV1UMxj0l5f1srKbRTRgOxzJDg796ur74ODfIyP5zs6LLx3pNTXYGxuxdkVZNhn////sCC1eAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAABWSURBVBjTnc+7EoAgDERRTOQVxMEZFAf//z8FjAUFDbfb060QU2FwxngimxnCea3bjegSgz+0tguAfBgIy64QGfZQdg91dgAtqUZgnfz6IacYVWvu2AvR4wNAv0nxrAAAAABJRU5ErkJggg==) -2px -2px no-repeat #eee}.banner-right{float:right;margin-right:10px}#banner img{margin-bottom:2px;margin-left:8px}.category-title{display:block;padding:10px}.category{margin:0!important;border-radius:0!important;border:none}#search{border-radius:0;border:none}.loading_file{background:url(data:image/gif;base64,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) center center no-repeat #f5f5f5}#alert{position:fixed;width:30%;margin:30px auto;top:10px;left:0;right:0;z-index:2000;display:none}#alert a{text-decoration:underline}.option-item .bootstrap-switch{margin:15px 10px}.option-item button{margin:10px}.option-item input[type=number]{margin:15px 10px;width:80px;height:28px;padding:3px 10px;vertical-align:middle}.option-item select{margin:10px;display:inline-block}button img,span.btn img{margin-right:3px;margin-bottom:1px}#edit-favourites{float:right;margin-top:-5px}#edit-favourites-list{margin:10px}.about-img-left{float:left;margin:10px 20px 20px 0}.about-img-right{float:right;margin:10px 0 20px 20px}.save-link-options{float:right}.save-link-options input{margin-left:10px}#save-footer{border-top:none;margin-top:0}a:focus,button{outline:0;-moz-outline-style:none}.btn-default{border-color:#ddd}.btn-default:focus{background-color:#fff;border-color:#adadad}.btn-default:active,.btn-default:hover{background-color:#ebebeb;border-color:#adadad}.alert,.btn,.btn-lg,.dropdown-menu,.form-control,.modal-content,.nav-tabs>li>a,.popover,.tooltip-inner{border-radius:0!important}input[type=search]{-webkit-appearance:searchfield;box-shadow:none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.modal{overflow-y:auto}.form-control{background-color:transparent}code{border:0;white-space:pre-wrap}.bootstrap-switch,.bootstrap-switch-container,.bootstrap-switch-handle-off,.bootstrap-switch-handle-on,.bootstrap-switch-label,pre{border-radius:0!important}#banner,.title{border-bottom:1px solid #ddd}blockquote{font-size:inherit}.panel-body:after,.panel-body:before{content:""}.sortable-ghost{opacity:.6}.colorpicker-element{float:left;margin-right:15px}.colorpicker-color,.colorpicker-color div{height:100px}.word-wrap{white-space:pre!important;word-wrap:normal!important;overflow-x:scroll!important}.clearfix{height:0}.blur{color:transparent!important;text-shadow:rgba(0,0,0,.95) 0 0 10px!important}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.konami{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg);-moz-transform:rotate(180deg)}.hl1,.hlyellow{background-color:#fff000}.hl2,.hlblue{background-color:#95dfff}.hl3,.hlred{background-color:#ffb6b6}.hl4,.hlorange{background-color:#fcf8e3}.hl5,.hlgreen{background-color:#8de768}.title{color:#424242;background-color:#fafafa}.gutter{background-color:#eee;background-repeat:no-repeat;background-position:50%}.gutter.gutter-horizontal{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAeCAYAAAAGos/EAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAlSURBVChTYzxz5sx/BiBgAhEgwPju3TtUEZZ79+6BGcNcDQMDACWJMFs4hNOSAAAAAElFTkSuQmCC);cursor:ew-resize}.gutter.gutter-vertical{background-image:url(data:image/png;base64,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);cursor:ns-resize}.operation{border:1px solid #999;border-top-width:0}.op_list .operation{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#rec_list .operation{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.arg-input,select{height:34px;border:1px solid #ddd;background-color:#fff;color:#424242}#controls{border-top:1px solid #ddd;background-color:#fafafa}.textarea-wrapper div,.textarea-wrapper textarea{font-family:Consolas,monospace;font-size:inherit}.io-info{font-weight:400;font-size:8pt}.arg-title,.category-title{font-weight:700}.arg-input{font-size:15px;line-height:1.428571429}select{padding:6px 8px}.arg[disabled]{background-color:#eee}textarea.arg{color:#424242}.break{color:#b94a48!important;background-color:#f2dede!important;border-color:#eed3d7!important}.category-title{background-color:#fafafa;border-bottom:1px solid #eee}.category-title[aria-expanded=true],.category-title[href='#catFavourites']{border-bottom-color:#ddd}.category-title.collapsed{border-bottom-color:#eee}.category-title:hover{color:#3a87ad}#search{border-bottom:1px solid #e3e3e3}.dropping-file{border:5px dashed #3a87ad!important}.selected-op{color:#c09853!important;background-color:#fcf8e3!important;border-color:#fbeed5!important}.option-item input[type=number]{font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;border:1px solid #ccc}.favourites-hover{color:#468847;background-color:#dff0d8;border:2px dashed #468847!important;padding:8px 8px 9px}#edit-favourites-list{border:1px solid #bce8f1}#edit-favourites-list .operation{border-left:none;border-right:none}#edit-favourites-list .operation:last-child{border-bottom:none}.subtext{font-style:italic;font-size:13px;color:#999}#save-footer{border-bottom:1px solid #e5e5e5}.flow-control-op{color:#396f3a!important;background-color:#c7e4ba!important;border-color:#b3dba2!important}.flow-control-op.break{color:#94312f!important;background-color:#eabfbf!important;border-color:#e2aeb5!important}#support-modal textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}#load-text,#save-text{font-family:Consolas,monospace}button.dropdown-toggle{background-color:#f4f4f4}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background-color:#fafafa}::-webkit-scrollbar-thumb{background-color:#ccc}::-webkit-scrollbar-thumb:hover{background-color:#bbb}::-webkit-scrollbar-corner{background-color:#fafafa}.disabled{color:#999!important;background-color:#dfdfdf!important;border-color:#cdcdcd!important}.grey{color:#333;background-color:#f5f5f5;border-color:#ddd}.dark-blue{color:#fff;background-color:#428bca;border-color:#428bca}.red{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.amber{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.green{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.blue{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}</style></head><body><span id="edit-favourites" class="btn btn-default btn-sm"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABsklEQVR4Xo2SMWhTURSGvytBC0IpAYtCB0sKQmqyOSovGRzcRIOhs4NZdFRB8HUTB0EcFHQrVE0VN4eCvqjgkEqFRDMZ2kGIVI1FENS+9ngOF8rz8Sj94Of8/Oe/lztc12+yE4LHkQ25rS2YOtcnzafHhTB/9BLG8MPtUDthRoc9m5tkovn1/PRFTOazO5DTpbpfJOnNl8MDpcZ2ni826M0VwuJMJ0xf4EQE/r4hSXf+hJRmXqczNHMk2Xsct3yfEP5/4qFSnYOqJF+6jxioUsy69l3k2IU+/FmF3yvsipFJ2HeYpXsF3Ns7/gXT1fOMjk+yG36urfDx5QP/gle3MAIgKlfOMDY+wU6sr32mEz0FqAAtXtwEEbEZqGTYroqs1jNlO+tY15+BXBxjUD1daS0uREj8AzaELCRex/ona5UWoD5xwfOHUQCQH4th4xtp/M4O+e6ps+WWef8TuxPoDKaOjEI83Nb3wcCUzLCOddXbhGfXQERsytfFEZH3+22K5qbIlLEzj054chXknU1Ep/TmEPWmwHKTeZXufMe8z8E1L0PthrBwxfkfCbNASDbpDv8AjqMNNGMVxw0AAAAASUVORK5CYII="> Edit</span><div id="alert" class="alert alert-danger"><button type="button" class="close" id="alert-close">×</button> <span id="alert-content"></span></div><div id="content-wrapper"><div id="banner" class="green"><span style="float: left; margin-left: 10px">Compile time: 20/12/2016 18:47:37 UTC</span> <span id="notice"><script type="text/javascript">// Must be text/javascript rather than application/javascript otherwise IE won't recognise it... if (navigator.userAgent && navigator.userAgent.match(/MSIE \d\d?\./)) { document.write("Internet Explorer is not supported, please use Firefox or Chrome instead"); alert("Internet Explorer is not supported, please use Firefox or Chrome instead"); - }</script><noscript>JavaScript is not enabled. Good luck.</noscript></span><a href="#" id="support" class="banner-right" data-toggle="modal" data-target="#support-modal">About / Support<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAE1UlEQVR4XoWVC0xT1x/Hv729t7e3LSoqWIRNW6uoARVH5mPGzfcmRvbSacISI5n42Mss25jROd0mOjXO7C9/3XSZdvjIlsxFYCrETWe34nQpD4GIIKgDIaAilpZH+9svJ9BUg/O0n9w2J+fz+55f77nVEREeN2wpWw0AEph7TPW1vMzHLpL/QzYJwGpmKjOM8TMSGJ6rAHCW2cFF6vsSiMR9pMtiMhIcVvMz44eBr0gcaRXzZVcbUXq1AS5PbRd/9gFYxfLDD4ulh6RjAFRqqpzxyco55q83vIwnrAPgKqnD29tP4N0deSgquwl73GAc2LhI2bRqbj9NVfbxulzG1KeYpSqA/LH2IcPz/5du5gVIXevE9kO/o8BdjVstXty67UXhXzXYffRPvP7xjxgcacEve5ZbEh0xswHsflTirZpRic5e96Jup/McPjvwK28/BlvemofjO9Nw7ps3ULBnGQ5uegVL5o1DEMCOHBcO5Rfjq8xUlYMs5XAzQjYiwvD5WZMYrzP3Eh095aHExV9SctoeOna6hB41jhWWUcraHHr+HSeddlfR4ZMesqVkNbLHws5Q4jcnxMeYZj7twC5OoaqKgACccl/F+r1nkLEtF0cKLocCzUq2QdNUaEYDvs31YO7kkUgaHWsGkBLeiqnTkmzcyyp0BwgGRYZqUOA8WYq9P13ClZt3cN8XgKv0Zkgs6yWYNIMQB0iHC+X1mJ48wgRgMnruSSOAJ8dxP8uvNUFR9EJsMMhQZL0oYFQNQpK+YEJIXFLTzFIVRhbzPGob7iLRYdVJkm56b+LxjI/vU1TWNkNmmcJigSgg2oKM1CQkjRoipNcb7yHPXSvSaizledQ1tmHM8CgQ0Zjek3efkXQ6HSTenqzXM5JIK8TMwmkOJI8WB0QInIVXoHBBjgdOCPBbkWWwA/zy94orGLm8pgkJ9iH4g/uoZzEDUYQLjHdEo3ecKa7nggoknuvq6hbFgkHCiLhIXLnezMV0HtEKPo5BAJXl1bcw1h4NTsBIAr2kEwWyj5dgs/MCvvjBg7vt3dA0g+gt70bsTC9LsA/tDw4XDASC58IPyNnzxXWB556ywWiQRQodw1sTpM0ZjRUpCVg2Jx6REUaYNFUIuXXghNB4TaI9CmeKqvwA3OHibe7iOl9R2Q2kp04UYhIQiAjRkSZYB5oQPUADKAifvxPd3QFuQZC/EhZMseO8p47+rvynHMCpkLjn0bdm4/9Pt09OiMPE+BixKBggcQUhNDo6u+HzdcDf0YVO7nF8XH/YrBFYtzuvnduwOPSsJqIQfCQLlmQe7mhobqM8VxUt//wEpW/NpzW7Cum97LP00X4XbfjOTRsPFtGn31+goooGarrjpUUf5Hj5PKwOd0kIG0R4qaj0+pF5q/d7iYLIWjUDrz47CuPsg2BW9TAZJIziH2nmhFisWZiI5tttNHPFPu/Fyzfer8n9MBsPyugBAFisU1a+Zpu/pSVt/VHf/uMXg+7SG9TS2i7g5zEd+PliYGlmjt/+wuby/o4ZswHEMpYwT/g/iLgLIgEMZAYp5qih/WzTZhksUQlqxOB4yOYoHQLBgL+1ydfaUNXZ2lDRWv2bC6AWAHcYvqKefb4+/5pYLgPQGBMT0UM/xsJIjK/ntLb1XL09+ClM9i/zfjVLWKBgfAAAAABJRU5ErkJggg=="></a><a href="#" id="options" class="banner-right">Options<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAD4UlEQVR4XpWTbWxTVRzGn9vhWlnZG1NYlwFLMGCUYfEt2dqwuDBfljGCUZkjgCgZyBeWBQ1ki1TmuvkFkw3JNAw1BhwmOslmtCwZmtDooCs6MCM4m6bQjtEVUtrStds9/s9J7/1wa5f4JE/+Pb25vzzPPedI0OgDEoAjEML75DGbzTaM/ykd0nVk/7v7cPjwITQ0bOsCcL6lpaUWgISFJXHeQmDT8U9PgMkySkwmDofRaBwEwDLBn9nzdfGHJ87JNL/SgiX6Ak+BRLUDHG7v7MJs/AHKysq0qbRQ/p6/bW8dTHlYTuthBSy1trbaALgJflSBWywWSFJaIRnpcl/6rBEulwtvVeZUm1caqkFaRH4oKyurbd/ePdBlZR8E0FpeXo61a9eAMZngEhKz0d95I2pzJT0tMDk5CZ/Ph49+jIJkUqv19vaO12+ue3Lx4oeRTCQIyIQV5eYXoKPDLl7ibVQo4HYefx0V+88iJfPlz7dfUcGUpthgMPz1Uk11/uNPrOMp1b0K37sLAc/LR4e9U8CH/I8t49DR3jfnnms6zVtvIuB/H0leta+v7zJNpnhoaCgxOxtnwekpdud2gMViUXbqVB+jtCwej4spkqeLomUQbwHASu7nZzo0E8TVGzfx8YAX3x+tRVXzgFpdA1DqqsrYhMxODoyKhB6PhzW0fcvOnDnN+DMNULPIcOiDt3x+ZV1UUooLx7ZgV6cDW8wGvLF5E9rb25UNnQYwr7nSmaGv1axB+4GXcWD786C1qP/qs3koLcrBVMDP24Dkp7kOGukWgu6ot0COBLEkPx/V5lwBnxj7FVarFQZ9Nmbu3Fbgbr75GnA69J2t67F760Y4fj6PX1zXAd0izM/NqWeVqmPpI8v4scwI12mhh962oLG2Amd/GMalax5UULqJib+RTMTBFQ6Hg4lE4mkOLyx6FCQVrtfrVbh6NVe9YmdfDv7GQvdjzNbdz3a9d4yd/OlPdvCT71hjcxfjz1fXNK8GkEM2NjU1VRKEybLMbvq8bOfOHeI3/09NTEndzbRB9VXr0X/uAjw+P6wvVIukfu8NXLwuIzk9Zo4FvbkACslLx8fHk+RantxEJ6anp4e3gZD4eCmtXFWKeZlh+pYnDRr5x1EVnBhJpoIU8Ol0OucABCKRyLbu7u5vQqEQKPFoMpm0A5BU8PCIEzNhMza+WIc/rqlQxLwjlQQNavZEVu6Aw+FwkVcAiJLjZLHLAly4vHjD4EX/GEhu8oNYRED1umiVXFByD4ACllLmYqm1TJ4XQGHxm6k3b8PuL8yhqQCHCxmXZK+42t8ypbn3UvpUn8spM+5/AT4U+4f4kq1OAAAAAElFTkSuQmCC"></a></div><div id="wrapper"><div id="operations" class="split split-horizontal no-select"><div class="title no-select">Operations</div><input type="search" class="form-control" id="search" placeholder="Search..." autocomplete="off"><ul class="op_list" id="search-results"></ul><div class="panel-group no-select" id="categories"></div></div><div id="recipe" class="split split-horizontal no-select"><div class="title no-select">Recipe</div><ul id="rec_list" class="no-select"></ul><div id="controls" class="no-select"><div id="operational-controls"><div id="bake-group"><button type="button" class="btn btn-success btn-lg" id="bake"><img src="data:image/png;base64,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"> Bake!</button><label class="btn btn-success btn-lg" id="auto-bake-label"><input type="checkbox" checked="checked" id="auto-bake"><div>Auto Bake</div></label></div><div class="btn-group" style="padding-top: 10px"><button type="button" class="btn btn-default" id="step"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACBklEQVR4Xo2STWsTQRjHn5ndnc2+JCalYiFRLPiCSqGHxmAPHgpe9CN48OQbhV68ePYQFTx7EIQituIH8JaDJw9K7gURsWkRSS5m06yZ3ez4JzHDTi72Dw9DNr/n9+wsD1NK0XGyfOt5k0g9Yoy10XPn+4fHXwnhM6DxYLd59f7O6NrDd5/q93bOm83PNi3b2qqcWhJesdQgxlp4FmgBGjdd19laWz0natXFBue8BUmgDYw9KS4sBpbtkF8sccu2K/BuaAEDcPni6cDzXDpTO8l9T2gAk5Zw+LbjaJ9wCz6O9YkAkyZA4Bc0UC6HPmMApqmjeUS52EJYjHH9BvUwKBhAKfQsZGMmcIQbzglIqWxFC06UAgMohh6NxwCmiVFZXqAyRcRYPBPESikDQDP+R+M0e6mUw7wgTSQxYu2ZYG9w9McAoqOYOOdtLUgTyxBIKTHzIyE2ARgORwYQRbFM0zGASb6pLPN7h508IlCfCWFrd9+Kf/fkZObGl1e3W/SfHGuVsQsHOKo5IMEqi9kVsIm7BxAZAKYLPYWx/bCyUHU9nxI5on6v+5MQvYkWZ/uXLtTo+voVWl1ZJsviAHQI8u046seJlDTs96Uiem8I0nG23TnsxdEgph+drkQDACNv0iR58bv7a4A3eA1jM28nfMgCVvoJKsJ1XuJ3GRKar7M3n/L5Z38BuYjjuKOkEZUAAAAASUVORK5CYII="> Step through</button> <button type="button" class="btn btn-default" id="clr-breaks"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkpJREFUeNp0kk+IElEcx39vFBc9+OfQRTAwzFt4CaYOKStj6MoeculStzoIQSB4kCVckmDx4iGCXWYJIqjoVOzO1l4qT1F7WfBWHvxzDPyTB3XUmXn93suRybUffHmP997n9/cRsFgwGARJkiAcDsPlwgEIeEZQAhCRAkgAlOD6SQP4rgMFDWVnYCAQgFgsBqFQCBwOByzZNQOotPHx1RNCCCipu6bfb+zSnslkeOQVILPrBkAirbws9btdTEWAzZPXpfepOzaeGMBXwe/3w3+MwTc3Dl+UeghTiskbBvR6Pbh18mZHB0jjmxvCKhIfR37s3r+Sevf8ca/T4TBF2HTSODuDxP7uNjrZFFbBk8lEzOVyspa4ykGYw2zfbTb/7ilvok1YhlVVFfP5vDydTkHXdXDdlhZOOnPY4/HA0YPtp3h6LFjh8XgsFgoFGTPgsKm1zDr8ajTQh8Fh5eGjZzjGI8yjKlgjF4tFGdd/YKYmRja24hw+zu3sYe2HiH3hYzQjl8tleTQanWtou93G6Qngdrth6+1+9h6hTULJZ/PeziJXKhV5OByeg1ut1gJOp9NZTdNOcQ419ot+ggp1qoLdBFmqVmNpm3A8Huewy+Wq1RH8QH9zmBlJJpMRdCIqiiIPBgN+2MCGsW/r8/kgGo1m0fmpzWarseayHlmNeL1eFiWC0cRqtSr3+/3FpSiKHMZtjU1glbFyfKgLTqfzEka9OJvNeDnzz1JnCaFmqOl8ZdJY1SiDOXCiXKg1NtG5DIt0y6ov3dE/AgwAENFWYYLj4mYAAAAASUVORK5CYII="> Clear breakpoints</button></div></div><div class="btn-group-vertical" id="extra-controls"><button type="button" class="btn btn-default" id="save"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABn0lEQVR4XpWTMasTQRDHf7N3efcwKqgh8CJEAg9sBEGEB6KV4gewC9g9RD+DYmelnSh+AdFCTGHtEwsVEYvXqkUgFjYm3R1JbmdHsoQjCQrnD4b/sDvzZ2ZhZe/Oy9eqeoMIBrCZ/+vOOfdCLt56Xt7fv5ruvX8MIWAhENWirpxplWPG2+v3ePLqEymABuP3s4eYKnUJ1+5GTQFRVXYePI3OdSm9VgZ4NU7evM3/oG++rRoEVJXRaEQder3e2gSiGkiSJF7URX2oDFBVAIbDIXXodrtrE1Au3epPwMYKPrD/6APbky8kxU/+igAI8+0z5M1z7J4+vvqICvMiNl+5fIksy2g0GlU455jNZuR5zsHBO/KtXbxvrq6ghBBwLqHVajEYDADo9/tMp1OKolhoDMTFWr9cwQES1OKhCDSbTZYwHo+ZTCYLrXIzw4JSlpUBzEtP6sAgFi3ZbI5qECcovQfAOZHPhz9+TXdOHQGzWNTpdGi325vNMTDjxLGtaoLFbzwqwsfM+bPn06+ZSIphYEQF1v6IYBz6C7lKJqr2/Q9KnAkBTHYbVAAAAABJRU5ErkJggg=="> Save recipe</button> <button type="button" class="btn btn-default" id="load"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABoUlEQVR42qRTzy8DQRT+ZnZaISV+hsRF/AEuIiFx8D84uSJxdJTg4lBxJz1x5CISRy7iJuJSFaTEpvWjqrKpUtut7s56sypaqWSlL/n2fZP3vjczb/Yx13VRj4mTFVYzwBkGyI3XCO1IF7HvfQVhitD3O4uSMDgnF3OFArKmiWm9A4ZhYv00xCk8RNhQeewojPDw7O48HAeuK+HKSjhfXsXKnDGG6ObMMmkXvBM4EpoSy49ilVBWiD1e9poWgKchC9CXq0X1zn+Lv0+iNEHh9QnCpoW0bRjxQxTfngFVjDr0BUlr8vKHc87VzqOkXaJDJAQVFVYuDZuSekYmfD1d79jk8HtG777Ynl8VNl0rbzxAa2qDlUnDz3/BGMdz/PjesnGuCohsSkdX/yBsaqQf04INSN+cpU0Ll6IkIfK5V/SwgO8CTsl6SyX1J43jXlD/AlpjO2zLpE5LXwWMVPwxV8A1UVcQaQk1d9KTcHCN+7g/w51+9XJ2i9jaHj1jNIHk61bk4D8DpGdwHdmHTrRVTVJQkfJc+DWHYBGKrN5x/hRgAA5SEp8dxkkEAAAAAElFTkSuQmCC"> Load recipe</button> <button type="button" class="btn btn-default" id="clr-recipe"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAChUlEQVR4XpWRbUhTURzGn3M2020OdDYzfAnJBAusjISIisgPSWBfoz4I5YcKJArB+hCUfTDwLQiEXuY0CKIXqSjEahShIGKSa9Immjqmlobp8t677e7cf4eBYCKIP3gOFy7P78B52NXjOGg2wU0EizBQVd9F3dgA3MTxdGeedcee7bYc+d15rZyVbUggk5Jq4chMS0JxvtUqJa0NFxl3NbI6mYx1BQahzjehKbogZDk2wZLCstJyMADgukzmugIi3FUioqPHF1YWozpyS2EvKCrZ43Tm/gWwGetBRInUV+Hmw9swvniO0tyPWnp5YYvWXopQewvzuhpR+7ABTiLC6iQO+fN0WxNT/X0n6ffoeeqr3kfPsu30/dVZmh29QgOeY9qjOxbV3czcUpS9UsDkAflYlZyjMTeryIbHZBHzCg63lyHZwQFmAUzp0OM2DPs8unfokwDpz4WAC8DnhEACKUlOuoevqXkZOyqeXDZxPiOLWwHxS2YKRjyMiJGPSMyBUMhL42Ne5c/8lJYQLOO6wSoL9u5uPXTkjBX6MMA4YCwCYhaqMo8lGUWNyN0PwOB58HTfnzVjJal4PxUKcsNgYPoYiHTosQgi0SVo6iJUdQFEBG62IzgxEAejj/8JztXQdEcLHwsGv+1Ks1kRU72I61FEoyoMIw4JrOnlUDWOgH8oKgRqOFYRF3RpcOCDpqMQihKBpoUTZW52wO48hbBipZ7PL8JCxE/IC0NYa1t3M3p735bGZvyVNN5fSFO+CpoJVFPvmxK9rQnTcsrC5Q7HGgiBioC//+fc3ILBLfsxORnU33U90EYCg52GgWJ588hyIbHCWshZtzGGQRkC8FoWb8niOFbxD8t+cvzQy+0mAAAAAElFTkSuQmCC"> Clear recipe</button></div></div></div><div class="split split-horizontal" id="IO"><div id="input" class="split no-select"><div class="title no-select">Input<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="clr-io"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACEElEQVR4XqWQTUtUURzGf/d9MrMXE02nEckEUwgc38B0+gC1sZDoZRW5bBstKmhX7azdRLixKBzbRRh9g1QoJg3HHLMcQQgidOze89KdCxoyEEk/eHgO53Cec/4P/4sBMHSlaVApM8OuUDfGxxbv2+cvHRtqbe17fvniTXZDZmLkHkxO20B0OZ0eZWX5C6ZpYVnmXz11up9zg9d5NzX5xiQCPrzP4rpuKA/P21KMWKykPZGHivYLKwW2sAHm52cYefiA3TA99XY7IP1k9Na1VKqbwmoOpTVKaaTQCFFyhe8rgkAigtIZCCmRobTWaXN8bGEYoLP7OH0DcfpTRyN1JGvp6W1mINVFR1c9J9oP09xykERTFcnOJACZp5+HbcpBa6g+FCfRcBWA9fWPZD+9Zr3iJ8WiRgmLLczthfFns77mLKYVI5d/zMbGbNS8Bhy7VKZHTfX+nSUCGFhYpottVxDzEsTr2pjNPWJhaRLwqKtpY2l5JprdjXnlP3CdfThOFYZhooHCWgYDg8b4mSi84UhvVLD/S2AZ5SMQXdQSpRSraxMcqGwPv3qKyr21tLZcIDs3gRABSksCJctHEEpuB/j+D/LfXhH4EsNwmJt/Gb4sUVKgVOhC7AjwAPK570Fj00lHao0KFEKFEorN4mrYRw9SqlAa35fkF78GgAO4NuCHc91+9mLsLv+Os1kM7gDiN3Yu6Ewf4qtvAAAAAElFTkSuQmCC"> Clear I/O</button> <button type="button" class="btn btn-default btn-sm" id="reset-layout"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABFUlEQVR42pxTW26DMBDchQ2iQj1AlDP1Bv3hp/7qDZDgGv3nahEHqBBv0h0rlkyClTQjrTDrnfHuGLiqqg8iOtJraKgoCnO5QVmWX5cnAK4sy0K6tgEwM83zvMntAXXgyjRNvK7rRkBz5OdCAuCKnmYFEEAURTQMA/m5PaAOXHGnoR0HJ+Dn9gCujOPIfjFa6/veto91CNgH13oA8q1Anufm0R2maXq46wCzdV1HdV3/PPLAGPMtOu9GII5j2wGuUsWDAkmSwCu+6wDrZ0zEvvUAKr4HeELAz+3hWsfSti3DUTfv1V3yc6FbAFeaphEYgpmcObhfPxcyEVzOsuxTX06v/Ira4RlfypvGu4b8kz9r/P4JMAAbMThCVdlgzQAAAABJRU5ErkJggg=="> Reset layout</button></div><div class="io-info" id="input-info"></div><div class="io-info" id="input-selection-info"></div></div><div class="textarea-wrapper no-select"><div id="input-highlighter" class="no-select"></div><textarea id="input-text"></textarea></div></div><div id="output" class="split"><div class="title no-select">Output<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="save-to-file"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACSUlEQVR4Xp2RUUhTURjH/7ubbZqTO4ezJtaiXsxXFzPByodNIYnCwIxEY2C1kiQhQ2P5YAg1EB/EKDDoJVhRD1FvUdBDZvgSrYdtmcPCWN1LazO3u3u/7jkM1iCD/MHH//9x/ufj8B3D+YnLY8tpp5CUcj8A1ANoB9BYJlDWaln7XmXO3b0/eX0UGyBEknWJmvq96PB6pSsDJw/NjvgbQ8P96D1x3LzD6dqWXKsaORfsqcMGGALByRkllTybJwGrqohf5hoYTWXo8e3Hbmc1ph6+grqyCNcWCX9hHIGhQUp8iRMjvhyh+UicBm89Jc/ADQovJGj62Tvqunqb3i99pj9Jp9M0eDFAgtmkoq7WBVmWIVbWwlFpQDnlwFiMrULNK/gq/cSH+EdIkgxJZiWBQGCY9HOQRlA1DZ2jcygFmF+SoeRV3Ay/5sV4MtEPEDgCE400aKqG6TPNYPR1H0Wzpwnr6xlstwpo8bjR29UJxqm2PTxLVHgBAN7YbCIUxYWQX8GlO4/4kOinFTA8DTsRmnuAngO7cKTFjYqtFVBVtTiAoS8FDoeD+5AffMiwvxvf0llM3XvMLx9r9bAMzxqNxuIATdOQyWSYZQFeMxfKMTQbRlZRcdrXgL7DXgiCgFQqxbNWqxUMA/sKd9M+EGvwfyy8fQOwAbFYjGLRqK7Rgo8xz5T3Ud1HdQWg99zzHLvLd2C32/Hi5XMQDPwVxF0pB1vbuFbrWRDPFXcgiiIslnL8C9EmcrWJNhQo/YV2Xwc2AV/iNQBBbI7x3779KBawdQsqAAAAAElFTkSuQmCC"> Save to file</button> <button type="button" class="btn btn-default btn-sm" id="switch"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABn0lEQVR4Xq1RTUgqURj9rmNJvEUt/Nm4CCSoNo6P3lYIJgghW7RoI7QQ6kkLW0m6aGeFi4gW/Sykohah1SJKDEVw0aJI+oVCCwJDEoegKHlPbKa5M+NFGphc9MHlHs4358w5Mwjqpt0xwwggIRO2h5j/HL4ZzVdxwNP/Pjc5hKkzgaMbMSBi/5iDPTgp/Epk8rA4NdyQCaqJx11MMXX5ZKpf/h3oBm8wolpHg8U+N1N6rXCmnk4jWWB8mmNhfdolJlGtEAonDVu7aUJyUBVBPHEMI4FNERt/j/K1U2+gFaIhDCzOkLTgOeARAkrDwfNLGf5YuyRX+U4fxhQJVKe5hYLb3CNkswWgdE2KvbaeqFaqQFv0Iv7/jxPsFf7qBpH9I4Xgg8MmPACSzHBfvdUt1mUvwogY3O/5kAjkB5bmfbCTvpN7kujQ6xwEcxtVWluNGtS+gc0zEQI7bYab6zwhMW7VUUVZ3CclUgxJQeP/Pxv0QjR+BSxbBsbewYZXNvRYLMRPEoGaCa6zsJ3h/cupN4yFwxCBIoFKEozJm39yPgGXVpapJ3PTqwAAAABJRU5ErkJggg=="> Move output to input</button> <button type="button" class="btn btn-default btn-sm" id="undo-switch" disabled="disabled"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB8ElEQVR4Xp2TX0hTYRjGn3P0OF0UblrMdWeYKPRPKLsIrCtBEIJdC11Fu+imi5FhNyosupDuRFBrGSvCddFFYEa5tSgZFcQcrVnZdK4yd1hzG+14vrdzPvCwxgzn7+Y9N8/ve8/H82E7gndA2AEiSngxgUYjXKnger9kkaqw1unwoVIBD3e3KikeTl81fuO5pyE5e3v/+1nPwXsD12r2oAShNKykhlEtykCdA6BNqCoBYH9ezTxYlEQIzyLp7iG3slK8tlk/Scn4KLd0jPLxDkrH2iirfetz+e0B+hU9Rbmkk5bfnWP+qYYVLdNhbKCH+cnrgxDFKuP2GFOxqRSQz29gi2pTE7IbZiyGI6G5j/JZbZOc+DQqWed9Dkh7e6CjqgV8/fIB35YWkEjEUExGXoDV1o5as3S0q7Xez6WDbkWmfskKuFOdvS7EIyNoOXIFTM2gGJYZRz4nIfF5AodPXDKFX0+3cQE0hjQJuOQml+iEnoziH+oEtJ92Iv3dA1NtAYJAPIvSHvALXXeRPotaeXxmDOe1OZ9dvUxy3EX+qSb6b43LtdE/CfubaZF+J2+wwF0LF1T8FkIP97Efn/rYnPeQbDSxHGcuQCgjba63n2Ty2io0bqEyuKDvZ+zi44DX8gi74aXX5gzetzs1kW0r8Bc37O0Ylzj6XAAAAABJRU5ErkJggg=="> Undo</button></div><div class="io-info" id="output-info"></div><div class="io-info" id="output-selection-info"></div></div><div class="textarea-wrapper"><div id="output-highlighter" class="no-select"></div><div id="output-html"></div><textarea id="output-text" readonly="readonly"></textarea></div></div></div></div></div><div class="modal" id="save-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAACfklEQVR4XqVUv2tTURT+znsvoSQ1xRodKlQiuPhjkjobnAShf4Hg4o9Jx7q0IAgOIoh0KYhTdRacFEVdXAp2cXEQNFiUQKGpJCXJu+d6z3mXyzUVac2X93HOPXn3e1/OuS907vqzRWa+A4BQwCLC7tq/7yGAQXQrY+bF21eaVMpSzL28DzATrIXQamTJCcy6lgiJ8Pf4tfD1xSXs9HM8ebG2nAGghAjvP23i+OOHGAcfT9zEmcaUpKkKG2YYw5i5u4xxkHcKHYEIu0Xxk6cv38BYeLQGw7EwM9jRA4PBABsbG9gLGo1GyK3oxI6ZLayjB8rlsm7YL6xl5KbQSRxlocUxoebiVhAzx45hjEGr1dp3K9gyTP7H8Dh2jDRN/68VbNWUIPHC2ufxW8EwbOPhsRavPvgA6/UlkY9ePmrmI0LJhnpChDw3QZhy3wp3of9zHb2vb7EXTMyeR1Y/paJqhGjkHPvhsbXofXuH+fl51Go1lEolZFmm0edCPeftdhurq6uoTJ/0rqH72cTCuf6ZhCfX63UVWFlZgQcWFhbQ7/fR6/VUmIggYGM0972QVsTDM+JWxQWVSgXVahUxOp0Otre3hSEvoPvCfhO9IFQUHa0NwkmSIMKoqNI7ln3hdc7j45broebguNvtqsio8CgBEkPhVFkb/t2kK/j1vd3BzKEKCOo4OIsx6jZ8b71oaIU/bha4sP7lx5vTx44cOHp4Ep8BbG1t6aCazSaGw6HkIiRRBqc0fmjTtbKLqfaaLTAYqrAledLctadnCXhlganZzecpCH+DuopBILQOXgJEmLRSiAL3aNfNRAmAkuOEY9VxMoqCnmM34o7jwOkYRPgNkQH28tTW3akAAAAASUVORK5CYII="><h4 class="modal-title">Save recipe</h4></div><div class="modal-body"><div class="form-group"><label for="save-text">Save your recipe to local storage or copy the following string to load later</label><textarea class="form-control" id="save-text" rows="5"></textarea></div><div class="form-group"><label for="save-name">Recipe name</label><input type="text" class="form-control" id="save-name" placeholder="Recipe name"></div></div><div class="modal-footer" id="save-footer"><button type="button" class="btn btn-primary" id="save-button" data-dismiss="modal">Save</button> <button type="button" class="btn btn-default" data-dismiss="modal">Done</button></div><div class="modal-body"><div class="form-group" id="save-link-group"><label>Data link</label><div class="save-link-options"><input type="checkbox" id="save-link-recipe-checkbox" checked="checked"> Include recipe <input type="checkbox" id="save-link-input-checkbox" checked="checked"> Include input</div><a id="save-link" style="word-wrap: break-word"></a></div></div></div></div></div><div class="modal" id="load-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAClklEQVR42tSWz28NURTHP3dm3g8tUQtp/AgRErGxE01sJcLGgr2FhFXZCEG6sPAj3UmElT/Agtg0kS4kIiIWUqqqSvFSVfqDl6cz782Pe47FzJTXIPqaLtxkcu6dufd7zvmeH3eMqrKcw2GZx7Ir8J5cMhjzD5YYMIadwKE/bLmtyqAo/Mq6twhjdqpyeNu+3h5QWBC6t/1ncjMHmzzI5FFgy9/QRWHHwavn23d0E0QR3xsN/DDk2Ie1zM4GPDjg9oz2nXKAXcDN/Jx5fBGAS10n757FWlSVNLMUFYFsbRt1JIpRBETSfblURVVwnQJDd05cBs7NeyCSBdtaJIoywPQgKqika1QxngMCagARwIDAPGUOiPxMHNcFT1IunRTw9+CppQukLPguAiqIpgpKBTAGHCtgJVWwFPB8bgWn5KVZl1KkeT1kXNqEieGHRP4M5UKWc3lccr6h6V0+d1yXYoE9xuFClmQjnk1j4OYuhrUpSkXYtPtIS4W1ee/xLqDLnxp7//LW6d55BaiiogTVSUodG0h8HwkbLfYHh+mRR+8Sy2iuYD4GfvULneu3YxsBYm1L+G6xyPS7Z+NhzHATRVFQQ3Bw3RJRUGu5/8ThXHV2sjLuGD7/QpEwV52ivKqTpBFgk6g1dGP4PDYwHsaMADR54Fdn6OjcRFwPsEncGj1egY9vnk+GMUMG8DKaXUSo1+t0ltqpz9WaW+JihtiwMvb6qwOvADw/BKBNVSi3rcaGIdKi9QAzE5UvfkNeAPG1e+BduQvd+2n/9GH027qNW9ck9ToFt9gy/5U3w99GJnh6oz+r5NFJOgbe0/f9eu/qxFJc0vVloDLN0M37vABWAg0DlIEVmTRLvCEViIEwexLz3/9V/BgA27Xi0XVGzVwAAAAASUVORK5CYII="><h4 class="modal-title">Load recipe</h4></div><div class="modal-body"><div class="form-group"><label for="load-name">Load your recipe from local storage or paste it into the box below</label><select class="form-control" id="load-name"></select></div><div class="form-group"><textarea class="form-control" id="load-text" rows="5"></textarea></div></div><div class="modal-footer"><button type="button" class="btn btn-primary" id="load-button" data-dismiss="modal">Load</button> <button type="button" class="btn btn-danger" id="load-delete-button">Delete</button> <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button></div></div></div></div><div class="modal" id="options-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAD4UlEQVR4XpWTbWxTVRzGn9vhWlnZG1NYlwFLMGCUYfEt2dqwuDBfljGCUZkjgCgZyBeWBQ1ki1TmuvkFkw3JNAw1BhwmOslmtCwZmtDooCs6MCM4m6bQjtEVUtrStds9/s9J7/1wa5f4JE/+Pb25vzzPPedI0OgDEoAjEML75DGbzTaM/ykd0nVk/7v7cPjwITQ0bOsCcL6lpaUWgISFJXHeQmDT8U9PgMkySkwmDofRaBwEwDLBn9nzdfGHJ87JNL/SgiX6Ak+BRLUDHG7v7MJs/AHKysq0qbRQ/p6/bW8dTHlYTuthBSy1trbaALgJflSBWywWSFJaIRnpcl/6rBEulwtvVeZUm1caqkFaRH4oKyurbd/ePdBlZR8E0FpeXo61a9eAMZngEhKz0d95I2pzJT0tMDk5CZ/Ph49+jIJkUqv19vaO12+ue3Lx4oeRTCQIyIQV5eYXoKPDLl7ibVQo4HYefx0V+88iJfPlz7dfUcGUpthgMPz1Uk11/uNPrOMp1b0K37sLAc/LR4e9U8CH/I8t49DR3jfnnms6zVtvIuB/H0leta+v7zJNpnhoaCgxOxtnwekpdud2gMViUXbqVB+jtCwej4spkqeLomUQbwHASu7nZzo0E8TVGzfx8YAX3x+tRVXzgFpdA1DqqsrYhMxODoyKhB6PhzW0fcvOnDnN+DMNULPIcOiDt3x+ZV1UUooLx7ZgV6cDW8wGvLF5E9rb25UNnQYwr7nSmaGv1axB+4GXcWD786C1qP/qs3koLcrBVMDP24Dkp7kOGukWgu6ot0COBLEkPx/V5lwBnxj7FVarFQZ9Nmbu3Fbgbr75GnA69J2t67F760Y4fj6PX1zXAd0izM/NqWeVqmPpI8v4scwI12mhh962oLG2Amd/GMalax5UULqJib+RTMTBFQ6Hg4lE4mkOLyx6FCQVrtfrVbh6NVe9YmdfDv7GQvdjzNbdz3a9d4yd/OlPdvCT71hjcxfjz1fXNK8GkEM2NjU1VRKEybLMbvq8bOfOHeI3/09NTEndzbRB9VXr0X/uAjw+P6wvVIukfu8NXLwuIzk9Zo4FvbkACslLx8fHk+RantxEJ6anp4e3gZD4eCmtXFWKeZlh+pYnDRr5x1EVnBhJpoIU8Ol0OucABCKRyLbu7u5vQqEQKPFoMpm0A5BU8PCIEzNhMza+WIc/rqlQxLwjlQQNavZEVu6Aw+FwkVcAiJLjZLHLAly4vHjD4EX/GEhu8oNYRED1umiVXFByD4ACllLmYqm1TJ4XQGHxm6k3b8PuL8yhqQCHCxmXZK+42t8ypbn3UvpUn8spM+5/AT4U+4f4kq1OAAAAAElFTkSuQmCC"><h4 class="modal-title">Options</h4></div><div class="modal-body" id="options-body"><p style="font-weight: bold">Please note that these options will persist between sessions.</p><div class="option-item"><input type="checkbox" option="update_url" checked="checked"> Update the URL when the input or recipe changes</div><div class="option-item"><input type="checkbox" option="show_highlighter" checked="checked"> Highlight selected bytes in output and input (when possible)</div><div class="option-item"><input type="checkbox" option="treat_as_utf8" checked="checked"> Treat output as UTF-8 if possible</div><div class="option-item"><input type="checkbox" option="word_wrap" checked="checked"> Word wrap the input and output</div><div class="option-item"><input type="checkbox" option="show_errors" checked="checked"> Operation error reporting (recommended)</div><div class="option-item"><input type="number" option="error_timeout"> Operation error timeout in ms (0 for never)</div><div class="option-item"><input type="number" option="auto_bake_threshold"> Auto Bake threshold in ms</div></div><div class="modal-footer"><button type="button" class="btn btn-default" id="reset-options">Reset options to default</button> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div><div class="modal" id="favourites-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAElElEQVR42q1VXUwcVRT+7uzO7uyCVApCARHbUtog5adQ8cGEWCSkxqY/tPy01MQHn3xQH0xjaGRBqvbRRhMj2ocqUGrb1GqitlbiQ2sFWRaotZWWdINgCcVadpcB9s5cz9yFQrQuJDLJ3cnMvef7vvOdc2YZlnh539yhKTZFB2NgqtOR90ZreClxbOkE28+s3n9ouxAC/jbP8YL6UzXLRtD7zl6NKZq+8dXngMBZ9H+sQYigi7KYWh6CpurjyaU7q5LXfAgIN257V2HUq7fnH2ytXhaC7rpdIv/ADiDUCsV0gnOGvk9iUdj42aLxix7weSreTSqpPJCS2w6hU12FAmYX+P1SDMavKQ35dS2e/0XQXbdT5Ne9CNx7H8xwEQEFEYlpCviOxlAWLWxJBN6DzyfyKT1XjYt71tSnkpjdXiwMM2dV6X6k5p2AmJkBTBstyDtTwxi6lISxnnEwm/mL4OHLNpd7hIeC5xVVvbap6asxSdD3dk2nMGY2OxIfh+ORR/Fw9hbYHA/BlZwC1RkkBR0wx5tJvVuqjxBYWdCPlgqReBjhwDj0CQXGdAB/Xe3AzNgQLT+YYu9iPR6yoP40RXXS8gP6IEz9awJUIExKUJBqoYGZSoTAsJ4NWvTAicScoj0W2YstAuwrgPgywLUBvsYXwHrfqv4ovkB5Kb1sDMaknQ6yiAVWkKWWgJh8x+7bIwmM+WwIle4kgBsURy8UjqHLdtwdczfLGvR49o0k5POU9K3TMEOC4glUglsAYl49FVcS/fM+6ZeZMotUBQa+0RCYiPmj8NAXqfeL3OOpHV6Zx1MfKwtROzIpUraAaScCW8SqqSEgfAdi8i4wo9NUByKZ0LLArePeoyoGBtlIdf9M2r/atKehdjgh10hNL9MJRIUITxDQIBGO05D9OQ82Z02Ywg36+NHg0TcQ3mYNN/xspMobTPvPOfDV1w47V/6Wur6iD/weFZDPgdKAcSEzkwTWt9Tao/qQ5Rj6zoFLHepItS+QthDvgUPSsloT1RfIpinKhFRKb0kpiGDODgnOI+rNENBe7xb7fg0oS5rk1kynqOnOAvf3yyJKf3mkeZhV7GnM2sWkTYom0PaKC3uvhtiiBKcKXZlpT5cPFL92BnzCUjvn86w9xqw9MgtFZqJQl148loHRm6NrK7pCg1EJTm5ybct4Kvls0eu3iGCBPdS6iogAi+mIPbLIFgG1ZuexeAwN6uW7u0LnohJ8nudqKng5u25NSTcMaleroIo1CyR24ooqCeKywtRlVKNpRWajUAffPG9Hz0VHwx5vwBOVoD3HdaH0SNaW+KReqVwhjOnbCrwfOOEfsMkzGesMFFZyOBI4tTB1F2V351Ycvv80fK7KFyyPTpDtHtnWFp/i0oZhkEV9R5y43q1CdYuG3T8HpbqTm2M9YZ3VZ23gKNjDwTQOfXwFvnyPD1b1BtdGJ3jCJSq7inC98Udc+VajE6x9tzfwwL/Gk0Wxx2kOqnI2cqwv5zhxWEOVL8CiEpx+MmYgPGlmKqrtB5sDz+z6KSgQ5TpdHMtMAx2GwUpUh7hB59ct3P8bYqMensGZ/v8AAAAASUVORK5CYII="><h4 class="modal-title">Edit Favourites</h4></div><div class="modal-body" id="options-body"><ul><li><span style="font-weight: bold">To add:</span> drag the operation over the favourites category</li><li><span style="font-weight: bold">To reorder:</span> drag up and down in the list below</li><li><span style="font-weight: bold">To remove:</span> hit the red cross or drag out of the list below</li></ul><br><ul id="edit-favourites-list" class="op_list"></ul><div class="option-item"></div></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal" id="reset-favourites">Reset favourites to default</button> <button type="button" class="btn btn-success" data-dismiss="modal" id="save-favourites">Save</button> <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button></div></div></div></div><div class="modal" id="support-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAE1UlEQVR4XoWVC0xT1x/Hv729t7e3LSoqWIRNW6uoARVH5mPGzfcmRvbSacISI5n42Mss25jROd0mOjXO7C9/3XSZdvjIlsxFYCrETWe34nQpD4GIIKgDIaAilpZH+9svJ9BUg/O0n9w2J+fz+55f77nVEREeN2wpWw0AEph7TPW1vMzHLpL/QzYJwGpmKjOM8TMSGJ6rAHCW2cFF6vsSiMR9pMtiMhIcVvMz44eBr0gcaRXzZVcbUXq1AS5PbRd/9gFYxfLDD4ulh6RjAFRqqpzxyco55q83vIwnrAPgKqnD29tP4N0deSgquwl73GAc2LhI2bRqbj9NVfbxulzG1KeYpSqA/LH2IcPz/5du5gVIXevE9kO/o8BdjVstXty67UXhXzXYffRPvP7xjxgcacEve5ZbEh0xswHsflTirZpRic5e96Jup/McPjvwK28/BlvemofjO9Nw7ps3ULBnGQ5uegVL5o1DEMCOHBcO5Rfjq8xUlYMs5XAzQjYiwvD5WZMYrzP3Eh095aHExV9SctoeOna6hB41jhWWUcraHHr+HSeddlfR4ZMesqVkNbLHws5Q4jcnxMeYZj7twC5OoaqKgACccl/F+r1nkLEtF0cKLocCzUq2QdNUaEYDvs31YO7kkUgaHWsGkBLeiqnTkmzcyyp0BwgGRYZqUOA8WYq9P13ClZt3cN8XgKv0Zkgs6yWYNIMQB0iHC+X1mJ48wgRgMnruSSOAJ8dxP8uvNUFR9EJsMMhQZL0oYFQNQpK+YEJIXFLTzFIVRhbzPGob7iLRYdVJkm56b+LxjI/vU1TWNkNmmcJigSgg2oKM1CQkjRoipNcb7yHPXSvSaizledQ1tmHM8CgQ0Zjek3efkXQ6HSTenqzXM5JIK8TMwmkOJI8WB0QInIVXoHBBjgdOCPBbkWWwA/zy94orGLm8pgkJ9iH4g/uoZzEDUYQLjHdEo3ecKa7nggoknuvq6hbFgkHCiLhIXLnezMV0HtEKPo5BAJXl1bcw1h4NTsBIAr2kEwWyj5dgs/MCvvjBg7vt3dA0g+gt70bsTC9LsA/tDw4XDASC58IPyNnzxXWB556ywWiQRQodw1sTpM0ZjRUpCVg2Jx6REUaYNFUIuXXghNB4TaI9CmeKqvwA3OHibe7iOl9R2Q2kp04UYhIQiAjRkSZYB5oQPUADKAifvxPd3QFuQZC/EhZMseO8p47+rvynHMCpkLjn0bdm4/9Pt09OiMPE+BixKBggcQUhNDo6u+HzdcDf0YVO7nF8XH/YrBFYtzuvnduwOPSsJqIQfCQLlmQe7mhobqM8VxUt//wEpW/NpzW7Cum97LP00X4XbfjOTRsPFtGn31+goooGarrjpUUf5Hj5PKwOd0kIG0R4qaj0+pF5q/d7iYLIWjUDrz47CuPsg2BW9TAZJIziH2nmhFisWZiI5tttNHPFPu/Fyzfer8n9MBsPyugBAFisU1a+Zpu/pSVt/VHf/uMXg+7SG9TS2i7g5zEd+PliYGlmjt/+wuby/o4ZswHEMpYwT/g/iLgLIgEMZAYp5qih/WzTZhksUQlqxOB4yOYoHQLBgL+1ydfaUNXZ2lDRWv2bC6AWAHcYvqKefb4+/5pYLgPQGBMT0UM/xsJIjK/ntLb1XL09+ClM9i/zfjVLWKBgfAAAAABJRU5ErkJggg=="><h4 class="modal-title">CyberChef - The Cyber Swiss Army Knife</h4></div><div class="modal-body"><img class="about-img-left" src="data:image/png;base64,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"><p class="subtext">Compile time: 14/12/2016 16:37:29 UTC</p><p>© Crown Copyright 2016.</p><p>Licenced under the Apache Licence, Version 2.0.</p><br><br><div><ul class="nav nav-tabs" role="tablist"><li role="presentation" class="active"><a href="#faqs" aria-controls="profile" role="tab" data-toggle="tab"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADEklEQVR4XnVTbUhTXxh/dnd3765oGoiYqWyp/RWZ6CwzK1n1Iah98IOiVEK1XiANdERdEcs+REsse38T//z/joXgh0xRG2ksKcyWrjXxJVea6Jxm2kyXgtvpnOtWRnQuP845z3l+z/k9z3OPCCEEq4d8ny4eT/kYKgyFz2zDMGHoh5v5gdUEahWRwigJDGC6C3Mz+Jrz2Rlmw6kgArIuzMvg8VkP9uGJ728BfIaObcmystZbmoCo8GCqzmiFrOJaAWQdHR5CPbmt4banyM4RX8JZreDszk0xysrifdyZay3wb8MbyFcrofnmYaivOAC70mJB32yB8vvtUKlVczuU8lTCEZiyvZfiFTlXF8anXCiPNyC8R4W6BuTxeFHfx0k0O+dGZLS/tqP0Q/dQweUm5Pg8hxQ5V9yESxTka7I2cy8sw/Dq3SiQMeyYhSxtLRwsq4eTukbBlqmUw5ogDgY+TYN1yAknsreyhEuTaif/EyEytFgEMsvQMOp04VkCUlYC+Eywf/nqBomExnYRWIYmQZUSTYkpSkUUKBSx4WB9P4EdxMBgIsuuIDUhEor2ZwBp9YPHPcBJWeA4FhzT85AgDwMvQgr6ZzsoEUhoGhiJAEFB6ZFMYGgx/N9ihYHRWQjgGOxHAccyICKfrws2m90Jyvj1RAGBECA4SAojEy4w9zugwzqGb2cwWCHIxuhQsI/NAM7BRhSY3g460nenxVJdfeNA02IhVxG+qbN3TFiLxSQ1GiskawqS4sKg94PTiztlIgH0NQ3mYuOdo1xaYhT0j0wDjZ1CAjkoyt0CZBTdfAZiX3pxkWshNiIEjpfXLSGE9EKBcD95zYV69+TMN6StakVqrQEdu9SE/OP03eeIr36J/jP2I9fCEirQNX7foNbxhOsvYkV7l11dKjKmXizYI7Xap4BAe6MNpDj3RFkoJMWEwoZ1wVB+r23xaedgt9eLKgiRKPCroDBKknKq3NWPzF5z3zhyzS+iOXwj/nHQQ6PNk5J33R2jvswTXz/vr88ZF0uFz8hzJkW0LS97THj/x3P+AURXV1KnezlSAAAAAElFTkSuQmCC"> FAQs </a></li><li role="presentation"><a href="#stats" aria-controls="messages" role="tab" data-toggle="tab"><img src="data:image/png;base64,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"> Stats </a></li><li role="presentation"><a href="#about" aria-controls="messages" role="tab" data-toggle="tab"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVR4Xp2TPUsDQRCG35VUitiKpYi2IvgbTGFlKUFMaWNnIxap7SxTqShXBrE6wUpLixA/uouVSFrFCxJv75XZCzvsNV587pgblntmZ+7DQNg+3cDiUoxJeE3qiJo3hXx0z7j3xqrIveI4tyRPXgSHd/wv4tZgLb4tEWIA0l2KQHfCaO6Wc4uahPSHCKEX5TC6HmY2Qw1Zhs8RfXF4RUXdXGUXrYUb4WOUa/PlDlxmghUj1egLZLh9esf6yjwE3TsXsdyPRF9YujfuXc7Oxa2tVawtLyAcIsRAn2E3GaDV6UK/xOmZWBWDMpcHmz5/7A9w3HkAhsM6/kSKNyO2n1O2X1LuX/eJ3YhuvTI7FzzpfXHvKqHkKlelcVbIjXOVdVhUGYMoGP+ByhQqonLIL4atOuwJTS7oAAAAAElFTkSuQmCC"> About </a></li></ul><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="faqs"><br><blockquote><a data-toggle="collapse" data-target="#faq-examples">What sort of things can I do with CyberChef?</a></blockquote><div class="collapse" id="faq-examples"><p>There are well over 100 operations in CyberChef allowing you to carry simple and complex tasks easily. Here are some examples:</p><ul><li><a href="?recipe=%5B%7B%22op%22%3A%22From%20Base64%22%2C%22args%22%3A%5B%22A-Za-z0-9%2B%2F%3D%22%2Ctrue%5D%7D%5D&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1">Decode a Base64-encoded string</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Translate%20DateTime%20Format%22%2C%22args%22%3A%5B%22Standard%20date%20and%20time%22%2C%22DD%2FMM%2FYYYY%20HH%3Amm%3Ass%22%2C%22UTC%22%2C%22dddd%20Do%20MMMM%20YYYY%20HH%3Amm%3Ass%20Z%20z%22%2C%22Australia%2FQueensland%22%5D%7D%5D&input=MTUvMDYvMjAxNSAyMDo0NTowMA">Convert a date and time to a different time zone</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Parse%20IPv6%20address%22%2C%22args%22%3A%5B%5D%7D%5D&input=MjAwMTowMDAwOjQxMzY6ZTM3ODo4MDAwOjYzYmY6M2ZmZjpmZGQy">Parse a Teredo IPv6 address</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22From%20Hexdump%22%2C%22args%22%3A%5B%5D%7D%2C%7B%22op%22%3A%22Gunzip%22%2C%22args%22%3A%5B%5D%7D%5D&input=MDAwMDAwMDAgIDFmIDhiIDA4IDAwIDEyIGJjIGYzIDU3IDAwIGZmIDBkIGM3IGMxIDA5IDAwIDIwICB8Li4uLi6881cu%2Fy7HwS4uIHwKMDAwMDAwMTAgIDA4IDA1IGQwIDU1IGZlIDA0IDJkIGQzIDA0IDFmIGNhIDhjIDQ0IDIxIDViIGZmICB8Li7QVf4uLdMuLsouRCFb%2F3wKMDAwMDAwMjAgIDYwIGM3IGQ3IDAzIDE2IGJlIDQwIDFmIDc4IDRhIDNmIDA5IDg5IDBiIDlhIDdkICB8YMfXLi6%2BQC54Sj8uLi4ufXwKMDAwMDAwMzAgIDRlIGM4IDRlIDZkIDA1IDFlIDAxIDhiIDRjIDI0IDAwIDAwIDAwICAgICAgICAgICB8TshObS4uLi5MJC4uLnw">Convert data from a hexdump, then decompress</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Fork%22%2C%22args%22%3A%5B%22%5C%5Cn%22%2C%22%5C%5Cn%22%5D%7D%2C%7B%22op%22%3A%22From%20UNIX%20Timestamp%22%2C%22args%22%3A%5B%22Seconds%20(s)%22%5D%7D%5D&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA">Display multiple timestamps as full dates</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Fork%22%2C%22args%22%3A%5B%22%5C%5Cn%22%2C%22%5C%5Cn%22%5D%7D%2C%7B%22op%22%3A%22Conditional%20Jump%22%2C%22args%22%3A%5B%221%22%2C%222%22%2C%2210%22%5D%7D%2C%7B%22op%22%3A%22To%20Hex%22%2C%22args%22%3A%5B%22Space%22%5D%7D%2C%7B%22op%22%3A%22Return%22%2C%22args%22%3A%5B%5D%7D%2C%7B%22op%22%3A%22To%20Base64%22%2C%22args%22%3A%5B%22A-Za-z0-9%2B%2F%3D%22%5D%7D%5D&input=U29tZSBkYXRhIHdpdGggYSAxIGluIGl0ClNvbWUgZGF0YSB3aXRoIGEgMiBpbiBpdA">Carry out different operations on data of different types</a></li></ul></div><blockquote><a data-toggle="collapse" data-target="#faq-load-files">Can I load input directly from files?</a></blockquote><div class="collapse" id="faq-load-files"><p>Yes! Just drag your file over the input box and drop it. The contents of the file will be converted into hexadecimal and the 'From Hex' operation will be added to the beginning of the recipe (if it's not already there). This is so that special characters like carriage returns aren't removed by your browser.</p><p>Please note that loading large files is likely to cause a crash. There's not a lot that can be done about this - browsers just aren't very good at handling and displaying large amounts of data.</p></div><blockquote><a data-toggle="collapse" data-target="#faq-fork">How do I run operation X over multiple inputs at once?</a></blockquote><div class="collapse" id="faq-fork"><p>Maybe you have 10 timestamps that you want to parse or 16 encoded strings that all have the same key.</p><p>The 'Fork' operation (found in the 'Flow control' category) splits up the input line by line and runs all subsequent operations on each line separately. Each output is then displayed on a separate line. These delimiters can be changed, so if your inputs are separated by commas, you can change the split delimiter to a comma instead.</p><p><a href='?recipe=%5B%7B"op"%3A"Fork"%2C"args"%3A%5B"%5C%5Cn"%2C"%5C%5Cn"%5D%7D%2C%7B"op"%3A"From%20UNIX%20Timestamp"%2C"args"%3A%5B"Seconds%20(s)"%5D%7D%5D&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA%3D%3D'>Click here</a> for an example.</p></div></div><div role="tabpanel" class="tab-pane" id="stats"><br><p>If you're a nerd like me, you might find statistics really fun! Here's some about the CyberChef code base:</p><br><pre>203 source files<br>104410 lines<br>4.0M size<br><br>136 JavaScript source files<br>95314 lines<br>3.5M size<br><br>78 third party JavaScript source files<br>76377 lines<br>2.7M size<br><br>58 first party JavaScript source files<br>18937 lines<br>728K size<br><br>3.2M uncompressed JavaScript size<br> compressed JavaScript size<br><br>15 categories<br>155 operations<br></pre></div><div role="tabpanel" class="tab-pane" id="about" style="padding: 20px"><h4>What</h4><p>A simple, intuitive web app for analysing and decoding data without having to deal with complex tools or programming languages. CyberChef encourages both technical and non-technical people to explore data formats, encryption and compression.</p><h4>Why</h4><p>Digital data comes in all shapes, sizes and formats in the modern world – CyberChef helps to make sense of this data all on one easy-to-use platform.</p><h4>How</h4><p>The interface is designed with simplicity at its heart. Complex techniques are now as trivial as drag-and-drop. Simple functions can be combined to build up a "recipe", potentially resulting in complex analysis, which can be shared with other users and used with their input.</p><p>For those comfortable writing code, CyberChef is a quick and efficient way to prototype solutions to a problem which can then be scripted once proven to work.</p><h4>Who</h4><p>It is expected that CyberChef will be useful for cybersecurity and antivirus companies. It should also appeal to the academic world and any individuals or companies involved in the analysis of digital data, be that software developers, analysts, mathematicians or casual puzzle solvers.</p><h4>Aim</h4><p>It is hoped that by releasing CyberChef through <a href="https://github.com/gchq/cyberchef">GitHub</a>, contributions can be added which can be rolled out into future versions of the tool.</p><br><p>There are around 150 useful operations in CyberChef for anyone working on anything vaguely Internet-related, whether you just want to convert a timestamp to a different format, decompress gzipped data, create a SHA3 hash, or parse an X.509 certificate to find out who issued it.</p><p>It’s the Cyber Swiss Army Knife.</p></div></div></div></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div><div class="modal" id="confirm-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><h4 class="modal-title" id="confirm-title"></h4></div><div class="modal-body" id="confirm-body"></div><div class="modal-footer"><button type="button" class="btn btn-success" id="confirm-yes"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAClElEQVR42oRTTUhUURQ+72feezO+O68Zp0YGmzAtkgnNHyayVdAiKIgInEqlXBQuIojahZvSIGjTpiApaKHookVtSsPCXFgMhJGRC00pxs2QZjr6mvfuu537fE6j9HPge+/ce8/3nXPujwCb7PYRCWqiQvFUg8MgRRmI1GED6KfXF4732iC37RPdAae01Kz5jBXIYXRTh67e61jKzi2NPriusCIBbnJrreiSRfwICAlh2oX11vKGw/WMCsQfjAi2DZLjievqWpUy/N0uSZqeqDhwLMkH0+nhiZ8UxrlAVBdA9Zjyv8hNF7pPCyAT2zKXJ8eGJ/OUDe4MixsC/yTQQYKksr69+5QgKmTxy8THZ30Pp4iQswxN6MT1717cC8RQsUAMcULUSHXdua42xqQgoxRKdzcmzt5sSmzO8rLrjLQu0Mh3Gksm0epk5fbk0f3UBgKwtpOri4tQEgpBbmGhQP4xN5WxHaBuCxZlLQ3NV5r1sopY3jRhJWcCxe2mmN1BqJoGGiHuXP+ty4/XRfAMnroCNgVSsjUey2Em27LAyuc3gBgGhHDer+vQfqPn5PJ8dnm059qjpTyMugJ5B3wUAxwOzOICMzPHcW8U9/n67KcPC4N9d9Ne9kIlIrag8ACbl11EZkjmd4b7XDxetSeUuth5cJsuZPyK8CqgeBfJtIBlv05/C0ZipTYP9lCoAP88wcjzJ5n3b0cySOufwYOcwT09zwVyFusZHLivl8V3lRuRaFBRA6q+JaL71IAfRNEnovG29tYlSz+Pv3535w0bmvl9IO4zkGrLoMJQIeGToGqHAeGoDiFNhrAkgoEBMkLHdlZHZqF3aBrGkJNFzGOb1H1HCD8igPDB/81CrPArggLOLwEGAF0uM152x05WAAAAAElFTkSuQmCC"> Yes</button> <button type="button" class="btn btn-danger" id="confirm-no" data-dismiss="modal"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVR42mxTTUhUURQ+7290xhl1ppwoiQLThQhpuKgsCoUCgxYaYS0kaVG5aRFtWkRtWghBLgoCKSeRCglcZLrI0k0/lqL2MzA6DjkMwTgzr2bG9+bNe+/ezn2+mYy88HHeve+e73z3u/dwb3tEKAyOgyYMnYgShIowEVmEzEAppDD+ZCAAmdZHOogJhW4kI7wu7uyh3nu9Tp+/nLJBCDHzqqKlk79+R0NrWiaZza7F4onQ7DJuH0HMicm/BEfwu9Y5NRE7ePp8+bosM04B4QHe5anY07ibFwQQJAl2NoZj88/6BIvA49jQ7nVCR8ulvhMub5XHNAxYT6dBy+XASmIQRSuyudu/t9ogtIwV5pmClEKPhZO09smd69ORxbkk0XVYz2ZBTiQgLcuQRTIF5zlVhbymgZHPg07AMk8sc3BQ6eS6jvbcOu72VbnZookEBFUAuoY+ADFNa054Hoj93zBBsghklbYh6iJ3b86whXNXb7dWeL1WInOHbibByI6Qii7FddPiAnGHh+tu6bzSsK26xl+4TksBbi4qQLDbiC5OfYtHvkd1Tcmgw48tAkUHb86U/LHVVdg8DHYEWwEmqx/Hh6ZNPfcOE4ckAX7w3MY+UdXpi4nhfnchEYsJBl/qPnyy84CGhvkqy3Pvx59+MvLqc6fEBQTunzogEgoBk0AACzFn9wlS6eCZC70NHI8m4zMaGbwf1DR12FPCBWCLYV0FM0u3LIGuhqbmXaJU4jDwvkaHHsyj7AFcH1jGR/w6TNmTgfoqgI56rviCocbHweVma/6y4+K1NkF0lH75MBkMLsyMhpJwY3KFQkT+vzrzh2cf4RSFh5+xgwTQdCWjoElq5OtM8M0K9A/Mbp1cbED7GNsR/lN1/P72WmhnP14twdhYiCzYXcmg2DHPvC4oYARMhQtRZjdPUaG9UWe3akfdbnFaIPgjwAD+Q3HEWkHCzAAAAABJRU5ErkJggg=="> No</button></div></div></div></div><script type="application/javascript">/** + }</script><noscript>JavaScript is not enabled. Good luck.</noscript></span><a href="#" id="support" class="banner-right" data-toggle="modal" data-target="#support-modal">About / Support<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAE1UlEQVR4XoWVC0xT1x/Hv729t7e3LSoqWIRNW6uoARVH5mPGzfcmRvbSacISI5n42Mss25jROd0mOjXO7C9/3XSZdvjIlsxFYCrETWe34nQpD4GIIKgDIaAilpZH+9svJ9BUg/O0n9w2J+fz+55f77nVEREeN2wpWw0AEph7TPW1vMzHLpL/QzYJwGpmKjOM8TMSGJ6rAHCW2cFF6vsSiMR9pMtiMhIcVvMz44eBr0gcaRXzZVcbUXq1AS5PbRd/9gFYxfLDD4ulh6RjAFRqqpzxyco55q83vIwnrAPgKqnD29tP4N0deSgquwl73GAc2LhI2bRqbj9NVfbxulzG1KeYpSqA/LH2IcPz/5du5gVIXevE9kO/o8BdjVstXty67UXhXzXYffRPvP7xjxgcacEve5ZbEh0xswHsflTirZpRic5e96Jup/McPjvwK28/BlvemofjO9Nw7ps3ULBnGQ5uegVL5o1DEMCOHBcO5Rfjq8xUlYMs5XAzQjYiwvD5WZMYrzP3Eh095aHExV9SctoeOna6hB41jhWWUcraHHr+HSeddlfR4ZMesqVkNbLHws5Q4jcnxMeYZj7twC5OoaqKgACccl/F+r1nkLEtF0cKLocCzUq2QdNUaEYDvs31YO7kkUgaHWsGkBLeiqnTkmzcyyp0BwgGRYZqUOA8WYq9P13ClZt3cN8XgKv0Zkgs6yWYNIMQB0iHC+X1mJ48wgRgMnruSSOAJ8dxP8uvNUFR9EJsMMhQZL0oYFQNQpK+YEJIXFLTzFIVRhbzPGob7iLRYdVJkm56b+LxjI/vU1TWNkNmmcJigSgg2oKM1CQkjRoipNcb7yHPXSvSaizledQ1tmHM8CgQ0Zjek3efkXQ6HSTenqzXM5JIK8TMwmkOJI8WB0QInIVXoHBBjgdOCPBbkWWwA/zy94orGLm8pgkJ9iH4g/uoZzEDUYQLjHdEo3ecKa7nggoknuvq6hbFgkHCiLhIXLnezMV0HtEKPo5BAJXl1bcw1h4NTsBIAr2kEwWyj5dgs/MCvvjBg7vt3dA0g+gt70bsTC9LsA/tDw4XDASC58IPyNnzxXWB556ywWiQRQodw1sTpM0ZjRUpCVg2Jx6REUaYNFUIuXXghNB4TaI9CmeKqvwA3OHibe7iOl9R2Q2kp04UYhIQiAjRkSZYB5oQPUADKAifvxPd3QFuQZC/EhZMseO8p47+rvynHMCpkLjn0bdm4/9Pt09OiMPE+BixKBggcQUhNDo6u+HzdcDf0YVO7nF8XH/YrBFYtzuvnduwOPSsJqIQfCQLlmQe7mhobqM8VxUt//wEpW/NpzW7Cum97LP00X4XbfjOTRsPFtGn31+goooGarrjpUUf5Hj5PKwOd0kIG0R4qaj0+pF5q/d7iYLIWjUDrz47CuPsg2BW9TAZJIziH2nmhFisWZiI5tttNHPFPu/Fyzfer8n9MBsPyugBAFisU1a+Zpu/pSVt/VHf/uMXg+7SG9TS2i7g5zEd+PliYGlmjt/+wuby/o4ZswHEMpYwT/g/iLgLIgEMZAYp5qih/WzTZhksUQlqxOB4yOYoHQLBgL+1ydfaUNXZ2lDRWv2bC6AWAHcYvqKefb4+/5pYLgPQGBMT0UM/xsJIjK/ntLb1XL09+ClM9i/zfjVLWKBgfAAAAABJRU5ErkJggg=="></a><a href="#" id="options" class="banner-right">Options<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAD4UlEQVR4XpWTbWxTVRzGn9vhWlnZG1NYlwFLMGCUYfEt2dqwuDBfljGCUZkjgCgZyBeWBQ1ki1TmuvkFkw3JNAw1BhwmOslmtCwZmtDooCs6MCM4m6bQjtEVUtrStds9/s9J7/1wa5f4JE/+Pb25vzzPPedI0OgDEoAjEML75DGbzTaM/ykd0nVk/7v7cPjwITQ0bOsCcL6lpaUWgISFJXHeQmDT8U9PgMkySkwmDofRaBwEwDLBn9nzdfGHJ87JNL/SgiX6Ak+BRLUDHG7v7MJs/AHKysq0qbRQ/p6/bW8dTHlYTuthBSy1trbaALgJflSBWywWSFJaIRnpcl/6rBEulwtvVeZUm1caqkFaRH4oKyurbd/ePdBlZR8E0FpeXo61a9eAMZngEhKz0d95I2pzJT0tMDk5CZ/Ph49+jIJkUqv19vaO12+ue3Lx4oeRTCQIyIQV5eYXoKPDLl7ibVQo4HYefx0V+88iJfPlz7dfUcGUpthgMPz1Uk11/uNPrOMp1b0K37sLAc/LR4e9U8CH/I8t49DR3jfnnms6zVtvIuB/H0leta+v7zJNpnhoaCgxOxtnwekpdud2gMViUXbqVB+jtCwej4spkqeLomUQbwHASu7nZzo0E8TVGzfx8YAX3x+tRVXzgFpdA1DqqsrYhMxODoyKhB6PhzW0fcvOnDnN+DMNULPIcOiDt3x+ZV1UUooLx7ZgV6cDW8wGvLF5E9rb25UNnQYwr7nSmaGv1axB+4GXcWD786C1qP/qs3koLcrBVMDP24Dkp7kOGukWgu6ot0COBLEkPx/V5lwBnxj7FVarFQZ9Nmbu3Fbgbr75GnA69J2t67F760Y4fj6PX1zXAd0izM/NqWeVqmPpI8v4scwI12mhh962oLG2Amd/GMalax5UULqJib+RTMTBFQ6Hg4lE4mkOLyx6FCQVrtfrVbh6NVe9YmdfDv7GQvdjzNbdz3a9d4yd/OlPdvCT71hjcxfjz1fXNK8GkEM2NjU1VRKEybLMbvq8bOfOHeI3/09NTEndzbRB9VXr0X/uAjw+P6wvVIukfu8NXLwuIzk9Zo4FvbkACslLx8fHk+RantxEJ6anp4e3gZD4eCmtXFWKeZlh+pYnDRr5x1EVnBhJpoIU8Ol0OucABCKRyLbu7u5vQqEQKPFoMpm0A5BU8PCIEzNhMza+WIc/rqlQxLwjlQQNavZEVu6Aw+FwkVcAiJLjZLHLAly4vHjD4EX/GEhu8oNYRED1umiVXFByD4ACllLmYqm1TJ4XQGHxm6k3b8PuL8yhqQCHCxmXZK+42t8ypbn3UvpUn8spM+5/AT4U+4f4kq1OAAAAAElFTkSuQmCC"></a></div><div id="wrapper"><div id="operations" class="split split-horizontal no-select"><div class="title no-select">Operations</div><input type="search" class="form-control" id="search" placeholder="Search..." autocomplete="off"><ul class="op_list" id="search-results"></ul><div class="panel-group no-select" id="categories"></div></div><div id="recipe" class="split split-horizontal no-select"><div class="title no-select">Recipe</div><ul id="rec_list" class="no-select"></ul><div id="controls" class="no-select"><div id="operational-controls"><div id="bake-group"><button type="button" class="btn btn-success btn-lg" id="bake"><img src="data:image/png;base64,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"> Bake!</button><label class="btn btn-success btn-lg" id="auto-bake-label"><input type="checkbox" checked="checked" id="auto-bake"><div>Auto Bake</div></label></div><div class="btn-group" style="padding-top: 10px"><button type="button" class="btn btn-default" id="step"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACBklEQVR4Xo2STWsTQRjHn5ndnc2+JCalYiFRLPiCSqGHxmAPHgpe9CN48OQbhV68ePYQFTx7EIQituIH8JaDJw9K7gURsWkRSS5m06yZ3ez4JzHDTi72Dw9DNr/n9+wsD1NK0XGyfOt5k0g9Yoy10XPn+4fHXwnhM6DxYLd59f7O6NrDd5/q93bOm83PNi3b2qqcWhJesdQgxlp4FmgBGjdd19laWz0natXFBue8BUmgDYw9KS4sBpbtkF8sccu2K/BuaAEDcPni6cDzXDpTO8l9T2gAk5Zw+LbjaJ9wCz6O9YkAkyZA4Bc0UC6HPmMApqmjeUS52EJYjHH9BvUwKBhAKfQsZGMmcIQbzglIqWxFC06UAgMohh6NxwCmiVFZXqAyRcRYPBPESikDQDP+R+M0e6mUw7wgTSQxYu2ZYG9w9McAoqOYOOdtLUgTyxBIKTHzIyE2ARgORwYQRbFM0zGASb6pLPN7h508IlCfCWFrd9+Kf/fkZObGl1e3W/SfHGuVsQsHOKo5IMEqi9kVsIm7BxAZAKYLPYWx/bCyUHU9nxI5on6v+5MQvYkWZ/uXLtTo+voVWl1ZJsviAHQI8u046seJlDTs96Uiem8I0nG23TnsxdEgph+drkQDACNv0iR58bv7a4A3eA1jM28nfMgCVvoJKsJ1XuJ3GRKar7M3n/L5Z38BuYjjuKOkEZUAAAAASUVORK5CYII="> Step through</button> <button type="button" class="btn btn-default" id="clr-breaks"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkpJREFUeNp0kk+IElEcx39vFBc9+OfQRTAwzFt4CaYOKStj6MoeculStzoIQSB4kCVckmDx4iGCXWYJIqjoVOzO1l4qT1F7WfBWHvxzDPyTB3XUmXn93suRybUffHmP997n9/cRsFgwGARJkiAcDsPlwgEIeEZQAhCRAkgAlOD6SQP4rgMFDWVnYCAQgFgsBqFQCBwOByzZNQOotPHx1RNCCCipu6bfb+zSnslkeOQVILPrBkAirbws9btdTEWAzZPXpfepOzaeGMBXwe/3w3+MwTc3Dl+UeghTiskbBvR6Pbh18mZHB0jjmxvCKhIfR37s3r+Sevf8ca/T4TBF2HTSODuDxP7uNjrZFFbBk8lEzOVyspa4ykGYw2zfbTb/7ilvok1YhlVVFfP5vDydTkHXdXDdlhZOOnPY4/HA0YPtp3h6LFjh8XgsFgoFGTPgsKm1zDr8ajTQh8Fh5eGjZzjGI8yjKlgjF4tFGdd/YKYmRja24hw+zu3sYe2HiH3hYzQjl8tleTQanWtou93G6Qngdrth6+1+9h6hTULJZ/PeziJXKhV5OByeg1ut1gJOp9NZTdNOcQ419ot+ggp1qoLdBFmqVmNpm3A8Huewy+Wq1RH8QH9zmBlJJpMRdCIqiiIPBgN+2MCGsW/r8/kgGo1m0fmpzWarseayHlmNeL1eFiWC0cRqtSr3+/3FpSiKHMZtjU1glbFyfKgLTqfzEka9OJvNeDnzz1JnCaFmqOl8ZdJY1SiDOXCiXKg1NtG5DIt0y6ov3dE/AgwAENFWYYLj4mYAAAAASUVORK5CYII="> Clear breakpoints</button></div></div><div class="btn-group-vertical" id="extra-controls"><button type="button" class="btn btn-default" id="save"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABn0lEQVR4XpWTMasTQRDHf7N3efcwKqgh8CJEAg9sBEGEB6KV4gewC9g9RD+DYmelnSh+AdFCTGHtEwsVEYvXqkUgFjYm3R1JbmdHsoQjCQrnD4b/sDvzZ2ZhZe/Oy9eqeoMIBrCZ/+vOOfdCLt56Xt7fv5ruvX8MIWAhENWirpxplWPG2+v3ePLqEymABuP3s4eYKnUJ1+5GTQFRVXYePI3OdSm9VgZ4NU7evM3/oG++rRoEVJXRaEQder3e2gSiGkiSJF7URX2oDFBVAIbDIXXodrtrE1Au3epPwMYKPrD/6APbky8kxU/+igAI8+0z5M1z7J4+vvqICvMiNl+5fIksy2g0GlU455jNZuR5zsHBO/KtXbxvrq6ghBBwLqHVajEYDADo9/tMp1OKolhoDMTFWr9cwQES1OKhCDSbTZYwHo+ZTCYLrXIzw4JSlpUBzEtP6sAgFi3ZbI5qECcovQfAOZHPhz9+TXdOHQGzWNTpdGi325vNMTDjxLGtaoLFbzwqwsfM+bPn06+ZSIphYEQF1v6IYBz6C7lKJqr2/Q9KnAkBTHYbVAAAAABJRU5ErkJggg=="> Save recipe</button> <button type="button" class="btn btn-default" id="load"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABoUlEQVR42qRTzy8DQRT+ZnZaISV+hsRF/AEuIiFx8D84uSJxdJTg4lBxJz1x5CISRy7iJuJSFaTEpvWjqrKpUtut7s56sypaqWSlL/n2fZP3vjczb/Yx13VRj4mTFVYzwBkGyI3XCO1IF7HvfQVhitD3O4uSMDgnF3OFArKmiWm9A4ZhYv00xCk8RNhQeewojPDw7O48HAeuK+HKSjhfXsXKnDGG6ObMMmkXvBM4EpoSy49ilVBWiD1e9poWgKchC9CXq0X1zn+Lv0+iNEHh9QnCpoW0bRjxQxTfngFVjDr0BUlr8vKHc87VzqOkXaJDJAQVFVYuDZuSekYmfD1d79jk8HtG777Ynl8VNl0rbzxAa2qDlUnDz3/BGMdz/PjesnGuCohsSkdX/yBsaqQf04INSN+cpU0Ll6IkIfK5V/SwgO8CTsl6SyX1J43jXlD/AlpjO2zLpE5LXwWMVPwxV8A1UVcQaQk1d9KTcHCN+7g/w51+9XJ2i9jaHj1jNIHk61bk4D8DpGdwHdmHTrRVTVJQkfJc+DWHYBGKrN5x/hRgAA5SEp8dxkkEAAAAAElFTkSuQmCC"> Load recipe</button> <button type="button" class="btn btn-default" id="clr-recipe"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAChUlEQVR4XpWRbUhTURzGn3M2020OdDYzfAnJBAusjISIisgPSWBfoz4I5YcKJArB+hCUfTDwLQiEXuY0CKIXqSjEahShIGKSa9Immjqmlobp8t677e7cf4eBYCKIP3gOFy7P78B52NXjOGg2wU0EizBQVd9F3dgA3MTxdGeedcee7bYc+d15rZyVbUggk5Jq4chMS0JxvtUqJa0NFxl3NbI6mYx1BQahzjehKbogZDk2wZLCstJyMADgukzmugIi3FUioqPHF1YWozpyS2EvKCrZ43Tm/gWwGetBRInUV+Hmw9swvniO0tyPWnp5YYvWXopQewvzuhpR+7ABTiLC6iQO+fN0WxNT/X0n6ffoeeqr3kfPsu30/dVZmh29QgOeY9qjOxbV3czcUpS9UsDkAflYlZyjMTeryIbHZBHzCg63lyHZwQFmAUzp0OM2DPs8unfokwDpz4WAC8DnhEACKUlOuoevqXkZOyqeXDZxPiOLWwHxS2YKRjyMiJGPSMyBUMhL42Ne5c/8lJYQLOO6wSoL9u5uPXTkjBX6MMA4YCwCYhaqMo8lGUWNyN0PwOB58HTfnzVjJal4PxUKcsNgYPoYiHTosQgi0SVo6iJUdQFEBG62IzgxEAejj/8JztXQdEcLHwsGv+1Ks1kRU72I61FEoyoMIw4JrOnlUDWOgH8oKgRqOFYRF3RpcOCDpqMQihKBpoUTZW52wO48hbBipZ7PL8JCxE/IC0NYa1t3M3p735bGZvyVNN5fSFO+CpoJVFPvmxK9rQnTcsrC5Q7HGgiBioC//+fc3ILBLfsxORnU33U90EYCg52GgWJ588hyIbHCWshZtzGGQRkC8FoWb8niOFbxD8t+cvzQy+0mAAAAAElFTkSuQmCC"> Clear recipe</button></div></div></div><div class="split split-horizontal" id="IO"><div id="input" class="split no-select"><div class="title no-select">Input<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="clr-io"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACEElEQVR4XqWQTUtUURzGf/d9MrMXE02nEckEUwgc38B0+gC1sZDoZRW5bBstKmhX7azdRLixKBzbRRh9g1QoJg3HHLMcQQgidOze89KdCxoyEEk/eHgO53Cec/4P/4sBMHSlaVApM8OuUDfGxxbv2+cvHRtqbe17fvniTXZDZmLkHkxO20B0OZ0eZWX5C6ZpYVnmXz11up9zg9d5NzX5xiQCPrzP4rpuKA/P21KMWKykPZGHivYLKwW2sAHm52cYefiA3TA99XY7IP1k9Na1VKqbwmoOpTVKaaTQCFFyhe8rgkAigtIZCCmRobTWaXN8bGEYoLP7OH0DcfpTRyN1JGvp6W1mINVFR1c9J9oP09xykERTFcnOJACZp5+HbcpBa6g+FCfRcBWA9fWPZD+9Zr3iJ8WiRgmLLczthfFns77mLKYVI5d/zMbGbNS8Bhy7VKZHTfX+nSUCGFhYpottVxDzEsTr2pjNPWJhaRLwqKtpY2l5JprdjXnlP3CdfThOFYZhooHCWgYDg8b4mSi84UhvVLD/S2AZ5SMQXdQSpRSraxMcqGwPv3qKyr21tLZcIDs3gRABSksCJctHEEpuB/j+D/LfXhH4EsNwmJt/Gb4sUVKgVOhC7AjwAPK570Fj00lHao0KFEKFEorN4mrYRw9SqlAa35fkF78GgAO4NuCHc91+9mLsLv+Os1kM7gDiN3Yu6Ewf4qtvAAAAAElFTkSuQmCC"> Clear I/O</button> <button type="button" class="btn btn-default btn-sm" id="reset-layout"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABFUlEQVR42pxTW26DMBDchQ2iQj1AlDP1Bv3hp/7qDZDgGv3nahEHqBBv0h0rlkyClTQjrTDrnfHuGLiqqg8iOtJraKgoCnO5QVmWX5cnAK4sy0K6tgEwM83zvMntAXXgyjRNvK7rRkBz5OdCAuCKnmYFEEAURTQMA/m5PaAOXHGnoR0HJ+Dn9gCujOPIfjFa6/veto91CNgH13oA8q1Anufm0R2maXq46wCzdV1HdV3/PPLAGPMtOu9GII5j2wGuUsWDAkmSwCu+6wDrZ0zEvvUAKr4HeELAz+3hWsfSti3DUTfv1V3yc6FbAFeaphEYgpmcObhfPxcyEVzOsuxTX06v/Ira4RlfypvGu4b8kz9r/P4JMAAbMThCVdlgzQAAAABJRU5ErkJggg=="> Reset layout</button></div><div class="io-info" id="input-info"></div><div class="io-info" id="input-selection-info"></div></div><div class="textarea-wrapper no-select"><div id="input-highlighter" class="no-select"></div><textarea id="input-text"></textarea></div></div><div id="output" class="split"><div class="title no-select">Output<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="save-to-file"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACSUlEQVR4Xp2RUUhTURjH/7ubbZqTO4ezJtaiXsxXFzPByodNIYnCwIxEY2C1kiQhQ2P5YAg1EB/EKDDoJVhRD1FvUdBDZvgSrYdtmcPCWN1LazO3u3u/7jkM1iCD/MHH//9x/ufj8B3D+YnLY8tpp5CUcj8A1ANoB9BYJlDWaln7XmXO3b0/eX0UGyBEknWJmvq96PB6pSsDJw/NjvgbQ8P96D1x3LzD6dqWXKsaORfsqcMGGALByRkllTybJwGrqohf5hoYTWXo8e3Hbmc1ph6+grqyCNcWCX9hHIGhQUp8iRMjvhyh+UicBm89Jc/ADQovJGj62Tvqunqb3i99pj9Jp9M0eDFAgtmkoq7WBVmWIVbWwlFpQDnlwFiMrULNK/gq/cSH+EdIkgxJZiWBQGCY9HOQRlA1DZ2jcygFmF+SoeRV3Ay/5sV4MtEPEDgCE400aKqG6TPNYPR1H0Wzpwnr6xlstwpo8bjR29UJxqm2PTxLVHgBAN7YbCIUxYWQX8GlO4/4kOinFTA8DTsRmnuAngO7cKTFjYqtFVBVtTiAoS8FDoeD+5AffMiwvxvf0llM3XvMLx9r9bAMzxqNxuIATdOQyWSYZQFeMxfKMTQbRlZRcdrXgL7DXgiCgFQqxbNWqxUMA/sKd9M+EGvwfyy8fQOwAbFYjGLRqK7Rgo8xz5T3Ud1HdQWg99zzHLvLd2C32/Hi5XMQDPwVxF0pB1vbuFbrWRDPFXcgiiIslnL8C9EmcrWJNhQo/YV2Xwc2AV/iNQBBbI7x3779KBawdQsqAAAAAElFTkSuQmCC"> Save to file</button> <button type="button" class="btn btn-default btn-sm" id="switch"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABn0lEQVR4Xq1RTUgqURj9rmNJvEUt/Nm4CCSoNo6P3lYIJgghW7RoI7QQ6kkLW0m6aGeFi4gW/Sykohah1SJKDEVw0aJI+oVCCwJDEoegKHlPbKa5M+NFGphc9MHlHs4358w5Mwjqpt0xwwggIRO2h5j/HL4ZzVdxwNP/Pjc5hKkzgaMbMSBi/5iDPTgp/Epk8rA4NdyQCaqJx11MMXX5ZKpf/h3oBm8wolpHg8U+N1N6rXCmnk4jWWB8mmNhfdolJlGtEAonDVu7aUJyUBVBPHEMI4FNERt/j/K1U2+gFaIhDCzOkLTgOeARAkrDwfNLGf5YuyRX+U4fxhQJVKe5hYLb3CNkswWgdE2KvbaeqFaqQFv0Iv7/jxPsFf7qBpH9I4Xgg8MmPACSzHBfvdUt1mUvwogY3O/5kAjkB5bmfbCTvpN7kujQ6xwEcxtVWluNGtS+gc0zEQI7bYab6zwhMW7VUUVZ3CclUgxJQeP/Pxv0QjR+BSxbBsbewYZXNvRYLMRPEoGaCa6zsJ3h/cupN4yFwxCBIoFKEozJm39yPgGXVpapJ3PTqwAAAABJRU5ErkJggg=="> Move output to input</button> <button type="button" class="btn btn-default btn-sm" id="undo-switch" disabled="disabled"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB8ElEQVR4Xp2TX0hTYRjGn3P0OF0UblrMdWeYKPRPKLsIrCtBEIJdC11Fu+imi5FhNyosupDuRFBrGSvCddFFYEa5tSgZFcQcrVnZdK4yd1hzG+14vrdzPvCwxgzn7+Y9N8/ve8/H82E7gndA2AEiSngxgUYjXKnger9kkaqw1unwoVIBD3e3KikeTl81fuO5pyE5e3v/+1nPwXsD12r2oAShNKykhlEtykCdA6BNqCoBYH9ezTxYlEQIzyLp7iG3slK8tlk/Scn4KLd0jPLxDkrH2iirfetz+e0B+hU9Rbmkk5bfnWP+qYYVLdNhbKCH+cnrgxDFKuP2GFOxqRSQz29gi2pTE7IbZiyGI6G5j/JZbZOc+DQqWed9Dkh7e6CjqgV8/fIB35YWkEjEUExGXoDV1o5as3S0q7Xez6WDbkWmfskKuFOdvS7EIyNoOXIFTM2gGJYZRz4nIfF5AodPXDKFX0+3cQE0hjQJuOQml+iEnoziH+oEtJ92Iv3dA1NtAYJAPIvSHvALXXeRPotaeXxmDOe1OZ9dvUxy3EX+qSb6b43LtdE/CfubaZF+J2+wwF0LF1T8FkIP97Efn/rYnPeQbDSxHGcuQCgjba63n2Ty2io0bqEyuKDvZ+zi44DX8gi74aXX5gzetzs1kW0r8Bc37O0Ylzj6XAAAAABJRU5ErkJggg=="> Undo</button></div><div class="io-info" id="output-info"></div><div class="io-info" id="output-selection-info"></div></div><div class="textarea-wrapper"><div id="output-highlighter" class="no-select"></div><div id="output-html"></div><textarea id="output-text" readonly="readonly"></textarea></div></div></div></div></div><div class="modal" id="save-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAACfklEQVR4XqVUv2tTURT+znsvoSQ1xRodKlQiuPhjkjobnAShf4Hg4o9Jx7q0IAgOIoh0KYhTdRacFEVdXAp2cXEQNFiUQKGpJCXJu+d6z3mXyzUVac2X93HOPXn3e1/OuS907vqzRWa+A4BQwCLC7tq/7yGAQXQrY+bF21eaVMpSzL28DzATrIXQamTJCcy6lgiJ8Pf4tfD1xSXs9HM8ebG2nAGghAjvP23i+OOHGAcfT9zEmcaUpKkKG2YYw5i5u4xxkHcKHYEIu0Xxk6cv38BYeLQGw7EwM9jRA4PBABsbG9gLGo1GyK3oxI6ZLayjB8rlsm7YL6xl5KbQSRxlocUxoebiVhAzx45hjEGr1dp3K9gyTP7H8Dh2jDRN/68VbNWUIPHC2ufxW8EwbOPhsRavPvgA6/UlkY9ePmrmI0LJhnpChDw3QZhy3wp3of9zHb2vb7EXTMyeR1Y/paJqhGjkHPvhsbXofXuH+fl51Go1lEolZFmm0edCPeftdhurq6uoTJ/0rqH72cTCuf6ZhCfX63UVWFlZgQcWFhbQ7/fR6/VUmIggYGM0972QVsTDM+JWxQWVSgXVahUxOp0Otre3hSEvoPvCfhO9IFQUHa0NwkmSIMKoqNI7ln3hdc7j45broebguNvtqsio8CgBEkPhVFkb/t2kK/j1vd3BzKEKCOo4OIsx6jZ8b71oaIU/bha4sP7lx5vTx44cOHp4Ep8BbG1t6aCazSaGw6HkIiRRBqc0fmjTtbKLqfaaLTAYqrAledLctadnCXhlganZzecpCH+DuopBILQOXgJEmLRSiAL3aNfNRAmAkuOEY9VxMoqCnmM34o7jwOkYRPgNkQH28tTW3akAAAAASUVORK5CYII="><h4 class="modal-title">Save recipe</h4></div><div class="modal-body"><div class="form-group"><label for="save-text">Save your recipe to local storage or copy the following string to load later</label><textarea class="form-control" id="save-text" rows="5"></textarea></div><div class="form-group"><label for="save-name">Recipe name</label><input type="text" class="form-control" id="save-name" placeholder="Recipe name"></div></div><div class="modal-footer" id="save-footer"><button type="button" class="btn btn-primary" id="save-button" data-dismiss="modal">Save</button> <button type="button" class="btn btn-default" data-dismiss="modal">Done</button></div><div class="modal-body"><div class="form-group" id="save-link-group"><label>Data link</label><div class="save-link-options"><input type="checkbox" id="save-link-recipe-checkbox" checked="checked"> Include recipe <input type="checkbox" id="save-link-input-checkbox" checked="checked"> Include input</div><a id="save-link" style="word-wrap: break-word"></a></div></div></div></div></div><div class="modal" id="load-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAClklEQVR42tSWz28NURTHP3dm3g8tUQtp/AgRErGxE01sJcLGgr2FhFXZCEG6sPAj3UmElT/Agtg0kS4kIiIWUqqqSvFSVfqDl6cz782Pe47FzJTXIPqaLtxkcu6dufd7zvmeH3eMqrKcw2GZx7Ir8J5cMhjzD5YYMIadwKE/bLmtyqAo/Mq6twhjdqpyeNu+3h5QWBC6t/1ncjMHmzzI5FFgy9/QRWHHwavn23d0E0QR3xsN/DDk2Ie1zM4GPDjg9oz2nXKAXcDN/Jx5fBGAS10n757FWlSVNLMUFYFsbRt1JIpRBETSfblURVVwnQJDd05cBs7NeyCSBdtaJIoywPQgKqika1QxngMCagARwIDAPGUOiPxMHNcFT1IunRTw9+CppQukLPguAiqIpgpKBTAGHCtgJVWwFPB8bgWn5KVZl1KkeT1kXNqEieGHRP4M5UKWc3lccr6h6V0+d1yXYoE9xuFClmQjnk1j4OYuhrUpSkXYtPtIS4W1ee/xLqDLnxp7//LW6d55BaiiogTVSUodG0h8HwkbLfYHh+mRR+8Sy2iuYD4GfvULneu3YxsBYm1L+G6xyPS7Z+NhzHATRVFQQ3Bw3RJRUGu5/8ThXHV2sjLuGD7/QpEwV52ivKqTpBFgk6g1dGP4PDYwHsaMADR54Fdn6OjcRFwPsEncGj1egY9vnk+GMUMG8DKaXUSo1+t0ltqpz9WaW+JihtiwMvb6qwOvADw/BKBNVSi3rcaGIdKi9QAzE5UvfkNeAPG1e+BduQvd+2n/9GH027qNW9ck9ToFt9gy/5U3w99GJnh6oz+r5NFJOgbe0/f9eu/qxFJc0vVloDLN0M37vABWAg0DlIEVmTRLvCEViIEwexLz3/9V/BgA27Xi0XVGzVwAAAAASUVORK5CYII="><h4 class="modal-title">Load recipe</h4></div><div class="modal-body"><div class="form-group"><label for="load-name">Load your recipe from local storage or paste it into the box below</label><select class="form-control" id="load-name"></select></div><div class="form-group"><textarea class="form-control" id="load-text" rows="5"></textarea></div></div><div class="modal-footer"><button type="button" class="btn btn-primary" id="load-button" data-dismiss="modal">Load</button> <button type="button" class="btn btn-danger" id="load-delete-button">Delete</button> <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button></div></div></div></div><div class="modal" id="options-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAD4UlEQVR4XpWTbWxTVRzGn9vhWlnZG1NYlwFLMGCUYfEt2dqwuDBfljGCUZkjgCgZyBeWBQ1ki1TmuvkFkw3JNAw1BhwmOslmtCwZmtDooCs6MCM4m6bQjtEVUtrStds9/s9J7/1wa5f4JE/+Pb25vzzPPedI0OgDEoAjEML75DGbzTaM/ykd0nVk/7v7cPjwITQ0bOsCcL6lpaUWgISFJXHeQmDT8U9PgMkySkwmDofRaBwEwDLBn9nzdfGHJ87JNL/SgiX6Ak+BRLUDHG7v7MJs/AHKysq0qbRQ/p6/bW8dTHlYTuthBSy1trbaALgJflSBWywWSFJaIRnpcl/6rBEulwtvVeZUm1caqkFaRH4oKyurbd/ePdBlZR8E0FpeXo61a9eAMZngEhKz0d95I2pzJT0tMDk5CZ/Ph49+jIJkUqv19vaO12+ue3Lx4oeRTCQIyIQV5eYXoKPDLl7ibVQo4HYefx0V+88iJfPlz7dfUcGUpthgMPz1Uk11/uNPrOMp1b0K37sLAc/LR4e9U8CH/I8t49DR3jfnnms6zVtvIuB/H0leta+v7zJNpnhoaCgxOxtnwekpdud2gMViUXbqVB+jtCwej4spkqeLomUQbwHASu7nZzo0E8TVGzfx8YAX3x+tRVXzgFpdA1DqqsrYhMxODoyKhB6PhzW0fcvOnDnN+DMNULPIcOiDt3x+ZV1UUooLx7ZgV6cDW8wGvLF5E9rb25UNnQYwr7nSmaGv1axB+4GXcWD786C1qP/qs3koLcrBVMDP24Dkp7kOGukWgu6ot0COBLEkPx/V5lwBnxj7FVarFQZ9Nmbu3Fbgbr75GnA69J2t67F760Y4fj6PX1zXAd0izM/NqWeVqmPpI8v4scwI12mhh962oLG2Amd/GMalax5UULqJib+RTMTBFQ6Hg4lE4mkOLyx6FCQVrtfrVbh6NVe9YmdfDv7GQvdjzNbdz3a9d4yd/OlPdvCT71hjcxfjz1fXNK8GkEM2NjU1VRKEybLMbvq8bOfOHeI3/09NTEndzbRB9VXr0X/uAjw+P6wvVIukfu8NXLwuIzk9Zo4FvbkACslLx8fHk+RantxEJ6anp4e3gZD4eCmtXFWKeZlh+pYnDRr5x1EVnBhJpoIU8Ol0OucABCKRyLbu7u5vQqEQKPFoMpm0A5BU8PCIEzNhMza+WIc/rqlQxLwjlQQNavZEVu6Aw+FwkVcAiJLjZLHLAly4vHjD4EX/GEhu8oNYRED1umiVXFByD4ACllLmYqm1TJ4XQGHxm6k3b8PuL8yhqQCHCxmXZK+42t8ypbn3UvpUn8spM+5/AT4U+4f4kq1OAAAAAElFTkSuQmCC"><h4 class="modal-title">Options</h4></div><div class="modal-body" id="options-body"><p style="font-weight: bold">Please note that these options will persist between sessions.</p><div class="option-item"><input type="checkbox" option="update_url" checked="checked"> Update the URL when the input or recipe changes</div><div class="option-item"><input type="checkbox" option="show_highlighter" checked="checked"> Highlight selected bytes in output and input (when possible)</div><div class="option-item"><input type="checkbox" option="treat_as_utf8" checked="checked"> Treat output as UTF-8 if possible</div><div class="option-item"><input type="checkbox" option="word_wrap" checked="checked"> Word wrap the input and output</div><div class="option-item"><input type="checkbox" option="show_errors" checked="checked"> Operation error reporting (recommended)</div><div class="option-item"><input type="number" option="error_timeout"> Operation error timeout in ms (0 for never)</div><div class="option-item"><input type="number" option="auto_bake_threshold"> Auto Bake threshold in ms</div></div><div class="modal-footer"><button type="button" class="btn btn-default" id="reset-options">Reset options to default</button> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div><div class="modal" id="favourites-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAElElEQVR42q1VXUwcVRT+7uzO7uyCVApCARHbUtog5adQ8cGEWCSkxqY/tPy01MQHn3xQH0xjaGRBqvbRRhMj2ocqUGrb1GqitlbiQ2sFWRaotZWWdINgCcVadpcB9s5cz9yFQrQuJDLJ3cnMvef7vvOdc2YZlnh539yhKTZFB2NgqtOR90ZreClxbOkE28+s3n9ouxAC/jbP8YL6UzXLRtD7zl6NKZq+8dXngMBZ9H+sQYigi7KYWh6CpurjyaU7q5LXfAgIN257V2HUq7fnH2ytXhaC7rpdIv/ADiDUCsV0gnOGvk9iUdj42aLxix7weSreTSqpPJCS2w6hU12FAmYX+P1SDMavKQ35dS2e/0XQXbdT5Ne9CNx7H8xwEQEFEYlpCviOxlAWLWxJBN6DzyfyKT1XjYt71tSnkpjdXiwMM2dV6X6k5p2AmJkBTBstyDtTwxi6lISxnnEwm/mL4OHLNpd7hIeC5xVVvbap6asxSdD3dk2nMGY2OxIfh+ORR/Fw9hbYHA/BlZwC1RkkBR0wx5tJvVuqjxBYWdCPlgqReBjhwDj0CQXGdAB/Xe3AzNgQLT+YYu9iPR6yoP40RXXS8gP6IEz9awJUIExKUJBqoYGZSoTAsJ4NWvTAicScoj0W2YstAuwrgPgywLUBvsYXwHrfqv4ovkB5Kb1sDMaknQ6yiAVWkKWWgJh8x+7bIwmM+WwIle4kgBsURy8UjqHLdtwdczfLGvR49o0k5POU9K3TMEOC4glUglsAYl49FVcS/fM+6ZeZMotUBQa+0RCYiPmj8NAXqfeL3OOpHV6Zx1MfKwtROzIpUraAaScCW8SqqSEgfAdi8i4wo9NUByKZ0LLArePeoyoGBtlIdf9M2r/atKehdjgh10hNL9MJRIUITxDQIBGO05D9OQ82Z02Ywg36+NHg0TcQ3mYNN/xspMobTPvPOfDV1w47V/6Wur6iD/weFZDPgdKAcSEzkwTWt9Tao/qQ5Rj6zoFLHepItS+QthDvgUPSsloT1RfIpinKhFRKb0kpiGDODgnOI+rNENBe7xb7fg0oS5rk1kynqOnOAvf3yyJKf3mkeZhV7GnM2sWkTYom0PaKC3uvhtiiBKcKXZlpT5cPFL92BnzCUjvn86w9xqw9MgtFZqJQl148loHRm6NrK7pCg1EJTm5ybct4Kvls0eu3iGCBPdS6iogAi+mIPbLIFgG1ZuexeAwN6uW7u0LnohJ8nudqKng5u25NSTcMaleroIo1CyR24ooqCeKywtRlVKNpRWajUAffPG9Hz0VHwx5vwBOVoD3HdaH0SNaW+KReqVwhjOnbCrwfOOEfsMkzGesMFFZyOBI4tTB1F2V351Ycvv80fK7KFyyPTpDtHtnWFp/i0oZhkEV9R5y43q1CdYuG3T8HpbqTm2M9YZ3VZ23gKNjDwTQOfXwFvnyPD1b1BtdGJ3jCJSq7inC98Udc+VajE6x9tzfwwL/Gk0Wxx2kOqnI2cqwv5zhxWEOVL8CiEpx+MmYgPGlmKqrtB5sDz+z6KSgQ5TpdHMtMAx2GwUpUh7hB59ct3P8bYqMensGZ/v8AAAAASUVORK5CYII="><h4 class="modal-title">Edit Favourites</h4></div><div class="modal-body" id="options-body"><ul><li><span style="font-weight: bold">To add:</span> drag the operation over the favourites category</li><li><span style="font-weight: bold">To reorder:</span> drag up and down in the list below</li><li><span style="font-weight: bold">To remove:</span> hit the red cross or drag out of the list below</li></ul><br><ul id="edit-favourites-list" class="op_list"></ul><div class="option-item"></div></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal" id="reset-favourites">Reset favourites to default</button> <button type="button" class="btn btn-success" data-dismiss="modal" id="save-favourites">Save</button> <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button></div></div></div></div><div class="modal" id="support-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAE1UlEQVR4XoWVC0xT1x/Hv729t7e3LSoqWIRNW6uoARVH5mPGzfcmRvbSacISI5n42Mss25jROd0mOjXO7C9/3XSZdvjIlsxFYCrETWe34nQpD4GIIKgDIaAilpZH+9svJ9BUg/O0n9w2J+fz+55f77nVEREeN2wpWw0AEph7TPW1vMzHLpL/QzYJwGpmKjOM8TMSGJ6rAHCW2cFF6vsSiMR9pMtiMhIcVvMz44eBr0gcaRXzZVcbUXq1AS5PbRd/9gFYxfLDD4ulh6RjAFRqqpzxyco55q83vIwnrAPgKqnD29tP4N0deSgquwl73GAc2LhI2bRqbj9NVfbxulzG1KeYpSqA/LH2IcPz/5du5gVIXevE9kO/o8BdjVstXty67UXhXzXYffRPvP7xjxgcacEve5ZbEh0xswHsflTirZpRic5e96Jup/McPjvwK28/BlvemofjO9Nw7ps3ULBnGQ5uegVL5o1DEMCOHBcO5Rfjq8xUlYMs5XAzQjYiwvD5WZMYrzP3Eh095aHExV9SctoeOna6hB41jhWWUcraHHr+HSeddlfR4ZMesqVkNbLHws5Q4jcnxMeYZj7twC5OoaqKgACccl/F+r1nkLEtF0cKLocCzUq2QdNUaEYDvs31YO7kkUgaHWsGkBLeiqnTkmzcyyp0BwgGRYZqUOA8WYq9P13ClZt3cN8XgKv0Zkgs6yWYNIMQB0iHC+X1mJ48wgRgMnruSSOAJ8dxP8uvNUFR9EJsMMhQZL0oYFQNQpK+YEJIXFLTzFIVRhbzPGob7iLRYdVJkm56b+LxjI/vU1TWNkNmmcJigSgg2oKM1CQkjRoipNcb7yHPXSvSaizledQ1tmHM8CgQ0Zjek3efkXQ6HSTenqzXM5JIK8TMwmkOJI8WB0QInIVXoHBBjgdOCPBbkWWwA/zy94orGLm8pgkJ9iH4g/uoZzEDUYQLjHdEo3ecKa7nggoknuvq6hbFgkHCiLhIXLnezMV0HtEKPo5BAJXl1bcw1h4NTsBIAr2kEwWyj5dgs/MCvvjBg7vt3dA0g+gt70bsTC9LsA/tDw4XDASC58IPyNnzxXWB556ywWiQRQodw1sTpM0ZjRUpCVg2Jx6REUaYNFUIuXXghNB4TaI9CmeKqvwA3OHibe7iOl9R2Q2kp04UYhIQiAjRkSZYB5oQPUADKAifvxPd3QFuQZC/EhZMseO8p47+rvynHMCpkLjn0bdm4/9Pt09OiMPE+BixKBggcQUhNDo6u+HzdcDf0YVO7nF8XH/YrBFYtzuvnduwOPSsJqIQfCQLlmQe7mhobqM8VxUt//wEpW/NpzW7Cum97LP00X4XbfjOTRsPFtGn31+goooGarrjpUUf5Hj5PKwOd0kIG0R4qaj0+pF5q/d7iYLIWjUDrz47CuPsg2BW9TAZJIziH2nmhFisWZiI5tttNHPFPu/Fyzfer8n9MBsPyugBAFisU1a+Zpu/pSVt/VHf/uMXg+7SG9TS2i7g5zEd+PliYGlmjt/+wuby/o4ZswHEMpYwT/g/iLgLIgEMZAYp5qih/WzTZhksUQlqxOB4yOYoHQLBgL+1ydfaUNXZ2lDRWv2bC6AWAHcYvqKefb4+/5pYLgPQGBMT0UM/xsJIjK/ntLb1XL09+ClM9i/zfjVLWKBgfAAAAABJRU5ErkJggg=="><h4 class="modal-title">CyberChef - The Cyber Swiss Army Knife</h4></div><div class="modal-body"><img class="about-img-left" src="data:image/png;base64,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"><p class="subtext">Compile time: 20/12/2016 18:47:37 UTC</p><p>© Crown Copyright 2016.</p><p>Licenced under the Apache Licence, Version 2.0.</p><br><br><div><ul class="nav nav-tabs" role="tablist"><li role="presentation" class="active"><a href="#faqs" aria-controls="profile" role="tab" data-toggle="tab"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADEklEQVR4XnVTbUhTXxh/dnd3765oGoiYqWyp/RWZ6CwzK1n1Iah98IOiVEK1XiANdERdEcs+REsse38T//z/joXgh0xRG2ksKcyWrjXxJVea6Jxm2kyXgtvpnOtWRnQuP845z3l+z/k9z3OPCCEEq4d8ny4eT/kYKgyFz2zDMGHoh5v5gdUEahWRwigJDGC6C3Mz+Jrz2Rlmw6kgArIuzMvg8VkP9uGJ728BfIaObcmystZbmoCo8GCqzmiFrOJaAWQdHR5CPbmt4banyM4RX8JZreDszk0xysrifdyZay3wb8MbyFcrofnmYaivOAC70mJB32yB8vvtUKlVczuU8lTCEZiyvZfiFTlXF8anXCiPNyC8R4W6BuTxeFHfx0k0O+dGZLS/tqP0Q/dQweUm5Pg8hxQ5V9yESxTka7I2cy8sw/Dq3SiQMeyYhSxtLRwsq4eTukbBlqmUw5ogDgY+TYN1yAknsreyhEuTaif/EyEytFgEMsvQMOp04VkCUlYC+Eywf/nqBomExnYRWIYmQZUSTYkpSkUUKBSx4WB9P4EdxMBgIsuuIDUhEor2ZwBp9YPHPcBJWeA4FhzT85AgDwMvQgr6ZzsoEUhoGhiJAEFB6ZFMYGgx/N9ihYHRWQjgGOxHAccyICKfrws2m90Jyvj1RAGBECA4SAojEy4w9zugwzqGb2cwWCHIxuhQsI/NAM7BRhSY3g460nenxVJdfeNA02IhVxG+qbN3TFiLxSQ1GiskawqS4sKg94PTiztlIgH0NQ3mYuOdo1xaYhT0j0wDjZ1CAjkoyt0CZBTdfAZiX3pxkWshNiIEjpfXLSGE9EKBcD95zYV69+TMN6StakVqrQEdu9SE/OP03eeIr36J/jP2I9fCEirQNX7foNbxhOsvYkV7l11dKjKmXizYI7Xap4BAe6MNpDj3RFkoJMWEwoZ1wVB+r23xaedgt9eLKgiRKPCroDBKknKq3NWPzF5z3zhyzS+iOXwj/nHQQ6PNk5J33R2jvswTXz/vr88ZF0uFz8hzJkW0LS97THj/x3P+AURXV1KnezlSAAAAAElFTkSuQmCC"> FAQs </a></li><li role="presentation"><a href="#stats" aria-controls="messages" role="tab" data-toggle="tab"><img src="data:image/png;base64,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"> Stats </a></li><li role="presentation"><a href="#about" aria-controls="messages" role="tab" data-toggle="tab"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVR4Xp2TPUsDQRCG35VUitiKpYi2IvgbTGFlKUFMaWNnIxap7SxTqShXBrE6wUpLixA/uouVSFrFCxJv75XZCzvsNV587pgblntmZ+7DQNg+3cDiUoxJeE3qiJo3hXx0z7j3xqrIveI4tyRPXgSHd/wv4tZgLb4tEWIA0l2KQHfCaO6Wc4uahPSHCKEX5TC6HmY2Qw1Zhs8RfXF4RUXdXGUXrYUb4WOUa/PlDlxmghUj1egLZLh9esf6yjwE3TsXsdyPRF9YujfuXc7Oxa2tVawtLyAcIsRAn2E3GaDV6UK/xOmZWBWDMpcHmz5/7A9w3HkAhsM6/kSKNyO2n1O2X1LuX/eJ3YhuvTI7FzzpfXHvKqHkKlelcVbIjXOVdVhUGYMoGP+ByhQqonLIL4atOuwJTS7oAAAAAElFTkSuQmCC"> About </a></li></ul><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="faqs"><br><blockquote><a data-toggle="collapse" data-target="#faq-examples">What sort of things can I do with CyberChef?</a></blockquote><div class="collapse" id="faq-examples"><p>There are well over 100 operations in CyberChef allowing you to carry simple and complex tasks easily. Here are some examples:</p><ul><li><a href="?recipe=%5B%7B%22op%22%3A%22From%20Base64%22%2C%22args%22%3A%5B%22A-Za-z0-9%2B%2F%3D%22%2Ctrue%5D%7D%5D&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1">Decode a Base64-encoded string</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Translate%20DateTime%20Format%22%2C%22args%22%3A%5B%22Standard%20date%20and%20time%22%2C%22DD%2FMM%2FYYYY%20HH%3Amm%3Ass%22%2C%22UTC%22%2C%22dddd%20Do%20MMMM%20YYYY%20HH%3Amm%3Ass%20Z%20z%22%2C%22Australia%2FQueensland%22%5D%7D%5D&input=MTUvMDYvMjAxNSAyMDo0NTowMA">Convert a date and time to a different time zone</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Parse%20IPv6%20address%22%2C%22args%22%3A%5B%5D%7D%5D&input=MjAwMTowMDAwOjQxMzY6ZTM3ODo4MDAwOjYzYmY6M2ZmZjpmZGQy">Parse a Teredo IPv6 address</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22From%20Hexdump%22%2C%22args%22%3A%5B%5D%7D%2C%7B%22op%22%3A%22Gunzip%22%2C%22args%22%3A%5B%5D%7D%5D&input=MDAwMDAwMDAgIDFmIDhiIDA4IDAwIDEyIGJjIGYzIDU3IDAwIGZmIDBkIGM3IGMxIDA5IDAwIDIwICB8Li4uLi6881cu%2Fy7HwS4uIHwKMDAwMDAwMTAgIDA4IDA1IGQwIDU1IGZlIDA0IDJkIGQzIDA0IDFmIGNhIDhjIDQ0IDIxIDViIGZmICB8Li7QVf4uLdMuLsouRCFb%2F3wKMDAwMDAwMjAgIDYwIGM3IGQ3IDAzIDE2IGJlIDQwIDFmIDc4IDRhIDNmIDA5IDg5IDBiIDlhIDdkICB8YMfXLi6%2BQC54Sj8uLi4ufXwKMDAwMDAwMzAgIDRlIGM4IDRlIDZkIDA1IDFlIDAxIDhiIDRjIDI0IDAwIDAwIDAwICAgICAgICAgICB8TshObS4uLi5MJC4uLnw">Convert data from a hexdump, then decompress</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Fork%22%2C%22args%22%3A%5B%22%5C%5Cn%22%2C%22%5C%5Cn%22%5D%7D%2C%7B%22op%22%3A%22From%20UNIX%20Timestamp%22%2C%22args%22%3A%5B%22Seconds%20(s)%22%5D%7D%5D&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA">Display multiple timestamps as full dates</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Fork%22%2C%22args%22%3A%5B%22%5C%5Cn%22%2C%22%5C%5Cn%22%5D%7D%2C%7B%22op%22%3A%22Conditional%20Jump%22%2C%22args%22%3A%5B%221%22%2C%222%22%2C%2210%22%5D%7D%2C%7B%22op%22%3A%22To%20Hex%22%2C%22args%22%3A%5B%22Space%22%5D%7D%2C%7B%22op%22%3A%22Return%22%2C%22args%22%3A%5B%5D%7D%2C%7B%22op%22%3A%22To%20Base64%22%2C%22args%22%3A%5B%22A-Za-z0-9%2B%2F%3D%22%5D%7D%5D&input=U29tZSBkYXRhIHdpdGggYSAxIGluIGl0ClNvbWUgZGF0YSB3aXRoIGEgMiBpbiBpdA">Carry out different operations on data of different types</a></li></ul></div><blockquote><a data-toggle="collapse" data-target="#faq-load-files">Can I load input directly from files?</a></blockquote><div class="collapse" id="faq-load-files"><p>Yes! Just drag your file over the input box and drop it. The contents of the file will be converted into hexadecimal and the 'From Hex' operation will be added to the beginning of the recipe (if it's not already there). This is so that special characters like carriage returns aren't removed by your browser.</p><p>Please note that loading large files is likely to cause a crash. There's not a lot that can be done about this - browsers just aren't very good at handling and displaying large amounts of data.</p></div><blockquote><a data-toggle="collapse" data-target="#faq-fork">How do I run operation X over multiple inputs at once?</a></blockquote><div class="collapse" id="faq-fork"><p>Maybe you have 10 timestamps that you want to parse or 16 encoded strings that all have the same key.</p><p>The 'Fork' operation (found in the 'Flow control' category) splits up the input line by line and runs all subsequent operations on each line separately. Each output is then displayed on a separate line. These delimiters can be changed, so if your inputs are separated by commas, you can change the split delimiter to a comma instead.</p><p><a href='?recipe=%5B%7B"op"%3A"Fork"%2C"args"%3A%5B"%5C%5Cn"%2C"%5C%5Cn"%5D%7D%2C%7B"op"%3A"From%20UNIX%20Timestamp"%2C"args"%3A%5B"Seconds%20(s)"%5D%7D%5D&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA%3D%3D'>Click here</a> for an example.</p></div></div><div role="tabpanel" class="tab-pane" id="stats"><br><p>If you're a nerd like me, you might find statistics really fun! Here's some about the CyberChef code base:</p><br><pre>203 source files<br>104466 lines<br>4.0M size<br><br>136 JavaScript source files<br>95316 lines<br>3.4M size<br><br>78 third party JavaScript source files<br>76377 lines<br>2.7M size<br><br>58 first party JavaScript source files<br>18939 lines<br>724K size<br><br>3.2M uncompressed JavaScript size<br>1.7M compressed JavaScript size<br><br>15 categories<br>155 operations<br></pre></div><div role="tabpanel" class="tab-pane" id="about" style="padding: 20px"><h4>What</h4><p>A simple, intuitive web app for analysing and decoding data without having to deal with complex tools or programming languages. CyberChef encourages both technical and non-technical people to explore data formats, encryption and compression.</p><h4>Why</h4><p>Digital data comes in all shapes, sizes and formats in the modern world – CyberChef helps to make sense of this data all on one easy-to-use platform.</p><h4>How</h4><p>The interface is designed with simplicity at its heart. Complex techniques are now as trivial as drag-and-drop. Simple functions can be combined to build up a "recipe", potentially resulting in complex analysis, which can be shared with other users and used with their input.</p><p>For those comfortable writing code, CyberChef is a quick and efficient way to prototype solutions to a problem which can then be scripted once proven to work.</p><h4>Who</h4><p>It is expected that CyberChef will be useful for cybersecurity and antivirus companies. It should also appeal to the academic world and any individuals or companies involved in the analysis of digital data, be that software developers, analysts, mathematicians or casual puzzle solvers.</p><h4>Aim</h4><p>It is hoped that by releasing CyberChef through <a href="https://github.com/gchq/cyberchef">GitHub</a>, contributions can be added which can be rolled out into future versions of the tool.</p><br><p>There are around 150 useful operations in CyberChef for anyone working on anything vaguely Internet-related, whether you just want to convert a timestamp to a different format, decompress gzipped data, create a SHA3 hash, or parse an X.509 certificate to find out who issued it.</p><p>It’s the Cyber Swiss Army Knife.</p></div></div></div></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div><div class="modal" id="confirm-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><h4 class="modal-title" id="confirm-title"></h4></div><div class="modal-body" id="confirm-body"></div><div class="modal-footer"><button type="button" class="btn btn-success" id="confirm-yes"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAClElEQVR42oRTTUhUURQ+72feezO+O68Zp0YGmzAtkgnNHyayVdAiKIgInEqlXBQuIojahZvSIGjTpiApaKHookVtSsPCXFgMhJGRC00pxs2QZjr6mvfuu537fE6j9HPge+/ce8/3nXPujwCb7PYRCWqiQvFUg8MgRRmI1GED6KfXF4732iC37RPdAae01Kz5jBXIYXRTh67e61jKzi2NPriusCIBbnJrreiSRfwICAlh2oX11vKGw/WMCsQfjAi2DZLjievqWpUy/N0uSZqeqDhwLMkH0+nhiZ8UxrlAVBdA9Zjyv8hNF7pPCyAT2zKXJ8eGJ/OUDe4MixsC/yTQQYKksr69+5QgKmTxy8THZ30Pp4iQswxN6MT1717cC8RQsUAMcULUSHXdua42xqQgoxRKdzcmzt5sSmzO8rLrjLQu0Mh3Gksm0epk5fbk0f3UBgKwtpOri4tQEgpBbmGhQP4xN5WxHaBuCxZlLQ3NV5r1sopY3jRhJWcCxe2mmN1BqJoGGiHuXP+ty4/XRfAMnroCNgVSsjUey2Em27LAyuc3gBgGhHDer+vQfqPn5PJ8dnm059qjpTyMugJ5B3wUAxwOzOICMzPHcW8U9/n67KcPC4N9d9Ne9kIlIrag8ACbl11EZkjmd4b7XDxetSeUuth5cJsuZPyK8CqgeBfJtIBlv05/C0ZipTYP9lCoAP88wcjzJ5n3b0cySOufwYOcwT09zwVyFusZHLivl8V3lRuRaFBRA6q+JaL71IAfRNEnovG29tYlSz+Pv3535w0bmvl9IO4zkGrLoMJQIeGToGqHAeGoDiFNhrAkgoEBMkLHdlZHZqF3aBrGkJNFzGOb1H1HCD8igPDB/81CrPArggLOLwEGAF0uM152x05WAAAAAElFTkSuQmCC"> Yes</button> <button type="button" class="btn btn-danger" id="confirm-no" data-dismiss="modal"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVR42mxTTUhUURQ+7290xhl1ppwoiQLThQhpuKgsCoUCgxYaYS0kaVG5aRFtWkRtWghBLgoCKSeRCglcZLrI0k0/lqL2MzA6DjkMwTgzr2bG9+bNe+/ezn2+mYy88HHeve+e73z3u/dwb3tEKAyOgyYMnYgShIowEVmEzEAppDD+ZCAAmdZHOogJhW4kI7wu7uyh3nu9Tp+/nLJBCDHzqqKlk79+R0NrWiaZza7F4onQ7DJuH0HMicm/BEfwu9Y5NRE7ePp8+bosM04B4QHe5anY07ibFwQQJAl2NoZj88/6BIvA49jQ7nVCR8ulvhMub5XHNAxYT6dBy+XASmIQRSuyudu/t9ogtIwV5pmClEKPhZO09smd69ORxbkk0XVYz2ZBTiQgLcuQRTIF5zlVhbymgZHPg07AMk8sc3BQ6eS6jvbcOu72VbnZookEBFUAuoY+ADFNa054Hoj93zBBsghklbYh6iJ3b86whXNXb7dWeL1WInOHbibByI6Qii7FddPiAnGHh+tu6bzSsK26xl+4TksBbi4qQLDbiC5OfYtHvkd1Tcmgw48tAkUHb86U/LHVVdg8DHYEWwEmqx/Hh6ZNPfcOE4ckAX7w3MY+UdXpi4nhfnchEYsJBl/qPnyy84CGhvkqy3Pvx59+MvLqc6fEBQTunzogEgoBk0AACzFn9wlS6eCZC70NHI8m4zMaGbwf1DR12FPCBWCLYV0FM0u3LIGuhqbmXaJU4jDwvkaHHsyj7AFcH1jGR/w6TNmTgfoqgI56rviCocbHweVma/6y4+K1NkF0lH75MBkMLsyMhpJwY3KFQkT+vzrzh2cf4RSFh5+xgwTQdCWjoElq5OtM8M0K9A/Mbp1cbED7GNsR/lN1/P72WmhnP14twdhYiCzYXcmg2DHPvC4oYARMhQtRZjdPUaG9UWe3akfdbnFaIPgjwAD+Q3HEWkHCzAAAAABJRU5ErkJggg=="> No</button></div></div></div></div><script type="application/javascript">/** * CyberChef - The Cyber Swiss Army Knife * * @copyright Crown Copyright 2016 @@ -352,14 +352,23 @@ function(){function a(a){var b=" ";if(isNaN(parseInt(a)))b=a;else switch(a){c @author RubaXa <trash@rubaxa.org> @license MIT */ -function(a){"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=s({},b),a[M]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);W(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=!b.forceFallback&&Q,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),U.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){w&&w.state!==a&&(h(w,"display",a?"none":""),!a&&w.state&&x.insertBefore(w,t),w.state=a)}function c(a,b,c){if(a){c=c||O;do if(">*"===b&&a.parentNode===c||q(a,b))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(L," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(L," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return O.defaultView&&O.defaultView.getComputedStyle?c=O.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;e<f;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=O.createEvent("Event"),i=(a||b[M]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=w,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[M],j=i.options.onMove;return g=O.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){S=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a,b){var c=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&q(a,b)&&c++;return c}function q(a,b){if(a){b=b.split(".");var c=b.shift().toUpperCase(),d=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");return!(""!==c&&a.nodeName.toUpperCase()!=c||b.length&&((" "+a.className+" ").match(d)||[]).length!=b.length)}return!1}function r(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function s(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}if("undefined"==typeof window||"undefined"==typeof window.document)return function(){throw new Error("Sortable.js requires a window with a document")};var t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K={},L=/\s+/g,M="Sortable"+(new Date).getTime(),N=window,O=N.document,P=N.parseInt,Q=!!("draggable"in O.createElement("div")),R=function(a){return a=O.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),S=!1,T=Math.abs,U=([].slice,[]),V=r(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(A!==c&&(z=b.scroll,A=c,z===!0)){z=c;do if(z.offsetWidth<z.scrollWidth||z.offsetHeight<z.scrollHeight)break;while(z=z.parentNode)}z&&(d=z,e=z.getBoundingClientRect(),f=(T(e.right-j)<=h)-(T(e.left-j)<=h),g=(T(e.bottom-k)<=h)-(T(e.top-k)<=h)),f||g||(f=(l-j<=h)-(j<=h),g=(m-k<=h)-(k<=h),(f||g)&&(d=N)),K.vx===f&&K.vy===g&&K.el===d||(K.el=d,K.vx=f,K.vy=g,clearInterval(K.pid),d&&(K.pid=setInterval(function(){d===N?N.scrollTo(N.pageXOffset+f*i,N.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),W=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,k=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=c(h,e.draggable,d))){if(E=p(h,e.draggable),"function"==typeof k){if(k.call(this,a,h,this))return j(b,i,"filter",h,d,E),void a.preventDefault()}else if(k&&(k=k.split(",").some(function(a){if(a=c(i,a.trim(),d))return j(b,a,"filter",h,d,E),!0})))return;e.handle&&!c(i,e.handle,d)||this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,f=this,h=f.el,j=f.options,k=h.ownerDocument;c&&!t&&c.parentNode===h&&(H=a,x=h,t=c,u=t.parentNode,y=t.nextSibling,G=j.group,d=function(){f._disableDelayedDrag(),t.draggable=!0,g(t,f.options.chosenClass,!0),f._triggerDragStart(b)},j.ignore.split(",").forEach(function(a){i(t,a.trim(),l)}),e(k,"mouseup",f._onDrop),e(k,"touchend",f._onDrop),e(k,"touchcancel",f._onDrop),j.delay?(e(k,"mouseup",f._disableDelayedDrag),e(k,"touchend",f._disableDelayedDrag),e(k,"touchcancel",f._disableDelayedDrag),e(k,"mousemove",f._disableDelayedDrag),e(k,"touchmove",f._disableDelayedDrag),f._dragStartTimer=setTimeout(d,j.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),f(a,"mouseup",this._disableDelayedDrag),f(a,"touchend",this._disableDelayedDrag),f(a,"touchcancel",this._disableDelayedDrag),f(a,"mousemove",this._disableDelayedDrag),f(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(H={target:t,clientX:a.clientX,clientY:a.clientY},this._onDragStart(H,"touch")):this.nativeDraggable?(e(t,"dragend",this),e(x,"dragstart",this._onDragStart)):this._onDragStart(H,!0);try{O.selection?O.selection.empty():window.getSelection().removeAllRanges()}catch(a){}},_dragStarted:function(){x&&t&&(g(t,this.options.ghostClass,!0),a.active=this,j(this,x,"start",t,x,E))},_emulateDragOver:function(){if(I){if(this._lastX===I.clientX&&this._lastY===I.clientY)return;this._lastX=I.clientX,this._lastY=I.clientY,R||h(v,"display","none");var a=O.elementFromPoint(I.clientX,I.clientY),b=a,c=" "+this.options.group.name,d=U.length;if(b)do{if(b[M]&&b[M].options.groups.indexOf(c)>-1){for(;d--;)U[d]({clientX:I.clientX,clientY:I.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);R||h(v,"display","")}},_onTouchMove:function(b){if(H){a.active||this._dragStarted(),this._appendGhost();var c=b.touches?b.touches[0]:b,d=c.clientX-H.clientX,e=c.clientY-H.clientY,f=b.touches?"translate3d("+d+"px,"+e+"px,0)":"translate("+d+"px,"+e+"px)";J=!0,I=c,h(v,"webkitTransform",f),h(v,"mozTransform",f),h(v,"msTransform",f),h(v,"transform",f),b.preventDefault()}},_appendGhost:function(){if(!v){var a,b=t.getBoundingClientRect(),c=h(t),d=this.options;v=t.cloneNode(!0),g(v,d.ghostClass,!1),g(v,d.fallbackClass,!0),h(v,"top",b.top-P(c.marginTop,10)),h(v,"left",b.left-P(c.marginLeft,10)),h(v,"width",b.width),h(v,"height",b.height),h(v,"opacity","0.8"),h(v,"position","fixed"),h(v,"zIndex","100000"),h(v,"pointerEvents","none"),d.fallbackOnBody&&O.body.appendChild(v)||x.appendChild(v),a=v.getBoundingClientRect(),h(v,"width",2*b.width-a.width),h(v,"height",2*b.height-a.height)}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;this._offUpEvents(),"clone"==G.pull&&(w=t.cloneNode(!0),h(w,"display","none"),x.insertBefore(w,t)),b?("touch"===b?(e(O,"touchmove",this._onTouchMove),e(O,"touchend",this._onDrop),e(O,"touchcancel",this._onDrop)):(e(O,"mousemove",this._onTouchMove),e(O,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,t)),e(O,"drop",this),setTimeout(this._dragStarted,0))},_onDragOver:function(a){var d,e,f,g=this.el,i=this.options,j=i.group,l=j.put,o=G===j,p=i.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!i.dragoverBubble&&a.stopPropagation()),J=!0,G&&!i.disabled&&(o?p||(f=!x.contains(t)):G.pull&&l&&(G.name===j.name||l.indexOf&&~l.indexOf(G.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(V(a,i,this.el),S)return;if(d=c(a.target,i.draggable,g),e=t.getBoundingClientRect(),f)return b(!0),void(w||y?x.insertBefore(t,w||y):p||x.appendChild(t));if(0===g.children.length||g.children[0]===v||g===a.target&&(d=n(g,a))){if(d){if(d.animated)return;r=d.getBoundingClientRect()}b(o),k(x,g,t,e,d,r)!==!1&&(t.contains(g)||(g.appendChild(t),u=g),this._animate(e,t),d&&this._animate(r,d))}else if(d&&!d.animated&&d!==t&&void 0!==d.parentNode[M]){B!==d&&(B=d,C=h(d),D=h(d.parentNode));var q,r=d.getBoundingClientRect(),s=r.right-r.left,z=r.bottom-r.top,A=/left|right|inline/.test(C.cssFloat+C.display)||"flex"==D.display&&0===D["flex-direction"].indexOf("row"),E=d.offsetWidth>t.offsetWidth,F=d.offsetHeight>t.offsetHeight,H=(A?(a.clientX-r.left)/s:(a.clientY-r.top)/z)>.5,I=d.nextElementSibling,K=k(x,g,t,e,d,r);if(K!==!1){if(S=!0,setTimeout(m,30),b(o),1===K||K===-1)q=1===K;else if(A){var L=t.offsetTop,N=d.offsetTop;q=L===N?d.previousElementSibling===t&&!E||H&&E:N>L}else q=I!==t&&!F||H&&F;t.contains(g)||(q&&!I?g.appendChild(t):d.parentNode.insertBefore(t,q?I:d)),u=t.parentNode,this._animate(e,t),this._animate(r,d)}}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();h(b,"transition","none"),h(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,h(b,"transition","all "+c+"ms"),h(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){h(b,"transition",""),h(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;f(O,"touchmove",this._onTouchMove),f(a,"mouseup",this._onDrop),f(a,"touchend",this._onDrop),f(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(K.pid),clearTimeout(this._dragStartTimer),f(O,"mousemove",this._onTouchMove),this.nativeDraggable&&(f(O,"drop",this),f(c,"dragstart",this._onDragStart)),this._offUpEvents(),b&&(J&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation()),v&&v.parentNode.removeChild(v),t&&(this.nativeDraggable&&f(t,"dragend",this),l(t),g(t,this.options.ghostClass,!1),g(t,this.options.chosenClass,!1),x!==u?(F=p(t,d.draggable),F>=0&&(j(null,u,"sort",t,x,E,F),j(this,x,"sort",t,x,E,F),j(null,u,"add",t,x,E,F),j(this,x,"remove",t,x,E,F))):(w&&w.parentNode.removeChild(w),t.nextSibling!==y&&(F=p(t,d.draggable),F>=0&&(j(this,x,"update",t,x,E,F),j(this,x,"sort",t,x,E,F)))),a.active&&(null!==F&&F!==-1||(F=E),j(this,x,"end",t,x,E,F),this.save()))),this._nulling()},_nulling:function(){x=t=u=v=y=w=z=A=H=I=J=F=B=C=G=a.active=null},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?t&&(this._onDragOver(a),d(a)):"drop"!==b&&"dragend"!==b||this._onDrop(a)},toArray:function(){for(var a,b=[],d=this.el.children,e=0,f=d.length,g=this.options;e<f;e++)a=d[e],c(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||o(a));return b},sort:function(a){var b={},d=this.el;this.toArray().forEach(function(a,e){var f=d.children[e];c(f,this.options.draggable,d)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(d.removeChild(b[a]),d.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return c(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:(c[a]=b,void("group"===a&&W(c)))},destroy:function(){var a=this.el;a[M]=null,f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),this.nativeDraggable&&(f(a,"dragover",this),f(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),U.splice(U.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:e,off:f,css:h,find:i,is:function(a,b){return!!c(a,b,a)},extend:s,throttle:r,closest:c,toggleClass:g,index:p},a.create=function(b,c){return new a(b,c)},a.version="1.4.2",a}),function(a){"object"==typeof exports?module.exports=a(window.jQuery):"function"==typeof define&&define.amd?define(["jquery"],a):window.jQuery&&!window.jQuery.fn.colorpicker&&a(window.jQuery)}(function(a){var b=function(b,c){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,c&&a.extend(this.colors,c),b&&(void 0!==b.toLowerCase?(b+="",this.setColor(b)):void 0!==b.h&&(this.value=b))};b.prototype={constructor:b,colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",transparent:"transparent"},_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:""===a?0:void 0!==a.toLowerCase?(a.match(/^\./)&&(a="0"+a),Math.ceil(100*parseFloat(a))/100):1},isTransparent:function(a){return!!a&&(a=a.toLowerCase().trim(),"transparent"===a||a.match(/#?00000000/)||a.match(/(rgba|hsla)\(0,0,0,0?\.?0\)/))},rgbaIsTransparent:function(a){return 0===a.r&&0===a.g&&0===a.b&&0===a.a},setColor:function(a){a=a.toLowerCase().trim(),a&&(this.isTransparent(a)?this.value={h:0,s:0,b:0,a:0}:this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1})},stringToHSB:function(b){b=b.toLowerCase();var c;"undefined"!=typeof this.colors[b]&&(b=this.colors[b],c="alias");var d=this,e=!1;return a.each(this.stringParsers,function(a,f){var g=f.re.exec(b),h=g&&f.parse.apply(d,[g]),i=c||f.format||"rgba";return!h||(e=i.match(/hsla?/)?d.RGBtoHSB.apply(d,d.HSLtoRGB.apply(d,h)):d.RGBtoHSB.apply(d,h),d.origFormat=i,!1)}),e},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=Math.round(parseInt(100*(1-a),10)/100*100)/100},toRGB:function(a,b,c,d){a||(a=this.value.h,b=this.value.s,c=this.value.b),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d||this.value.a}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return this.rgbaIsTransparent(e)?"transparent":"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&f<=1?f:2-f,f/=2,g>1&&(g=1),{h:isNaN(e)?0:e,s:isNaN(g)?0:g,l:isNaN(f)?0:f,a:isNaN(d)?0:d}},toAlias:function(a,b,c,d){var e=this.toHex(a,b,c,d);for(var f in this.colors)if(this.colors[f]===e)return f;return!1},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return c<0?c+=1:c>1&&(c-=1),6*c<1?a+(b-a)*c*6:2*c<1?b:3*c<2?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){b<0&&(b=0);var e;e=c<=.5?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){a=a||"rgba";var b=!1;switch(a){case"rgb":return b=this.toRGB(),this.rgbaIsTransparent(b)?"transparent":"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":return b=this.toRGB(),"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":return b=this.toHSL(),"hsl("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%)";case"hsla":return b=this.toHSL(),"hsla("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%,"+b.a+")";case"hex":return this.toHex();case"alias":return this.toAlias()||this.toHex();default:return b}},stringParsers:[{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}}],colorNameToHex:function(a){return"undefined"!=typeof this.colors[a.toLowerCase()]&&this.colors[a.toLowerCase()]}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div><div class="colorpicker-selectors"></div></div>',align:"right",customClass:null,colorSelectors:null},d=function(d,e){if(this.element=a(d).addClass("colorpicker-element"),this.options=a.extend(!0,{},c,this.element.data(),e),this.component=this.options.component,this.component=this.component!==!1&&this.element.find(this.component),this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1&&a(this.container),this.input=this.element.is("input")?this.element:!!this.options.input&&this.element.find(this.options.input),this.input&&0===this.input.length&&(this.input=!1),this.color=new b(this.options.color!==!1?this.options.color:this.getValue(),this.options.colorSelectors),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.options.color!==!1&&(this.updateInput(this.color),this.updateData(this.color)),this.picker=a(this.options.template),this.options.customClass&&this.picker.addClass(this.options.customClass),this.options.inline?this.picker.addClass("colorpicker-inline colorpicker-visible"):this.picker.addClass("colorpicker-hidden"),this.options.horizontal&&this.picker.addClass("colorpicker-horizontal"),"rgba"!==this.format&&"hsla"!==this.format&&this.options.format!==!1||this.picker.addClass("colorpicker-with-alpha"),"right"===this.options.align&&this.picker.addClass("colorpicker-right"),this.options.inline===!0&&this.picker.addClass("colorpicker-no-arrow"),this.options.colorSelectors){var f=this;a.each(this.options.colorSelectors,function(b,c){var d=a("<i />").css("background-color",c).data("class",b);d.click(function(){f.setValue(a(this).css("background-color"))}),f.picker.find(".colorpicker-selectors").append(d)}),this.picker.find(".colorpicker-selectors").show()}this.picker.on("mousedown.colorpicker touchstart.colorpicker",a.proxy(this.mousedown,this)),this.picker.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.input.on({"change.colorpicker":a.proxy(this.change,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.input!==!1&&this.component!==!1&&"color"===this.input.attr("type")&&this.input.on({"click.colorpicker":a.proxy(this.show,this),"focus.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker","color").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.trigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1||this.options.container)return!1;var a=this.container&&this.container[0]!==document.body?"position":"offset",b=this.component||this.element,c=b[a]();"right"===this.options.align&&(c.left-=this.picker.outerWidth()-b.outerWidth()),this.picker.css({top:c.top+b.outerHeight(),left:c.left})},show:function(b){return!this.isDisabled()&&(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!b||this.hasInput()&&"color"!==this.input.attr("type")||b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),!this.component&&this.input||this.options.inline!==!1||a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),void this.element.trigger({type:"showPicker",color:this.color}))},hide:function(){this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(document).off({"mousedown.colorpicker":this.hide}),this.update(),this.element.trigger({type:"hidePicker",color:this.color})},updateData:function(a){return a=a||this.color.toString(this.format),this.element.data("color",a),a},updateInput:function(a){if(a=a||this.color.toString(this.format),this.input!==!1){if(this.options.colorSelectors){var c=new b(a,this.options.colorSelectors),d=c.toAlias();"undefined"!=typeof this.options.colorSelectors[d]&&(a=d)}this.input.prop("value",a)}return a},updatePicker:function(a){void 0!==a&&(this.color=new b(a,this.options.colorSelectors));var c=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,d=this.picker.find("i");if(0!==d.length)return this.options.horizontal===!1?(c=this.options.sliders,d.eq(1).css("top",c.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",c.alpha.maxTop*(1-this.color.value.a))):(c=this.options.slidersHorz,d.eq(1).css("left",c.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",c.alpha.maxLeft*(1-this.color.value.a))),d.eq(0).css({top:c.saturation.maxTop-this.color.value.b*c.saturation.maxTop,left:this.color.value.s*c.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(this.color.value.h,1,1,1)),this.picker.find(".colorpicker-alpha").css("backgroundColor",this.color.toHex()),this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor",this.color.toString(this.format)),a},updateComponent:function(a){if(a=a||this.color.toString(this.format),this.component!==!1){var b=this.component.find("i").eq(0);b.length>0?b.css({backgroundColor:a}):this.component.css({backgroundColor:a})}return a},update:function(a){var b;return this.getValue(!1)===!1&&a!==!0||(b=this.updateComponent(),this.updateInput(b),this.updateData(b),this.updatePicker()),b},setValue:function(a){this.color=new b(a,this.options.colorSelectors),this.update(!0),this.element.trigger({type:"changeColor",color:this.color,value:a})},getValue:function(a){a=void 0===a?"#000000":a;var b;return b=this.hasInput()?this.input.val():this.element.data("color"),void 0!==b&&""!==b&&null!==b||(b=a),b},hasInput:function(){return this.input!==!1},isDisabled:function(){return!!this.hasInput()&&this.input.prop("disabled")===!0},disable:function(){return!!this.hasInput()&&(this.input.prop("disabled",!0),this.element.trigger({type:"disable",color:this.color,value:this.getValue()}),!0)},enable:function(){return!!this.hasInput()&&(this.input.prop("disabled",!1),this.element.trigger({type:"enable",color:this.color,value:this.getValue()}),!0)},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){!b.pageX&&!b.pageY&&b.originalEvent&&b.originalEvent.touches&&(b.pageX=b.originalEvent.touches[0].pageX,b.pageY=b.originalEvent.touches[0].pageY),b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"touchmove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this),"touchend.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){!a.pageX&&!a.pageY&&a.originalEvent&&a.originalEvent.touches&&(a.pageX=a.originalEvent.touches[0].pageX,a.pageY=a.originalEvent.touches[0].pageY),a.stopPropagation(),a.preventDefault();var b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/this.currentSlider.maxLeft),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/this.currentSlider.maxTop),"setAlpha"===this.currentSlider.callTop&&this.options.format===!1&&(1!==this.color.value.a?(this.format="rgba",this.color.origFormat="rgba"):(this.format="hex",this.color.origFormat="hex")),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return b.stopPropagation(),b.preventDefault(),a(document).off({"mousemove.colorpicker":this.mousemove,"touchmove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup,"touchend.colorpicker":this.mouseup}),!1},change:function(a){this.keyup(a)},keyup:function(a){38===a.keyCode?(this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0)):40===a.keyCode?(this.color.value.a>0&&(this.color.value.a=Math.round(100*(this.color.value.a-.01))/100),this.update(!0)):(this.color=new b(this.input.val(),this.options.colorSelectors),this.color.origFormat&&this.options.format===!1&&(this.format=this.color.origFormat),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())),this.element.trigger({type:"changeColor",color:this.color,value:this.input.val()})}},a.colorpicker=d,a.fn.colorpicker=function(b){var c=Array.prototype.slice.call(arguments,1),e=1===this.length,f=null,g=this.each(function(){var e=a(this),g=e.data("colorpicker"),h="object"==typeof b?b:{};g||(g=new d(this,h),e.data("colorpicker",g)),"string"==typeof b?a.isFunction(g[b])?f=g[b].apply(g,c):(c.length&&(g[b]=c[0]),f=g[b]):f=e});return e?f:g},a.fn.colorpicker.constructor=d});var CanvasComponents={draw_line:function(a,b,c,d,e){a.beginPath(),a.moveTo(b,c),a.lineTo(d,e),a.closePath(),a.stroke()},draw_bar_chart:function(a,b,c,d,e,f,g){g=g||15,(!e||e>Math.round(a.width/50))&&(e=Math.round(a.width/50)),(!f||f>Math.round(a.width/50))&&(f=Math.round(a.height/50));var h=a.getContext("2d"),i=.08*a.width,j=.03*a.width,k=.08*a.height,l=.15*a.height,m=a.height-k-l,n=a.width-i-j,o=k+m,p=k;h.font=g+"px Arial",h.lineWidth="1.0",h.strokeStyle="#444",CanvasComponents.draw_line(h,i,o,n+i,o),CanvasComponents.draw_line(h,i,o,i,p);var q=.003*n,r=(n-q*b.length)/b.length,s=i+q,t=Math.max.apply(Math,b); -h.fillStyle="green";for(var u=0;u<b.length;u++){var v=b[u]/t*m;h.fillRect(s,o-v,r,v),s+=r+q}if(h.fillStyle="black",h.textAlign="center",s=i+q,e>=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r<d.length;r++)n=k/c*d[r].min+f,o=h+j+.1*i,p=n,q=h+j+.3*i,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].max+f,p=n,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].min+f,o=h+j+.3*i,p=k/c*d[r].max+f,q=o,CanvasComponents.draw_line(e,n,o,p,q),d[r].max>=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.length<b?Utils.pad_left(c.slice(d,c.length)+a,b,c):a},pad_right:function(a,b,c){return c=c||" ",a.length<b?Utils.pad_right(a+c.slice(0,b-a.length),b,c):a},pad:function(a,b,c){return Utils.pad_left(a,b,c)},truncate:function(a,b,c){return c=c||"...",a.length>b&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g,d=/[\x09-\x10\x0D\u2028\u2029]/g;return a=a.replace(c,"."),b||(a=a.replace(d,".")),a},parse_escaped_chars:function(a){return a.replace(/(\\)?\\([nrtbf]|x[\da-f]{2})/g,function(a,b,c){if("\\"===b)return"\\"+c;switch(c[0]){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"f":return"\f";case"x":return Utils.chr(parseInt(c.substr(1),16))}})},expand_alph_range:function(a){for(var b=[],c=0;c<a.length;c++)if(c<a.length-2&&"-"===a[c+1]&&"\\"!==a[c]){for(var d=Utils.ord(a[c]),e=Utils.ord(a[c+2]),f=d;f<=e;f++)b.push(Utils.chr(f));c+=2}else c<a.length-2&&"\\"===a[c]&&"-"===a[c+1]?(b.push("-"),c++):b.push(a[c]);return b},hex_to_byte_array:function(a){if(!a)return[];a=a.replace(/\s+/g,"");for(var b=[],c=0;c<a.length;c+=2)b.push(parseInt(a.substr(c,2),16));return b},byte_array_to_hex:function(a){if(!a)return"";for(var b="",c=0;c<a.length;c++)b+=Utils.hex(a[c])+" ";return b.slice(0,b.length-1)},str_to_byte_array:function(a){for(var b,c=new Array(a.length),d=a.length;d--;)if(b=a.charCodeAt(d),c[d]=b,b>255)return Utils.str_to_utf8_byte_array(a);return c},str_to_utf8_byte_array:function(a){var b=CryptoJS.enc.Utf8.parse(a),c=Utils.word_array_to_byte_array(b);return a.length!==b.sigBytes&&(window.app.options.attempt_highlight=!1),c},str_to_charcode:function(a){for(var b=new Array(a.length),c=a.length;c--;)b[c]=a.charCodeAt(c);return b},byte_array_to_utf8:function(a){try{for(var b=[],c=0;c<a.length;c++)b[c>>>2]|=a[c]<<24-c%4*8;var d=new CryptoJS.lib.WordArray.init(b,a.length),e=CryptoJS.enc.Utf8.stringify(d);return e.length!==d.sigBytes&&(window.app.options.attempt_highlight=!1),e}catch(b){return Utils.byte_array_to_chars(a)}},byte_array_to_chars:function(a){if(!a)return"";for(var b="",c=0;c<a.length;)b+=String.fromCharCode(a[c++]);return b},word_array_to_byte_array:function(a){if(a.sigBytes<=0)return[];for(var b=a.words,c=[],d=0;d<a.sigBytes;d++)c.push(b[d>>>2]>>>24-d%4*8&255);return c},UNIC_WIN1251_MAP:{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,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,1027:129,8225:135,1046:198,8222:132,1047:199,1168:165,1048:200,1113:154,1049:201,1045:197,1050:202,1028:170,160:160,1040:192,1051:203,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,1053:205,176:176,177:177,1114:156,181:181,182:182,183:183,8221:148,187:187,1029:189,1056:208,1057:209,1058:210,8364:136,1112:188,1115:158,1059:211,1060:212,1030:178,1061:213,1062:214,1063:215,1116:157,1064:216,1065:217,1031:175,1066:218,1067:219,1068:220,1069:221,1070:222,1032:163,8226:149,1071:223,1072:224,8482:153,1073:225,8240:137,1118:162,1074:226,1110:179,8230:133,1075:227,1033:138,1076:228,1077:229,8211:150,1078:230,1119:159,1079:231,1042:194,1080:232,1034:140,1025:168,1081:233,1082:234,8212:151,1083:235,1169:180,1084:236,1052:204,1085:237,1035:142,1086:238,1087:239,1088:240,1089:241,1090:242,1036:141,1041:193,1091:243,1092:244,8224:134,1093:245,8470:185,1094:246,1054:206,1095:247,1096:248,8249:139,1097:249,1098:250,1044:196,1099:251,1111:191,1055:207,1100:252,1038:161,8220:147,1101:253,8250:155,1102:254,8216:145,1103:255,1043:195,1105:184,1039:143,1026:128,1106:144,8218:130,1107:131,8217:146,1108:186,1109:190},WIN1251_UNIC_MAP:{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,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,160:160,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,176:176,177:177,181:181,182:182,183:183,187:187,168:1025,128:1026,129:1027,170:1028,189:1029,178:1030,175:1031,163:1032,138:1033,140:1034,142:1035,141:1036,161:1038,143:1039,192:1040,193:1041,194:1042,195:1043,196:1044,197:1045,198:1046,199:1047,200:1048,201:1049,202:1050,203:1051,204:1052,205:1053,206:1054,207:1055,208:1056,209:1057,210:1058,211:1059,212:1060,213:1061,214:1062,215:1063,216:1064,217:1065,218:1066,219:1067,220:1068,221:1069,222:1070,223:1071,224:1072,225:1073,226:1074,227:1075,228:1076,229:1077,230:1078,231:1079,232:1080,233:1081,234:1082,235:1083,236:1084,237:1085,238:1086,239:1087,240:1088,241:1089,242:1090,243:1091,244:1092,245:1093,246:1094,247:1095,248:1096,249:1097,250:1098,251:1099,252:1100,253:1101,254:1102,255:1103,184:1105,144:1106,131:1107,186:1108,190:1109,179:1110,191:1111,188:1112,154:1113,156:1114,158:1115,157:1116,162:1118,159:1119,165:1168,180:1169,150:8211,151:8212,145:8216,146:8217,130:8218,147:8220,148:8221,132:8222,134:8224,135:8225,149:8226,133:8230,137:8240,139:8249,155:8250,136:8364,185:8470,153:8482},unicode_to_win1251:function(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(!(d in Utils.UNIC_WIN1251_MAP))throw"Character '"+a.charAt(c)+"' isn't supported by Windows-1251";b.push(String.fromCharCode(Utils.UNIC_WIN1251_MAP[d]))}return b.join("")},win1251_to_unicode:function(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(!(d in Utils.WIN1251_UNIC_MAP))throw"Character '"+a.charAt(c)+"' isn't supported by Windows-1251";b.push(String.fromCharCode(Utils.WIN1251_UNIC_MAP[d]))}return b.join("")},to_base64:function(a,b){if(!a)return"";"string"==typeof a&&(a=Utils.str_to_byte_array(a)),b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";for(var c,d,e,f,g,h,i,j="",k=0;k<a.length;)c=a[k++],d=a[k++],e=a[k++],f=c>>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,isNaN(d)?h=i=64:isNaN(e)&&(i=64),j+=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);return j},from_base64:function(a,b,c,d){if(c=c||"string",!a)return"string"===c?"":[];b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",void 0===d&&(d=!0);var e,f,g,h,i,j,k,l=[],m=0;if(d){var n=new RegExp("[^"+b.replace(/[\[\]\\\-^$]/g,"\\$&")+"]","g");a=a.replace(n,"")}for(;m<a.length;)h=b.indexOf(a.charAt(m++)),i=b.indexOf(a.charAt(m++)||"="),j=b.indexOf(a.charAt(m++)||"="),k=b.indexOf(a.charAt(m++)||"="),i=i===-1?64:i,j=j===-1?64:j,k=k===-1?64:k,e=h<<2|i>>4,f=(15&i)<<4|j>>2,g=(3&j)<<6|k,l.push(e),64!==j&&l.push(f),64!==k&&l.push(g);return"string"===c?Utils.byte_array_to_utf8(l):l},to_hex:function(a,b,c){if(!a)return"";b="string"==typeof b?b:" ",c=c||2;for(var d="",e=0;e<a.length;e++)d+=Utils.pad(a[e].toString(16),c)+b;return"0x"===b&&(d="0x"+d),"\\x"===b&&(d="\\x"+d),b.length?d.slice(0,-b.length):d},to_hex_fast:function(a){if(!a)return"";for(var b=[],c=0;c<a.length;c++)b.push((a[c]>>>4).toString(16)),b.push((15&a[c]).toString(16));return b.join("")},from_hex:function(a,b,c){if(b=b||(a.indexOf(" ")>=0?"Space":"None"),c=c||2,"None"!==b){var d=Utils.regex_rep[b];a=a.replace(d,"")}for(var e=[],f=0;f<a.length;f+=c)e.push(parseInt(a.substr(f,c),16));return e},parse_csv:function(a){for(var b,c=!1,d=!1,e="",f=[],g=[],h=0;h<a.length;h++)b=a[h],c?(e+=b,c=!1):"\\"===b?(e+=b,c=!0):'"'!==b||d?'"'===b&&d?d=!1:","!==b||d?"\n"!==b&&"\r"!==b||d?e+=b:(f.push(e),e="",g.push(f),f=[]):(f.push(e),e=""):d=!0;return f.length&&(f.push(e),g.push(f)),g},strip_html_tags:function(a,b){return b&&(a=a.replace(/<(script|style)[^>]*>.*<\/(script|style)>/gim,"")),a.replace(/<[^>\n]+>/g,"")},escape_html:function(a){return a.replace(/</g,"<").replace(/'/g,"'").replace(/"/g,""").replace(/&/g,"&")},fuzzy_time:function(a){return moment.duration(a,"milliseconds").humanize()},extend:function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a},char_rep:{Space:" ",Comma:",","Semi-colon":";",Colon:":","Line feed":"\n",CRLF:"\r\n","0x":"0x","\\x":"\\x","Nothing (separate chars)":"",None:""},regex_rep:{Space:/\s+/g,Comma:/,/g,"Semi-colon":/;/g,Colon:/:/g,"Line feed":/\n/g,CRLF:/\r\n/g,"0x":/0x/g,"\\x":/\\x/g},format:{Hex:CryptoJS.enc.Hex,Base64:CryptoJS.enc.Base64,UTF8:CryptoJS.enc.Utf8,UTF16:CryptoJS.enc.Utf16,UTF16LE:CryptoJS.enc.Utf16LE,UTF16BE:CryptoJS.enc.Utf16BE,Latin1:CryptoJS.enc.Latin1}};$.fn.selectRange=function(a,b){return b||(b=a),this.each(function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(a,b);else if(this.createTextRange){var c=this.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}})},Array.prototype.unique=function(){for(var a={},b=[],c=0,d=this.length;c<d;c++)a.hasOwnProperty(this[c])||(b.push(this[c]),a[this[c]]=1);return b},Array.prototype.max=function(){return Math.max.apply(null,this)},Array.prototype.min=function(){return Math.min.apply(null,this)},Array.prototype.sum=function(){return this.reduce(function(a,b){return a+b},0)},Array.prototype.equals=function(a){if(!a)return!1;var b=this.length;if(b!==a.length)return!1;for(;b--;)if(this[b]!==a[b])return!1;return!0},String.prototype.count=function(a){return this.split(a).length-1},CryptoJS.enc.Hex.parse=function(a){a=a.replace(/\s/g,"");for(var b=a.length,c=[],d=0;d<b;d+=2)c[d>>>3]|=parseInt(a.substr(d,2),16)<<24-d%8*4;return new CryptoJS.lib.WordArray.init(c,b/2)};var Base={DEFAULT_RADIX:36,run_to:function(a,b){if(!a)throw"Error: Input must be a number";var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return a.toString(c)},run_from:function(a,b){var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return parseInt(a.replace(/\s/g,""),c)}},Base64={ALPHABET:"A-Za-z0-9+/=",ALPHABET_OPTIONS:[{name:"Standard: A-Za-z0-9+/=",value:"A-Za-z0-9+/="},{name:"URL safe: A-Za-z0-9-_",value:"A-Za-z0-9-_"},{name:"Filename safe: A-Za-z0-9+-=",value:"A-Za-z0-9+\\-="},{name:"itoa64: ./0-9A-Za-z=",value:"./0-9A-Za-z="},{name:"XML: A-Za-z0-9_.",value:"A-Za-z0-9_."},{name:"y64: A-Za-z0-9._-",value:"A-Za-z0-9._-"},{name:"z64: 0-9a-zA-Z+/=",value:"0-9a-zA-Z+/="},{name:"Radix-64: 0-9A-Za-z+/=",value:"0-9A-Za-z+/="},{name:"Uuencoding: [space]-_",value:" -_"},{name:"Xxencoding: +-0-9A-Za-z",value:"+\\-0-9A-Za-z"},{name:"BinHex: !-,-0-689@A-NP-VX-Z[`a-fh-mp-r",value:"!-,-0-689@A-NP-VX-Z[`a-fh-mp-r"},{name:"ROT13: N-ZA-Mn-za-m0-9+/=",value:"N-ZA-Mn-za-m0-9+/="}],run_to:function(a,b){var c=b[0]||Base64.ALPHABET;return Utils.to_base64(a,c)},REMOVE_NON_ALPH_CHARS:!0,run_from:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1];return Utils.from_base64(a,c,"byte_array",d)},BASE32_ALPHABET:"A-Z2-7=",run_to_32:function(a,b){if(!a)return"";for(var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q="",r=0;r<a.length;)c=a[r++],d=a[r++],e=a[r++],f=a[r++],g=a[r++],h=c>>3,i=(7&c)<<2|d>>6,j=d>>1&31,k=(1&d)<<4|e>>4,l=(15&e)<<1|f>>7,m=f>>2&63,n=(3&f)<<3|g>>5,o=31&g,isNaN(d)?j=k=l=m=n=o=32:isNaN(e)?l=m=n=o=32:isNaN(f)?m=n=o=32:isNaN(g)&&(o=32),q+=p.charAt(h)+p.charAt(i)+p.charAt(j)+p.charAt(k)+p.charAt(l)+p.charAt(m)+p.charAt(n)+p.charAt(o);return q},run_from_32:function(a,b){if(!a)return[];var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q=b[0],r=[],s=0;if(q){var t=new RegExp("[^"+p.replace(/[\]\\\-^]/g,"\\$&")+"]","g");a=a.replace(t,"")}for(;s<a.length;)h=p.indexOf(a.charAt(s++)),i=p.indexOf(a.charAt(s++)||"="),j=p.indexOf(a.charAt(s++)||"="),k=p.indexOf(a.charAt(s++)||"="),l=p.indexOf(a.charAt(s++)||"="),m=p.indexOf(a.charAt(s++)||"="),n=p.indexOf(a.charAt(s++)||"="),o=p.indexOf(a.charAt(s++)||"="),c=h<<3|i>>2,d=(3&i)<<6|j<<1|k>>4,e=(15&k)<<4|l>>1,f=(1&l)<<7|m<<2|n>>3,g=(7&n)<<5|o,r.push(c),(i&!0||32!==j)&&r.push(d),(k&!0||32!==l)&&r.push(e),(l&!0||32!==m)&&r.push(f),(n&!0||32!==o)&&r.push(g);return r},SHOW_IN_BINARY:!1,OFFSETS_SHOW_VARIABLE:!0,run_offsets:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1],e=Utils.to_base64(a,c),f=Utils.to_base64([0].concat(a),c),g=Utils.to_base64([0,0].concat(a),c),h=e.indexOf("="),i=f.indexOf("="),j=g.indexOf("="),k="<script type='application/javascript'>$('[data-toggle=\"tooltip\"]').tooltip()<\/script>",l="",m="";return a.length<1?"Please enter a string.":(h%4===2?(l=e.slice(0,-3),e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c).slice(0,-2))+"'>"+l+"</span><span class='hlgreen'>"+e.substr(e.length-3,1)+"</span><span class='hlred'>"+e.substr(e.length-2)+"</span>"):h%4===3?(l=e.slice(0,-2),e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c).slice(0,-1))+"'>"+l+"</span><span class='hlgreen'>"+e.substr(e.length-2,1)+"</span><span class='hlred'>"+e.substr(e.length-1)+"</span>"):(l=e,e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c))+"'>"+l+"</span>"),d||(e=l),m="<span class='hlred'>"+f.substr(0,1)+"</span><span class='hlgreen'>"+f.substr(1,1)+"</span>",f=f.substr(2),i%4===2?(l=f.slice(0,-3),f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1,-2))+"'>"+l+"</span><span class='hlgreen'>"+f.substr(f.length-3,1)+"</span><span class='hlred'>"+f.substr(f.length-2)+"</span>"):i%4===3?(l=f.slice(0,-2),f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1,-1))+"'>"+l+"</span><span class='hlgreen'>"+f.substr(f.length-2,1)+"</span><span class='hlred'>"+f.substr(f.length-1)+"</span>"):(l=f,f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1))+"'>"+l+"</span>"),d||(f=l),m="<span class='hlred'>"+g.substr(0,2)+"</span><span class='hlgreen'>"+g.substr(2,1)+"</span>",g=g.substr(3),j%4===2?(l=g.slice(0,-3),g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2,-2))+"'>"+l+"</span><span class='hlgreen'>"+g.substr(g.length-3,1)+"</span><span class='hlred'>"+g.substr(g.length-2)+"</span>"):j%4===3?(l=g.slice(0,-2),g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2,-2))+"'>"+l+"</span><span class='hlgreen'>"+g.substr(g.length-2,1)+"</span><span class='hlred'>"+g.substr(g.length-1)+"</span>"):(l=g,g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2))+"'>"+l+"</span>"),d||(g=l),d?"Characters highlighted in <span class='hlgreen'>green</span> could change if the input is surrounded by more data.\nCharacters highlighted in <span class='hlred'>red</span> are for padding purposes only.\nUnhighlighted characters are <span data-toggle='tooltip' data-placement='top' title='Tooltip on left'>static</span>.\nHover over the static sections to see what they decode to on their own.\n\nOffset 0: "+e+"\nOffset 1: "+f+"\nOffset 2: "+g+k:e+"\n"+f+"\n"+g)},highlight_to:function(a,b){return a[0].start=Math.floor(a[0].start/3*4),a[0].end=Math.ceil(a[0].end/3*4),a},highlight_from:function(a,b){return a[0].start=Math.ceil(a[0].start/4*3),a[0].end=Math.floor(a[0].end/4*3),a}},BitwiseOp={_bit_op:function(a,b,c,d,e){b&&b.length||(b=[0]);for(var f=[],g=null,h=null,i=null,j=0;j<a.length;j++)if(h=b[j%b.length],i=a[j],g=!d||0!==i&&i!==h?c(i,h):i,f.push(g),"Standard"!==e&&(!d||0!==i&&i!==h))switch(e){case"Input differential":b[j%b.length]=g;break;case"Output differential":b[j%b.length]=i}return f},XOR_PRESERVE_NULLS:!1,XOR_SCHEME:["Standard","Input differential","Output differential"],KEY_FORMAT:["Hex","Base64","UTF8","UTF16","UTF16LE","UTF16BE","Latin1"],run_xor:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||""),d=b[1],e=b[2];return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._xor,e,d)},XOR_BRUTE_KEY_LENGTH:["1","2"],XOR_BRUTE_SAMPLE_LENGTH:100,XOR_BRUTE_SAMPLE_OFFSET:0,XOR_BRUTE_PRINT_KEY:!0,XOR_BRUTE_OUTPUT_HEX:!1,run_xor_brute:function(a,b){var c,d,e,f=parseInt(b[0],10),g=b[1],h=b[2],i=b[3],j=b[4],k=b[5],l=b[6],m=b[7],n="";a=a.slice(h,h+g),""!==k&&(c=new RegExp(k,"im"));for(var o=1,p=Math.pow(256,f);o<p;o++)d=BitwiseOp._bit_op(a,Utils.hex_to_byte_array(o.toString(16)),BitwiseOp._xor,i,j),e=Utils.byte_array_to_utf8(d),""!==k&&e.search(c)===-1||(l&&(n+="Key = "+Utils.hex(o,2*f)+": "),n+=m?Utils.byte_array_to_hex(d)+"\n":Utils.printable(e,!1)+"\n",l&&(n+="\n"));return n},run_not:function(a,b){return BitwiseOp._bit_op(a,null,BitwiseOp._not)},run_and:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._and)},run_or:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._or)},run_add:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._add)},run_sub:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._sub)},_xor:function(a,b){return a^b},_not:function(a,b){return 255&~a},_and:function(a,b){return a&b},_or:function(a,b){return a|b},_add:function(a,b){return(a+b)%256},_sub:function(a,b){var c=a-b;return c<0?256+c:c}},ByteRepr={DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF"],HEX_DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF","0x","\\x","None"],BIN_DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF","None"],run_to_hex:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return Utils.to_hex(a,c,2)},run_from_hex:function(a,b){var c=b[0]||"Space";return Utils.from_hex(a,c,2)},CHARCODE_BASE:16,run_to_charcode:function(a,b){var c,d=Utils.char_rep[b[0]||"Space"],e=b[1],f="",g=2;if(e<2||e>36)throw"Error: Base argument must be between 2 and 36";for(var h=0;h<a.length;h++)c=Utils.ord(a[h]),16===e?(g=c<256?2:c<65536?4:c<16777216?6:c<4294967296?8:2,g>2&&(app.options.attempt_highlight=!1),f+=Utils.hex(c,g)+d):(app.options.attempt_highlight=!1,f+=c.toString(e)+d);return f.slice(0,-d.length)},run_from_charcode:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d=b[1],e=a.split(c),f=0;if(d<2||d>36)throw"Error: Base argument must be between 2 and 36";if(16!==d&&(app.options.attempt_highlight=!1),1===e.length&&a.length>17)for(e=[],f=0;f<a.length;f+=2)e.push(a.slice(f,f+2));var g="";for(f=0;f<e.length;f++)g+=Utils.chr(parseInt(e[f],d));return Utils.str_to_byte_array(g)},highlight_to:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d="\r\n"===c?1:c.length;return a[0].start=a[0].start*(2+d),a[0].end=a[0].end*(2+d)-d,"0x"!==c&&"\\x"!==c||(a[0].start+=2,a[0].end+=2),a},highlight_from:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d="\r\n"===c?1:c.length,e=d+2;return"0x"!==c&&"\\x"!==c||(a[0].start>1?a[0].start-=2:a[0].start=0,a[0].end>1?a[0].end-=2:a[0].end=0),a[0].start=0===a[0].start?0:Math.round(a[0].start/e),a[0].end=0===a[0].end?0:Math.ceil(a[0].end/e),a},run_to_decimal:function(a,b){var c=Utils.char_rep[b[0]];return a.join(c)},run_from_decimal:function(a,b){var c=Utils.char_rep[b[0]],d=a.split(c),e=[];""===d[d.length-1]&&(d=d.slice(0,d.length-1));for(var f=0;f<d.length;f++)e[f]=parseInt(d[f],10);return e},run_to_binary:function(a,b){for(var c=Utils.char_rep[b[0]||"Space"],d="",e=8,f=0;f<a.length;f++)d+=Utils.pad(a[f].toString(2),e)+c;return c.length?d.slice(0,-c.length):d},run_from_binary:function(a,b){if("None"!==b[0]){var c=Utils.regex_rep[b[0]||"Space"];a=a.replace(c,"")}for(var d=[],e=8,f=0;f<a.length;f+=e)d.push(parseInt(a.substr(f,e),2));return d},highlight_to_binary:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return a[0].start=a[0].start*(8+c.length),a[0].end=a[0].end*(8+c.length)-c.length,a},highlight_from_binary:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return a[0].start=0===a[0].start?0:Math.floor(a[0].start/(8+c.length)),a[0].end=0===a[0].end?0:Math.ceil(a[0].end/(8+c.length)),a},HEX_CONTENT_CONVERT_WHICH:["Only special chars","Only special chars including spaces","All chars"],HEX_CONTENT_SPACES_BETWEEN_BYTES:!1,run_to_hex_content:function(a,b){var c=b[0],d=b[1];if("All chars"===c){var e="|"+Utils.to_hex(a)+"|";return d||(e=e.replace(/ /g,"")),e}for(var f,g="",h=!1,i="Only special chars including spaces"===c,j=0;j<a.length;j++)f=a[j],32===f&&i||f<48&&32!==f||f>57&&f<65||f>90&&f<97||f>122?(h?d&&(g+=" "):(g+="|",h=!0),g+=Utils.to_hex([f])):(h&&(g+="|",h=!1),g+=Utils.chr(a[j]));return h&&(g+="|"),g},run_from_hex_content:function(a,b){for(var c,d=/\|([a-f\d ]{2,})\|/gi,e=[],f=0;c=d.exec(a);){for(;f<c.index;)e.push(Utils.ord(a[f++]));var g=Utils.from_hex(c[1]);if(g)for(var h=0;h<g.length;)e.push(g[h++]);else for(;f<d.lastIndex;)e.push(Utils.ord(a[f++]));f=d.lastIndex}for(;f<a.length;)e.push(Utils.ord(a[f++]));return e}},CharEnc={IO_FORMAT:["UTF8","UTF16","UTF16LE","UTF16BE","Latin1","Windows-1251","Hex","Base64"],run:function(a,b){var c=b[0],d=b[1];return"Windows-1251"===c?(a=Utils.win1251_to_unicode(a),a=CryptoJS.enc.Utf8.parse(a)):a=Utils.format[c].parse(a),"Windows-1251"===d?(a=CryptoJS.enc.Utf8.stringify(a),Utils.unicode_to_win1251(a)):Utils.format[d].stringify(a)}},Checksum={run_fletcher16:function(a,b){for(var c=0,d=0,e=0;e<a.length;e++)c=(c+a[e])%255,d=(d+c)%255;return Utils.hex((d<<8|c)>>>0,4)},run_adler32:function(a,b){for(var c=65521,d=1,e=0,f=0;f<a.length;f++)d+=a[f],e+=d;return d%=c,e%=c,Utils.hex((e<<16|d)>>>0,8)},run_crc32:function(a,b){for(var c=window.crc_table||(window.crc_table=Checksum._gen_crc_table()),d=-1,e=0;e<a.length;e++)d=d>>>8^c[255&(d^a[e])];return Utils.hex((d^-1)>>>0)},run_tcp_ip:function(a,b){for(var c=0,d=0;d<a.length;d++)c+=d%2===0?a[d]<<8:a[d];return c=(c>>16)+(65535&c),Utils.hex(65535-c)},_gen_crc_table:function(){for(var a,b=[],c=0;c<256;c++){a=c;for(var d=0;d<8;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}},Cipher={IO_FORMAT1:["Hex","Base64","UTF8","UTF16","UTF16LE","UTF16BE","Latin1"],IO_FORMAT2:["UTF8","UTF16","UTF16LE","UTF16BE","Latin1","Hex","Base64"],IO_FORMAT3:["Hex","Base64","UTF16","UTF16LE","UTF16BE","Latin1"],IO_FORMAT4:["Latin1","UTF8","UTF16","UTF16LE","UTF16BE","Hex","Base64"],MODES:["CBC","CFB","CTR","OFB","ECB"],PADDING:["Pkcs7","Iso97971","AnsiX923","Iso10126","ZeroPadding","NoPadding"],RESULT_TYPE:["Show all","Ciphertext","Key","IV","Salt"],_enc:function(a,b,c){var d=Utils.format[c[0].option].parse(c[0].string||""),e=Utils.format[c[1].option].parse(c[1].string||""),f=Utils.format[c[2].option].parse(c[2].string||""),g=CryptoJS.mode[c[3]],h=CryptoJS.pad[c[4]],i=c[5].toLowerCase(),j=c[6];0===e.sigBytes&&(d=d.toString(CryptoJS.enc.Latin1));var k=a.encrypt(b,d,{salt:f.sigBytes>0&&f,iv:e.sigBytes>0?e:null,mode:g,padding:h}),l="";return"show all"===i?(l+="Key: "+k.key.toString(Utils.format[j]),l+="\nIV: "+k.iv.toString(Utils.format[j]),k.salt&&(l+="\nSalt: "+k.salt.toString(Utils.format[j])),l+="\n\nCiphertext: "+k.ciphertext.toString(Utils.format[j])):l=k[i].toString(Utils.format[j]),l},_dec:function(a,b,c){var d=Utils.format[c[0].option].parse(c[0].string||""),e=Utils.format[c[1].option].parse(c[1].string||""),f=Utils.format[c[2].option].parse(c[2].string||""),g=CryptoJS.mode[c[3]],h=CryptoJS.pad[c[4]],i=c[5],j=c[6];if(!b.length)return"No input";var k=Utils.format[i].parse(b);0===e.sigBytes&&(d=d.toString(CryptoJS.enc.Latin1));var l,m=a.decrypt({ciphertext:k,salt:f.sigBytes>0&&f},d,{iv:e.sigBytes>0?e:null,mode:g,padding:h});try{l=m.toString(Utils.format[j])}catch(a){l="Decrypt error: "+a.message}return l},run_aes_enc:function(a,b){return Cipher._enc(CryptoJS.AES,a,b)},run_aes_dec:function(a,b){return Cipher._dec(CryptoJS.AES,a,b)},run_des_enc:function(a,b){return Cipher._enc(CryptoJS.DES,a,b)},run_des_dec:function(a,b){return Cipher._dec(CryptoJS.DES,a,b)},run_triple_des_enc:function(a,b){return Cipher._enc(CryptoJS.TripleDES,a,b)},run_triple_des_dec:function(a,b){return Cipher._dec(CryptoJS.TripleDES,a,b)},run_rabbit_enc:function(a,b){return Cipher._enc(CryptoJS.Rabbit,a,b)},run_rabbit_dec:function(a,b){return Cipher._dec(CryptoJS.Rabbit,a,b)},BLOWFISH_MODES:["ECB","CBC","PCBC","CFB","OFB","CTR"],BLOWFISH_OUTPUT_TYPES:["Base64","Hex","String","Raw"],run_blowfish_enc:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string).toString(Utils.format.Latin1),d=b[1],e=b[2];if(0===c.length)return"Enter a key";var f=blowfish.encrypt(a,c,{outputType:1,cipherMode:Cipher.BLOWFISH_MODES.indexOf(d)}),g=CryptoJS.enc.Hex.parse(f);return g.toString(Utils.format[e])},run_blowfish_dec:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string).toString(Utils.format.Latin1),d=b[1],e=b[2];return 0===c.length?"Enter a key":(a=Utils.format[e].parse(a),blowfish.decrypt(a.toString(CryptoJS.enc.Base64),c,{outputType:0,cipherMode:Cipher.BLOWFISH_MODES.indexOf(d)}))},KDF_KEY_SIZE:256,KDF_ITERATIONS:1,run_pbkdf2:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.PBKDF2(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g]); -},run_evpkdf:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.EvpKDF(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_rc4:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=CryptoJS.RC4.encrypt(c,d);return e.ciphertext.toString(Utils.format[b[2]])},RC4DROP_BYTES:768,run_rc4drop:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=b[3],f=CryptoJS.RC4Drop.encrypt(c,d,{drop:e});return f.ciphertext.toString(Utils.format[b[2]])},run_vigenere_enc:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(c+d)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(c+d)%26].toUpperCase()):(h+=a[j],i++);return h},run_vigenere_dec:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(d-c+f.length)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(d+f.length-c)%26].toUpperCase()):(h+=a[j],i++);return h}};CryptoJS.kdf.OpenSSL.execute=function(a,b,c,d){void 0!==d&&null!==d||(d=CryptoJS.lib.WordArray.random(8));var e=CryptoJS.algo.EvpKDF.create({keySize:b+c}).compute(a,d),f=CryptoJS.lib.WordArray.create(e.words.slice(b),4*c);return e.sigBytes=4*b,CryptoJS.lib.CipherParams.create({key:e,iv:f,salt:d})};var Code={LANGUAGES:["default-code","default-markup","bash","bsh","c","cc","coffee","cpp","cs","csh","cv","cxx","cyc","htm","html","in.tag","java","javascript","js","json","m","mxml","perl","pl","pm","py","python","rb","rc","rs","ruby","rust","sh","uq.val","xhtml","xml","xsl"],LINE_NUMS:!1,run_syntax_highlight:function(a,b){var c=b[0],d=b[1];return"<code class='prettyprint'>"+prettyPrintOne(Utils.escape_html(a),c,d)+"</code>"},BEAUTIFY_INDENT:"\\t",run_xml_beautify:function(a,b){var c=b[0];return vkbeautify.xml(a,c)},run_json_beautify:function(a,b){var c=b[0];return a?vkbeautify.json(a,c):""},run_css_beautify:function(a,b){var c=b[0];return vkbeautify.css(a,c)},run_sql_beautify:function(a,b){var c=b[0];return vkbeautify.sql(a,c)},PRESERVE_COMMENTS:!1,run_xml_minify:function(a,b){var c=b[0];return vkbeautify.xmlmin(a,c)},run_json_minify:function(a,b){return a?vkbeautify.jsonmin(a):""},run_css_minify:function(a,b){var c=b[0];return vkbeautify.cssmin(a,c)},run_sql_minify:function(a,b){return vkbeautify.sqlmin(a)},run_generic_beautify:function(a,b){function c(a,b,c){return g[c]=b[0],a.substring(0,b.index)+"###preserved_token"+c+"###"+a.substring(b.index+b[0].length)}for(var d,e=a,f=0,g=[],h=/'([^'\\]|\\.)*'/g;d=h.exec(e);)e=c(e,d,f++),h.lastIndex=d.index;for(var i=/"([^"\\]|\\.)*"/g;d=i.exec(e);)e=c(e,d,f++),i.lastIndex=d.index;for(var j=/\/\/[^\n\r]*/g;d=j.exec(e);)e=c(e,d,f++),j.lastIndex=d.index;for(var k=/\/\*[\s\S]*?\*\//gm;d=k.exec(e);)e=c(e,d,f++),k.lastIndex=d.index;for(var l=/(^|\n)#[^\n\r#]+/g;d=l.exec(e);)e=c(e,d,f++),l.lastIndex=d.index;for(var m=/\/.*?[^\\]\/[gim]{0,3}/gi;d=m.exec(e);)e=c(e,d,f++),m.lastIndex=d.index;e=e.replace(/;/g,";\n"),e=e.replace(/{/g,"{\n"),e=e.replace(/}/g,"\n}\n"),e=e.replace(/\r/g,""),e=e.replace(/^\s+/g,""),e=e.replace(/\n\s+/g,"\n"),e=e.replace(/\s*$/g,""),e=e.replace(/\n{/g,"{");for(var n=0,o=0;n<e.length;){switch(e[n]){case"{":o++;break;case"\n":if(n+1>=e.length)break;"}"===e[n+1]&&o--;var p=o>=0?Array(4*o+1).join(" "):"";e=e.substring(0,n+1)+p+e.substring(n+1),o>0&&(n+=4*o)}n++}e=e.replace(/\s*([!<>=+-\/*]?)=\s*/g," $1= "),e=e.replace(/\s*<([=]?)\s*/g," <$1 "),e=e.replace(/\s*>([=]?)\s*/g," >$1 "),e=e.replace(/([^+])\+([^+=])/g,"$1 + $2"),e=e.replace(/([^-])-([^-=])/g,"$1 - $2"),e=e.replace(/([^*])\*([^*=])/g,"$1 * $2"),e=e.replace(/([^\/])\/([^\/=])/g,"$1 / $2"),e=e.replace(/\s*,\s*/g,", "),e=e.replace(/\s*{/g," {"),e=e.replace(/}\n/g,"}\n\n"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim,"$1 ($2)\n $3"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim,"$1 ($2) $3"),e=e.replace(/else\s*\n([^{])/gim,"else\n $1"),e=e.replace(/else\s+([^{])/gim,"else $1"),e=e.replace(/\s+;/g,";"),e=e.replace(/\{\s+\}/g,"{}"),e=e.replace(/\[\s+\]/g,"[]"),e=e.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi,"} $1");for(var q=/###preserved_token(\d+)###/g;d=q.exec(e);){var r=parseInt(d[1],10);e=e.substring(0,d.index)+g[r]+e.substring(d.index+d[0].length),q.lastIndex=d.index}return e}},Compress={COMPRESSION_TYPE:["Dynamic Huffman Coding","Fixed Huffman Coding","None (Store)"],INFLATE_BUFFER_TYPE:["Adaptive","Block"],COMPRESSION_METHOD:["Deflate","None (Store)"],OS:["MSDOS","Unix","Macintosh"],RAW_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.RawDeflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.RawDeflate.CompressionType.DYNAMIC,"None (Store)":Zlib.RawDeflate.CompressionType.NONE},run_raw_deflate:function(a,b){var c=new Zlib.RawDeflate(a,{compressionType:Compress.RAW_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},INFLATE_INDEX:0,INFLATE_BUFFER_SIZE:0,INFLATE_RESIZE:!1,INFLATE_VERIFY:!1,RAW_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.RawInflate.BufferType.ADAPTIVE,Block:Zlib.RawInflate.BufferType.BLOCK},run_raw_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.RawInflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.RAW_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]}),d=Array.prototype.slice.call(c.decompress());if(d.length>158&&93===d[0]&&93===d[5]){for(var e=!1,f=0;f<155;f+=5)93!==d[f]&&(e=!0);if(!e)throw"Error: Unable to inflate data"}return d},ZLIB_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.Deflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.Deflate.CompressionType.DYNAMIC,"None (Store)":Zlib.Deflate.CompressionType.NONE},run_zlib_deflate:function(a,b){var c=new Zlib.Deflate(a,{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},ZLIB_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.Inflate.BufferType.ADAPTIVE,Block:Zlib.Inflate.BufferType.BLOCK},run_zlib_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.Inflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.ZLIB_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]});return Array.prototype.slice.call(c.decompress())},GZIP_CHECKSUM:!1,run_gzip:function(a,b){var c=b[1],d=b[2],e={deflateOptions:{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[0]]},flags:{fhcrc:b[3]}};c.length&&(e.flags.fname=!0,e.filename=c),d.length&&(e.flags.fcommenct=!0,e.comment=d);var f=new Zlib.Gzip(a,e);return Array.prototype.slice.call(f.compress())},run_gunzip:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.Gunzip(a);return Array.prototype.slice.call(c.decompress())},PKZIP_FILENAME:"file.txt",ZIP_COMPRESSION_METHOD_LOOKUP:{Deflate:Zlib.Zip.CompressionMethod.DEFLATE,"None (Store)":Zlib.Zip.CompressionMethod.STORE},ZIP_OS_LOOKUP:{MSDOS:Zlib.Zip.OperatingSystem.MSDOS,Unix:Zlib.Zip.OperatingSystem.UNIX,Macintosh:Zlib.Zip.OperatingSystem.MACINTOSH},run_pkzip:function(a,b){var c=Utils.str_to_byte_array(b[2]),d={filename:Utils.str_to_byte_array(b[0]),comment:Utils.str_to_byte_array(b[1]),compressionMethod:Compress.ZIP_COMPRESSION_METHOD_LOOKUP[b[3]],os:Compress.ZIP_OS_LOOKUP[b[4]],deflateOption:{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[5]]}},e=new Zlib.Zip;return c.length&&e.setPassword(c),e.addFile(a,d),Array.prototype.slice.call(e.compress())},PKUNZIP_VERIFY:!1,run_pkunzip:function(a,b){var c={password:Utils.str_to_byte_array(b[0]),verify:b[1]},d="",e=new Zlib.Unzip(a,c),f=e.getFilenames(),g="<div style='padding: 5px;'>"+f.length+" file(s) found</div>\n";g+="<div class='panel-group' id='zip-accordion' role='tablist' aria-multiselectable='true'>",window.uzip=e;for(var h=0;h<f.length;h++)d=Utils.byte_array_to_utf8(e.decompress(f[h])),g+="<div class='panel panel-default'><div class='panel-heading' role='tab' id='heading"+h+"'><h4 class='panel-title'><a class='collapsed' role='button' data-toggle='collapse' data-parent='#zip-accordion' href='#collapse"+h+"' aria-expanded='true' aria-controls='collapse"+h+"'>"+f[h]+"<span class='pull-right'>"+d.length.toLocaleString()+" bytes</span></a></h4></div><div id='collapse"+h+"' class='panel-collapse collapse' role='tabpanel' aria-labelledby='heading"+h+"'><div class='panel-body'>"+Utils.escape_html(d)+"</div></div></div>";return g+"</div>"},run_bzip2_decompress:function(a,b){var c,d=new Uint8Array(a),e="";return c=bzip2.array(d),e=bzip2.simple(c)}},Convert={DISTANCE_UNITS:["[Metric]","Nanometres (nm)","Micrometres (\xb5m)","Millimetres (mm)","Centimetres (cm)","Metres (m)","Kilometers (km)","[/Metric]","[Imperial]","Thou (th)","Inches (in)","Feet (ft)","Yards (yd)","Chains (ch)","Furlongs (fur)","Miles (mi)","Leagues (lea)","[/Imperial]","[Maritime]","Fathoms (ftm)","Cables","Nautical miles","[/Maritime]","[Comparisons]","Cars (4m)","Buses (8.4m)","American football fields (91m)","Football pitches (105m)","[/Comparisons]","[Astronomical]","Earth-to-Moons","Earth's equators","Astronomical units (au)","Light-years (ly)","Parsecs (pc)","[/Astronomical]"],DISTANCE_FACTOR:{"Nanometres (nm)":1e-9,"Micrometres (\xb5m)":1e-6,"Millimetres (mm)":.001,"Centimetres (cm)":.01,"Metres (m)":1,"Kilometers (km)":1e3,"Thou (th)":254e-7,"Inches (in)":.0254,"Feet (ft)":.3048,"Yards (yd)":.9144,"Chains (ch)":20.1168,"Furlongs (fur)":201.168,"Miles (mi)":1609.344,"Leagues (lea)":4828.032,"Fathoms (ftm)":1.853184,Cables:185.3184,"Nautical miles":1853.184,"Cars (4m)":4,"Buses (8.4m)":8.4,"American football fields (91m)":91,"Football pitches (105m)":105,"Earth-to-Moons":38e7,"Earth's equators":40075016.686,"Astronomical units (au)":149597870700,"Light-years (ly)":9460730472580800,"Parsecs (pc)":30856776e9},run_distance:function(a,b){var c=b[0],d=b[1];return a*=Convert.DISTANCE_FACTOR[c],a/Convert.DISTANCE_FACTOR[d]},DATA_UNITS:["Bits (b)","Nibbles","Octets","Bytes (B)","[Binary bits (2^n)]","Kibibits (Kib)","Mebibits (Mib)","Gibibits (Gib)","Tebibits (Tib)","Pebibits (Pib)","Exbibits (Eib)","Zebibits (Zib)","Yobibits (Yib)","[/Binary bits (2^n)]","[Decimal bits (10^n)]","Decabits","Hectobits","Kilobits (kb)","Megabits (Mb)","Gigabits (Gb)","Terabits (Tb)","Petabits (Pb)","Exabits (Eb)","Zettabits (Zb)","Yottabits (Yb)","[/Decimal bits (10^n)]","[Binary bytes (8 x 2^n)]","Kibibytes (KiB)","Mebibytes (MiB)","Gibibytes (GiB)","Tebibytes (TiB)","Pebibytes (PiB)","Exbibytes (EiB)","Zebibytes (ZiB)","Yobibytes (YiB)","[/Binary bytes (8 x 2^n)]","[Decimal bytes (8 x 10^n)]","Kilobytes (KB)","Megabytes (MB)","Gigabytes (GB)","Terabytes (TB)","Petabytes (PB)","Exabytes (EB)","Zettabytes (ZB)","Yottabytes (YB)","[/Decimal bytes (8 x 10^n)]"],DATA_FACTOR:{"Bits (b)":1,Nibbles:4,Octets:8,"Bytes (B)":8,"Kibibits (Kib)":1024,"Mebibits (Mib)":1048576,"Gibibits (Gib)":1073741824,"Tebibits (Tib)":1099511627776,"Pebibits (Pib)":0x4000000000000,"Exbibits (Eib)":0x1000000000000000,"Zebibits (Zib)":0x400000000000000000,"Yobibits (Yib)":1.2089258196146292e24,Decabits:10,Hectobits:100,"Kilobits (Kb)":1e3,"Megabits (Mb)":1e6,"Gigabits (Gb)":1e9,"Terabits (Tb)":1e12,"Petabits (Pb)":1e15,"Exabits (Eb)":1e18,"Zettabits (Zb)":1e21,"Yottabits (Yb)":1e24,"Kibibytes (KiB)":8192,"Mebibytes (MiB)":8388608,"Gibibytes (GiB)":8589934592,"Tebibytes (TiB)":8796093022208,"Pebibytes (PiB)":9007199254740992,"Exbibytes (EiB)":0x8000000000000000,"Zebibytes (ZiB)":9.44473296573929e21,"Yobibytes (YiB)":9.671406556917033e24,"Kilobytes (KB)":8e3,"Megabytes (MB)":8e6,"Gigabytes (GB)":8e9,"Terabytes (TB)":8e12,"Petabytes (PB)":8e15,"Exabytes (EB)":8e18,"Zettabytes (ZB)":8e21,"Yottabytes (YB)":8e24},run_data_size:function(a,b){var c=b[0],d=b[1];return a*=Convert.DATA_FACTOR[c],a/Convert.DATA_FACTOR[d]},AREA_UNITS:["[Metric]","Square metre (sq m)","Square kilometre (sq km)","Centiare (ca)","Deciare (da)","Are (a)","Decare (daa)","Hectare (ha)","[/Metric]","[Imperial]","Square inch (sq in)","Square foot (sq ft)","Square yard (sq yd)","Square mile (sq mi)","Perch (sq per)","Rood (ro)","International acre (ac)","[/Imperial]","[US customary units]","US survey acre (ac)","US survey square mile (sq mi)","US survey township","[/US customary units]","[Nuclear physics]","Yoctobarn (yb)","Zeptobarn (zb)","Attobarn (ab)","Femtobarn (fb)","Picobarn (pb)","Nanobarn (nb)","Microbarn (\u03bcb)","Millibarn (mb)","Barn (b)","Kilobarn (kb)","Megabarn (Mb)","Outhouse","Shed","Planck area","[/Nuclear physics]","[Comparisons]","Washington D.C.","Isle of Wight","Wales","Texas","[/Comparisons]"],AREA_FACTOR:{"Square metre (sq m)":1,"Square kilometre (sq km)":1e6,"Centiare (ca)":1,"Deciare (da)":10,"Are (a)":100,"Decare (daa)":1e3,"Hectare (ha)":1e4,"Square inch (sq in)":64516e-8,"Square foot (sq ft)":.09290304,"Square yard (sq yd)":.83612736,"Square mile (sq mi)":2589988.110336,"Perch (sq per)":42.21,"Rood (ro)":1011,"International acre (ac)":4046.8564224,"US survey acre (ac)":4046.87261,"US survey square mile (sq mi)":2589998.470305239,"US survey township":93239944.9309886,"Yoctobarn (yb)":1e-52,"Zeptobarn (zb)":1e-49,"Attobarn (ab)":1e-46,"Femtobarn (fb)":1e-43,"Picobarn (pb)":1e-40,"Nanobarn (nb)":1e-37,"Microbarn (\u03bcb)":1e-34,"Millibarn (mb)":1e-31,"Barn (b)":1e-28,"Kilobarn (kb)":1e-25,"Megabarn (Mb)":1e-22,"Planck area":2.6e-70,Shed:1e-52,Outhouse:1e-34,"Washington D.C.":176119191.502848,"Isle of Wight":38e7,Wales:20779e6,Texas:696241e6},run_area:function(a,b){var c=b[0],d=b[1];return a*=Convert.AREA_FACTOR[c],a/Convert.AREA_FACTOR[d]},MASS_UNITS:["[Metric]","Yoctogram (yg)","Zeptogram (zg)","Attogram (ag)","Femtogram (fg)","Picogram (pg)","Nanogram (ng)","Microgram (\u03bcg)","Milligram (mg)","Centigram (cg)","Decigram (dg)","Gram (g)","Decagram (dag)","Hectogram (hg)","Kilogram (kg)","Megagram (Mg)","Tonne (t)","Gigagram (Gg)","Teragram (Tg)","Petagram (Pg)","Exagram (Eg)","Zettagram (Zg)","Yottagram (Yg)","[/Metric]","[Imperial Avoirdupois]","Grain (gr)","Dram (dr)","Ounce (oz)","Pound (lb)","Nail","Stone (st)","Quarter (gr)","Tod","US hundredweight (cwt)","Imperial hundredweight (cwt)","US ton (t)","Imperial ton (t)","[/Imperial Avoirdupois]","[Imperial Troy]","Grain (gr)","Pennyweight (dwt)","Troy dram (dr t)","Troy ounce (oz t)","Troy pound (lb t)","Mark","[/Imperial Troy]","[Archaic]","Wey","Wool wey","Suffolk wey","Wool sack","Coal sack","Load","Last","Flax or feather last","Gunpowder last","Picul","Rice last","[/Archaic]","[Comparisons]","Big Ben (14 tonnes)","Blue whale (180 tonnes)","International Space Station (417 tonnes)","Space Shuttle (2,041 tonnes)","RMS Titanic (52,000 tonnes)","Great Pyramid of Giza (6,000,000 tonnes)","Earth's oceans (1.4 yottagrams)","[/Comparisons]","[Astronomical]","A teaspoon of neutron star (5,500 million tonnes)","Lunar mass (ML)","Earth mass (M\u2295)","Jupiter mass (MJ)","Solar mass (M\u2609)","Sagittarius A* (7.5 x 10^36 kgs-ish)","Milky Way galaxy (1.2 x 10^42 kgs)","The observable universe (1.45 x 10^53 kgs)","[/Astronomical]"],MASS_FACTOR:{"Yoctogram (yg)":1e-24,"Zeptogram (zg)":1e-21,"Attogram (ag)":1e-18,"Femtogram (fg)":1e-15,"Picogram (pg)":1e-12,"Nanogram (ng)":1e-9,"Microgram (\u03bcg)":1e-6,"Milligram (mg)":.001,"Centigram (cg)":.01,"Decigram (dg)":.1,"Gram (g)":1,"Decagram (dag)":10,"Hectogram (hg)":100,"Kilogram (kg)":1e3,"Megagram (Mg)":1e6,"Tonne (t)":1e6,"Gigagram (Gg)":1e9,"Teragram (Tg)":1e12,"Petagram (Pg)":1e15,"Exagram (Eg)":1e18,"Zettagram (Zg)":1e21,"Yottagram (Yg)":1e24,"Grain (gr)":.06479891,"Dram (dr)":1.7718451953125,"Ounce (oz)":28.349523125,"Pound (lb)":453.59237,Nail:3175.14659,"Stone (st)":6350.29318,"Quarter (gr)":12700.58636,Tod:12700.58636,"US hundredweight (cwt)":45359.237,"Imperial hundredweight (cwt)":50802.34544,"US ton (t)":907184.74,"Imperial ton (t)":1016046.9088,"Pennyweight (dwt)":1.55517384,"Troy dram (dr t)":3.8879346,"Troy ounce (oz t)":31.1034768,"Troy pound (lb t)":373.2417216,Mark:248.8278144,Wey:76500,"Wool wey":101700,"Suffolk wey":161500,"Wool sack":153e3,"Coal sack":50802.34544,Load:918e3,Last:1836e3,"Flax or feather last":77e4,"Gunpowder last":109e4,Picul:60478.982,"Rice last":12e5,"Big Ben (14 tonnes)":14e6,"Blue whale (180 tonnes)":18e7,"International Space Station (417 tonnes)":417e6,"Space Shuttle (2,041 tonnes)":2041e6,"RMS Titanic (52,000 tonnes)":52e9,"Great Pyramid of Giza (6,000,000 tonnes)":6e12,"Earth's oceans (1.4 yottagrams)":1.4e24,"A teaspoon of neutron star (5,500 million tonnes)":55e14,"Lunar mass (ML)":7.342e25,"Earth mass (M\u2295)":5.97219e27,"Jupiter mass (MJ)":1.8981411476999997e30,"Solar mass (M\u2609)":1.98855e33,"Sagittarius A* (7.5 x 10^36 kgs-ish)":7.5e39,"Milky Way galaxy (1.2 x 10^42 kgs)":1.2e45,"The observable universe (1.45 x 10^53 kgs)":1.45e56},run_mass:function(a,b){var c=b[0],d=b[1];return a*=Convert.MASS_FACTOR[c],a/Convert.MASS_FACTOR[d]},SPEED_UNITS:["[Metric]","Metres per second (m/s)","Kilometres per hour (km/h)","[/Metric]","[Imperial]","Miles per hour (mph)","Knots (kn)","[/Imperial]","[Comparisons]","Human hair growth rate","Bamboo growth rate","World's fastest snail","Usain Bolt's top speed","Jet airliner cruising speed","Concorde","SR-71 Blackbird","Space Shuttle","International Space Station","[/Comparisons]","[Scientific]","Sound in standard atmosphere","Sound in water","Lunar escape velocity","Earth escape velocity","Earth's solar orbit","Solar system's Milky Way orbit","Milky Way relative to the cosmic microwave background","Solar escape velocity","Neutron star escape velocity (0.3c)","Light in a diamond (0.4136c)","Signal in an optical fibre (0.667c)","Light (c)","[/Scientific]"],SPEED_FACTOR:{"Metres per second (m/s)":1,"Kilometres per hour (km/h)":.2778,"Miles per hour (mph)":.44704,"Knots (kn)":.5144,"Human hair growth rate":4.8e-9,"Bamboo growth rate":14e-6,"World's fastest snail":.00275,"Usain Bolt's top speed":12.42,"Jet airliner cruising speed":250,Concorde:603,"SR-71 Blackbird":981,"Space Shuttle":1400,"International Space Station":7700,"Sound in standard atmosphere":340.3,"Sound in water":1500,"Lunar escape velocity":2375,"Earth escape velocity":11200,"Earth's solar orbit":29800,"Solar system's Milky Way orbit":2e5,"Milky Way relative to the cosmic microwave background":552e3,"Solar escape velocity":617700,"Neutron star escape velocity (0.3c)":1e8,"Light in a diamond (0.4136c)":124e6,"Signal in an optical fibre (0.667c)":2e8,"Light (c)":299792458},run_speed:function(a,b){var c=b[0],d=b[1];return a*=Convert.SPEED_FACTOR[c],a/Convert.SPEED_FACTOR[d]}},DateTime={UNITS:["Seconds (s)","Milliseconds (ms)","Microseconds (\u03bcs)","Nanoseconds (ns)"],run_from_unix_timestamp:function(a,b){var c,d=b[0];if(a=parseFloat(a),"Seconds (s)"===d)return c=moment.unix(a),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss")+" UTC";if("Milliseconds (ms)"===d)return c=moment(a),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";if("Microseconds (\u03bcs)"===d)return c=moment(a/1e3),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";if("Nanoseconds (ns)"===d)return c=moment(a/1e6),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";throw"Unrecognised unit"},run_to_unix_timestamp:function(a,b){var c=b[0],d=moment(a);if("Seconds (s)"===c)return d.unix();if("Milliseconds (ms)"===c)return d.valueOf();if("Microseconds (\u03bcs)"===c)return 1e3*d.valueOf();if("Nanoseconds (ns)"===c)return 1e6*d.valueOf();throw"Unrecognised unit"},DATETIME_FORMATS:[{name:"Standard date and time",value:"DD/MM/YYYY HH:mm:ss"},{name:"American-style date and time",value:"MM/DD/YYYY HH:mm:ss"},{name:"International date and time",value:"YYYY-MM-DD HH:mm:ss"},{name:"Verbose date and time",value:"dddd Do MMMM YYYY HH:mm:ss Z z"},{name:"UNIX timestamp (seconds)",value:"X"},{name:"UNIX timestamp offset (milliseconds)",value:"x"},{name:"Automatic",value:""}],INPUT_FORMAT_STRING:"DD/MM/YYYY HH:mm:ss",OUTPUT_FORMAT_STRING:"dddd Do MMMM YYYY HH:mm:ss Z z",TIMEZONES:["UTC"].concat(moment.tz.names()),run_translate_format:function(a,b){var c,d=b[1],e=b[2],f=b[3],g=b[4];try{if(c=moment.tz(a,d,e),!c||"Invalid date"===c.format())throw Error}catch(a){return"Invalid format.\n\n"+DateTime.FORMAT_EXAMPLES}return c.tz(g).format(f)},run_parse:function(a,b){var c,d=b[1],e=b[2],f="";try{if(c=moment.tz(a,d,e),!c||"Invalid date"===c.format())throw Error}catch(a){return"Invalid format.\n\n"+DateTime.FORMAT_EXAMPLES}return f+="Date: "+c.format("dddd Do MMMM YYYY")+"\nTime: "+c.format("HH:mm:ss")+"\nPeriod: "+c.format("A")+"\nTimezone: "+c.format("z")+"\nUTC offset: "+c.format("ZZ")+"\n\nDaylight Saving Time: "+c.isDST()+"\nLeap year: "+c.isLeapYear()+"\nDays in this month: "+c.daysInMonth()+"\n\nDay of year: "+c.dayOfYear()+"\nWeek number: "+c.weekYear()+"\nQuarter: "+c.quarter()},FORMAT_EXAMPLES:"Format string tokens:\n\n<table class='table table-striped table-hover table-condensed table-bordered' style='font-family: sans-serif'> <thead> <tr> <th>Category</th> <th>Token</th> <th>Output</th> </tr> </thead> <tbody> <tr> <td><b>Month</b></td> <td>M</td> <td>1 2 ... 11 12</td> </tr> <tr> <td></td> <td>Mo</td> <td>1st 2nd ... 11th 12th</td> </tr> <tr> <td></td> <td>MM</td> <td>01 02 ... 11 12</td> </tr> <tr> <td></td> <td>MMM</td> <td>Jan Feb ... Nov Dec</td> </tr> <tr> <td></td> <td>MMMM</td> <td>January February ... November December</td> </tr> <tr> <td><b>Quarter</b></td> <td>Q</td> <td>1 2 3 4</td> </tr> <tr> <td><b>Day of Month</b></td> <td>D</td> <td>1 2 ... 30 31</td> </tr> <tr> <td></td> <td>Do</td> <td>1st 2nd ... 30th 31st</td> </tr> <tr> <td></td> <td>DD</td> <td>01 02 ... 30 31</td> </tr> <tr> <td><b>Day of Year</b></td> <td>DDD</td> <td>1 2 ... 364 365</td> </tr> <tr> <td></td> <td>DDDo</td> <td>1st 2nd ... 364th 365th</td> </tr> <tr> <td></td> <td>DDDD</td> <td>001 002 ... 364 365</td> </tr> <tr> <td><b>Day of Week</b></td> <td>d</td> <td>0 1 ... 5 6</td> </tr> <tr> <td></td> <td>do</td> <td>0th 1st ... 5th 6th</td> </tr> <tr> <td></td> <td>dd</td> <td>Su Mo ... Fr Sa</td> </tr> <tr> <td></td> <td>ddd</td> <td>Sun Mon ... Fri Sat</td> </tr> <tr> <td></td> <td>dddd</td> <td>Sunday Monday ... Friday Saturday</td> </tr> <tr> <td><b>Day of Week (Locale)</b></td> <td>e</td> <td>0 1 ... 5 6</td> </tr> <tr> <td><b>Day of Week (ISO)</b></td> <td>E</td> <td>1 2 ... 6 7</td> </tr> <tr> <td><b>Week of Year</b></td> <td>w</td> <td>1 2 ... 52 53</td> </tr> <tr> <td></td> <td>wo</td> <td>1st 2nd ... 52nd 53rd</td> </tr> <tr> <td></td> <td>ww</td> <td>01 02 ... 52 53</td> </tr> <tr> <td><b>Week of Year (ISO)</b></td> <td>W</td> <td>1 2 ... 52 53</td> </tr> <tr> <td></td> <td>Wo</td> <td>1st 2nd ... 52nd 53rd</td> </tr> <tr> <td></td> <td>WW</td> <td>01 02 ... 52 53</td> </tr> <tr> <td><b>Year</b></td> <td>YY</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>YYYY</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>Week Year</b></td> <td>gg</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>gggg</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>Week Year (ISO)</b></td> <td>GG</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>GGGG</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>AM/PM</b></td> <td>A</td> <td>AM PM</td> </tr> <tr> <td></td> <td>a</td> <td>am pm</td> </tr> <tr> <td><b>Hour</b></td> <td>H</td> <td>0 1 ... 22 23</td> </tr> <tr> <td></td> <td>HH</td> <td>00 01 ... 22 23</td> </tr> <tr> <td></td> <td>h</td> <td>1 2 ... 11 12</td> </tr> <tr> <td></td> <td>hh</td> <td>01 02 ... 11 12</td> </tr> <tr> <td><b>Minute</b></td> <td>m</td> <td>0 1 ... 58 59</td> </tr> <tr> <td></td> <td>mm</td> <td>00 01 ... 58 59</td> </tr> <tr> <td><b>Second</b></td> <td>s</td> <td>0 1 ... 58 59</td> </tr> <tr> <td></td> <td>ss</td> <td>00 01 ... 58 59</td> </tr> <tr> <td><b>Fractional Second</b></td> <td>S</td> <td>0 1 ... 8 9</td> </tr> <tr> <td></td> <td>SS</td> <td>00 01 ... 98 99</td> </tr> <tr> <td></td> <td>SSS</td> <td>000 001 ... 998 999</td> </tr> <tr> <td></td> <td>SSSS ... SSSSSSSSS</td> <td>000[0..] 001[0..] ... 998[0..] 999[0..]</td> </tr> <tr> <td><b>Timezone</b></td> <td>z or zz</td> <td>EST CST ... MST PST</td> </tr> <tr> <td></td> <td>Z</td> <td>-07:00 -06:00 ... +06:00 +07:00</td> </tr> <tr> <td></td> <td>ZZ</td> <td>-0700 -0600 ... +0600 +0700</td> </tr> <tr> <td><b>Unix Timestamp</b></td> <td>X</td> <td>1360013296</td> </tr> <tr> <td><b>Unix Millisecond Timestamp</b></td> <td>x</td> <td>1360013296123</td> </tr> </tbody></table>"},Endian={DATA_FORMAT:["Hex","Raw"],WORD_LENGTH:4,PAD_INCOMPLETE_WORDS:!0,run_swap_endianness:function(a,b){var c=b[0],d=b[1],e=b[2],f=[],g=[],h=[],i=0,j=0;if(d<=0)return"Word length must be greater than 0";switch(c){case"Hex":f=Utils.from_hex(a);break;case"Raw":f=Utils.str_to_byte_array(a);break;default:f=a}for(i=0;i<f.length;i+=d){var k=f.slice(i,i+d);if(e&&k.length<d)for(j=k.length;j<d;j++)k.push(0);h.push(k)}for(i=0;i<h.length;i++)for(j=h[i].length;j--;)g.push(h[i][j]);switch(c){case"Hex":return Utils.to_hex(g);case"Raw":return Utils.byte_array_to_utf8(g);default:return g}}},Entropy={CHUNK_SIZE:1e3,run_entropy:function(a,b){var c=b[0],d="",e=Entropy._calc_entropy(a);d+="Shannon entropy: "+e+"\n<br><canvas id='chart-area'></canvas><br>\n- 0 represents no randomness (i.e. all the bytes in the data have the same value) whereas 8, the maximum, represents a completely random string.\n- Standard English text usually falls somewhere between 3.5 and 5.\n- Properly encrypted or compressed data of a reasonable length should have an entropy of over 7.5.\n\nThe following results show the entropy of chunks of the input data. Chunks with particularly high entropy could suggest encrypted or compressed sections.\n\n<br><script> var canvas = document.getElementById('chart-area'), parent_rect = canvas.parentNode.getBoundingClientRect(), entropy = "+e+", height = parent_rect.height * 0.25; canvas.width = parent_rect.width * 0.95; canvas.height = height > 150 ? 150 : height; CanvasComponents.draw_scale_bar(canvas, entropy, 8, [ { label: 'English text', min: 3.5, max: 5 },{ label: 'Encrypted/compressed', min: 7.5, max: 8 } ]); <\/script>";var f=0;if(0!==c)for(var g=0;g<a.length;g+=c)f=Entropy._calc_entropy(a.slice(g,g+c)),d+="Bytes "+g+" to "+(g+c)+": "+f+"\n";else d+="Chunk size cannot be 0.";return d},FREQ_ZEROS:!1,run_freq_distrib:function(a,b){if(!a.length)return"No data";for(var c=new Array(256),d=new Array(256),e=a.length,f=b[0],g=0;g<256;g++)c[g]=0;for(g=0;g<e;g++)c[a[g]]++;var h=0;for(g=0;g<256;g++)c[g]>0&&h++,d[g]=c[g]/e*100;var i="<canvas id='chart-area'></canvas><br>Total data length: "+e+"\nNumber of bytes represented: "+h+"\nNumber of bytes not represented: "+(256-h)+"\n\nByte Percentage\n<script> var canvas = document.getElementById('chart-area'), parent_rect = canvas.parentNode.getBoundingClientRect(), scores = "+JSON.stringify(d)+"; canvas.width = parent_rect.width * 0.95; canvas.height = parent_rect.height * 0.9; CanvasComponents.draw_bar_chart(canvas, scores, 'Byte', 'Frequency %', 16, 6); <\/script>";for(g=0;g<256;g++)(c[g]||f)&&(i+=" "+Utils.hex(g,2)+" ("+Utils.pad_right(d[g].toFixed(2).replace(".00","")+"%)",8)+Array(Math.ceil(d[g])+1).join("|")+"\n");return i},_calc_entropy:function(a){for(var b=[],c=a.unique(),d=Utils.byte_array_to_chars(a),e=0;e<c.length;e++)b.push(d.count(Utils.chr(c[e]))/a.length);var f,g=0;for(e=0;e<b.length;e++)f=b[e],g+=f*Math.log(f)/Math.log(2);return-g}},Extract={_search:function(a,b,c,d){for(var e,f="",g=0;e=b.exec(a);)c&&c.test(e[0])||(g++,f+=e[0]+"\n");return d&&(f="Total found: "+g+"\n\n"+f),f},MIN_STRING_LEN:3,DISPLAY_TOTAL:!1,run_strings:function(a,b){var c=b[0]||Extract.MIN_STRING_LEN,d=b[1],e="[A-Z\\d/\\-:.,_$%'\"()<>= !\\[\\]{}@]",f=new RegExp(e+"{"+c+",}","ig");return Extract._search(a,f,null,d)},INCLUDE_IPV4:!0,INCLUDE_IPV6:!1,REMOVE_LOCAL:!1,run_ip:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g="(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?",h="((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|(?![\\dA-F])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})",i="";if(c&&d?i=g+"|"+h:c?i=g:d&&(i=h),i){var j=new RegExp(i,"ig");if(e){var k="10\\..+",l="192\\.168\\..+",m="172\\.(?:1[6-9]|2\\d|3[01])\\..+",n="127\\..+",o=new RegExp("^(?:"+k+"|"+l+"|"+m+"|"+n+")");return Extract._search(a,j,o,f)}return Extract._search(a,j,null,f)}return""},run_email:function(a,b){var c=b[0],d=/\w[-.\w]*@[-\w]+(?:\.[-\w]+)*\.[A-Z]{2,4}/gi;return Extract._search(a,d,null,c)},run_mac:function(a,b){var c=b[0],d=/[A-F\d]{2}(?:[:-][A-F\d]{2}){5}/gi;return Extract._search(a,d,null,c)},run_urls:function(a,b){var c=b[0],d="[A-Z]+://",e="[-\\w]+(?:\\.\\w[-\\w]*)+",f=":\\d+",g="/[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]*";g+="(?:[.!,?]+[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]+)*";var h=new RegExp(d+e+"(?:"+f+")?(?:"+g+")?","ig");return Extract._search(a,h,null,c)},run_domains:function(a,b){var c=b[0],d="https?://",e="[-\\w\\.]+",f="\\.(?:com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+",g=new RegExp("(?:"+d+")?"+e+f,"ig");return Extract._search(a,g,null,c)},INCLUDE_WIN_PATH:!0,INCLUDE_UNIX_PATH:!0,run_file_paths:function(a,b){var c=b[0],d=b[1],e=b[2],f="[A-Z]:\\\\",g="[A-Z\\d][A-Z\\d\\- '_\\(\\)]{0,61}",h="[A-Z\\d]{1,6}",i=f+"(?:"+g+"\\\\?)*"+g+"(?:\\."+h+")?",j="(?:/[A-Z\\d.][A-Z\\d\\-.]{0,61})+",k="";if(c&&d?k=i+"|"+j:c?k=i:d&&(k=j),k){var l=new RegExp(k,"ig");return Extract._search(a,l,null,e)}return""},run_dates:function(a,b){var c=b[0],d="(?:19|20)\\d\\d[- /.](?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])",e="(?:0[1-9]|[12][0-9]|3[01])[- /.](?:0[1-9]|1[012])[- /.](?:19|20)\\d\\d",f="(?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])[- /.](?:19|20)\\d\\d",g=new RegExp(d+"|"+e+"|"+f,"ig");return Extract._search(a,g,null,c)},run_all_idents:function(a,b){var c="";return c+="IP addresses\n", -c+=Extract.run_ip(a,[!0,!0,!1]),c+="\nEmail addresses\n",c+=Extract.run_email(a,[]),c+="\nMAC addresses\n",c+=Extract.run_mac(a,[]),c+="\nURLs\n",c+=Extract.run_urls(a,[]),c+="\nDomain names\n",c+=Extract.run_domains(a,[]),c+="\nFile paths\n",c+=Extract.run_file_paths(a,[!0,!0]),c+="\nDates\n",c+=Extract.run_dates(a,[])}},FileType={run_detect:function(a,b){var c=FileType._magic_type(a);if(c){var d="File extension: "+c.ext+"\nMIME type: "+c.mime;return c.desc&&c.desc.length&&(d+="\nDescription: "+c.desc),d}return"Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?"},IGNORE_COMMON_BYTE_SEQUENCES:!0,run_scan_for_embedded_files:function(a,b){for(var c,d="Scanning data for 'magic bytes' which may indicate embedded files. The following results may be false positives and should not be treat as reliable. Any suffiently long file is likely to contain these magic bytes coincidentally.\n",e=b[0],f=["ico","ttf",""],g=0,h=0,i=0;i<a.length;i++)if(c=FileType._magic_type(a.slice(i))){if(e&&f.indexOf(c.ext)>-1){h++;continue}g++,d+="\nOffset "+i+" (0x"+Utils.hex(i)+"):\n File extension: "+c.ext+"\n MIME type: "+c.mime+"\n",c.desc&&c.desc.length&&(d+=" Description: "+c.desc+"\n")}return 0===g&&(d+="\nNo embedded files were found."),h>0&&(d+="\n\n"+h,d+=1===h?" file type was detected that has a common byte sequence. This is likely to be a false positive.":" file types were detected that have common byte sequences. These are likely to be false positives.",d+=" Run this operation with the 'Ignore common byte sequences' option unchecked to see details."),d},_magic_type:function(a){return a&&a.length>1?255===a[0]&&216===a[1]&&255===a[2]?{ext:"jpg",mime:"image/jpeg"}:137===a[0]&&80===a[1]&&78===a[2]&&71===a[3]?{ext:"png",mime:"image/png"}:71===a[0]&&73===a[1]&&70===a[2]?{ext:"gif",mime:"image/gif"}:87===a[8]&&69===a[9]&&66===a[10]&&80===a[11]?{ext:"webp",mime:"image/webp"}:(73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3])&&67===a[8]&&82===a[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3]?{ext:"tif",mime:"image/tiff"}:66===a[0]&&77===a[1]?{ext:"bmp",mime:"image/bmp"}:73===a[0]&&73===a[1]&&188===a[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===a[0]&&66===a[1]&&80===a[2]&&83===a[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===a[0]&&75===a[1]&&3===a[2]&&4===a[3]&&109===a[30]&&105===a[31]&&109===a[32]&&101===a[33]&&116===a[34]&&121===a[35]&&112===a[36]&&101===a[37]&&97===a[38]&&112===a[39]&&112===a[40]&&108===a[41]&&105===a[42]&&99===a[43]&&97===a[44]&&116===a[45]&&105===a[46]&&111===a[47]&&110===a[48]&&47===a[49]&&101===a[50]&&112===a[51]&&117===a[52]&&98===a[53]&&43===a[54]&&122===a[55]&&105===a[56]&&112===a[57]?{ext:"epub",mime:"application/epub+zip"}:80!==a[0]||75!==a[1]||3!==a[2]&&5!==a[2]&&7!==a[2]||4!==a[3]&&6!==a[3]&&8!==a[3]?117===a[257]&&115===a[258]&&116===a[259]&&97===a[260]&&114===a[261]?{ext:"tar",mime:"application/x-tar"}:82!==a[0]||97!==a[1]||114!==a[2]||33!==a[3]||26!==a[4]||7!==a[5]||0!==a[6]&&1!==a[6]?31===a[0]&&139===a[1]&&8===a[2]?{ext:"gz",mime:"application/gzip"}:66===a[0]&&90===a[1]&&104===a[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===a[0]&&122===a[1]&&188===a[2]&&175===a[3]&&39===a[4]&&28===a[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===a[0]&&1===a[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===a[0]&&0===a[1]&&0===a[2]&&(24===a[3]||32===a[3])&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]||51===a[0]&&103===a[1]&&112===a[2]&&53===a[3]||0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&109===a[8]&&112===a[9]&&52===a[10]&&50===a[11]&&109===a[16]&&112===a[17]&&52===a[18]&&49===a[19]&&109===a[20]&&112===a[21]&&52===a[22]&&50===a[23]&&105===a[24]&&115===a[25]&&111===a[26]&&109===a[27]?{ext:"mp4",mime:"video/mp4"}:0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&86===a[10]?{ext:"m4v",mime:"video/x-m4v"}:77===a[0]&&84===a[1]&&104===a[2]&&100===a[3]?{ext:"mid",mime:"audio/midi"}:109===a[31]&&97===a[32]&&116===a[33]&&114===a[34]&&111===a[35]&&115===a[36]&&107===a[37]&&97===a[38]?{ext:"mkv",mime:"video/x-matroska"}:26===a[0]&&69===a[1]&&223===a[2]&&163===a[3]?{ext:"webm",mime:"video/webm"}:0===a[0]&&0===a[1]&&0===a[2]&&20===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]?{ext:"mov",mime:"video/quicktime"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&65===a[8]&&86===a[9]&&73===a[10]?{ext:"avi",mime:"video/x-msvideo"}:48===a[0]&&38===a[1]&&178===a[2]&&117===a[3]&&142===a[4]&&102===a[5]&&207===a[6]&&17===a[7]&&166===a[8]&&217===a[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===a[0]&&0===a[1]&&1===a[2]&&"b"===a[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===a[0]&&68===a[1]&&51===a[2]||255===a[0]&&251===a[1]?{ext:"mp3",mime:"audio/mpeg"}:102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&65===a[10]||77===a[0]&&52===a[1]&&65===a[2]&&32===a[3]?{ext:"m4a",mime:"audio/m4a"}:79===a[0]&&103===a[1]&&103===a[2]&&83===a[3]?{ext:"ogg",mime:"audio/ogg"}:102===a[0]&&76===a[1]&&97===a[2]&&67===a[3]?{ext:"flac",mime:"audio/x-flac"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&87===a[8]&&65===a[9]&&86===a[10]&&69===a[11]?{ext:"wav",mime:"audio/x-wav"}:35===a[0]&&33===a[1]&&65===a[2]&&77===a[3]&&82===a[4]&&10===a[5]?{ext:"amr",mime:"audio/amr"}:37===a[0]&&80===a[1]&&68===a[2]&&70===a[3]?{ext:"pdf",mime:"application/pdf"}:77===a[0]&&90===a[1]?{ext:"exe",mime:"application/x-msdownload"}:67!==a[0]&&70!==a[0]||87!==a[1]||83!==a[2]?123===a[0]&&92===a[1]&&114===a[2]&&116===a[3]&&102===a[4]?{ext:"rtf",mime:"application/rtf"}:119===a[0]&&79===a[1]&&70===a[2]&&70===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff",mime:"application/font-woff"}:119===a[0]&&79===a[1]&&70===a[2]&&50===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff2",mime:"application/font-woff"}:76===a[34]&&80===a[35]&&(2===a[8]&&0===a[9]&&1===a[10]||1===a[8]&&0===a[9]&&0===a[10]||2===a[8]&&0===a[9]&&2===a[10])?{ext:"eot",mime:"application/octet-stream"}:0===a[0]&&1===a[1]&&0===a[2]&&0===a[3]&&0===a[4]?{ext:"ttf",mime:"application/font-sfnt"}:79===a[0]&&84===a[1]&&84===a[2]&&79===a[3]&&0===a[4]?{ext:"otf",mime:"application/font-sfnt"}:0===a[0]&&0===a[1]&&1===a[2]&&0===a[3]?{ext:"ico",mime:"image/x-icon"}:70===a[0]&&76===a[1]&&86===a[2]&&1===a[3]?{ext:"flv",mime:"video/x-flv"}:37===a[0]&&33===a[1]?{ext:"ps",mime:"application/postscript"}:253===a[0]&&55===a[1]&&122===a[2]&&88===a[3]&&90===a[4]&&0===a[5]?{ext:"xz",mime:"application/x-xz"}:83===a[0]&&81===a[1]&&76===a[2]&&105===a[3]?{ext:"sqlite",mime:"application/x-sqlite3"}:31===a[0]&&157===a[1]||31===a[0]&&160===a[1]?{ext:"z, tar.z",mime:"application/x-gtar"}:127===a[0]&&69===a[1]&&76===a[2]&&70===a[3]?{ext:"none, axf, bin, elf, o, prx, puff, so",mime:"application/x-executable",desc:"Executable and Linkable Format file. No standard file extension."}:202===a[0]&&254===a[1]&&186===a[2]&&190===a[3]?{ext:"class",mime:"application/java-vm"}:239===a[0]&&187===a[1]&&191===a[2]?{ext:"txt",mime:"text/plain",desc:"UTF-8 encoded Unicode byte order mark detected, commonly but not exclusively seen in text files."}:255===a[0]&&254===a[1]&&0===a[2]&&0===a[3]?{ext:"",mime:"",desc:"Little-endian UTF-32 encoded Unicode byte order mark detected."}:255===a[0]&&254===a[1]?{ext:"",mime:"",desc:"Little-endian UTF-16 encoded Unicode byte order mark detected."}:67===a[32769]&&68===a[32770]&&48===a[32771]&&48===a[32772]&&49===a[32773]||67===a[34817]&&68===a[34818]&&48===a[34819]&&48===a[34820]&&49===a[34821]||67===a[36865]&&68===a[36866]&&48===a[36867]&&48===a[36868]&&49===a[36869]?{ext:"iso",mime:"application/octet-stream",desc:"ISO 9660 CD/DVD image file"}:208===a[0]&&207===a[1]&&17===a[2]&&224===a[3]&&161===a[4]&&177===a[5]&&26===a[6]&&225===a[7]?{ext:"doc, xls, ppt",mime:"application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint",desc:"Microsoft Office documents"}:100===a[0]&&101===a[1]&&120===a[2]&&10===a[3]&&48===a[4]&&51===a[5]&&53===a[6]&&0===a[7]?{ext:"dex",mime:"application/octet-stream",desc:"Dalvik Executable (Android)"}:75===a[0]&&68===a[1]&&77===a[2]?{ext:"vmdk",mime:"application/vmdk, application/x-virtualbox-vmdk"}:67===a[0]&&114===a[1]&&50===a[2]&&52===a[3]?{ext:"crx",mime:"application/crx",desc:"Google Chrome extension or packaged app"}:null:{ext:"swf",mime:"application/x-shockwave-flash"}:{ext:"rar",mime:"application/x-rar-compressed"}:{ext:"zip",mime:"application/zip"}:null}},HTML={CONVERT_ALL:!1,CONVERT_OPTIONS:["Named entities where possible","Numeric entities","Hex entities"],run_to_entity:function(a,b){for(var c=b[0],d="Numeric entities"===b[1],e="Hex entities"===b[1],f=Utils.str_to_charcode(a),g="",h=0;h<f.length;h++)g+=c&&d?"&#"+f[h]+";":c&&e?"&#x"+Utils.hex(f[h])+";":c?HTML._byte_to_entity[f[h]]||"&#"+f[h]+";":d?f[h]>255||HTML._byte_to_entity.hasOwnProperty(f[h])?"&#"+f[h]+";":Utils.chr(f[h]):e?f[h]>255||HTML._byte_to_entity.hasOwnProperty(f[h])?"&#x"+Utils.hex(f[h])+";":Utils.chr(f[h]):HTML._byte_to_entity[f[h]]||(f[h]>255?"&#"+f[h]+";":Utils.chr(f[h]));return g},run_from_entity:function(a,b){for(var c,d=/&(#?x?[a-zA-Z0-9]{1,8});/g,e="",f=0;c=d.exec(a);){for(;f<c.index;)e+=a[f++];var g=HTML._entity_to_byte[c[1]];if(g)e+=Utils.chr(g);else if(!g&&"#"===c[1][0]&&c[1].length>1&&/^#\d{1,5}$/.test(c[1])){var h=c[1].slice(1,c[1].length);e+=Utils.chr(parseInt(h,10))}else if(!g&&"#"===c[1][0]&&c[1].length>3&&/^#x[\dA-F]{2,8}$/i.test(c[1])){var i=c[1].slice(2,c[1].length);e+=Utils.chr(parseInt(i,16))}else for(;f<d.lastIndex;)e+=a[f++];f=d.lastIndex}for(;f<a.length;)e+=a[f++];return e},REMOVE_INDENTATION:!0,REMOVE_LINE_BREAKS:!0,run_strip_tags:function(a,b){var c=b[0],d=b[1];return a=Utils.strip_html_tags(a),c&&(a=a.replace(/\n[ \f\t]+/g,"\n")),d&&(a=a.replace(/^\s*\n/,"").replace(/(\n\s*){2,}/g,"\n")),a},run_parse_colour_code:function(a,b){var c=null,d=0,e=0,f=0,g=1;if(c=a.match(/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i))d=parseInt(c[1],16),e=parseInt(c[2],16),f=parseInt(c[3],16);else if(c=a.match(/rgba?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)(?:,\s?(\d(?:\.\d+)?))?\)/i))d=parseFloat(c[1]),e=parseFloat(c[2]),f=parseFloat(c[3]),g=c[4]?parseFloat(c[4]):1;else if(c=a.match(/hsla?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)%,\s?(\d{1,3}(?:\.\d+)?)%(?:,\s?(\d(?:\.\d+)?))?\)/i)){var h=parseFloat(c[1])/360,i=parseFloat(c[2])/100,j=parseFloat(c[3])/100,k=HTML._hsl_to_rgb(h,i,j);d=k[0],e=k[1],f=k[2],g=c[4]?parseFloat(c[4]):1}else if(c=a.match(/cmyk\((\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?)\)/i)){var l=parseFloat(c[1]),m=parseFloat(c[2]),n=parseFloat(c[3]),o=parseFloat(c[4]);d=Math.round(255*(1-l)*(1-o)),e=Math.round(255*(1-m)*(1-o)),f=Math.round(255*(1-n)*(1-o))}var p=HTML._rgb_to_hsl(d,e,f),q=Math.round(360*p[0]),r=Math.round(100*p[1]),s=Math.round(100*p[2]),t=1-Math.max(d/255,e/255,f/255),u=(1-d/255-t)/(1-t),c=(1-e/255-t)/(1-t),v=(1-f/255-t)/(1-t);u=isNaN(u)?"0":u.toFixed(2),c=isNaN(c)?"0":c.toFixed(2),v=isNaN(v)?"0":v.toFixed(2),t=t.toFixed(2);var w="#"+Utils.pad_left(Math.round(d).toString(16),2)+Utils.pad_left(Math.round(e).toString(16),2)+Utils.pad_left(Math.round(f).toString(16),2),x="rgb("+d+", "+e+", "+f+")",y="rgba("+d+", "+e+", "+f+", "+g+")",z="hsl("+q+", "+r+"%, "+s+"%)",A="hsla("+q+", "+r+"%, "+s+"%, "+g+")",B="cmyk("+u+", "+c+", "+v+", "+t+")";return"<div id='colorpicker' style='display: inline-block'></div>Hex: "+w+"\nRGB: "+x+"\nRGBA: "+y+"\nHSL: "+z+"\nHSLA: "+A+"\nCMYK: "+B+"<script> $('#colorpicker').colorpicker({ format: 'rgba', color: '"+y+"', container: true, inline: true, }).on('changeColor', function(e) { var color = e.color.toRGB(); document.getElementById('input-text').value = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + color.a + ')'; window.app.auto_bake(); }); <\/script>"},_hsl_to_rgb:function(a,b,c){var d,e,f;if(0===b)d=e=f=c;else{var g=function(a,b,c){return c<0&&(c+=1),c>1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},h=c<.5?c*(1+b):c+b-c*b,i=2*c-h;d=g(i,h,a+1/3),e=g(i,h,a),f=g(i,h,a-1/3)}return[Math.round(255*d),Math.round(255*e),Math.round(255*f)]},_rgb_to_hsl:function(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f===g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(b<c?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return[d,e,h]},_byte_to_entity:{34:""",38:"&",39:"'",60:"<",62:">",160:" ",161:"¡",162:"¢",163:"£",164:"¤",165:"¥",166:"¦",167:"§",168:"¨",169:"©",170:"ª",171:"«",172:"¬",173:"­",174:"®",175:"¯",176:"°",177:"±",178:"²",179:"³",180:"´",181:"µ",182:"¶",183:"·",184:"¸",185:"¹",186:"º",187:"»",188:"¼",189:"½",190:"¾",191:"¿",192:"À",193:"Á",194:"Â",195:"Ã",196:"Ä",197:"Å",198:"Æ",199:"Ç",200:"È",201:"É",202:"Ê",203:"Ë",204:"Ì",205:"Í",206:"Î",207:"Ï",208:"Ð",209:"Ñ",210:"Ò",211:"Ó",212:"Ô",213:"Õ",214:"Ö",215:"×",216:"Ø",217:"Ù",218:"Ú",219:"Û",220:"Ü",221:"Ý",222:"Þ",223:"ß",224:"à",225:"á",226:"â",227:"ã",228:"ä",229:"å",230:"æ",231:"ç",232:"è",233:"é",234:"ê",235:"ë",236:"ì",237:"í",238:"î",239:"ï",240:"ð",241:"ñ",242:"ò",243:"ó",244:"ô",245:"õ",246:"ö",247:"÷",248:"ø",249:"ù",250:"ú",251:"û",252:"ü",253:"ý",254:"þ",255:"ÿ",338:"Œ",339:"œ",352:"Š",353:"š",376:"Ÿ",402:"ƒ",710:"ˆ",732:"˜",913:"Α",914:"Β",915:"Γ",916:"Δ",917:"Ε",918:"Ζ",919:"Η",920:"Θ",921:"Ι",922:"Κ",923:"Λ",924:"Μ",925:"Ν",926:"Ξ",927:"Ο",928:"Π",929:"Ρ",931:"Σ",932:"Τ",933:"Υ",934:"Φ",935:"Χ",936:"Ψ",937:"Ω",945:"α",946:"β",947:"γ",948:"δ",949:"ε",950:"ζ",951:"η",952:"θ",953:"ι",954:"κ",955:"λ",956:"μ",957:"ν",958:"ξ",959:"ο",960:"π",961:"ρ",962:"ς",963:"σ",964:"τ",965:"υ",966:"φ",967:"χ",968:"ψ",969:"ω",977:"ϑ",978:"ϒ",982:"ϖ",8194:" ",8195:" ",8201:" ",8204:"‌",8205:"‍",8206:"‎",8207:"‏",8211:"–",8212:"—",8216:"‘",8217:"’",8218:"‚",8220:"“",8221:"”",8222:"„",8224:"†",8225:"‡",8226:"•",8230:"…",8240:"‰",8242:"′",8243:"″",8249:"‹",8250:"›",8254:"‾",8260:"⁄",8364:"€",8465:"ℑ",8472:"℘",8476:"ℜ",8482:"™",8501:"ℵ",8592:"←",8593:"↑",8594:"→",8595:"↓",8596:"↔",8629:"↵",8656:"⇐",8657:"⇑",8658:"⇒",8659:"⇓",8660:"⇔",8704:"∀",8706:"∂",8707:"∃",8709:"∅",8711:"∇",8712:"∈",8713:"∉",8715:"∋",8719:"∏",8721:"∑",8722:"−",8727:"∗",8730:"√",8733:"∝",8734:"∞",8736:"∠",8743:"∧",8744:"∨",8745:"∩",8746:"∪",8747:"∫",8756:"∴",8764:"∼",8773:"≅",8776:"≈",8800:"≠",8801:"≡",8804:"≤",8805:"≥",8834:"⊂",8835:"⊃",8836:"⊄",8838:"⊆",8839:"⊇",8853:"⊕",8855:"⊗",8869:"⊥",8901:"⋅",8942:"⋮",8968:"⌈",8969:"⌉",8970:"⌊",8971:"⌋",9001:"⟨",9002:"⟩",9674:"◊",9824:"♠",9827:"♣",9829:"♥",9830:"♦"},_entity_to_byte:{quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,vellip:8942,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830}},HTTP={run_strip_headers:function(a,b){var c=a.indexOf("\r\n\r\n")+(c<0)?a.indexOf("\n\n")+2:c+4;return c<2?a:a.slice(c,a.length)},run_parse_user_agent:function(a,b){var c=UAS_parser.parse(a);return"Type: "+c.type+"\nFamily: "+c.uaFamily+"\nName: "+c.uaName+"\nURL: "+c.uaUrl+"\nCompany: "+c.uaCompany+"\nCompany URL: "+c.uaCompanyUrl+"\n\nOS Family: "+c.osFamily+"\nOS Name: "+c.osName+"\nOS URL: "+c.osUrl+"\nOS Company: "+c.osCompany+"\nOS Company URL: "+c.osCompanyUrl+"\nDevice Type: "+c.deviceType+"\n"}},Hash={run_md5:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.MD5(a).toString(CryptoJS.enc.Hex)},run_sha1:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA1(a).toString(CryptoJS.enc.Hex)},run_sha224:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA224(a).toString(CryptoJS.enc.Hex)},run_sha256:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA256(a).toString(CryptoJS.enc.Hex)},run_sha384:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA384(a).toString(CryptoJS.enc.Hex)},run_sha512:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA512(a).toString(CryptoJS.enc.Hex)},SHA3_LENGTH:["512","384","256","224"],run_sha3:function(a,b){a=CryptoJS.enc.Latin1.parse(a);var c=b[0],d={outputLength:parseInt(c,10)};return CryptoJS.SHA3(a,d).toString(CryptoJS.enc.Hex)},run_ripemd160:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.RIPEMD160(a).toString(CryptoJS.enc.Hex)},HMAC_FUNCTIONS:["MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160"],run_hmac:function(a,b){var c=b[1];a=CryptoJS.enc.Latin1.parse(a);var d={MD5:CryptoJS.HmacMD5(a,b[0]),SHA1:CryptoJS.HmacSHA1(a,b[0]),SHA224:CryptoJS.HmacSHA224(a,b[0]),SHA256:CryptoJS.HmacSHA256(a,b[0]),SHA384:CryptoJS.HmacSHA384(a,b[0]),SHA512:CryptoJS.HmacSHA512(a,b[0]),SHA3:CryptoJS.HmacSHA3(a,b[0]),"RIPEMD-160":CryptoJS.HmacRIPEMD160(a,b[0])};return d[c].toString(CryptoJS.enc.Hex)},run_all:function(a,b){var c=Utils.str_to_byte_array(a),d="MD5: "+Hash.run_md5(a,[])+"\nSHA1: "+Hash.run_sha1(a,[])+"\nSHA2 224: "+Hash.run_sha224(a,[])+"\nSHA2 256: "+Hash.run_sha256(a,[])+"\nSHA2 384: "+Hash.run_sha384(a,[])+"\nSHA2 512: "+Hash.run_sha512(a,[])+"\nSHA3 224: "+Hash.run_sha3(a,["224"])+"\nSHA3 256: "+Hash.run_sha3(a,["256"])+"\nSHA3 384: "+Hash.run_sha3(a,["384"])+"\nSHA3 512: "+Hash.run_sha3(a,["512"])+"\nRIPEMD-160: "+Hash.run_ripemd160(a,[])+"\n\nChecksums:\nFletcher-16: "+Checksum.run_fletcher16(c,[])+"\nAdler-32: "+Checksum.run_adler32(c,[])+"\nCRC-32: "+Checksum.run_crc32(c,[]);return d},run_analyse:function(a,b){a=a.replace(/\s/g,"");var c="",d=a.length/2,e=8*d,f=[];if(!/^[a-f0-9]+$/i.test(a))return"Invalid hash";switch(c+="Hash length: "+a.length+"\nByte length: "+d+"\nBit length: "+e+"\n\nBased on the length, this hash could have been generated by one of the following hashing functions:\n",e){case 4:f=["Fletcher-4","Luhn algorithm","Verhoeff algorithm"];break;case 8:f=["Fletcher-8"];break;case 16:f=["BSD checksum","CRC-16","SYSV checksum","Fletcher-16"];break;case 32:f=["CRC-32","Fletcher-32","Adler-32"];break;case 64:f=["CRC-64","RIPEMD-64","SipHash"];break;case 128:f=["MD5","MD4","MD2","HAVAL-128","RIPEMD-128","Snefru","Tiger-128"];break;case 160:f=["SHA-1","SHA-0","FSB-160","HAS-160","HAVAL-160","RIPEMD-160","Tiger-160"];break;case 192:f=["Tiger","HAVAL-192"];break;case 224:f=["SHA-224","SHA3-224","ECOH-224","FSB-224","HAVAL-224"];break;case 256:f=["SHA-256","SHA3-256","BLAKE-256","ECOH-256","FSB-256","GOST","Gr\xf8stl-256","HAVAL-256","PANAMA","RIPEMD-256","Snefru"];break;case 320:f=["RIPEMD-320"];break;case 384:f=["SHA-384","SHA3-384","ECOH-384","FSB-384"];break;case 512:f=["SHA-512","SHA3-512","BLAKE-512","ECOH-512","FSB-512","Gr\xf8stl-512","JH","MD6","Spectral Hash","SWIFFT","Whirlpool"];break;case 1024:f=["Fowler-Noll-Vo"];break;default:f=["Unknown"]}return c+f.join("\n")}},Hexdump={WIDTH:16,UPPER_CASE:!1,INCLUDE_FINAL_LENGTH:!1,run_to:function(a,b){for(var c=b[0]||Hexdump.WIDTH,d=b[1],e=b[2],f="",g=2,h=0;h<a.length;h+=c){for(var i=a.slice(h,h+c),j="",k=0;k<i.length;k++)j+=Utils.hex(i[k],g)+" ";var l=Utils.hex(h,8);d&&(j=j.toUpperCase(),l=l.toUpperCase()),f+=l+" "+Utils.pad_right(j,c*(g+1))+" |"+Utils.pad_right(Utils.printable(Utils.byte_array_to_chars(i)),i.length)+"|\n",e&&h+i.length===a.length&&(f+=Utils.hex(h+i.length,8)+"\n")}return f.slice(0,-1)},run_from:function(a,b){for(var c,d,e=[],f=/^\s*(?:[\dA-F]{4,16}:?)?\s*((?:[\dA-F]{2}\s){1,8}(?:\s|[\dA-F]{2}-)(?:[\dA-F]{2}\s){1,8}|(?:[\dA-F]{2}\s|[\dA-F]{4}\s)+)/gim;c=f.exec(a);){d=Utils.from_hex(c[1].replace(/-/g," "));for(var g=0;g<d.length;g++)e.push(d[g])}var h=a.indexOf("\n"),i=(h-13)/4;return Math.floor(i)===i&&a.indexOf("\r")===-1&&e.indexOf(13)===-1||(app.options.attempt_highlight=!1),e},highlight_to:function(a,b){var c=b[0]||16,d=14+4*c,e=Math.floor(a[0].start/c),f=a[0].start%c,g=0,h=0;a[0].start=e*d+10+3*f,e=Math.floor(a[0].end/c),f=a[0].end%c,0===f&&(e--,f=c),a[0].end=e*d+10+3*f-1;var i=Math.floor(a[0].start/d),j=Math.floor(a[0].end/d);if(i===j)a.push(a[0]);else for(g=a[0].start,h=(i+1)*d-c-5,a.push({start:g,end:h});h<a[0].end;)i++,g=i*d+10,h=(i+1)*d-c-5,h>a[0].end&&(h=a[0].end),a.push({start:g,end:h});var k=a.length,l=0;g=0,h=0;for(var m=1;m<k;m++)l=Math.floor(a[m].start/d),g=(a[m].start-l*d-10)/3+(d-c-2)+l*d,h=(a[m].end+1-l*d-10)/3+(d-c-2)+l*d,a.push({start:g,end:h});return a},highlight_from:function(a,b){var c=b[0]||16,d=14+4*c,e=Math.floor(a[0].start/d),f=a[0].start%d;return f<10?a[0].start=e*c:f>10+3*c?a[0].start=(e+1)*c:a[0].start=e*c+Math.floor((f-10)/3),e=Math.floor(a[0].end/d),f=a[0].end%d,f<10?a[0].end=e*c:f>10+3*c?a[0].end=(e+1)*c:a[0].end=e*c+Math.ceil((f-10)/3),a}},IP={INCLUDE_NETWORK_INFO:!0,ENUMERATE_ADDRESSES:!0,ALLOW_LARGE_LIST:!1,run_parse_ip_range:function(a,b){var c,d=b[0],e=b[1],f=b[2],g=/^\s*((?:\d{1,3}\.){3}\d{1,3})\/(\d\d?)\s*$/,h=/^\s*((?:\d{1,3}\.){3}\d{1,3})\s*-\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/,i=/^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\/(\d\d?\d?)\s*$/i,j=/^\s*(((?=.*::)(?!.*::[^-]+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*-\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\17)::|:\b|(?![\dA-F])))|(?!\16\17)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i;return(c=g.exec(a))?IP._ipv4_cidr_range(c,d,e,f):(c=h.exec(a))?IP._ipv4_hyphenated_range(c,d,e,f):(c=i.exec(a))?IP._ipv6_cidr_range(c,d):(c=j.exec(a))?IP._ipv6_hyphenated_range(c,d):"Invalid input.\n\nEnter either a CIDR range (e.g. 10.0.0.0/24) or a hyphenated range (e.g. 10.0.0.0 - 10.0.1.0). IPv6 also supported."},IPv4_REGEX:/^\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/,IPv6_REGEX:/^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i,run_parse_ipv6:function(a,b){var c,d="";if(!(c=IP.IPv6_REGEX.exec(a)))return"Invalid IPv6 address";var e=IP._str_to_ipv6(c[1]),f=IP._ipv6_to_str(e),g=IP._ipv6_to_str(e,!0);if(d+="Longhand: "+f+"\nShorthand: "+g+"\n","::"===g)d+="\nUnspecified address corresponding to 0.0.0.0/32 in IPv4.",d+="\nUnspecified address range: ::/128";else if("::1"===g)d+="\nLoopback address to the local host corresponding to 127.0.0.1/8 in IPv4.",d+="\nLoopback addresses range: ::1/128";else if(0===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&65535===e[5])d+="\nIPv4-mapped IPv6 address detected. IPv6 clients will be handled natively by default, and IPv4 clients appear as IPv6 clients at their IPv4-mapped IPv6 address.",d+="\nMapped IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\nIPv4-mapped IPv6 addresses range: ::ffff:0:0/96";else if(0===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&65535===e[4]&&0===e[5])d+="\nIPv4-translated address detected. Used by Stateless IP/ICMP Translation (SIIT). See RFCs 6145 and 6052 for more details.",d+="\nTranslated IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\nIPv4-translated addresses range: ::ffff:0:0:0/96";else if(256===e[0])d+="\nDiscard prefix detected. This is used when forwarding traffic to a sinkhole router to mitigate the effects of a denial-of-service attack. See RFC 6666 for more details.",d+="\nDiscard range: 100::/64";else if(100===e[0]&&65435===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&0===e[5])d+="\n'Well-Known' prefix for IPv4/IPv6 translation detected. See RFC 6052 for more details.",d+="\nTranslated IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\n'Well-Known prefix range: 64:ff9b::/96";else if(8193===e[0]&&0===e[1]){d+="\nTeredo tunneling IPv6 address detected\n";var h=(e[2]<<16)+e[3],i=65535&~e[5],j=~((e[6]<<16)+e[7]),k=e[4]>>>15&1,l=e[4]>>>14&1,m=e[4]>>>10&15,n=e[4]>>>8&3,o=255&e[4];d+="\nServer IPv4 address: "+IP._ipv4_to_str(h)+"\nClient IPv4 address: "+IP._ipv4_to_str(j)+"\nClient UDP port: "+i+"\nFlags:\n\tCone: "+k,d+=k?" (Client is behind a cone NAT)":" (Client is not behind a cone NAT)",d+="\n\tR: "+l,l&&(d+=" Error: This flag should be set to 0. See RFC 5991 and RFC 4380."),d+="\n\tRandom1: "+Utils.bin(m,4)+"\n\tUG: "+Utils.bin(n,2),n&&(d+=" Error: This flag should be set to 00. See RFC 4380."),d+="\n\tRandom2: "+Utils.bin(o,8),d+=!l&&!n&&m&&o?"\n\nThis is a valid Teredo address which complies with RFC 4380 and RFC 5991.":l||n?"\n\nThis is an invalid Teredo address.":"\n\nThis is a valid Teredo address which complies with RFC 4380, however it does not comply with RFC 5991 (Teredo Security Updates) as there are no randomised bits in the flag field.",d+="\n\nTeredo prefix range: 2001::/32"}else if(8193===e[0]&&2===e[1]&&0===e[2])d+="\nAssigned to the Benchmarking Methodology Working Group (BMWG) for benchmarking IPv6. Corresponds to 198.18.0.0/15 for benchmarking IPv4. See RFC 5180 for more details.",d+="\nBMWG range: 2001:2::/48";else if(8193===e[0]&&e[1]>=16&&e[1]<=31)d+="\nDeprecated, previously ORCHIDv1 (Overlay Routable Cryptographic Hash Identifiers).\nORCHIDv1 range: 2001:10::/28\nORCHIDv2 now uses 2001:20::/28.";else if(8193===e[0]&&e[1]>=32&&e[1]<=47)d+="\nORCHIDv2 (Overlay Routable Cryptographic Hash Identifiers).\nThese are non-routed IPv6 addresses used for Cryptographic Hash Identifiers.",d+="\nORCHIDv2 range: 2001:20::/28";else if(8193===e[0]&&3512===e[1])d+="\nThis is a documentation IPv6 address. This range should be used whenever an example IPv6 address is given or to model networking scenarios. Corresponds to 192.0.2.0/24, 198.51.100.0/24, and 203.0.113.0/24 in IPv4.",d+="\nDocumentation range: 2001:db8::/32";else if(8194===e[0]){d+="\n6to4 transition IPv6 address detected. See RFC 3056 for more details.\n6to4 prefix range: 2002::/16";var p=IP._ipv4_to_str((e[1]<<16)+e[2]),q=e[3],r=e[4].toString(16)+e[5].toString(16)+e[6].toString(16)+e[7].toString(16),s=new BigInteger(r,16);d+="\n\nEncapsulated IPv4 address: "+p+"\nSLA ID: "+q+"\nInterface ID (base 16): "+r+"\nInterface ID (base 10): "+s.toString()}else e[0]>=64512&&e[0]<=65023?(d+="\nThis is a unique local address comparable to the IPv4 private addresses 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. See RFC 4193 for more details.",d+="\nUnique local addresses range: fc00::/7"):e[0]>=65152&&e[0]<=65215?(d+="\nThis is a link-local address comparable to the auto-configuration addresses 169.254.0.0/16 in IPv4.",d+="\nLink-local addresses range: fe80::/10"):e[0]>=65280&&(d+="\nThis is a reserved multicast address.",d+="\nMulticast addresses range: ff00::/8");return d},IP_FORMAT_LIST:["Dotted Decimal","Decimal","Hex"],run_change_ip_format:function(a,b){for(var c=b[0],d=b[1],e=a.split("\n"),f="",g=0,h=0;h<e.length;h++)if(""!==e[h]){var i=[];if(c!==d){switch(c){case"Dotted Decimal":var j=e[h].split(".");for(g=0;g<j.length;g++)i.push(parseInt(j[g],10));break;case"Decimal":var k=e[h].toString();i.push(k>>24&255),i.push(k>>16&255),i.push(k>>8&255),i.push(255&k);break;case"Hex":i=Utils.hex_to_byte_array(e[h]);break;default:throw"Unsupported input IP format"}switch(d){case"Dotted Decimal":var l="";for(g=0;g<i.length;g++)l+=i[g]+".";f+=l.slice(0,l.length-1)+"\n";break;case"Decimal":var m=(i[0]<<24|i[1]<<16|i[2]<<8|i[3])>>>0;f+=m.toString()+"\n";break;case"Hex":var n="";for(g=0;g<i.length;g++)n+=Utils.hex(i[g]);f+=n+"\n";break;default:throw"Unsupported output IP format"}}else f+=e[h]+"\n"}return f.slice(0,f.length-1)},DELIM_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon"],GROUP_CIDR:24,GROUP_ONLY_SUBNET:!1,run_group_ips:function(a,b){var c=Utils.char_rep[b[0]],d=b[1],e=b[2],f=d<32?~(4294967295>>>d):4294967295,g=IP._gen_ipv6_mask(d),h=a.split(c),i={},j={},k=null,l="",m=null,n=null,o="";if(d<0||d>127)return"CIDR must be less than 32 for IPv4 or 128 for IPv6";for(var p=0;p<h.length;p++)if(k=IP.IPv4_REGEX.exec(h[p]))m=IP._str_to_ipv4(k[1])>>>0,n=m&f,i.hasOwnProperty(n)?i[n].push(m):i[n]=[m];else if(k=IP.IPv6_REGEX.exec(h[p])){m=IP._str_to_ipv6(k[1]),n=[],o="";for(var q=0;q<8;q++)n.push(m[q]&g[q]);o=IP._ipv6_to_str(n,!0), -j.hasOwnProperty(o)?j[o].push(m):j[o]=[m]}for(n in i)if(i[n]=i[n].sort(),l+=IP._ipv4_to_str(n)+"/"+d+"\n",!e){for(p=0;p<i[n].length;p++)l+=" "+IP._ipv4_to_str(i[n][p])+"\n";l+="\n"}for(o in j)if(l+=o+"/"+d+"\n",!e){for(p=0;p<j[o].length;p++)l+=" "+IP._ipv6_to_str(j[o][p],!0)+"\n";l+="\n"}return l},_LARGE_RANGE_ERROR:'The specified range contains more than 65,536 addresses. Running this query could crash your browser. If you want to run it, select the "Allow large queries" option. You are advised to turn off "Auto Bake" whilst editing large ranges.',_ipv4_cidr_range:function(a,b,c,d){var e="",f=IP._str_to_ipv4(a[1]),g=parseInt(a[2],10);if(g<0||g>31)return"IPv4 CIDR must be less than 32";var h=~(4294967295>>>g),i=f&h,j=i|~h;return b&&(e+="Network: "+IP._ipv4_to_str(f)+"\n",e+="CIDR: "+g+"\n",e+="Mask: "+IP._ipv4_to_str(h)+"\n",e+="Range: "+IP._ipv4_to_str(i)+" - "+IP._ipv4_to_str(j)+"\n",e+="Total addresses in range: "+((j-i>>>0)+1)+"\n\n"),c&&(e+=g>=16||d?IP._generate_ipv4_range(i,j).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_cidr_range:function(a,b){var c="",d=IP._str_to_ipv6(a[1]),e=parseInt(a[a.length-1],10);if(e<0||e>127)return"IPv6 CIDR must be less than 128";for(var f=IP._gen_ipv6_mask(e),g=new Array(8),h=new Array(8),i="",j=new Array(128),k=0;k<8;k++)if(g[k]=d[k]&f[k],h[k]=g[k]|65535&~f[k],i=(h[k]-g[k]).toString(2),"0"!==i)for(var l=0;l<i.length;l++)j[16*k+16-(i.length-l)]=i[l];return b&&(c+="Network: "+IP._ipv6_to_str(d)+"\n",c+="Shorthand: "+IP._ipv6_to_str(d,!0)+"\n",c+="CIDR: "+e+"\n",c+="Mask: "+IP._ipv6_to_str(f)+"\n",c+="Range: "+IP._ipv6_to_str(g)+" - "+IP._ipv6_to_str(h)+"\n",c+="Total addresses in range: "+(parseInt(j.join(""),2)+1)+"\n\n"),c},_gen_ipv6_mask:function(a){for(var b,c=new Array(8),d=0;d<8;d++)a>16*(d+1)?c[d]=65535:(b=a-16*d,b<0&&(b=0),c[d]=~(65535>>>b|4294901760));return c},_ipv4_hyphenated_range:function(a,b,c,d){for(var e="",f=IP._str_to_ipv4(a[1]),g=IP._str_to_ipv4(a[2]),h=f^g,i=32,j=0;0!==h;)h>>=1,i--,j=j<<1|1;j=~j>>>0;var k=f&j,l=k&j,m=l|~j;return b&&(e+="Minimum subnet required to hold this range:\n",e+="\tNetwork: "+IP._ipv4_to_str(k)+"\n",e+="\tCIDR: "+i+"\n",e+="\tMask: "+IP._ipv4_to_str(j)+"\n",e+="\tSubnet range: "+IP._ipv4_to_str(l)+" - "+IP._ipv4_to_str(m)+"\n",e+="\tTotal addresses in subnet: "+((m-l>>>0)+1)+"\n\n",e+="Range: "+IP._ipv4_to_str(f)+" - "+IP._ipv4_to_str(g)+"\n",e+="Total addresses in range: "+((g-f>>>0)+1)+"\n\n"),c&&(e+=g-f>>>0<=65536||d?IP._generate_ipv4_range(f,g).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_hyphenated_range:function(a,b){for(var c="",d=IP._str_to_ipv6(a[1]),e=IP._str_to_ipv6(a[14]),f="",g=new Array(128),h=0;h<128;h++)g[h]="0";for(h=0;h<8;h++)if(f=(e[h]-d[h]).toString(2),"0"!==f)for(var i=0;i<f.length;i++)g[16*h+16-(f.length-i)]=f[i];return b&&(c+="Range: "+IP._ipv6_to_str(d)+" - "+IP._ipv6_to_str(e)+"\n",c+="Shorthand range: "+IP._ipv6_to_str(d,!0)+" - "+IP._ipv6_to_str(e,!0)+"\n",c+="Total addresses in range: "+(parseInt(g.join(""),2)+1)+"\n\n"),c},_str_to_ipv4:function(a){function b(a){if(4!==a.length)throw"More than 4 blocks.";for(var b=[],c=0;c<4;c++)if(b[c]=parseInt(a[c],10),b[c]<0||b[c]>255)throw"Block out of range.";return b}var c=a.split("."),d=b(c),e=0;return e+=d[0]<<24,e+=d[1]<<16,e+=d[2]<<8,e+=d[3]},_ipv4_to_str:function(a){var b=a>>24&255,c=a>>16&255,d=a>>8&255,e=255&a;return b+"."+c+"."+d+"."+e},_str_to_ipv6:function(a){function b(a){if(a.length<3||a.length>8)throw"Badly formatted IPv6 address.";for(var b=[],c=0;c<a.length;c++)if(b[c]=parseInt(a[c],16),b[c]<0||b[c]>65535)throw"Block out of range.";return b}for(var c=a.split(":"),d=b(c),e=0,f=new Array(8),g=0;g<8;g++)isNaN(d[e])?(f[g]=0,g===8-d.slice(e).length&&e++):(f[g]=d[e],e++);return f},_ipv6_to_str:function(a,b){var c="",d=0;if(b){var e=-1,f=-1,g=0,h=-1;for(d=0;d<8;d++)0===a[d]&&h===d-1?h=d:0===a[d]&&(g=d,h=d),h>=0&&h-g>f-e&&(e=g,f=h);for(d=0;d<8;d++)d!==e?c+=Utils.hex(a[d],1)+":":(c+=":",d=f,7===f&&(c+=":"));":"===c[0]&&(c=":"+c)}else for(d=0;d<8;d++)c+=Utils.hex(a[d],4)+":";return c.slice(0,c.length-1)},_generate_ipv4_range:function(a,b){var c=[];if(b>=a)for(;a<=b;a++)c.push(IP._ipv4_to_str(a));else c[0]="Second IP address smaller than first.";return c}},JS={PARSE_LOC:!1,PARSE_RANGE:!1,PARSE_TOKENS:!1,PARSE_COMMENT:!1,PARSE_TOLERANT:!1,run_parse:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h={},i={loc:c,range:d,tokens:e,comment:f,tolerant:g};return h=esprima.parse(a,i),JSON.stringify(h,null,2)},BEAUTIFY_INDENT:"\\t",BEAUTIFY_QUOTES:["Auto","Single","Double"],BEAUTIFY_SEMICOLONS:!0,BEAUTIFY_COMMENT:!0,run_beautify:function(a,b){var c,d=b[0]||JS.BEAUTIFY_INDENT,e=b[1].toLowerCase(),f=b[2],g=b[3],h="";try{c=esprima.parse(a,{range:!0,tokens:!0,comment:!0});var i={format:{indent:{style:d},quotes:e,semicolons:f},comment:g};i.comment&&(c=escodegen.attachComments(c,c.comments,c.tokens)),h=escodegen.generate(c,i)}catch(a){throw"Unable to parse JavaScript.<br>"+a.message}return h},run_minify:function(a,b){var c="",d=esprima.parse(a),e=esmangle.optimize(d,null),f=esmangle.mangle(e);return c=escodegen.generate(f,{format:{renumber:!0,hexadecimal:!0,escapeless:!0,compact:!0,semicolons:!1,parentheses:!1}})}},MAC={OUTPUT_CASE:["Both","Upper only","Lower only"],NO_DELIM:!0,DASH_DELIM:!0,COLON_DELIM:!0,CISCO_STYLE:!1,run_format:function(a,b){if(!a)return"";var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=[],i=a.toLowerCase().split(/[,\s\r\n]+/);return i.forEach(function(a){var b=a.replace(/[:.-]+/g,""),i=b.replace(/(.{2}(?=.))/g,"$1-"),j=b.replace(/(.{2}(?=.))/g,"$1:"),k=b.replace(/(.{4}(?=.))/g,"$1.");"Lower only"===c?(d&&h.push(b),e&&h.push(i),f&&h.push(j),g&&h.push(k)):"Upper only"===c?(d&&h.push(b.toUpperCase()),e&&h.push(i.toUpperCase()),f&&h.push(j.toUpperCase()),g&&h.push(k.toUpperCase())):(d&&h.push(b,b.toUpperCase()),e&&h.push(i,i.toUpperCase()),f&&h.push(j,j.toUpperCase()),g&&h.push(k,k.toUpperCase())),h.push("")}),h.join("\n")}},Numberwang={run:function(a,b){if(!a)return"Let's play Wangernumb!";var c=a.match(/\d+/);return c?c[0]+"! That's Numberwang!":"Sorry, that's not Numberwang. Let's rotate the board!"}},OS={run_parse_unix_perms:function(a,b){var c={d:!1,sl:!1,np:!1,s:!1,cd:!1,bd:!1,dr:!1,sb:!1,su:!1,sg:!1,ru:!1,wu:!1,eu:!1,rg:!1,wg:!1,eg:!1,ro:!1,wo:!1,eo:!1},d=0,e=0,f=0,g=0,h="",i=null,j=null;if(0===a.search(/\s*[0-7]{1,4}\s*/i))i=a.match(/\s*([0-7]{1,4})\s*/i)[1],4===i.length?(d=parseInt(i[0],8),e=parseInt(i[1],8),f=parseInt(i[2],8),g=parseInt(i[3],8)):(i.length>0&&(e=parseInt(i[0],8)),i.length>1&&(f=parseInt(i[1],8)),i.length>2&&(g=parseInt(i[2],8))),c.su=d>>2&1,c.sg=d>>1&1,c.sb=1&d,c.ru=e>>2&1,c.wu=e>>1&1,c.eu=1&e,c.rg=f>>2&1,c.wg=f>>1&1,c.eg=1&f,c.ro=g>>2&1,c.wo=g>>1&1,c.eo=1&g;else{if(0!==a.search(/\s*[dlpcbDrwxsStT-]{1,10}\s*/))return"Invalid input format.\nPlease enter the permissions in either octal (e.g. 755) or textual (e.g. drwxr-xr-x) format.";switch(j=a.match(/\s*([dlpcbDrwxsStT-]{1,10})\s*/)[1],j[0]){case"d":c.d=!0;break;case"l":c.sl=!0;break;case"p":c.np=!0;break;case"s":c.s=!0;break;case"c":c.cd=!0;break;case"b":c.bd=!0;break;case"D":c.dr=!0}if(j.length>1&&(c.ru="r"===j[1]),j.length>2&&(c.wu="w"===j[2]),j.length>3)switch(j[3]){case"x":c.eu=!0;break;case"s":c.eu=!0,c.su=!0;break;case"S":c.su=!0}if(j.length>4&&(c.rg="r"===j[4]),j.length>5&&(c.wg="w"===j[5]),j.length>6)switch(j[6]){case"x":c.eg=!0;break;case"s":c.eg=!0,c.sg=!0;break;case"S":c.sg=!0}if(j.length>7&&(c.ro="r"===j[7]),j.length>8&&(c.wo="w"===j[8]),j.length>9)switch(j[9]){case"x":c.eo=!0;break;case"t":c.eo=!0,c.sb=!0;break;case"T":c.sb=!0}}return h+="Textual representation: "+OS._perms_to_str(c),h+="\nOctal representation: "+OS._perms_to_octal(c),j&&(h+="\nFile type: "+OS._ft_from_perms(c)),c.su&&(h+="\nThe setuid flag is set"),c.sg&&(h+="\nThe setgid flag is set"),c.sb&&(h+="\nThe sticky bit is set"),h+="\n\n +---------+-------+-------+-------+\n | | User | Group | Other |\n +---------+-------+-------+-------+\n | Read | "+(c.ru?"X":" ")+" | "+(c.rg?"X":" ")+" | "+(c.ro?"X":" ")+" |\n +---------+-------+-------+-------+\n | Write | "+(c.wu?"X":" ")+" | "+(c.wg?"X":" ")+" | "+(c.wo?"X":" ")+" |\n +---------+-------+-------+-------+\n | Execute | "+(c.eu?"X":" ")+" | "+(c.eg?"X":" ")+" | "+(c.eo?"X":" ")+" |\n +---------+-------+-------+-------+\n"},_perms_to_str:function(a){var b="",c="-";return a.d&&(c="d"),a.sl&&(c="l"),a.np&&(c="p"),a.s&&(c="s"),a.cd&&(c="c"),a.bd&&(c="b"),a.dr&&(c="D"),b=c,b+=a.ru?"r":"-",b+=a.wu?"w":"-",b+=a.eu&&a.su?"s":a.su?"S":a.eu?"x":"-",b+=a.rg?"r":"-",b+=a.wg?"w":"-",b+=a.eg&&a.sg?"s":a.sg?"S":a.eg?"x":"-",b+=a.ro?"r":"-",b+=a.wo?"w":"-",b+=a.eo&&a.sb?"t":a.sb?"T":a.eo?"x":"-"},_perms_to_octal:function(a){var b=0,c=0,d=0,e=0;return a.su&&(b+=4),a.sg&&(b+=2),a.sb&&(b+=1),a.ru&&(c+=4),a.wu&&(c+=2),a.eu&&(c+=1),a.rg&&(d+=4),a.wg&&(d+=2),a.eg&&(d+=1),a.ro&&(e+=4),a.wo&&(e+=2),a.eo&&(e+=1),b.toString()+c.toString()+d.toString()+e.toString()},_ft_from_perms:function(a){return a.d?"Directory":a.sl?"Symbolic link":a.np?"Named pipe":a.s?"Socket":a.cd?"Character device":a.bd?"Block device":a.dr?"Door":"Regular file"}},PublicKey={X509_INPUT_FORMAT:["PEM","DER Hex","Base64","Raw"],run_parse_x509:function(a,b){var c=new X509,d=b[0];if(!a.length)return"No input";switch(d){case"DER Hex":a=a.replace(/\s/g,""),c.hex=a,c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(a,"CERTIFICATE");break;case"PEM":c.hex=X509.pemToHex(a),c.pem=a;break;case"Base64":c.hex=Utils.to_hex(Utils.from_base64(a,null,"byte_array"),""),c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(c.hex,"CERTIFICATE");break;case"Raw":c.hex=Utils.to_hex(Utils.str_to_byte_array(a),""),c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(c.hex,"CERTIFICATE");break;default:throw"Undefined input format"}var e=ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,0,0]),f=c.getSerialNumberHex(),g=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,2,0]))),h=c.getIssuerString(),i=c.getNotBefore(),j=c.getNotAfter(),k=c.getSubjectString(),l=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,6,0,0]))),m=X509.getPublicKeyFromCertPEM(c.pem),n=[],o="",p=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[1,0]))),q=ASN1HEX.getDecendantHexVByNthList(c.hex,0,[2]).substr(2),r="",s=ASN1HEX.dump(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,7]));"EC"===m.type?(n.push({key:"Curve Name",value:m.curveName}),n.push({key:"Length",value:(new BigInteger(m.pubKeyHex,16).bitLength()-3)/2+" bits"}),n.push({key:"pub",value:PublicKey._format_byte_str(m.pubKeyHex,16,18)})):"DSA"===m.type?(n.push({key:"pub",value:PublicKey._format_byte_str(m.y.toString(16),16,18)}),n.push({key:"P",value:PublicKey._format_byte_str(m.p.toString(16),16,18)}),n.push({key:"Q",value:PublicKey._format_byte_str(m.q.toString(16),16,18)}),n.push({key:"G",value:PublicKey._format_byte_str(m.g.toString(16),16,18)})):m.e?(n.push({key:"Length",value:m.n.bitLength()+" bits"}),n.push({key:"Modulus",value:PublicKey._format_byte_str(m.n.toString(16),16,18)}),n.push({key:"Exponent",value:m.e+" (0x"+m.e.toString(16)+")"})):n.push({key:"Error",value:"Unknown Public Key type"}),r=0===ASN1HEX.dump(q).indexOf("SEQUENCE")?" r: "+PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(q,0,[0]),16,18)+"\n s: "+PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(q,0,[1]),16,18)+"\n":" Signature: "+PublicKey._format_byte_str(q,16,18)+"\n";for(var t=0;t<n.length;t++)o+=" "+n[t].key+":"+Utils.pad_left(n[t].value+"\n",18-(n[t].key.length+3)+n[t].value.length+1," ");var u=PublicKey._format_dn_str(h,2),v=PublicKey._format_date(i),w=PublicKey._format_date(j),x=PublicKey._format_dn_str(k,2),y="Version: "+(parseInt(e,16)+1)+" (0x"+e+")\nSerial number: "+new BigInteger(f,16).toString()+" (0x"+f+")\nAlgorithm ID: "+g+"\nValidity\n Not Before: "+v+" (dd-mm-yy hh:mm:ss) ("+i+")\n Not After: "+w+" (dd-mm-yy hh:mm:ss) ("+j+")\nIssuer\n"+u+"Subject\n"+x+"Public Key\n Algorithm: "+l+"\n"+o+"Certificate Signature\n Algorithm: "+p+"\n"+r+"\nExtensions (parsed ASN.1)\n"+s;return y},run_pem_to_hex:function(a,b){return a.indexOf("-----BEGIN")<0&&(a="-----BEGIN CERTIFICATE-----"+a),a.indexOf("-----END")<0&&(a+="-----END CERTIFICATE-----"),KEYUTIL.getHexFromPEM(a)},PEM_HEADER_STRING:"CERTIFICATE",run_hex_to_pem:function(a,b){return KJUR.asn1.ASN1Util.getPEMStringFromHex(a.replace(/\s/g,""),b[0])},run_hex_to_object_identifier:function(a,b){return KJUR.asn1.ASN1Util.oidHexToInt(a.replace(/\s/g,""))},run_object_identifier_to_hex:function(a,b){return KJUR.asn1.ASN1Util.oidIntToHex(a)},ASN1_TRUNCATE_LENGTH:32,run_parse_asn1_hex_string:function(a,b){var c=b[1],d=b[0];return ASN1HEX.dump(a.replace(/\s/g,""),{ommit_long_octet:c},d)},_format_dn_str:function(a,b){for(var c,d,e,f="",g=a.split(",/|"),h=0,i=0;i<g.length;i++)g[i].length&&(c=g[i].split("=")[0],h=c.length>h?c.length:h);for(i=0;i<g.length;i++)g[i].length&&(c=g[i].split("=")[0],d=g[i].split("=")[1],e=Utils.pad_right(c,h)+" = "+d+"\n",f+=Utils.pad_left(e,b+e.length," "));return f},_format_byte_str:function(a,b,c){a=Utils.to_hex(Utils.from_hex(a),":"),b=3*b;for(var d="",e=0;e<a.length;e+=b){var f=a.slice(e,e+b)+"\n";d+=0===e?f:Utils.pad_left(f,c+f.length," ")}return d.slice(0,d.length-1)},_format_date:function(a){return a[4]+a[5]+"/"+a[2]+a[3]+"/"+a[0]+a[1]+" "+a[6]+a[7]+":"+a[8]+a[9]+":"+a[10]+a[11]}};X509.hex2dn=function(a){for(var b="",c=ASN1HEX.getPosArrayOfChildren_AtObj(a,0),d=0;d<c.length;d++){var e=ASN1HEX.getHexOfTLV_AtObj(a,c[d]);b=b+",/|"+X509.hex2rdn(e)}return b},X509.DN_ATTRHEX={"0603550403":"commonName","0603550404":"surname","0603550406":"countryName","0603550407":"localityName","0603550408":"stateOrProvinceName","0603550409":"streetAddress","060355040a":"organizationName","060355040b":"organizationalUnitName","060355040c":"title","0603550414":"telephoneNumber","060355042a":"givenName","06032b06010505070201":"id_certificatePolicies","06036086480186f8420101":"netscape-cert-type","06036086480186f8420102":"netscape-base-url","06036086480186f8420103":"netscape-revocation-url","06036086480186f8420104":"netscape-ca-revocation-url","06036086480186f8420107":"netscape-cert-renewal-url","06036086480186f8420108":"netscape-ca-policy-url","06036086480186f842010c":"netscape-ssl-server-name","06036086480186f842010d":"netscape-comment","0603604c010201":"A1","0603604c010203":"A3","0603604c01020110":"Certification Practice Statement pointer","0603604c010301":"Dados do cert parte 1","0603604c010305":"Dados do cert parte 2","0603604c010306":"Dados do cert parte 3","06030992268993f22c640119":"domainComponent","06032a24a0f2a07d01010a":"Signet pilot","06032a24a0f2a07d01010b":"Signet intraNet","06032a24a0f2a07d010102":"Signet personal","06032a24a0f2a07d010114":"Signet securityPolicy","06032a24a0f2a07d010103":"Signet business","06032a24a0f2a07d010104":"Signet legal","06032a24a497a35301640101":"Certificates Australia policyIdentifier","06032a85702201":"seis-cp","06032a8570220101":"SEIS certificatePolicy-s10","06032a85702202":"SEIS pe","06032a85702203":"SEIS at","06032a8570220301":"SEIS at-personalIdentifier","06032a8648ce380201":"holdinstruction-none","06032a8648ce380202":"holdinstruction-callissuer","06032a8648ce380203":"holdinstruction-reject","06032a8648ce380401":"dsa","06032a8648ce380403":"dsaWithSha1","06032a8648ce3d01":"fieldType","06032a8648ce3d0101":"prime-field","06032a8648ce3d0102":"characteristic-two-field","06032a8648ce3d010201":"ecPublicKey","06032a8648ce3d010203":"characteristic-two-basis","06032a8648ce3d01020301":"onBasis","06032a8648ce3d01020302":"tpBasis","06032a8648ce3d01020303":"ppBasis","06032a8648ce3d02":"publicKeyType","06032a8648ce3d0201":"ecPublicKey","06032a8648ce3e0201":"dhPublicNumber","06032a864886f67d07":"nsn","06032a864886f67d0741":"nsn-ce","06032a864886f67d074100":"entrustVersInfo","06032a864886f67d0742":"nsn-alg","06032a864886f67d07420a":"cast5CBC","06032a864886f67d07420b":"cast5MAC","06032a864886f67d07420c":"pbeWithMD5AndCAST5-CBC","06032a864886f67d07420d":"passwordBasedMac","06032a864886f67d074203":"cast3CBC","06032a864886f67d0743":"nsn-oc","06032a864886f67d074300":"entrustUser","06032a864886f67d0744":"nsn-at","06032a864886f67d074400":"entrustCAInfo","06032a864886f67d07440a":"attributeCertificate","06032a864886f70d0101":"pkcs-1","06032a864886f70d010101":"rsaEncryption","06032a864886f70d010102":"md2withRSAEncryption","06032a864886f70d010103":"md4withRSAEncryption","06032a864886f70d010104":"md5withRSAEncryption","06032a864886f70d010105":"sha1withRSAEncryption","06032a864886f70d010106":"rsaOAEPEncryptionSET","06032a864886f70d010910020b":"SMIMEEncryptionKeyPreference","06032a864886f70d010c":"pkcs-12","06032a864886f70d010c01":"pkcs-12-PbeIds","06032a864886f70d010c0101":"pbeWithSHAAnd128BitRC4","06032a864886f70d010c0102":"pbeWithSHAAnd40BitRC4","06032a864886f70d010c0103":"pbeWithSHAAnd3-KeyTripleDES-CBC","06032a864886f70d010c0104":"pbeWithSHAAnd2-KeyTripleDES-CBC","06032a864886f70d010c0105":"pbeWithSHAAnd128BitRC2-CBC","06032a864886f70d010c0106":"pbeWithSHAAnd40BitRC2-CBC","06032a864886f70d010c0a":"pkcs-12Version1","06032a864886f70d010c0a01":"pkcs-12BadIds","06032a864886f70d010c0a0101":"pkcs-12-keyBag","06032a864886f70d010c0a0102":"pkcs-12-pkcs-8ShroudedKeyBag","06032a864886f70d010c0a0103":"pkcs-12-certBag","06032a864886f70d010c0a0104":"pkcs-12-crlBag","06032a864886f70d010c0a0105":"pkcs-12-secretBag","06032a864886f70d010c0a0106":"pkcs-12-safeContentsBag","06032a864886f70d010c02":"pkcs-12-ESPVKID","06032a864886f70d010c0201":"pkcs-12-PKCS8KeyShrouding","06032a864886f70d010c03":"pkcs-12-BagIds","06032a864886f70d010c0301":"pkcs-12-keyBagId","06032a864886f70d010c0302":"pkcs-12-certAndCRLBagId","06032a864886f70d010c0303":"pkcs-12-secretBagId","06032a864886f70d010c0304":"pkcs-12-safeContentsId","06032a864886f70d010c0305":"pkcs-12-pkcs-8ShroudedKeyBagId","06032a864886f70d010c04":"pkcs-12-CertBagID","06032a864886f70d010c0401":"pkcs-12-X509CertCRLBagID","06032a864886f70d010c0402":"pkcs-12-SDSICertBagID","06032a864886f70d010c05":"pkcs-12-OID","06032a864886f70d010c0501":"pkcs-12-PBEID","06032a864886f70d010c050101":"pkcs-12-PBEWithSha1And128BitRC4","06032a864886f70d010c050102":"pkcs-12-PBEWithSha1And40BitRC4","06032a864886f70d010c050103":"pkcs-12-PBEWithSha1AndTripleDESCBC","06032a864886f70d010c050104":"pkcs-12-PBEWithSha1And128BitRC2CBC","06032a864886f70d010c050105":"pkcs-12-PBEWithSha1And40BitRC2CBC","06032a864886f70d010c050106":"pkcs-12-PBEWithSha1AndRC4","06032a864886f70d010c050107":"pkcs-12-PBEWithSha1AndRC2CBC","06032a864886f70d010c0502":"pkcs-12-EnvelopingID","06032a864886f70d010c050201":"pkcs-12-RSAEncryptionWith128BitRC4","06032a864886f70d010c050202":"pkcs-12-RSAEncryptionWith40BitRC4","06032a864886f70d010c050203":"pkcs-12-RSAEncryptionWithTripleDES","06032a864886f70d010c0503":"pkcs-12-SignatureID","06032a864886f70d010c050301":"pkcs-12-RSASignatureWithSHA1Digest","06032a864886f70d0103":"pkcs-3","06032a864886f70d010301":"dhKeyAgreement","06032a864886f70d0105":"pkcs-5","06032a864886f70d010501":"pbeWithMD2AndDES-CBC","06032a864886f70d01050a":"pbeWithSHAAndDES-CBC","06032a864886f70d010503":"pbeWithMD5AndDES-CBC","06032a864886f70d010504":"pbeWithMD2AndRC2-CBC","06032a864886f70d010506":"pbeWithMD5AndRC2-CBC","06032a864886f70d010509":"pbeWithMD5AndXOR","06032a864886f70d0107":"pkcs-7","06032a864886f70d010701":"data","06032a864886f70d010702":"signedData","06032a864886f70d010703":"envelopedData","06032a864886f70d010704":"signedAndEnvelopedData","06032a864886f70d010705":"digestData","06032a864886f70d010706":"encryptedData","06032a864886f70d010707":"dataWithAttributes","06032a864886f70d010708":"encryptedPrivateKeyInfo","06032a864886f70d0109":"pkcs-9","06032a864886f70d010901":"emailAddress","06032a864886f70d01090a":"issuerAndSerialNumber","06032a864886f70d01090b":"passwordCheck","06032a864886f70d01090c":"publicKey","06032a864886f70d01090d":"signingDescription","06032a864886f70d01090e":"extensionReq","06032a864886f70d01090f":"sMIMECapabilities","06032a864886f70d01090f01":"preferSignedData","06032a864886f70d01090f02":"canNotDecryptAny","06032a864886f70d01090f03":"receiptRequest","06032a864886f70d01090f04":"receipt","06032a864886f70d01090f05":"contentHints","06032a864886f70d01090f06":"mlExpansionHistory","06032a864886f70d010910":"id-sMIME","06032a864886f70d01091000":"id-mod","06032a864886f70d0109100001":"id-mod-cms","06032a864886f70d0109100002":"id-mod-ess","06032a864886f70d01091001":"id-ct","06032a864886f70d0109100101":"id-ct-receipt","06032a864886f70d01091002":"id-aa","06032a864886f70d0109100201":"id-aa-receiptRequest","06032a864886f70d0109100202":"id-aa-securityLabel","06032a864886f70d0109100203":"id-aa-mlExpandHistory","06032a864886f70d0109100204":"id-aa-contentHint","06032a864886f70d010902":"unstructuredName","06032a864886f70d010914":"friendlyName","06032a864886f70d010915":"localKeyID","06032a864886f70d010916":"certTypes","06032a864886f70d01091601":"x509Certificate","06032a864886f70d01091602":"sdsiCertificate","06032a864886f70d010917":"crlTypes","06032a864886f70d01091701":"x509Crl","06032a864886f70d010903":"contentType","06032a864886f70d010904":"messageDigest","06032a864886f70d010905":"signingTime","06032a864886f70d010906":"countersignature","06032a864886f70d010907":"challengePassword","06032a864886f70d010908":"unstructuredAddress","06032a864886f70d010909":"extendedCertificateAttributes","06032a864886f70d02":"digestAlgorithm","06032a864886f70d0202":"md2","06032a864886f70d0204":"md4","06032a864886f70d0205":"md5","06032a864886f70d03":"encryptionAlgorithm","06032a864886f70d030a":"desCDMF","06032a864886f70d0302":"rc2CBC","06032a864886f70d0303":"rc2ECB","06032a864886f70d0304":"rc4","06032a864886f70d0305":"rc4WithMAC","06032a864886f70d0306":"DESX-CBC","06032a864886f70d0307":"DES-EDE3-CBC","06032a864886f70d0308":"RC5CBC","06032a864886f70d0309":"RC5-CBCPad","06032a864886f7140403":"microsoftExcel","06032a864886f7140404":"titledWithOID","06032a864886f7140405":"microsoftPowerPoint","06032b81051086480954":"x9-84","06032b8105108648095400":"x9-84-Module","06032b810510864809540001":"x9-84-Biometrics","06032b810510864809540002":"x9-84-CMS","06032b810510864809540003":"x9-84-Identifiers","06032b8105108648095401":"biometric","06032b810510864809540100":"id-unknown-Type","06032b810510864809540101":"id-body-Odor","06032b81051086480954010a":"id-palm","06032b81051086480954010b":"id-retina","06032b81051086480954010c":"id-signature","06032b81051086480954010d":"id-speech-Pattern","06032b81051086480954010e":"id-thermal-Image","06032b81051086480954010f":"id-vein-Pattern","06032b810510864809540110":"id-thermal-Face-Image","06032b810510864809540111":"id-thermal-Hand-Image","06032b810510864809540112":"id-lip-Movement","06032b810510864809540113":"id-gait","06032b810510864809540102":"id-dna","06032b810510864809540103":"id-ear-Shape","06032b810510864809540104":"id-facial-Features","06032b810510864809540105":"id-finger-Image","06032b810510864809540106":"id-finger-Geometry","06032b810510864809540107":"id-hand-Geometry","06032b810510864809540108":"id-iris-Features","06032b810510864809540109":"id-keystroke-Dynamics","06032b8105108648095402":"processing-algorithm","06032b8105108648095403":"matching-method","06032b8105108648095404":"format-Owner","06032b810510864809540400":"cbeff-Owner","06032b810510864809540401":"ibia-Owner","06032b81051086480954040101":"id-ibia-SAFLINK","06032b8105108648095404010a":"id-ibia-SecuGen","06032b8105108648095404010b":"id-ibia-PreciseBiometric","06032b8105108648095404010c":"id-ibia-Identix","06032b8105108648095404010d":"id-ibia-DERMALOG","06032b8105108648095404010e":"id-ibia-LOGICO","06032b8105108648095404010f":"id-ibia-NIST","06032b81051086480954040110":"id-ibia-A3Vision","06032b81051086480954040111":"id-ibia-NEC","06032b81051086480954040112":"id-ibia-STMicroelectronics","06032b81051086480954040102":"id-ibia-Bioscrypt","06032b81051086480954040103":"id-ibia-Visionics","06032b81051086480954040104":"id-ibia-InfineonTechnologiesAG","06032b81051086480954040105":"id-ibia-IridianTechnologies","06032b81051086480954040106":"id-ibia-Veridicom","06032b81051086480954040107":"id-ibia-CyberSIGN","06032b81051086480954040108":"id-ibia-eCryp.","06032b81051086480954040109":"id-ibia-FingerprintCardsAB","06032b810510864809540402":"x9-Owner","06032b0e021a05":"sha","06032b0e03020101":"rsa","06032b0e03020a":"desMAC","06032b0e03020b":"rsaSignature","06032b0e03020c":"dsa","06032b0e03020d":"dsaWithSHA","06032b0e03020e":"mdc2WithRSASignature","06032b0e03020f":"shaWithRSASignature","06032b0e030210":"dhWithCommonModulus","06032b0e030211":"desEDE","06032b0e030212":"sha","06032b0e030213":"mdc-2","06032b0e030202":"md4WitRSA","06032b0e03020201":"sqmod-N","06032b0e030214":"dsaCommon","06032b0e030215":"dsaCommonWithSHA","06032b0e030216":"rsaKeyTransport","06032b0e030217":"keyed-hash-seal","06032b0e030218":"md2WithRSASignature","06032b0e030219":"md5WithRSASignature","06032b0e03021a":"sha1","06032b0e03021b":"dsaWithSHA1","06032b0e03021c":"dsaWithCommonSHA1","06032b0e03021d":"sha-1WithRSAEncryption","06032b0e030203":"md5WithRSA","06032b0e03020301":"sqmod-NwithRSA","06032b0e030204":"md4WithRSAEncryption","06032b0e030206":"desECB","06032b0e030207":"desCBC","06032b0e030208":"desOFB","06032b0e030209":"desCFB","06032b0e030301":"simple-strong-auth-mechanism","06032b0e07020101":"ElGamal","06032b0e07020301":"md2WithRSA","06032b0e07020302":"md2WithElGamal","06032b2403":"algorithm","06032b240301":"encryptionAlgorithm","06032b24030101":"des","06032b240301010101":"desECBPad","06032b24030101010101":"desECBPadISO","06032b240301010201":"desCBCPad","06032b24030101020101":"desCBCPadISO","06032b24030102":"idea","06032b2403010201":"ideaECB","06032b240301020101":"ideaECBPad","06032b24030102010101":"ideaECBPadISO","06032b2403010202":"ideaCBC","06032b240301020201":"ideaCBCPad","06032b24030102020101":"ideaCBCPadISO","06032b2403010203":"ideaOFB","06032b2403010204":"ideaCFB","06032b24030103":"des-3","06032b240301030101":"des-3ECBPad","06032b24030103010101":"des-3ECBPadISO","06032b240301030201":"des-3CBCPad","06032b24030103020101":"des-3CBCPadISO","06032b240302":"hashAlgorithm","06032b24030201":"ripemd160","06032b24030202":"ripemd128","06032b24030203":"ripemd256","06032b24030204":"mdc2singleLength","06032b24030205":"mdc2doubleLength","06032b240303":"signatureAlgorithm","06032b24030301":"rsa","06032b2403030101":"rsaMitSHA-1","06032b2403030102":"rsaMitRIPEMD160","06032b24030302":"ellipticCurve","06032b240304":"signatureScheme","06032b24030401":"iso9796-1","06032b2403040201":"iso9796-2","06032b2403040202":"iso9796-2rsa","06032b2404":"attribute","06032b2405":"policy","06032b2406":"api","06032b240601":"manufacturerSpecific","06032b240602":"functionalitySpecific","06032b2407":"api","06032b240701":"keyAgreement","06032b240702":"keyTransport","06032b06010401927c0a0101":"UNINETT policyIdentifier","06032b0601040195180a":"ICE-TEL policyIdentifier","06032b0601040197552001":"cryptlibEnvelope","06032b0601040197552002":"cryptlibPrivateKey","060a2b060104018237":"Microsoft OID","060a2b0601040182370a":"Crypto 2.0","060a2b0601040182370a01":"certTrustList","060a2b0601040182370a0101":"szOID_SORTED_CTL","060a2b0601040182370a0a":"Microsoft CMC OIDs","060a2b0601040182370a0a01":"szOID_CMC_ADD_ATTRIBUTES","060a2b0601040182370a0b":"Microsoft certificate property OIDs","060a2b0601040182370a0b01":"szOID_CERT_PROP_ID_PREFIX","060a2b0601040182370a0c":"CryptUI","060a2b0601040182370a0c01":"szOID_ANY_APPLICATION_POLICY","060a2b0601040182370a02":"nextUpdateLocation","060a2b0601040182370a0301":"certTrustListSigning","060a2b0601040182370a030a":"szOID_KP_QUALIFIED_SUBORDINATION","060a2b0601040182370a030b":"szOID_KP_KEY_RECOVERY","060a2b0601040182370a030c":"szOID_KP_DOCUMENT_SIGNING","060a2b0601040182370a0302":"timeStampSigning","060a2b0601040182370a0303":"serverGatedCrypto","060a2b0601040182370a030301":"szOID_SERIALIZED","060a2b0601040182370a0304":"encryptedFileSystem","060a2b0601040182370a030401":"szOID_EFS_RECOVERY","060a2b0601040182370a0305":"szOID_WHQL_CRYPTO","060a2b0601040182370a0306":"szOID_NT5_CRYPTO","060a2b0601040182370a0307":"szOID_OEM_WHQL_CRYPTO","060a2b0601040182370a0308":"szOID_EMBEDDED_NT_CRYPTO","060a2b0601040182370a0309":"szOID_ROOT_LIST_SIGNER","060a2b0601040182370a0401":"yesnoTrustAttr","060a2b0601040182370a0501":"szOID_DRM","060a2b0601040182370a0502":"szOID_DRM_INDIVIDUALIZATION","060a2b0601040182370a0601":"szOID_LICENSES","060a2b0601040182370a0602":"szOID_LICENSE_SERVER","060a2b0601040182370a07":"szOID_MICROSOFT_RDN_PREFIX","060a2b0601040182370a0701":"szOID_KEYID_RDN","060a2b0601040182370a0801":"szOID_REMOVE_CERTIFICATE","060a2b0601040182370a0901":"szOID_CROSS_CERT_DIST_POINTS","060a2b0601040182370c":"Catalog","060a2b0601040182370c0101":"szOID_CATALOG_LIST","060a2b0601040182370c0102":"szOID_CATALOG_LIST_MEMBER","060a2b0601040182370c0201":"CAT_NAMEVALUE_OBJID","060a2b0601040182370c0202":"CAT_MEMBERINFO_OBJID","060a2b0601040182370d":"Microsoft PKCS10 OIDs","060a2b0601040182370d01":"szOID_RENEWAL_CERTIFICATE","060a2b0601040182370d0201":"szOID_ENROLLMENT_NAME_VALUE_PAIR","060a2b0601040182370d0202":"szOID_ENROLLMENT_CSP_PROVIDER","060a2b0601040182370d0203":"OS Version","060a2b0601040182370f":"Microsoft Java","060a2b06010401823710":"Microsoft Outlook/Exchange","060a2b0601040182371004":"Outlook Express","060a2b06010401823711":"Microsoft PKCS12 attributes","060a2b0601040182371101":"szOID_LOCAL_MACHINE_KEYSET","060a2b06010401823712":"Microsoft Hydra","060a2b06010401823713":"Microsoft ISPU Test","060a2b06010401823702":"Authenticode","060a2b06010401823702010a":"spcAgencyInfo","060a2b06010401823702010b":"spcStatementType","060a2b06010401823702010c":"spcSpOpusInfo","060a2b06010401823702010e":"certExtensions","060a2b06010401823702010f":"spcPelmageData","060a2b060104018237020112":"SPC_RAW_FILE_DATA_OBJID","060a2b060104018237020113":"SPC_STRUCTURED_STORAGE_DATA_OBJID","060a2b060104018237020114":"spcLink","060a2b060104018237020115":"individualCodeSigning","060a2b060104018237020116":"commercialCodeSigning","060a2b060104018237020119":"spcLink","060a2b06010401823702011a":"spcMinimalCriteriaInfo","060a2b06010401823702011b":"spcFinancialCriteriaInfo","060a2b06010401823702011c":"spcLink","060a2b06010401823702011d":"SPC_HASH_INFO_OBJID","060a2b06010401823702011e":"SPC_SIPINFO_OBJID","060a2b060104018237020104":"spcIndirectDataContext","060a2b0601040182370202":"CTL for Software Publishers Trusted CAs","060a2b060104018237020201":"szOID_TRUSTED_CODESIGNING_CA_LIST","060a2b060104018237020202":"szOID_TRUSTED_CLIENT_AUTH_CA_LIST","060a2b060104018237020203":"szOID_TRUSTED_SERVER_AUTH_CA_LIST","060a2b06010401823714":"Microsoft Enrollment Infrastructure","060a2b0601040182371401":"szOID_AUTO_ENROLL_CTL_USAGE","060a2b0601040182371402":"szOID_ENROLL_CERTTYPE_EXTENSION","060a2b060104018237140201":"szOID_ENROLLMENT_AGENT","060a2b060104018237140202":"szOID_KP_SMARTCARD_LOGON","060a2b060104018237140203":"szOID_NT_PRINCIPAL_NAME","060a2b0601040182371403":"szOID_CERT_MANIFOLD","06092b06010401823715":"Microsoft CertSrv Infrastructure","06092b0601040182371501":"szOID_CERTSRV_CA_VERSION","06092b0601040182371514":"Client Information","060a2b06010401823719":"Microsoft Directory Service","060a2b0601040182371901":"szOID_NTDS_REPLICATION","060a2b06010401823703":"Time Stamping","060a2b060104018237030201":"SPC_TIME_STAMP_REQUEST_OBJID","060a2b0601040182371e":"IIS","060a2b0601040182371f":"Windows updates and service packs","060a2b0601040182371f01":"szOID_PRODUCT_UPDATE","060a2b06010401823704":"Permissions","060a2b06010401823728":"Fonts","060a2b06010401823729":"Microsoft Licensing and Registration","060a2b0601040182372a":"Microsoft Corporate PKI (ITG)","060a2b06010401823758":"CAPICOM","060a2b0601040182375801":"szOID_CAPICOM_VERSION","060a2b0601040182375802":"szOID_CAPICOM_ATTRIBUTE","060a2b060104018237580201":"szOID_CAPICOM_DOCUMENT_NAME","060a2b060104018237580202":"szOID_CAPICOM_DOCUMENT_DESCRIPTION","060a2b0601040182375803":"szOID_CAPICOM_ENCRYPTED_DATA","060a2b060104018237580301":"szOID_CAPICOM_ENCRYPTED_CONTENT","06032b0601050507":"pkix", -"06032b060105050701":"privateExtension","06032b06010505070101":"authorityInfoAccess","06032b06010505070c02":"CMC Data","06032b060105050702":"policyQualifierIds","06032b06010505070202":"unotice","06032b060105050703":"keyPurpose","06032b06010505070301":"serverAuth","06032b06010505070302":"clientAuth","06032b06010505070303":"codeSigning","06032b06010505070304":"emailProtection","06032b06010505070305":"ipsecEndSystem","06032b06010505070306":"ipsecTunnel","06032b06010505070307":"ipsecUser","06032b06010505070308":"timeStamping","06032b060105050704":"cmpInformationTypes","06032b06010505070401":"caProtEncCert","06032b06010505070402":"signKeyPairTypes","06032b06010505070403":"encKeyPairTypes","06032b06010505070404":"preferredSymmAlg","06032b06010505070405":"caKeyUpdateInfo","06032b06010505070406":"currentCRL","06032b06010505073001":"ocsp","06032b06010505073002":"caIssuers","06032b06010505080101":"HMAC-MD5","06032b06010505080102":"HMAC-SHA","060360864801650201010a":"mosaicKeyManagementAlgorithm","060360864801650201010b":"sdnsKMandSigAlgorithm","060360864801650201010c":"mosaicKMandSigAlgorithm","060360864801650201010d":"SuiteASignatureAlgorithm","060360864801650201010e":"SuiteAConfidentialityAlgorithm","060360864801650201010f":"SuiteAIntegrityAlgorithm","06036086480186f84201":"cert-extension","06036086480186f842010a":"EntityLogo","06036086480186f842010b":"UserPicture","06036086480186f8420109":"HomePage-url","06036086480186f84202":"data-type","06036086480186f8420201":"GIF","06036086480186f8420202":"JPEG","06036086480186f8420203":"URL","06036086480186f8420204":"HTML","06036086480186f8420205":"netscape-cert-sequence","06036086480186f8420206":"netscape-cert-url","06036086480186f84203":"directory","06036086480186f8420401":"serverGatedCrypto","06036086480186f845010603":"Unknown Verisign extension","06036086480186f845010606":"Unknown Verisign extension","06036086480186f84501070101":"Verisign certificatePolicy","06036086480186f8450107010101":"Unknown Verisign policy qualifier","06036086480186f8450107010102":"Unknown Verisign policy qualifier","0603678105":"TCPA","060367810501":"tcpa_specVersion","060367810502":"tcpa_attribute","06036781050201":"tcpa_at_tpmManufacturer","0603678105020a":"tcpa_at_securityQualities","0603678105020b":"tcpa_at_tpmProtectionProfile","0603678105020c":"tcpa_at_tpmSecurityTarget","0603678105020d":"tcpa_at_foundationProtectionProfile","0603678105020e":"tcpa_at_foundationSecurityTarget","0603678105020f":"tcpa_at_tpmIdLabel","06036781050202":"tcpa_at_tpmModel","06036781050203":"tcpa_at_tpmVersion","06036781050204":"tcpa_at_platformManufacturer","06036781050205":"tcpa_at_platformModel","06036781050206":"tcpa_at_platformVersion","06036781050207":"tcpa_at_componentManufacturer","06036781050208":"tcpa_at_componentModel","06036781050209":"tcpa_at_componentVersion","060367810503":"tcpa_protocol","06036781050301":"tcpa_prtt_tpmIdProtocol","0603672a00":"contentType","0603672a0000":"PANData","0603672a0001":"PANToken","0603672a0002":"PANOnly","0603672a01":"msgExt","0603672a0a":"national","0603672a0a8140":"Japan","0603672a02":"field","0603672a0200":"fullName","0603672a0201":"givenName","0603672a020a":"amount","0603672a0202":"familyName","0603672a0203":"birthFamilyName","0603672a0204":"placeName","0603672a0205":"identificationNumber","0603672a0206":"month","0603672a0207":"date","0603672a02070b":"accountNumber","0603672a02070c":"passPhrase","0603672a0208":"address","0603672a0209":"telephone","0603672a03":"attribute","0603672a0300":"cert","0603672a030000":"rootKeyThumb","0603672a030001":"additionalPolicy","0603672a04":"algorithm","0603672a05":"policy","0603672a0500":"root","0603672a06":"module","0603672a07":"certExt","0603672a0700":"hashedRootKey","0603672a0701":"certificateType","0603672a0702":"merchantData","0603672a0703":"cardCertRequired","0603672a0704":"tunneling","0603672a0705":"setExtensions","0603672a0706":"setQualifier","0603672a08":"brand","0603672a0801":"IATA-ATA","0603672a081e":"Diners","0603672a0822":"AmericanExpress","0603672a0804":"VISA","0603672a0805":"MasterCard","0603672a08ae7b":"Novus","0603672a09":"vendor","0603672a0900":"GlobeSet","0603672a0901":"IBM","0603672a090a":"Griffin","0603672a090b":"Certicom","0603672a090c":"OSS","0603672a090d":"TenthMountain","0603672a090e":"Antares","0603672a090f":"ECC","0603672a0910":"Maithean","0603672a0911":"Netscape","0603672a0912":"Verisign","0603672a0913":"BlueMoney","0603672a0902":"CyberCash","0603672a0914":"Lacerte","0603672a0915":"Fujitsu","0603672a0916":"eLab","0603672a0917":"Entrust","0603672a0918":"VIAnet","0603672a0919":"III","0603672a091a":"OpenMarket","0603672a091b":"Lexem","0603672a091c":"Intertrader","0603672a091d":"Persimmon","0603672a0903":"Terisa","0603672a091e":"NABLE","0603672a091f":"espace-net","0603672a0920":"Hitachi","0603672a0921":"Microsoft","0603672a0922":"NEC","0603672a0923":"Mitsubishi","0603672a0924":"NCR","0603672a0925":"e-COMM","0603672a0926":"Gemplus","0603672a0904":"RSADSI","0603672a0905":"VeriFone","0603672a0906":"TrinTech","0603672a0907":"BankGate","0603672a0908":"GTE","0603672a0909":"CompuSource","0603551d01":"authorityKeyIdentifier","0603551d0a":"basicConstraints","0603551d0b":"nameConstraints","0603551d0c":"policyConstraints","0603551d0d":"basicConstraints","0603551d0e":"subjectKeyIdentifier","0603551d0f":"keyUsage","0603551d10":"privateKeyUsagePeriod","0603551d11":"subjectAltName","0603551d12":"issuerAltName","0603551d13":"basicConstraints","0603551d02":"keyAttributes","0603551d14":"cRLNumber","0603551d15":"cRLReason","0603551d16":"expirationDate","0603551d17":"instructionCode","0603551d18":"invalidityDate","0603551d1a":"issuingDistributionPoint","0603551d1b":"deltaCRLIndicator","0603551d1c":"issuingDistributionPoint","0603551d1d":"certificateIssuer","0603551d03":"certificatePolicies","0603551d1e":"nameConstraints","0603551d1f":"cRLDistributionPoints","0603551d20":"certificatePolicies","0603551d21":"policyMappings","0603551d22":"policyConstraints","0603551d23":"authorityKeyIdentifier","0603551d24":"policyConstraints","0603551d25":"extKeyUsage","0603551d04":"keyUsageRestriction","0603551d05":"policyMapping","0603551d06":"subtreesConstraint","0603551d07":"subjectAltName","0603551d08":"issuerAltName","0603551d09":"subjectDirectoryAttributes","0603550400":"objectClass","0603550401":"aliasObjectName","060355040d":"description","060355040e":"searchGuide","060355040f":"businessCategory","0603550410":"postalAddress","0603550411":"postalCode","0603550412":"postOfficeBox","0603550413":"physicalDeliveryOfficeName","0603550402":"knowledgeInformation","0603550415":"telexNumber","0603550416":"teletexTerminalIdentifier","0603550417":"facsimileTelephoneNumber","0603550418":"x121Address","0603550419":"internationalISDNNumber","060355041a":"registeredAddress","060355041b":"destinationIndicator","060355041c":"preferredDeliveryMehtod","060355041d":"presentationAddress","060355041e":"supportedApplicationContext","060355041f":"member","0603550420":"owner","0603550421":"roleOccupant","0603550422":"seeAlso","0603550423":"userPassword","0603550424":"userCertificate","0603550425":"caCertificate","0603550426":"authorityRevocationList","0603550427":"certificateRevocationList","0603550428":"crossCertificatePair","0603550429":"givenName","0603550405":"serialNumber","0603550434":"supportedAlgorithms","0603550435":"deltaRevocationList","060355043a":"crossCertificatePair","06035508":"X.500-Algorithms","0603550801":"X.500-Alg-Encryption","060355080101":"rsa","0603604c0101":"DPC"};var Punycode={IDN:!1,run_to_ascii:function(a,b){var c=b[0];return c?punycode.ToASCII(a):punycode.encode(a)},run_to_unicode:function(a,b){var c=b[0];return c?punycode.ToUnicode(a):punycode.decode(a)}},QuotedPrintable={run_to:function(a,b){var c=QuotedPrintable.mimeEncode(a);return c=c.replace(/\r?\n|\r/g,function(){return"\r\n"}).replace(/[\t ]+$/gm,function(a){return a.replace(/ /g,"=20").replace(/\t/g,"=09")}),QuotedPrintable._addSoftLinebreaks(c,"qp")},run_from:function(a,b){var c=a.replace(/\=(?:\r?\n|$)/g,"");return QuotedPrintable.mimeDecode(c)},mimeDecode:function(a){for(var b,c,d=(a.match(/\=[\da-fA-F]{2}/g)||[]).length,e=a.length-2*d,f=new Array(e),g=0,h=0,i=a.length;h<i;h++)b=a.charAt(h),"="===b&&(c=a.substr(h+1,2))&&/[\da-fA-F]{2}/.test(c)?(f[g++]=parseInt(c,16),h+=2):f[g++]=b.charCodeAt(0);return f},mimeEncode:function(a){for(var b=[[9],[10],[13],[32],[33],[35,60],[62],[64,94],[96,126]],c="",d=0,e=a.length;d<e;d++)c+=this._checkRanges(a[d],b)?String.fromCharCode(a[d]):"="+(a[d]<16?"0":"")+a[d].toString(16).toUpperCase();return c},_checkRanges:function(a,b){for(var c=b.length-1;c>=0;c--)if(b[c].length){if(1===b[c].length&&a===b[c][0])return!0;if(2===b[c].length&&a>=b[c][0]&&a<=b[c][1])return!0}return!1},_addSoftLinebreaks:function(a,b){var c=76;return b=(b||"base64").toString().toLowerCase().trim(),"qp"===b?this._addQPSoftLinebreaks(a,c):this._addBase64SoftLinebreaks(a,c)},_addBase64SoftLinebreaks:function(a,b){return a=(a||"").toString().trim(),a.replace(new RegExp(".{"+b+"}","g"),"$&\r\n").trim()},_addQPSoftLinebreaks:function(a,b){for(var c,d,e,f=0,g=a.length,h=Math.floor(b/3),i="";f<g;)if(e=a.substr(f,b),c=e.match(/\r\n/))e=e.substr(0,c.index+c[0].length),i+=e,f+=e.length;else if("\n"!==e.substr(-1))if(c=e.substr(-h).match(/\n.*?$/))e=e.substr(0,e.length-(c[0].length-1)),i+=e,f+=e.length;else{if(e.length>b-h&&(c=e.substr(-h).match(/[ \t\.,!\?][^ \t\.,!\?]*$/)))e=e.substr(0,e.length-(c[0].length-1));else if("\r"===e.substr(-1))e=e.substr(0,e.length-1);else if(e.match(/\=[\da-f]{0,2}$/i))for((c=e.match(/\=[\da-f]{0,1}$/i))&&(e=e.substr(0,e.length-c[0].length));e.length>3&&e.length<g-f&&!e.match(/^(?:=[\da-f]{2}){1,4}$/i)&&(c=e.match(/\=[\da-f]{2}$/gi))&&(d=parseInt(c[0].substr(1,2),16),!(d<128))&&(e=e.substr(0,e.length-3),!(d>=192)););f+e.length<g&&"\n"!==e.substr(-1)?(76===e.length&&e.match(/\=[\da-f]{2}$/i)?e=e.substr(0,e.length-3):76===e.length&&(e=e.substr(0,e.length-1)),f+=e.length,e+="=\r\n"):f+=e.length,i+=e}else i+=e,f+=e.length;return i}},Rotate={ROTATE_AMOUNT:1,ROTATE_WHOLE:!1,_rot:function(a,b,c){for(var d=[],e=0;e<a.length;e++){for(var f=a[e],g=0;g<b;g++)f=c(f);d.push(f)}return d},run_rotr:function(a,b){return b[1]?Rotate._rotr_whole(a,b[0]):Rotate._rot(a,b[0],Rotate._rotr)},run_rotl:function(a,b){return b[1]?Rotate._rotl_whole(a,b[0]):Rotate._rot(a,b[0],Rotate._rotl)},ROT13_AMOUNT:13,ROT13_LOWERCASE:!0,ROT13_UPPERCASE:!0,run_rot13:function(a,b){var c,d=b[2],e=a,f=b[0],g=b[1];if(d){d<0&&(d=26-Math.abs(d)%26);for(var h=0;h<a.length;h++)c=a[h],g&&c>=65&&c<=90?(c=(c-65+d)%26,e[h]=c+65):f&&c>=97&&c<=122&&(c=(c-97+d)%26,e[h]=c+97)}return e},ROT47_AMOUNT:47,run_rot47:function(a,b){var c,d=b[0],e=a;if(d){d<0&&(d=94-Math.abs(d)%94);for(var f=0;f<a.length;f++)c=a[f],c>=33&&c<=126&&(c=(c-33+d)%94,e[f]=c+33)}return e},_rotr:function(a){var b=(1&a)<<7;return a>>1|b},_rotl:function(a){var b=a>>7&1;return 255&(a<<1|b)},_rotr_whole:function(a,b){var c,d=0,e=[];b%=8;for(var f=0;f<a.length;f++){var g=a[f]>>>0;c=g>>b|d,d=(g&Math.pow(2,b)-1)<<8-b,e.push(c)}return e[0]|=d,e},_rotl_whole:function(a,b){var c,d=0,e=[];b%=8;for(var f=a.length-1;f>=0;f--){var g=a[f];c=255&(g<<b|d),d=g>>8-b&Math.pow(2,b)-1,e[f]=c}return e[a.length-1]=e[a.length-1]|d,e}},SeqUtils={DELIMITER_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon","Colon","Nothing (separate chars)"],SORT_REVERSE:!1,SORT_ORDER:["Alphabetical (case sensitive)","Alphabetical (case insensitive)","IP address"],run_sort:function(a,b){var c=Utils.char_rep[b[0]],d=b[1],e=b[2],f=a.split(c);return"Alphabetical (case sensitive)"===e?f=f.sort():"Alphabetical (case insensitive)"===e?f=f.sort(SeqUtils._case_insensitive_sort):"IP address"===e&&(f=f.sort(SeqUtils._ip_sort)),d&&f.reverse(),f.join(c)},run_unique:function(a,b){var c=Utils.char_rep[b[0]];return a.split(c).unique().join(c)},SEARCH_TYPE:["Regex","Extended (\\n, \\t, \\x...)","Simple string"],run_count:function(a,b){var c=b[0].string,d=b[0].option;if("Regex"!==d||!c)return c?(0===d.indexOf("Extended")&&(c=Utils.parse_escaped_chars(c)),a.count(c)):0;try{var e=new RegExp(c,"gi"),f=a.match(e);return f.length}catch(a){return 0}},REVERSE_BY:["Character","Line"],run_reverse:function(a,b){if("Line"===b[0]){for(var c=[],d=[],e=[],f=0;f<a.length;f++)10===a[f]?(c.push(d),d=[]):d.push(a[f]);for(c.push(d),c.reverse(),f=0;f<c.length;f++)e=e.concat(c[f]),e.push(10);return e.slice(0,a.length)}return a.reverse()},run_add_line_numbers:function(a,b){for(var c=a.split("\n"),d="",e=c.length.toString().length,f=0;f<c.length;f++)d+=Utils.pad((f+1).toString(),e," ")+" "+c[f]+"\n";return d.slice(0,d.length-1)},run_remove_line_numbers:function(a,b){return a.replace(/^[ \t]{0,5}\d+[\s:|\-,.)\]]/gm,"")},run_expand_alph_range:function(a,b){return Utils.expand_alph_range(a).join(b[0])},_case_insensitive_sort:function(a,b){return a.toLowerCase().localeCompare(b.toLowerCase())},_ip_sort:function(a,b){var c=a.split("."),d=b.split(".");return c=16777216*c[0]+65536*c[1]+256*c[2]+1*c[3],d=16777216*d[0]+65536*d[1]+256*d[2]+1*d[3],isNaN(c)&&!isNaN(d)?1:!isNaN(c)&&isNaN(d)?-1:isNaN(c)&&isNaN(d)?a.localeCompare(b):c-d}},StrUtils={REGEX_PRE_POPULATE:[{name:"User defined",value:""},{name:"IPv4 address",value:"(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?"},{name:"IPv6 address",value:"((?=.*::)(?!.*::.+::)(::)?([\\dA-Fa-f]{1,4}:(:|\\b)|){5}|([\\dA-Fa-f]{1,4}:){6})((([\\dA-Fa-f]{1,4}((?!\\3)::|:\\b|(?![\\dA-Fa-f])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})"},{name:"Email address",value:"(\\w[-.\\w]*)@([-\\w]+(?:\\.[-\\w]+)*)\\.([A-Za-z]{2,4})"},{name:"URL",value:'([A-Za-z]+://)([-\\w]+(?:\\.\\w[-\\w]*)+)(:\\d+)?(/[^.!,?;"\\x27<>()\\[\\]{}\\s\\x7F-\\xFF]*(?:[.!,?]+[^.!,?;"\\x27<>()\\[\\]{}\\s\\x7F-\\xFF]+)*)?'},{name:"Domain",value:"(?:(https?):\\/\\/)?([-\\w.]+)\\.(com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+"},{name:"Windows file path",value:"([A-Za-z]):\\\\((?:[A-Za-z\\d][A-Za-z\\d\\- \\x27_\\(\\)]{0,61}\\\\?)*[A-Za-z\\d][A-Za-z\\d\\- \\x27_\\(\\)]{0,61})(\\.[A-Za-z\\d]{1,6})?"},{name:"UNIX file path",value:"(?:/[A-Za-z\\d.][A-Za-z\\d\\-.]{0,61})+"},{name:"MAC address",value:"[A-Fa-f\\d]{2}(?:[:-][A-Fa-f\\d]{2}){5}"},{name:"Date (yyyy-mm-dd)",value:"((?:19|20)\\d\\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])"},{name:"Date (dd/mm/yyyy)",value:"(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.]((?:19|20)\\d\\d)"},{name:"Date (mm/dd/yyyy)",value:"(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]((?:19|20)\\d\\d)"},{name:"Strings",value:'[A-Za-z\\d/\\-:.,_$%\\x27"()<>= !\\[\\]{}@]{4,}'}],REGEX_CASE_INSENSITIVE:!0,REGEX_MULTILINE_MATCHING:!0,OUTPUT_FORMAT:["Highlight matches","List matches","List capture groups","List matches with capture groups"],DISPLAY_TOTAL:!1,run_regex:function(a,b){var c=b[1],d=b[2],e=b[3],f=b[4],g=b[5],h="g";if(d&&(h+="i"),e&&(h+="m"),!c||"^"===c||"$"===c)return Utils.escape_html(a);try{var i=new RegExp(c,h);switch(g){case"Highlight matches":return StrUtils._regex_highlight(a,i,f);case"List matches":return Utils.escape_html(StrUtils._regex_list(a,i,f,!0,!1));case"List capture groups":return Utils.escape_html(StrUtils._regex_list(a,i,f,!1,!0));case"List matches with capture groups":return Utils.escape_html(StrUtils._regex_list(a,i,f,!0,!0));default:return"Error: Invalid output format"}}catch(a){return"Invalid regex. Details: "+a.message}},CASE_SCOPE:["All","Word","Sentence","Paragraph"],run_upper:function(a,b){var c=b[0];switch(c){case"Word":return a.replace(/(\b\w)/gi,function(a){return a.toUpperCase()});case"Sentence":return a.replace(/(?:\.|^)\s*(\b\w)/gi,function(a){return a.toUpperCase()});case"Paragraph":return a.replace(/(?:\n|^)\s*(\b\w)/gi,function(a){return a.toUpperCase()});case"All":default:return a.toUpperCase()}},run_lower:function(a,b){return a.toLowerCase()},SEARCH_TYPE:["Regex","Extended (\\n, \\t, \\x...)","Simple string"],FIND_REPLACE_GLOBAL:!0,FIND_REPLACE_CASE:!1,FIND_REPLACE_MULTILINE:!0,run_find_replace:function(a,b){var c=b[0].string,d=b[0].option,e=b[1],f=b[2],g=b[3],h=b[4],i="";return f&&(i+="g"),g&&(i+="i"),h&&(i+="m"),"Regex"===d?c=new RegExp(c,i):0===d.indexOf("Extended")&&(c=Utils.parse_escaped_chars(c)),a.replace(c,e,i)},SPLIT_DELIM:",",DELIMITER_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon","Colon","Nothing (separate chars)"],run_split:function(a,b){var c=b[0]||StrUtils.SPLIT_DELIM,d=Utils.char_rep[b[1]],e=a.split(c);return e.join(d)},DIFF_SAMPLE_DELIMITER:"\\n\\n",DIFF_BY:["Character","Word","Line","Sentence","CSS","JSON"],run_diff:function(a,b){var c,d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=a.split(d),j="";if(!i||2!==i.length)return"Incorrect number of samples, perhaps you need to modify the sample delimiter or add more samples?";switch(e){case"Character":c=JsDiff.diffChars(i[0],i[1]);break;case"Word":c=h?JsDiff.diffWords(i[0],i[1]):JsDiff.diffWordsWithSpace(i[0],i[1]);break;case"Line":c=h?JsDiff.diffTrimmedLines(i[0],i[1]):JsDiff.diffLines(i[0],i[1]);break;case"Sentence":c=JsDiff.diffSentences(i[0],i[1]);break;case"CSS":c=JsDiff.diffCss(i[0],i[1]);break;case"JSON":c=JsDiff.diffJson(i[0],i[1]);break;default:return"Invalid 'Diff by' option."}for(var k=0;k<c.length;k++)c[k].added?f&&(j+="<span class='hlgreen'>"+Utils.escape_html(c[k].value)+"</span>"):c[k].removed?g&&(j+="<span class='hlred'>"+Utils.escape_html(c[k].value)+"</span>"):j+=Utils.escape_html(c[k].value);return j},OFF_CHK_SAMPLE_DELIMITER:"\\n\\n",run_offset_checker:function(a,b){var c,d=b[0],e=a.split(d),f=[],g=0,h=0,i=!1,j=!1;if(!e||e.length<2)return"Not enough samples, perhaps you need to modify the sample delimiter or add more data?";for(h=0;h<e.length;h++)f[h]="";for(g=0;g<e[0].length;g++){for(c=e[0][g],i=!1,h=1;h<e.length;h++){if(e[h][g]!==c){i=!1;break}i=!0}for(h=0;h<e.length;h++)e[h].length<=g?(j&&(f[h]+="</span>"),h===e.length-1&&(j=!1)):(i&&!j?(f[h]+="<span class='hlgreen'>"+Utils.escape_html(e[h][g]),e[h].length===g+1&&(f[h]+="</span>"),h===e.length-1&&(j=!0)):!i&&j?(f[h]+="</span>"+Utils.escape_html(e[h][g]),h===e.length-1&&(j=!1)):(f[h]+=Utils.escape_html(e[h][g]),j&&e[h].length===g+1&&(f[h]+="</span>",e[h].length-1!==g&&(j=!1))),e[0].length-1===g&&(j&&(f[h]+="</span>"),f[h]+=Utils.escape_html(e[h].substring(g+1))))}return f.join(d)},run_parse_escaped_string:function(a,b){return Utils.parse_escaped_chars(a)},_regex_highlight:function(a,b,c){for(var d,e="",f=1,g=0,h=0;d=b.exec(a);)e+=Utils.escape_html(a.slice(g,d.index)),e+="<span class='hl"+f+"'>"+Utils.escape_html(d[0])+"</span>",f=1===f?2:1,g=b.lastIndex,h++;return e+=Utils.escape_html(a.slice(g,a.length)),c&&(e="Total found: "+h+"\n\n"+e),e},_regex_list:function(a,b,c,d,e){for(var f,g="",h=0;f=b.exec(a);)if(h++,d&&(g+=f[0]+"\n"),e)for(var i=1;i<f.length;i++)d&&(g+=" Group "+i+": "),g+=f[i]+"\n";return c&&(g="Total found: "+h+"\n\n"+g),g}},Tidy={REMOVE_SPACES:!0,REMOVE_CARIAGE_RETURNS:!0,REMOVE_LINE_FEEDS:!0,REMOVE_TABS:!0,REMOVE_FORM_FEEDS:!0,REMOVE_FULL_STOPS:!1,run_remove_whitespace:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=a;return c&&(i=i.replace(/ /g,"")),d&&(i=i.replace(/\r/g,"")),e&&(i=i.replace(/\n/g,"")),f&&(i=i.replace(/\t/g,"")),g&&(i=i.replace(/\f/g,"")),h&&(i=i.replace(/\./g,"")),i},run_remove_nulls:function(a,b){for(var c=[],d=0;d<a.length;d++)0!==a[d]&&c.push(a[d]);return c},APPLY_TO_EACH_LINE:!1,DROP_START:0,DROP_LENGTH:5,run_drop_bytes:function(a,b){var c=b[0],d=b[1],e=b[2];if(c<0||d<0)throw"Error: Invalid value";if(!e)return a.slice(0,c).concat(a.slice(c+d,a.length));for(var f=[],g=[],h=0;h<a.length;h++)10===a[h]?(f.push(g),g=[]):g.push(a[h]);f.push(g);var i=[];for(h=0;h<f.length;h++)i=i.concat(f[h].slice(0,c).concat(f[h].slice(c+d,f[h].length))),i.push(10);return i.slice(0,i.length-1)},TAKE_START:0,TAKE_LENGTH:5,run_take_bytes:function(a,b){var c=b[0],d=b[1],e=b[2];if(c<0||d<0)throw"Error: Invalid value";if(!e)return a.slice(c,c+d);for(var f=[],g=[],h=0;h<a.length;h++)10===a[h]?(f.push(g),g=[]):g.push(a[h]);f.push(g);var i=[];for(h=0;h<f.length;h++)i=i.concat(f[h].slice(c,c+d)),i.push(10);return i.slice(0,i.length-1)},PAD_POSITION:["Start","End"],PAD_LENGTH:5,PAD_CHAR:" ",run_pad:function(a,b){var c=b[0],d=b[1],e=b[2],f=a.split("\n"),g="",h=0;if("Start"===c)for(h=0;h<f.length;h++)g+=Utils.pad_left(f[h],f[h].length+d,e)+"\n";else if("End"===c)for(h=0;h<f.length;h++)g+=Utils.pad_right(f[h],f[h].length+d,e)+"\n";return g.slice(0,g.length-1)}},URL_={ENCODE_ALL:!1,run_to:function(a,b){var c=b[0];return c?URL_._encode_all_chars(a):encodeURI(a)},run_from:function(a,b){var c=a.replace(/\+/g,"%20");try{return decodeURIComponent(c)}catch(a){return unescape(c)}},run_parse:function(a,b){var c=document.createElement("a");if(c.href="http://example.com/",c.href=a,c.protocol){var d="";if(c.hostname!==window.location.hostname&&(d="Protocol:\t"+c.protocol+"\n",c.hostname&&(d+="Hostname:\t"+c.hostname+"\n"),c.port&&(d+="Port:\t\t"+c.port+"\n")),c.pathname){var e=c.pathname;0===e.indexOf(window.location.pathname)&&(e=e.replace(window.location.pathname,"")),e&&(d+="Path name:\t"+e+"\n")}if(c.hash&&(d+="Hash:\t\t"+c.hash+"\n"),c.search){d+="Arguments:\n";for(var f=c.search.slice(1,c.search.length).split("&"),g=[],h=0,i=0;i<f.length;i++)g.push(f[i].split("=")),h=g[i][0].length>h?g[i][0].length:h;for(i=0;i<g.length;i++)d+="\t"+Utils.pad_right(g[i][0],h),d+=g[i].length>1&&g[i][1].length?" = "+g[i][1]+"\n":"\n"}return d}return"Invalid URI"},_encode_all_chars:function(a){return encodeURIComponent(a).replace(/!/g,"%21").replace(/#/g,"%23").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/\-/g,"%2D").replace(/\./g,"%2E").replace(/_/g,"%5F").replace(/~/g,"%7E")}},UUID={run_generate_v4:function(a,b){if("undefined"!=typeof window.crypto&&"undefined"!=typeof window.crypto.getRandomValues){var c=new Uint32Array(4),d=0;return window.crypto.getRandomValues(c),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=c[d>>3]>>d%8*4&15,e="x"===a?b:3&b|8;return d++,e.toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})}},Unicode={PREFIXES:["\\u","%u","U+"],run_unescape:function(a,b){for(var c,d=Unicode._prefix_to_regex[b[0]],e=new RegExp(d+"([a-f\\d]{4,6})","ig"),f="",g=0;c=e.exec(a);)f+=a.slice(g,c.index),g=c.index,f+=Utils.chr(parseInt(c[1],16)),g=e.lastIndex;return f+=a.slice(g,a.length)},_prefix_to_regex:{"\\u":"\\\\u","%u":"%u","U+":"U\\+"}},Chef=function(){this.dish=new Dish};Chef.prototype.bake=function(a,b,c,d,e){var f=(new Date).getTime(),g=new Recipe(b),h=g.contains_flow_control(),i=!1;c.hasOwnProperty("attempt_highlight")&&(c.attempt_highlight=!0),h&&(c.attempt_highlight=!1),d>=b.length&&(d=0),e&&(g.set_breakpoint(d,!1),g.set_breakpoint(d+1,!0)),d>0&&h&&(g.remove_breaks_up_to(d),d=0),0===d&&this.dish.set(a,Dish.STRING);try{d=g.execute(this.dish,d)}catch(a){i=a,d=a.progress}return{result:this.dish.type===Dish.HTML?this.dish.get(Dish.HTML):this.dish.get(Dish.STRING),type:Dish.enum_lookup(this.dish.type),progress:d,options:c,duration:(new Date).getTime()-f,error:i}},Chef.prototype.silent_bake=function(a){var b=(new Date).getTime(),c=new Recipe(a),d=new Dish("",Dish.STRING);try{c.execute(d)}catch(a){}return(new Date).getTime()-b};var Dish=function(a,b){this.value=a||"string"==typeof a?a:null,this.type=b||Dish.BYTE_ARRAY};Dish.BYTE_ARRAY=0,Dish.STRING=1,Dish.NUMBER=2,Dish.HTML=3,Dish.type_enum=function(a){switch(a){case"byte_array":case"Byte array":return Dish.BYTE_ARRAY;case"string":case"String":return Dish.STRING;case"number":case"Number":return Dish.NUMBER;case"html":case"HTML":return Dish.HTML;default:throw"Invalid data type string. No matching enum."}},Dish.enum_lookup=function(a){switch(a){case Dish.BYTE_ARRAY:return"byte_array";case Dish.STRING:return"string";case Dish.NUMBER:return"number";case Dish.HTML:return"html";default:throw"Invalid data type enum. No matching type."}},Dish.prototype.set=function(a,b){if(this.value=a,this.type=b,!this.valid()){var c=Utils.truncate(JSON.stringify(this.value),13);throw"Data is not a valid "+Dish.enum_lookup(b)+": "+c}},Dish.prototype.get=function(a){return this.type!==a&&this.translate(a),this.value},Dish.prototype.translate=function(a){switch(this.type){case Dish.STRING:this.value=this.value?Utils.str_to_byte_array(this.value):[],this.type=Dish.BYTE_ARRAY;break;case Dish.NUMBER:this.value="number"==typeof this.value?Utils.str_to_byte_array(this.value.toString()):[],this.type=Dish.BYTE_ARRAY;break;case Dish.HTML:this.value=this.value?Utils.str_to_byte_array(Utils.strip_html_tags(this.value,!0)):[],this.type=Dish.BYTE_ARRAY}switch(a){case Dish.STRING:case Dish.HTML:this.value=this.value?Utils.byte_array_to_utf8(this.value):"",this.type=Dish.STRING;break;case Dish.NUMBER:this.value=this.value?parseFloat(Utils.byte_array_to_utf8(this.value)):0,this.type=Dish.NUMBER}},Dish.prototype.valid=function(){switch(this.type){case Dish.BYTE_ARRAY:if(!(this.value instanceof Array))return!1;for(var a=0;a<this.value.length;a++)if("number"!=typeof this.value[a]||this.value[a]<0||this.value[a]>255)return!1;return!0;case Dish.STRING:case Dish.HTML:return"string"==typeof this.value;case Dish.NUMBER:return"number"==typeof this.value;default:return!1}};const FlowControl={FORK_DELIM:"\\n",MERGE_DELIM:"\\n",run_fork:function(a){var b=a.op_list,c=b[a.progress].input_type,d=b[a.progress].output_type,e=a.dish.get(c),f=b[a.progress].get_ing_values(),g=f[0],h=f[1],i=[],j=[];e&&(j=e.split(g));for(var k=a.progress+1;k<b.length&&("Merge"!==b[k].name||b[k].is_disabled());k++)i.push(b[k]);var l,m=new Recipe,n="";for(m.add_operations(i),k=0;k<j.length;k++){var o=new Dish(j[k],c);l=m.execute(o,0),n+=o.get(d)+h}return a.dish.set(n,d),a.progress+=l,a},run_merge:function(a){return a},JUMP_NUM:0,MAX_JUMPS:10,run_jump:function(a){var b=a.op_list[a.progress].get_ing_values(),c=b[0],d=b[1];if(a.num_jumps>=d)throw"Reached maximum jumps, sorry!";return a.progress+=c,a.num_jumps++,a},run_cond_jump:function(a){var b=a.op_list[a.progress].get_ing_values(),c=a.dish,d=b[0],e=b[1],f=b[2];if(a.num_jumps>=f)throw"Reached maximum jumps, sorry!";return""!==d&&c.get(Dish.STRING).search(d)>-1&&(a.progress+=e,a.num_jumps++),a},run_return:function(a){return a.progress=a.op_list.length,a}};var Ingredient=function(a){this.name="",this.type="",this.value=null,a&&this._parse_config(a)};Ingredient.prototype._parse_config=function(a){this.name=a.name,this.type=a.type},Ingredient.prototype.get_config=function(){return this.value},Ingredient.prototype.set_value=function(a){this.value=Ingredient.prepare(a,this.type)},Ingredient.prepare=function(a,b){switch(b){case"binary_string":case"binary_short_string":case"editable_option":return Utils.parse_escaped_chars(a);case"byte_array":return"string"==typeof a?(a=a.replace(/\s+/g,""),Utils.hex_to_byte_array(a)):a;case"number":var c=parseFloat(a);if(isNaN(c)){var d=Utils.truncate(a.toString(),10);throw"Invalid ingredient value. Not a number: "+d}return c;default:return a}};var Operation=function(a,b){this.name=a,this.description="",this.input_type=-1,this.output_type=-1,this.run=null,this.highlight=null,this.highlight_reverse=null,this.breakpoint=!1,this.disabled=!1,this.ing_list=[],b&&this._parse_config(b)};Operation.prototype._parse_config=function(a){this.description=a.description,this.input_type=Dish.type_enum(a.input_type),this.output_type=Dish.type_enum(a.output_type),this.run=a.run,this.highlight=a.highlight,this.highlight_reverse=a.highlight_reverse,this.flow_control=a.flow_control;for(var b=0;b<a.args.length;b++){var c=a.args[b],d=new Ingredient(c);this.add_ingredient(d)}},Operation.prototype.get_config=function(){for(var a=[],b=0;b<this.ing_list.length;b++)a.push(this.ing_list[b].get_config());var c={op:this.name,args:a};return c},Operation.prototype.add_ingredient=function(a){this.ing_list.push(a)},Operation.prototype.set_ing_values=function(a){for(var b=0;b<a.length;b++)this.ing_list[b].set_value(a[b])},Operation.prototype.get_ing_values=function(){for(var a=[],b=0;b<this.ing_list.length;b++)a.push(this.ing_list[b].value);return a},Operation.prototype.set_breakpoint=function(a){this.breakpoint=!!a},Operation.prototype.is_breakpoint=function(){return this.breakpoint},Operation.prototype.set_disabled=function(a){this.disabled=!!a},Operation.prototype.is_disabled=function(){return this.disabled},Operation.prototype.is_flow_control=function(){return this.flow_control};var Recipe=function(a){this.op_list=[],a&&this._parse_config(a)};Recipe.prototype._parse_config=function(a){for(var b=0;b<a.length;b++){var c=a[b].op,d=OperationConfig[c],e=new Operation(c,d);e.set_ing_values(a[b].args),e.set_breakpoint(a[b].breakpoint),e.set_disabled(a[b].disabled),this.add_operation(e)}},Recipe.prototype.get_config=function(){for(var a=[],b=0;b<this.op_list.length;b++)a.push(this.op_list[b].get_config());return a},Recipe.prototype.add_operation=function(a){this.op_list.push(a)},Recipe.prototype.add_operations=function(a){this.op_list=this.op_list.concat(a)},Recipe.prototype.set_breakpoint=function(a,b){try{this.op_list[a].set_breakpoint(b)}catch(a){}},Recipe.prototype.remove_breaks_up_to=function(a){for(var b=0;b<a;b++)this.op_list[b].set_breakpoint(!1)},Recipe.prototype.contains_flow_control=function(){for(var a=0;a<this.op_list.length;a++)if(this.op_list[a].is_flow_control())return!0;return!1},Recipe.prototype.last_op_index=function(a){for(var b,c=a+1||0;c<this.op_list.length;c++){if(b=this.op_list[c],b.is_disabled())return c-1;if(b.is_breakpoint())return c-1}return c-1},Recipe.prototype.execute=function(a,b){b=b||0;for(var c,d,e,f=0,g=b;g<this.op_list.length;g++)if(c=this.op_list[g],!c.is_disabled()){if(c.is_breakpoint())return g;try{if(d=a.get(c.input_type),c.is_flow_control()){var h={progress:g,dish:a,op_list:this.op_list,num_jumps:f};h=c.run(h),g=h.progress,f=h.num_jumps}else e=c.run(d,c.get_ing_values()),a.set(e,c.output_type)}catch(a){var i="string"==typeof a?{message:a}:a;throw i.progress=g,i.display_str=c.name+" - ",i.fileName?i.display_str+=i.name+" in "+i.fileName+" on line "+i.lineNumber+".<br><br>Message: "+i.message:i.display_str+=i.message,i}}return this.op_list.length},Recipe.prototype.to_string=function(){return JSON.stringify(this.get_config())},Recipe.prototype.from_string=function(a){var b=JSON.parse(a);this._parse_config(b)};const Categories=[{name:"Favourites",ops:[]},{name:"Data format",ops:["To Hexdump","From Hexdump","To Hex","From Hex","To Charcode","From Charcode","To Decimal","From Decimal","To Binary","From Binary","To Base64","From Base64","Show Base64 offsets","To Base32","From Base32","To Base","From Base","To HTML Entity","From HTML Entity","URL Encode","URL Decode","Unescape Unicode Characters","To Quoted Printable","From Quoted Printable","To Punycode","From Punycode","To Hex Content","From Hex Content","PEM to Hex","Hex to PEM","Parse ASN.1 hex string","Change IP format","Text encoding","Swap endianness"]},{name:"Encryption / Encoding",ops:["AES Encrypt","AES Decrypt","Blowfish Encrypt","Blowfish Decrypt","DES Encrypt","DES Decrypt","Triple DES Encrypt","Triple DES Decrypt","Rabbit Encrypt","Rabbit Decrypt","RC4","RC4 Drop","ROT13","ROT47","XOR","XOR Brute Force","Vigen\xe8re Encode","Vigen\xe8re Decode","Derive PBKDF2 key","Derive EVP key"]},{name:"Public Key",ops:["Parse X.509 certificate","Parse ASN.1 hex string","PEM to Hex","Hex to PEM","Hex to Object Identifier","Object Identifier to Hex"]},{name:"Logical operations",ops:["XOR","XOR Brute Force","OR","NOT","AND","ADD","SUB","Rotate left","Rotate right","ROT13"]},{name:"Networking",ops:["Strip HTTP headers","Parse User Agent","Parse IP range","Parse IPv6 address","Parse URI","URL Encode","URL Decode","Format MAC addresses","Change IP format","Group IP addresses"]},{name:"Language",ops:["Text encoding","Unescape Unicode Characters"]},{name:"Utils",ops:["Diff","Remove whitespace","Remove null bytes","To Upper case","To Lower case","Add line numbers","Remove line numbers","Reverse","Sort","Unique","Split","Count occurrences","Expand alphabet range","Parse escaped string","Drop bytes","Take bytes","Pad lines","Find / Replace","Regular expression","Offset checker","Convert distance","Convert area","Convert mass","Convert speed","Convert data units","Parse UNIX file permissions","Swap endianness","Parse colour code"] -},{name:"Date / Time",ops:["Parse DateTime","Translate DateTime Format","From UNIX Timestamp","To UNIX Timestamp","Extract dates"]},{name:"Extractors",ops:["Strings","Extract IP addresses","Extract email addresses","Extract MAC addresses","Extract URLs","Extract domains","Extract file paths","Extract dates","Regular expression"]},{name:"Compression",ops:["Raw Deflate","Raw Inflate","Zlib Deflate","Zlib Inflate","Gzip","Gunzip","Zip","Unzip","Bzip2 Decompress"]},{name:"Hashing",ops:["Analyse hash","Generate all hashes","MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160","HMAC","Fletcher-16 Checksum","Adler-32 Checksum","CRC-32 Checksum","TCP/IP Checksum"]},{name:"Code tidy",ops:["Syntax highlighter","Generic Code Beautify","JavaScript Parser","JavaScript Beautify","JavaScript Minify","JSON Beautify","JSON Minify","XML Beautify","XML Minify","SQL Beautify","SQL Minify","CSS Beautify","CSS Minify","Strip HTML tags","Diff"]},{name:"Other",ops:["Entropy","Frequency distribution","Detect File Type","Scan for Embedded Files","Generate UUID","Numberwang"]},{name:"Flow control",ops:["Fork","Merge","Jump","Conditional Jump","Return"]}],OperationConfig={Fork:{description:"Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",run:FlowControl.run_fork,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Split delimiter",type:"binary_short_string",value:FlowControl.FORK_DELIM},{name:"Merge delimiter",type:"binary_short_string",value:FlowControl.MERGE_DELIM}]},Merge:{description:"Consolidate all branches back into a single trunk. The opposite of Fork.",run:FlowControl.run_merge,input_type:"string",output_type:"string",flow_control:!0,args:[]},Jump:{description:"Jump forwards or backwards over the specified number of operations.",run:FlowControl.run_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Number of operations to jump over",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},"Conditional Jump":{description:"Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression.",run:FlowControl.run_cond_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Match (regex)",type:"string",value:""},{name:"Number of operations to jump over if match found",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},Return:{description:"End execution of operations at this point in the recipe.",run:FlowControl.run_return,input_type:"string",output_type:"string",flow_control:!0,args:[]},"From Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>",run:Base64.run_from,highlight:Base64.highlight_from,highlight_reverse:Base64.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>",run:Base64.run_to,highlight:Base64.highlight_to,highlight_reverse:Base64.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS}]},"From Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_from_32,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_to_32,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET}]},"Show Base64 offsets":{description:"When a string is within a block of data and the whole block is Base64'd, the string itself could be represented in Base64 in three distinct ways depending on its offset within the block.<br><br>This operation shows all possible offsets for a given string so that each possible encoding can be considered.",run:Base64.run_offsets,input_type:"byte_array",output_type:"html",args:[{name:"Alphabet",type:"binary_string",value:Base64.ALPHABET},{name:"Show variable chars and padding",type:"boolean",value:Base64.OFFSETS_SHOW_VARIABLE}]},XOR:{description:"XOR the input with the given key.<br>e.g. <code>fe023da5</code><br><br><strong>Options</strong><br><u>Null preserving:</u> If the current byte is 0x00 or the same as the key, skip it.<br><br><u>Scheme:</u><ul><li>Standard - key is unchanged after each round</li><li>Input differential - key is set to the value of the previous unprocessed byte</li><li>Output differential - key is set to the value of the previous processed byte</li></ul>",run:BitwiseOp.run_xor,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT},{name:"Scheme",type:"option",value:BitwiseOp.XOR_SCHEME},{name:"Null preserving",type:"boolean",value:BitwiseOp.XOR_PRESERVE_NULLS}]},"XOR Brute Force":{description:"Enumerate all possible XOR solutions. Current maximum key length is 2 due to browser performance.<br><br>Optionally enter a regex string that you expect to find in the plaintext to filter results (crib).",run:BitwiseOp.run_xor_brute,input_type:"byte_array",output_type:"string",args:[{name:"Key length",type:"option",value:BitwiseOp.XOR_BRUTE_KEY_LENGTH},{name:"Length of sample",type:"number",value:BitwiseOp.XOR_BRUTE_SAMPLE_LENGTH},{name:"Offset of sample",type:"number",value:BitwiseOp.XOR_BRUTE_SAMPLE_OFFSET},{name:"Null preserving",type:"boolean",value:BitwiseOp.XOR_PRESERVE_NULLS},{name:"Differential",type:"boolean",value:BitwiseOp.XOR_DIFFERENTIAL},{name:"Crib (known plaintext string)",type:"binary_string",value:""},{name:"Print key",type:"boolean",value:BitwiseOp.XOR_BRUTE_PRINT_KEY},{name:"Output as hex",type:"boolean",value:BitwiseOp.XOR_BRUTE_OUTPUT_HEX}]},NOT:{description:"Returns the inverse of each byte.",run:BitwiseOp.run_not,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[]},AND:{description:"AND the input with the given key.<br>e.g. <code>fe023da5</code>",run:BitwiseOp.run_and,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},OR:{description:"OR the input with the given key.<br>e.g. <code>fe023da5</code>",run:BitwiseOp.run_or,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},ADD:{description:"ADD the input with the given key (e.g. <code>fe023da5</code>), MOD 255",run:BitwiseOp.run_add,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},SUB:{description:"SUB the input with the given key (e.g. <code>fe023da5</code>), MOD 255",run:BitwiseOp.run_sub,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},"From Hex":{description:"Converts a hexadecimal byte string back into a its raw value.<br><br>e.g. <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code> becomes the UTF-8 encoded string <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code>",run:ByteRepr.run_from_hex,highlight:ByteRepr.highlight_from,highlight_reverse:ByteRepr.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.HEX_DELIM_OPTIONS}]},"To Hex":{description:"Converts the input string to hexadecimal bytes separated by the specified delimiter.<br><br>e.g. The UTF-8 encoded string <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code> becomes <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code>",run:ByteRepr.run_to_hex,highlight:ByteRepr.highlight_to,highlight_reverse:ByteRepr.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.HEX_DELIM_OPTIONS}]},"From Charcode":{description:"Converts unicode character codes back into text.<br><br>e.g. <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code> becomes <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code>",run:ByteRepr.run_from_charcode,highlight:ByteRepr.highlight_from,highlight_reverse:ByteRepr.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS},{name:"Base",type:"number",value:ByteRepr.CHARCODE_BASE}]},"To Charcode":{description:"Converts text to its unicode character code equivalent.<br><br>e.g. <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code> becomes <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code>",run:ByteRepr.run_to_charcode,highlight:ByteRepr.highlight_to,highlight_reverse:ByteRepr.highlight_from,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS},{name:"Base",type:"number",value:ByteRepr.CHARCODE_BASE}]},"From Binary":{description:"Converts a binary string back into its raw form.<br><br>e.g. <code>01001000 01101001</code> becomes <code>Hi</code>",run:ByteRepr.run_from_binary,highlight:ByteRepr.highlight_from_binary,highlight_reverse:ByteRepr.highlight_to_binary,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.BIN_DELIM_OPTIONS}]},"To Binary":{description:"Displays the input data as a binary string.<br><br>e.g. <code>Hi</code> becomes <code>01001000 01101001</code>",run:ByteRepr.run_to_binary,highlight:ByteRepr.highlight_to_binary,highlight_reverse:ByteRepr.highlight_from_binary,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.BIN_DELIM_OPTIONS}]},"From Decimal":{description:"Converts the data from an ordinal integer array back into its raw form.<br><br>e.g. <code>72 101 108 108 111</code> becomes <code>Hello</code>",run:ByteRepr.run_from_decimal,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS}]},"To Decimal":{description:"Converts the input data to an ordinal integer array.<br><br>e.g. <code>Hello</code> becomes <code>72 101 108 108 111</code>",run:ByteRepr.run_to_decimal,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS}]},"From Hexdump":{description:"Attempts to convert a hexdump back into raw data. This operation supports many different hexdump variations, but probably not all. Make sure you verify that the data it gives you is correct before continuing analysis.",run:Hexdump.run_from,highlight:Hexdump.highlight_from,highlight_reverse:Hexdump.highlight_to,input_type:"string",output_type:"byte_array",args:[]},"To Hexdump":{description:"Creates a hexdump of the input data, displaying both the hexademinal values of each byte and an ASCII representation alongside.",run:Hexdump.run_to,highlight:Hexdump.highlight_to,highlight_reverse:Hexdump.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Width",type:"number",value:Hexdump.WIDTH},{name:"Upper case hex",type:"boolean",value:Hexdump.UPPER_CASE},{name:"Include final length",type:"boolean",value:Hexdump.INCLUDE_FINAL_LENGTH}]},"From Base":{description:"Converts a number to decimal from a given numerical base.",run:Base.run_from,input_type:"string",output_type:"number",args:[{name:"Radix",type:"number",value:Base.DEFAULT_RADIX}]},"To Base":{description:"Converts a decimal number to a given numerical base.",run:Base.run_to,input_type:"number",output_type:"string",args:[{name:"Radix",type:"number",value:Base.DEFAULT_RADIX}]},"From HTML Entity":{description:"Converts HTML entities back to characters<br><br>e.g. <code>&<span>amp;</span></code> becomes <code>&</code>",run:HTML.run_from_entity,input_type:"string",output_type:"string",args:[]},"To HTML Entity":{description:"Converts characters to HTML entities<br><br>e.g. <code>&</code> becomes <code>&<span>amp;</span></code>",run:HTML.run_to_entity,input_type:"string",output_type:"string",args:[{name:"Convert all characters",type:"boolean",value:HTML.CONVERT_ALL},{name:"Convert to",type:"option",value:HTML.CONVERT_OPTIONS}]},"Strip HTML tags":{description:"Removes all HTML tags from the input.",run:HTML.run_strip_tags,input_type:"string",output_type:"string",args:[{name:"Remove indentation",type:"boolean",value:HTML.REMOVE_INDENTATION},{name:"Remove excess line breaks",type:"boolean",value:HTML.REMOVE_LINE_BREAKS}]},"URL Decode":{description:"Converts URI/URL percent-encoded characters back to their raw values.<br><br>e.g. <code>%3d</code> becomes <code>=</code>",run:URL_.run_from,input_type:"string",output_type:"string",args:[]},"URL Encode":{description:"Encodes problematic characters into percent-encoding, a format supported by URIs/URLs.<br><br>e.g. <code>=</code> becomes <code>%3d</code>",run:URL_.run_to,input_type:"string",output_type:"string",args:[{name:"Encode all special chars",type:"boolean",value:URL_.ENCODE_ALL}]},"Parse URI":{description:"Pretty prints complicated Uniform Resource Identifier (URI) strings for ease of reading. Particularly useful for Uniform Resource Locators (URLs) with a lot of arguments.",run:URL_.run_parse,input_type:"string",output_type:"string",args:[]},"Unescape Unicode Characters":{description:"Converts unicode-escaped character notation back into raw characters.<br><br>Supports the prefixes:<ul><li><code>\\u</code></li><li><code>%u</code></li><li><code>U+</code></li></ul>e.g. <code>\\u03c3\\u03bf\\u03c5</code> becomes <code>\u03c3\u03bf\u03c5</code>",run:Unicode.run_unescape,input_type:"string",output_type:"string",args:[{name:"Prefix",type:"option",value:Unicode.PREFIXES}]},"From Quoted Printable":{description:"Converts QP-encoded text back to standard text.",run:QuotedPrintable.run_from,input_type:"string",output_type:"byte_array",args:[]},"To Quoted Printable":{description:"Quoted-Printable, or QP encoding, is an encoding using printable ASCII characters (alphanumeric and the equals sign '=') to transmit 8-bit data over a 7-bit data path or, generally, over a medium which is not 8-bit clean. It is defined as a MIME content transfer encoding for use in e-mail.<br><br>QP works by using the equals sign '=' as an escape character. It also limits line length to 76, as some software has limits on line length.",run:QuotedPrintable.run_to,input_type:"byte_array",output_type:"string",args:[]},"From Punycode":{description:"Punycode is a way to represent Unicode with the limited character subset of ASCII supported by the Domain Name System.<br><br>e.g. <code>mnchen-3ya</code> decodes to <code>m\xfcnchen</code>",run:Punycode.run_to_unicode,input_type:"string",output_type:"string",args:[{name:"Internationalised domain name",type:"boolean",value:Punycode.IDN}]},"To Punycode":{description:"Punycode is a way to represent Unicode with the limited character subset of ASCII supported by the Domain Name System.<br><br>e.g. <code>m\xfcnchen</code> encodes to <code>mnchen-3ya</code>",run:Punycode.run_to_ascii,input_type:"string",output_type:"string",args:[{name:"Internationalised domain name",type:"boolean",value:Punycode.IDN}]},"From Hex Content":{description:"Translates hexadecimal bytes in text back to raw bytes.<br><br>e.g. <code>foo|3d|bar</code> becomes <code>foo=bar</code>.",run:ByteRepr.run_from_hex_content,input_type:"string",output_type:"byte_array",args:[]},"To Hex Content":{description:"Converts special characters in a string to hexadecimal.<br><br>e.g. <code>foo=bar</code> becomes <code>foo|3d|bar</code>.",run:ByteRepr.run_to_hex_content,input_type:"byte_array",output_type:"string",args:[{name:"Convert",type:"option",value:ByteRepr.HEX_CONTENT_CONVERT_WHICH},{name:"Print spaces between bytes",type:"boolean",value:ByteRepr.HEX_CONTENT_SPACES_BETWEEN_BYTES}]},"Change IP format":{description:"Convert an IP address from one format to another, e.g. <code>172.20.23.54</code> to <code>ac141736</code>",run:IP.run_change_ip_format,input_type:"string",output_type:"string",args:[{name:"Input format",type:"option",value:IP.IP_FORMAT_LIST},{name:"Output format",type:"option",value:IP.IP_FORMAT_LIST}]},"Parse IP range":{description:"Given a CIDR range (e.g. <code>10.0.0.0/24</code>) or a hyphenated range (e.g. <code>10.0.0.0 - 10.0.1.0</code>), this operation provides network information and enumerates all IP addresses in the range.<br><br>IPv6 is supported but will not be enumerated.",run:IP.run_parse_ip_range,input_type:"string",output_type:"string",args:[{name:"Include network info",type:"boolean",value:IP.INCLUDE_NETWORK_INFO},{name:"Enumerate IP addresses",type:"boolean",value:IP.ENUMERATE_ADDRESSES},{name:"Allow large queries",type:"boolean",value:IP.ALLOW_LARGE_LIST}]},"Group IP addresses":{description:"Groups a list of IP addresses into subnets. Supports both IPv4 and IPv6 addresses.",run:IP.run_group_ips,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:IP.DELIM_OPTIONS},{name:"Subnet (CIDR)",type:"number",value:IP.GROUP_CIDR},{name:"Only show the subnets",type:"boolean",value:IP.GROUP_ONLY_SUBNET}]},"Parse IPv6 address":{description:"Displays the longhand and shorthand versions of a valid IPv6 address.<br><br>Recognises all reserved ranges and parses encapsulated or tunnelled addresses including Teredo and 6to4.",run:IP.run_parse_ipv6,input_type:"string",output_type:"string",args:[]},"Text encoding":{description:"Translates the data between different character encodings.<br><br>Supported charsets are:<ul><li>UTF8</li><li>UTF16</li><li>UTF16LE (little-endian)</li><li>UTF16BE (big-endian)</li><li>Hex</li><li>Base64</li><li>Latin1 (ISO-8859-1)</li><li>Windows-1251</li></ul>",run:CharEnc.run,input_type:"string",output_type:"string",args:[{name:"Input type",type:"option",value:CharEnc.IO_FORMAT},{name:"Output type",type:"option",value:CharEnc.IO_FORMAT}]},"AES Decrypt":{description:"To successfully decrypt AES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 16 bytes of encrypted material.",run:Cipher.run_aes_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"AES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Advanced Encryption Standard (AES) is a U.S. Federal Information Processing Standard (FIPS). It was selected after a 5-year process where 15 competing designs were evaluated.<br><br>AES-128, AES-192, and AES-256 are supported. The variant will be chosen based on the size of the key passed in. If a passphrase is used, a 256-bit key will be generated.",run:Cipher.run_aes_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"DES Decrypt":{description:"To successfully decrypt DES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_des_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"DES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>DES is a previously dominant algorithm for encryption, and was published as an official U.S. Federal Information Processing Standard (FIPS). It is now considered to be insecure due to its small key size.",run:Cipher.run_des_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"Triple DES Decrypt":{description:"To successfully decrypt Triple DES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_triple_des_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"Triple DES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Triple DES applies DES three times to each block to increase key size.",run:Cipher.run_triple_des_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"Blowfish Decrypt":{description:"Blowfish is a symmetric-key block cipher designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. AES now receives more attention.",run:Cipher.run_blowfish_dec,input_type:"string",output_type:"string",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Mode",type:"option",value:Cipher.BLOWFISH_MODES},{name:"Input format",type:"option",value:Cipher.IO_FORMAT3}]},"Blowfish Encrypt":{description:"Blowfish is a symmetric-key block cipher designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. AES now receives more attention.",run:Cipher.run_blowfish_enc,input_type:"string",output_type:"string",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Mode",type:"option",value:Cipher.BLOWFISH_MODES},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Rabbit Decrypt":{description:"To successfully decrypt Rabbit, you need either:<ul><li>The passphrase</li><li>Or the key and IV (This is currently broken. You need the key and salt at the moment.)</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_rabbit_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"Rabbit Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Rabbit is a high-performance stream cipher and a finalist in the eSTREAM Portfolio. It is one of the four designs selected after a 3 1/2 year process where 22 designs were evaluated.",run:Cipher.run_rabbit_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},RC4:{description:"RC4 is a widely-used stream cipher. It is used in popular protocols such as SSL and WEP. Although remarkable for its simplicity and speed, the algorithm's history doesn't inspire confidence in its security.",run:Cipher.run_rc4,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Passphrase",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Input format",type:"option",value:Cipher.IO_FORMAT4},{name:"Output format",type:"option",value:Cipher.IO_FORMAT4}]},"RC4 Drop":{description:"It was discovered that the first few bytes of the RC4 keystream are strongly non-random and leak information about the key. We can defend against this attack by discarding the initial portion of the keystream. This modified algorithm is traditionally called RC4-drop.",run:Cipher.run_rc4drop,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Passphrase",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Input format",type:"option",value:Cipher.IO_FORMAT4},{name:"Output format",type:"option",value:Cipher.IO_FORMAT4},{name:"Number of bytes to drop",type:"number",value:Cipher.RC4DROP_BYTES}]},"Derive PBKDF2 key":{description:"PBKDF2 is a password-based key derivation function. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.<br><br>A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.<br><br>Enter your passphrase as the input and then set the relevant options to generate a key.",run:Cipher.run_pbkdf2,input_type:"string",output_type:"string",args:[{name:"Key size",type:"number",value:Cipher.KDF_KEY_SIZE},{name:"Iterations",type:"number",value:Cipher.KDF_ITERATIONS},{name:"Salt (hex)",type:"string",value:""},{name:"Input format",type:"option",value:Cipher.IO_FORMAT2},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Derive EVP key":{description:"EVP is a password-based key derivation function used extensively in OpenSSL. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.<br><br>A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.<br><br>Enter your passphrase as the input and then set the relevant options to generate a key.",run:Cipher.run_evpkdf,input_type:"string",output_type:"string",args:[{name:"Key size",type:"number",value:Cipher.KDF_KEY_SIZE},{name:"Iterations",type:"number",value:Cipher.KDF_ITERATIONS},{name:"Salt (hex)",type:"string",value:""},{name:"Input format",type:"option",value:Cipher.IO_FORMAT2},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Vigen\xe8re Encode":{description:"The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",run:Cipher.run_vigenere_enc,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Key",type:"string",value:""}]},"Vigen\xe8re Decode":{description:"The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",run:Cipher.run_vigenere_dec,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Key",type:"string",value:""}]},"Rotate right":{description:"Rotates each byte to the right by the number of bits specified. Currently only supports 8-bit values.",run:Rotate.run_rotr,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Number of bits",type:"number",value:Rotate.ROTATE_AMOUNT},{name:"Rotate as a whole",type:"boolean",value:Rotate.ROTATE_WHOLE}]},"Rotate left":{description:"Rotates each byte to the left by the number of bits specified. Currently only supports 8-bit values.",run:Rotate.run_rotl,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Number of bits",type:"number",value:Rotate.ROTATE_AMOUNT},{name:"Rotate as a whole",type:"boolean",value:Rotate.ROTATE_WHOLE}]},ROT13:{description:"A simple caesar substitution cipher which rotates alphabet characters by the specified amount (default 13).",run:Rotate.run_rot13,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Rotate lower case chars",type:"boolean",value:Rotate.ROT13_LOWERCASE},{name:"Rotate upper case chars",type:"boolean",value:Rotate.ROT13_UPPERCASE},{name:"Amount",type:"number",value:Rotate.ROT13_AMOUNT -}]},ROT47:{description:"A slightly more complex variation of a caesar cipher, which includes ASCII characters from 33 '!' to 126 '~'. Default rotation: 47.",run:Rotate.run_rot47,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Amount",type:"number",value:Rotate.ROT47_AMOUNT}]},"Strip HTTP headers":{description:"Removes HTTP headers from a request or response by looking for the first instance of a double newline.",run:HTTP.run_strip_headers,input_type:"string",output_type:"string",args:[]},"Parse User Agent":{description:"Attempts to identify and categorise information contained in a user-agent string.",run:HTTP.run_parse_user_agent,input_type:"string",output_type:"string",args:[]},"Format MAC addresses":{description:"Displays given MAC addresses in multiple different formats.<br><br>Expects addresses in a list separated by newlines, spaces or commas.<br><br>WARNING: There are no validity checks.",run:MAC.run_format,input_type:"string",output_type:"string",args:[{name:"Output case",type:"option",value:MAC.OUTPUT_CASE},{name:"No delimiter",type:"boolean",value:MAC.NO_DELIM},{name:"Dash delimiter",type:"boolean",value:MAC.DASH_DELIM},{name:"Colon delimiter",type:"boolean",value:MAC.COLON_DELIM},{name:"Cisco style",type:"boolean",value:MAC.CISCO_STYLE}]},"Offset checker":{description:"Compares multiple inputs (separated by the specified delimiter) and highlights matching characters which appear at the same position in all samples.",run:StrUtils.run_offset_checker,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.OFF_CHK_SAMPLE_DELIMITER}]},"Remove whitespace":{description:"Optionally removes all spaces, carriage returns, line feeds, tabs and form feeds from the input data.<br><br>This operation also supports the removal of full stops which are sometimes used to represent non-printable bytes in ASCII output.",run:Tidy.run_remove_whitespace,input_type:"string",output_type:"string",args:[{name:"Spaces",type:"boolean",value:Tidy.REMOVE_SPACES},{name:"Carriage returns (\\r)",type:"boolean",value:Tidy.REMOVE_CARIAGE_RETURNS},{name:"Line feeds (\\n)",type:"boolean",value:Tidy.REMOVE_LINE_FEEDS},{name:"Tabs",type:"boolean",value:Tidy.REMOVE_TABS},{name:"Form feeds (\\f)",type:"boolean",value:Tidy.REMOVE_FORM_FEEDS},{name:"Full stops",type:"boolean",value:Tidy.REMOVE_FULL_STOPS}]},"Remove null bytes":{description:"Removes all null bytes (<code>0x00</code>) from the input.",run:Tidy.run_remove_nulls,input_type:"byte_array",output_type:"byte_array",args:[]},"Drop bytes":{description:"Cuts the specified number of bytes out of the data.",run:Tidy.run_drop_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.DROP_START},{name:"Length",type:"number",value:Tidy.DROP_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Take bytes":{description:"Takes a slice of the specified number of bytes from the data.",run:Tidy.run_take_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.TAKE_START},{name:"Length",type:"number",value:Tidy.TAKE_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Pad lines":{description:"Add the specified number of the specified character to the beginning or end of each line",run:Tidy.run_pad,input_type:"string",output_type:"string",args:[{name:"Position",type:"option",value:Tidy.PAD_POSITION},{name:"Length",type:"number",value:Tidy.PAD_LENGTH},{name:"Character",type:"binary_short_string",value:Tidy.PAD_CHAR}]},Reverse:{description:"Reverses the input string.",run:SeqUtils.run_reverse,input_type:"byte_array",output_type:"byte_array",args:[{name:"By",type:"option",value:SeqUtils.REVERSE_BY}]},Sort:{description:"Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only.",run:SeqUtils.run_sort,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS},{name:"Reverse",type:"boolean",value:SeqUtils.SORT_REVERSE},{name:"Order",type:"option",value:SeqUtils.SORT_ORDER}]},Unique:{description:"Removes duplicate strings from the input.",run:SeqUtils.run_unique,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS}]},"Count occurrences":{description:"Counts the number of times the provided string occurs in the input.",run:SeqUtils.run_count,input_type:"string",output_type:"number",args:[{name:"Search string",type:"toggle_string",value:"",toggle_values:SeqUtils.SEARCH_TYPE}]},"Add line numbers":{description:"Adds line numbers to the output.",run:SeqUtils.run_add_line_numbers,input_type:"string",output_type:"string",args:[]},"Remove line numbers":{description:"Removes line numbers from the output if they can be trivially detected.",run:SeqUtils.run_remove_line_numbers,input_type:"string",output_type:"string",args:[]},"Find / Replace":{description:"Replaces all occurrences of the first string with the second.<br><br>The three match options are only relevant to regex search strings.",run:StrUtils.run_find_replace,manual_bake:!0,input_type:"string",output_type:"string",args:[{name:"Find",type:"toggle_string",value:"",toggle_values:StrUtils.SEARCH_TYPE},{name:"Replace",type:"binary_string",value:""},{name:"Global match",type:"boolean",value:StrUtils.FIND_REPLACE_GLOBAL},{name:"Case insensitive",type:"boolean",value:StrUtils.FIND_REPLACE_CASE},{name:"Multiline matching",type:"boolean",value:StrUtils.FIND_REPLACE_MULTILINE}]},"To Upper case":{description:"Converts the input string to upper case, optionally limiting scope to only the first character in each word, sentence or paragraph.",run:StrUtils.run_upper,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Scope",type:"option",value:StrUtils.CASE_SCOPE}]},"To Lower case":{description:"Converts every character in the input to lower case.",run:StrUtils.run_lower,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[]},Split:{description:"Splits a string into sections around a given delimiter.",run:StrUtils.run_split,input_type:"string",output_type:"string",args:[{name:"Split delimiter",type:"binary_short_string",value:StrUtils.SPLIT_DELIM},{name:"Join delimiter",type:"option",value:StrUtils.DELIMITER_OPTIONS}]},Strings:{description:"Extracts all strings from the input.",run:Extract.run_strings,input_type:"string",output_type:"string",args:[{name:"Minimum length",type:"number",value:Extract.MIN_STRING_LEN},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract IP addresses":{description:"Extracts all IPv4 and IPv6 addresses.<br><br>Warning: Given a string <code>710.65.0.456</code>, this will match <code>10.65.0.45</code> so always check the original input!",run:Extract.run_ip,input_type:"string",output_type:"string",args:[{name:"IPv4",type:"boolean",value:Extract.INCLUDE_IPV4},{name:"IPv6",type:"boolean",value:Extract.INCLUDE_IPV6},{name:"Remove local IPv4 addresses",type:"boolean",value:Extract.REMOVE_LOCAL},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract email addresses":{description:"Extracts all email addresses from the input.",run:Extract.run_email,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract MAC addresses":{description:"Extracts all Media Access Control (MAC) addresses from the input.",run:Extract.run_mac,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract URLs":{description:"Extracts Uniform Resource Locators (URLs) from the input. The protocol (http, ftp etc.) is required otherwise there will be far too many false positives.",run:Extract.run_urls,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract domains":{description:"Extracts domain names with common Top-Level Domains (TLDs).<br>Note that this will not include paths. Use <strong>Extract URLs</strong> to find entire URLs.",run:Extract.run_domains,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract file paths":{description:"Extracts anything that looks like a Windows or UNIX file path.<br><br>Note that if UNIX is selected, there will likely be a lot of false positives.",run:Extract.run_file_paths,input_type:"string",output_type:"string",args:[{name:"Windows",type:"boolean",value:Extract.INCLUDE_WIN_PATH},{name:"UNIX",type:"boolean",value:Extract.INCLUDE_UNIX_PATH},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract dates":{description:"Extracts dates in the following formats<ul><li><code>yyyy-mm-dd</code></li><li><code>dd/mm/yyyy</code></li><li><code>mm/dd/yyyy</code></li></ul>Dividers can be any of /, -, . or space",run:Extract.run_dates,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Regular expression":{description:"Define your own regular expression to search the input data with, optionally choosing from a list of pre-defined patterns.",run:StrUtils.run_regex,manual_bake:!0,input_type:"string",output_type:"html",args:[{name:"Built in regexes",type:"populate_option",value:StrUtils.REGEX_PRE_POPULATE,target:1},{name:"Regex",type:"text",value:""},{name:"Case insensitive",type:"boolean",value:StrUtils.REGEX_CASE_INSENSITIVE},{name:"Multiline matching",type:"boolean",value:StrUtils.REGEX_MULTILINE_MATCHING},{name:"Display total",type:"boolean",value:StrUtils.DISPLAY_TOTAL},{name:"Output format",type:"option",value:StrUtils.OUTPUT_FORMAT}]},"From UNIX Timestamp":{description:"Converts a UNIX timestamp to a datetime string.<br><br>e.g. <code>978346800</code> becomes <code>Mon 1 January 2001 11:00:00 UTC</code>",run:DateTime.run_from_unix_timestamp,input_type:"number",output_type:"string",args:[{name:"Units",type:"option",value:DateTime.UNITS}]},"To UNIX Timestamp":{description:"Parses a datetime string and returns the corresponding UNIX timestamp.<br><br>e.g. <code>Mon 1 January 2001 11:00:00 UTC</code> becomes <code>978346800</code>",run:DateTime.run_to_unix_timestamp,input_type:"string",output_type:"number",args:[{name:"Units",type:"option",value:DateTime.UNITS}]},"Translate DateTime Format":{description:"Parses a datetime string in one format and re-writes it in another.<br><br>Run with no input to see the relevant format string examples.",run:DateTime.run_translate_format,input_type:"string",output_type:"html",args:[{name:"Built in formats",type:"populate_option",value:DateTime.DATETIME_FORMATS,target:1},{name:"Input format string",type:"binary_string",value:DateTime.INPUT_FORMAT_STRING},{name:"Input timezone",type:"option",value:DateTime.TIMEZONES},{name:"Output format string",type:"binary_string",value:DateTime.OUTPUT_FORMAT_STRING},{name:"Output timezone",type:"option",value:DateTime.TIMEZONES}]},"Parse DateTime":{description:"Parses a DateTime string in your specified format and displays it in whichever timezone you choose with the following information:<ul><li>Date</li><li>Time</li><li>Period (AM/PM)</li><li>Timezone</li><li>UTC offset</li><li>Daylight Saving Time</li><li>Leap year</li><li>Days in this month</li><li>Day of year</li><li>Week number</li><li>Quarter</li></ul>Run with no input to see format string examples if required.",run:DateTime.run_parse,input_type:"string",output_type:"html",args:[{name:"Built in formats",type:"populate_option",value:DateTime.DATETIME_FORMATS,target:1},{name:"Input format string",type:"binary_string",value:DateTime.INPUT_FORMAT_STRING},{name:"Input timezone",type:"option",value:DateTime.TIMEZONES}]},"Convert distance":{description:"Converts a unit of distance to another format.",run:Convert.run_distance,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.DISTANCE_UNITS},{name:"Output units",type:"option",value:Convert.DISTANCE_UNITS}]},"Convert area":{description:"Converts a unit of area to another format.",run:Convert.run_area,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.AREA_UNITS},{name:"Output units",type:"option",value:Convert.AREA_UNITS}]},"Convert mass":{description:"Converts a unit of mass to another format.",run:Convert.run_mass,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.MASS_UNITS},{name:"Output units",type:"option",value:Convert.MASS_UNITS}]},"Convert speed":{description:"Converts a unit of speed to another format.",run:Convert.run_speed,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.SPEED_UNITS},{name:"Output units",type:"option",value:Convert.SPEED_UNITS}]},"Convert data units":{description:"Converts a unit of data to another format.",run:Convert.run_data_size,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.DATA_UNITS},{name:"Output units",type:"option",value:Convert.DATA_UNITS}]},"Raw Deflate":{description:"Compresses data using the deflate algorithm with no headers.",run:Compress.run_raw_deflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},"Raw Inflate":{description:"Decompresses data which has been compressed using the deflate algorithm with no headers.",run:Compress.run_raw_inflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start index",type:"number",value:Compress.INFLATE_INDEX},{name:"Initial output buffer size",type:"number",value:Compress.INFLATE_BUFFER_SIZE},{name:"Buffer expansion type",type:"option",value:Compress.INFLATE_BUFFER_TYPE},{name:"Resize buffer after decompression",type:"boolean",value:Compress.INFLATE_RESIZE},{name:"Verify result",type:"boolean",value:Compress.INFLATE_VERIFY}]},"Zlib Deflate":{description:"Compresses data using the deflate algorithm adding zlib headers.",run:Compress.run_zlib_deflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},"Zlib Inflate":{description:"Decompresses data which has been compressed using the deflate algorithm with zlib headers.",run:Compress.run_zlib_inflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start index",type:"number",value:Compress.INFLATE_INDEX},{name:"Initial output buffer size",type:"number",value:Compress.INFLATE_BUFFER_SIZE},{name:"Buffer expansion type",type:"option",value:Compress.INFLATE_BUFFER_TYPE},{name:"Resize buffer after decompression",type:"boolean",value:Compress.INFLATE_RESIZE},{name:"Verify result",type:"boolean",value:Compress.INFLATE_VERIFY}]},Gzip:{description:"Compresses data using the deflate algorithm with gzip headers.",run:Compress.run_gzip,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE},{name:"Filename (optional)",type:"string",value:""},{name:"Comment (optional)",type:"string",value:""},{name:"Include file checksum",type:"boolean",value:Compress.GZIP_CHECKSUM}]},Gunzip:{description:"Decompresses data which has been compressed using the deflate algorithm with gzip headers.",run:Compress.run_gunzip,input_type:"byte_array",output_type:"byte_array",args:[]},Zip:{description:"Compresses data using the PKZIP algorithm with the given filename.<br><br>No support for multiple files at this time.",run:Compress.run_pkzip,input_type:"byte_array",output_type:"byte_array",args:[{name:"Filename",type:"string",value:Compress.PKZIP_FILENAME},{name:"Comment",type:"string",value:""},{name:"Password",type:"binary_string",value:""},{name:"Compression method",type:"option",value:Compress.COMPRESSION_METHOD},{name:"Operating system",type:"option",value:Compress.OS},{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},Unzip:{description:"Decompresses data using the PKZIP algorithm and displays it per file, with support for passwords.",run:Compress.run_pkunzip,input_type:"byte_array",output_type:"html",args:[{name:"Password",type:"binary_string",value:""},{name:"Verify result",type:"boolean",value:Compress.PKUNZIP_VERIFY}]},"Bzip2 Decompress":{description:"Decompresses data using the Bzip2 algorithm.",run:Compress.run_bzip2_decompress,input_type:"byte_array",output_type:"string",args:[]},"Generic Code Beautify":{description:"Attempts to pretty print C-style languages such as C, C++, C#, Java, PHP, JavaScript etc.<br><br>This will not do a perfect job, and the resulting code may not work any more. This operation is designed purely to make obfuscated or minified code more easy to read and understand.<br><br>Things which will not work properly:<ul><li>For loop formatting</li><li>Do-While loop formatting</li><li>Switch/Case indentation</li><li>Certain bit shift operators</li></ul>",run:Code.run_generic_beautify,input_type:"string",output_type:"string",args:[]},"JavaScript Parser":{description:"Returns an Abstract Syntax Tree for valid JavaScript code.",run:JS.run_parse,input_type:"string",output_type:"string",args:[{name:"Location info",type:"boolean",value:JS.PARSE_LOC},{name:"Range info",type:"boolean",value:JS.PARSE_RANGE},{name:"Include tokens array",type:"boolean",value:JS.PARSE_TOKENS},{name:"Include comments array",type:"boolean",value:JS.PARSE_COMMENT},{name:"Report errors and try to continue",type:"boolean",value:JS.PARSE_TOLERANT}]},"JavaScript Beautify":{description:"Parses and pretty prints valid JavaScript code. Also works with JavaScript Object Notation (JSON).",run:JS.run_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:JS.BEAUTIFY_INDENT},{name:"Quotes",type:"option",value:JS.BEAUTIFY_QUOTES},{name:"Semicolons before closing braces",type:"boolean",value:JS.BEAUTIFY_SEMICOLONS},{name:"Include comments",type:"boolean",value:JS.BEAUTIFY_COMMENT}]},"JavaScript Minify":{description:"Compresses JavaScript code.",run:JS.run_minify,input_type:"string",output_type:"string",args:[]},"XML Beautify":{description:"Indents and prettifies eXtensible Markup Language (XML) code.",run:Code.run_xml_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"JSON Beautify":{description:"Indents and prettifies JavaScript Object Notation (JSON) code.",run:Code.run_json_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"CSS Beautify":{description:"Indents and prettifies Cascading Style Sheets (CSS) code.",run:Code.run_css_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"SQL Beautify":{description:"Indents and prettifies Structured Query Language (SQL) code.",run:Code.run_sql_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"XML Minify":{description:"Compresses eXtensible Markup Language (XML) code.",run:Code.run_xml_minify,input_type:"string",output_type:"string",args:[{name:"Preserve comments",type:"boolean",value:Code.PRESERVE_COMMENTS}]},"JSON Minify":{description:"Compresses JavaScript Object Notation (JSON) code.",run:Code.run_json_minify,input_type:"string",output_type:"string",args:[]},"CSS Minify":{description:"Compresses Cascading Style Sheets (CSS) code.",run:Code.run_css_minify,input_type:"string",output_type:"string",args:[{name:"Preserve comments",type:"boolean",value:Code.PRESERVE_COMMENTS}]},"SQL Minify":{description:"Compresses Structured Query Language (SQL) code.",run:Code.run_sql_minify,input_type:"string",output_type:"string",args:[]},"Analyse hash":{description:"Tries to determine information about a given hash and suggests which algorithm may have been used to generate it based on its length.",run:Hash.run_analyse,input_type:"string",output_type:"string",args:[]},MD5:{description:"MD5 (Message-Digest 5) is a widely used hash function. It has been used in a variety of security applications and is also commonly used to check the integrity of files.<br><br>However, MD5 is not collision resistant and it isn't suitable for applications like SSL/TLS certificates or digital signatures that rely on this property.",run:Hash.run_md5,input_type:"string",output_type:"string",args:[]},SHA1:{description:"The SHA (Secure Hash Algorithm) hash functions were designed by the NSA. SHA-1 is the most established of the existing SHA hash functions and it is used in a variety of security applications and protocols.<br><br>However, SHA-1's collision resistance has been weakening as new attacks are discovered or improved.",run:Hash.run_sha1,input_type:"string",output_type:"string",args:[]},SHA224:{description:"SHA-224 is largely identical to SHA-256 but is truncated to 224 bytes.",run:Hash.run_sha224,input_type:"string",output_type:"string",args:[]},SHA256:{description:"SHA-256 is one of the four variants in the SHA-2 set. It isn't as widely used as SHA-1, though it provides much better security.",run:Hash.run_sha256,input_type:"string",output_type:"string",args:[]},SHA384:{description:"SHA-384 is largely identical to SHA-512 but is truncated to 384 bytes.",run:Hash.run_sha384,input_type:"string",output_type:"string",args:[]},SHA512:{description:"SHA-512 is largely identical to SHA-256 but operates on 64-bit words rather than 32.",run:Hash.run_sha512,input_type:"string",output_type:"string",args:[]},SHA3:{description:"This is an implementation of Keccak[c=2d]. SHA3 functions based on different implementations of Keccak will give different results.",run:Hash.run_sha3,input_type:"string",output_type:"string",args:[{name:"Output length",type:"option",value:Hash.SHA3_LENGTH}]},"RIPEMD-160":{description:"RIPEMD (RACE Integrity Primitives Evaluation Message Digest) is a family of cryptographic hash functions developed in Leuven, Belgium, by Hans Dobbertin, Antoon Bosselaers and Bart Preneel at the COSIC research group at the Katholieke Universiteit Leuven, and first published in 1996.<br><br>RIPEMD was based upon the design principles used in MD4, and is similar in performance to the more popular SHA-1.<br><br>RIPEMD-160 is an improved, 160-bit version of the original RIPEMD, and the most common version in the family.",run:Hash.run_ripemd160,input_type:"string",output_type:"string",args:[]},HMAC:{description:"Keyed-Hash Message Authentication Codes (HMAC) are a mechanism for message authentication using cryptographic hash functions.",run:Hash.run_hmac,input_type:"string",output_type:"string",args:[{name:"Password",type:"binary_string",value:""},{name:"Hashing function",type:"option",value:Hash.HMAC_FUNCTIONS}]},"Fletcher-16 Checksum":{description:"The Fletcher checksum is an algorithm for computing a position-dependent checksum devised by John Gould Fletcher at Lawrence Livermore Labs in the late 1970s.<br><br>The objective of the Fletcher checksum was to provide error-detection properties approaching those of a cyclic redundancy check but with the lower computational effort associated with summation techniques.",run:Checksum.run_fletcher16,input_type:"byte_array",output_type:"string",args:[]},"Adler-32 Checksum":{description:"Adler-32 is a checksum algorithm which was invented by Mark Adler in 1995, and is a modification of the Fletcher checksum. Compared to a cyclic redundancy check of the same length, it trades reliability for speed (preferring the latter).<br><br>Adler-32 is more reliable than Fletcher-16, and slightly less reliable than Fletcher-32.",run:Checksum.run_adler32,input_type:"byte_array",output_type:"string",args:[]},"CRC-32 Checksum":{description:"A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.<br><br>The CRC was invented by W. Wesley Peterson in 1961; the 32-bit CRC function of Ethernet and many other standards is the work of several researchers and was published in 1975.",run:Checksum.run_crc32,input_type:"byte_array",output_type:"string",args:[]},"Generate all hashes":{description:"Generates all available hashes and checksums for the input.",run:Hash.run_all,input_type:"string",output_type:"string",args:[]},Entropy:{description:"Calculates the Shannon entropy of the input data which gives an idea of its randomness. 8 is the maximum.",run:Entropy.run_entropy,input_type:"byte_array",output_type:"html",args:[{name:"Chunk size",type:"number",value:Entropy.CHUNK_SIZE}]},"Frequency distribution":{description:"Displays the distribution of bytes in the data as a graph.",run:Entropy.run_freq_distrib,input_type:"byte_array",output_type:"html",args:[{name:"Show 0%'s",type:"boolean",value:Entropy.FREQ_ZEROS}]},Numberwang:{description:"Based on the popular gameshow by Mitchell and Webb.",run:Numberwang.run,input_type:"string",output_type:"string",args:[]},"Parse X.509 certificate":{description:"X.509 is an ITU-T standard for a public key infrastructure (PKI) and Privilege Management Infrastructure (PMI). It is commonly involved with SSL/TLS security.<br><br>This operation displays the contents of a certificate in a human readable format, similar to the openssl command line tool.",run:PublicKey.run_parse_x509,input_type:"string",output_type:"string",args:[{name:"Input format",type:"option",value:PublicKey.X509_INPUT_FORMAT}]},"PEM to Hex":{description:"Converts PEM (Privacy Enhanced Mail) format to a hexadecimal DER (Distinguished Encoding Rules) string.",run:PublicKey.run_pem_to_hex,input_type:"string",output_type:"string",args:[]},"Hex to PEM":{description:"Converts a hexadecimal DER (Distinguished Encoding Rules) string into PEM (Privacy Enhanced Mail) format.",run:PublicKey.run_hex_to_pem,input_type:"string",output_type:"string",args:[{name:"Header string",type:"string",value:PublicKey.PEM_HEADER_STRING}]},"Hex to Object Identifier":{description:"Converts a hexadecimal string into an object identifier (OID).",run:PublicKey.run_hex_to_object_identifier,input_type:"string",output_type:"string",args:[]},"Object Identifier to Hex":{description:"Converts an object identifier (OID) into a hexadecimal string.",run:PublicKey.run_object_identifier_to_hex,input_type:"string",output_type:"string",args:[]},"Parse ASN.1 hex string":{description:"Abstract Syntax Notation One (ASN.1) is a standard and notation that describes rules and structures for representing, encoding, transmitting, and decoding data in telecommunications and computer networking.<br><br>This operation parses arbitrary ASN.1 data and presents the resulting tree.",run:PublicKey.run_parse_asn1_hex_string,input_type:"string",output_type:"string",args:[{name:"Starting index",type:"number",value:0},{name:"Truncate octet strings longer than",type:"number",value:PublicKey.ASN1_TRUNCATE_LENGTH}]},"Detect File Type":{description:"Attempts to guess the MIME (Multipurpose Internet Mail Extensions) type of the data based on 'magic bytes'.<br><br>Currently supports the following file types: 7z, amr, avi, bmp, bz2, class, cr2, crx, dex, dmg, doc, elf, eot, epub, exe, flac, flv, gif, gz, ico, iso, jpg, jxr, m4a, m4v, mid, mkv, mov, mp3, mp4, mpg, ogg, otf, pdf, png, ppt, ps, psd, rar, rtf, sqlite, swf, tar, tar.z, tif, ttf, utf8, vmdk, wav, webm, webp, wmv, woff, woff2, xls, xz, zip.",run:FileType.run_detect,input_type:"byte_array",output_type:"string",args:[]},"Scan for Embedded Files":{description:"Scans the data for potential embedded files by looking for magic bytes at all offsets. This operation is prone to false positives.<br><br>WARNING: Files over about 100KB in size will take a VERY long time to process.",run:FileType.run_scan_for_embedded_files,input_type:"byte_array",output_type:"string",args:[{name:"Ignore common byte sequences",type:"boolean",value:FileType.IGNORE_COMMON_BYTE_SEQUENCES}]},"Expand alphabet range":{description:"Expand an alphabet range string into a list of the characters in that range.<br><br>e.g. <code>a-z</code> becomes <code>abcdefghijklmnopqrstuvwxyz</code>.",run:SeqUtils.run_expand_alph_range,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"binary_string",value:""}]},Diff:{description:"Compares two inputs (separated by the specified delimiter) and highlights the differences between them.",run:StrUtils.run_diff,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.DIFF_SAMPLE_DELIMITER},{name:"Diff by",type:"option",value:StrUtils.DIFF_BY},{name:"Show added",type:"boolean",value:!0},{name:"Show removed",type:"boolean",value:!0},{name:"Ignore whitespace (relevant for word and line)",type:"boolean",value:!1}]},"Parse UNIX file permissions":{description:"Given a UNIX/Linux file permission string in octal or textual format, this operation explains which permissions are granted to which user groups.<br><br>Input should be in either octal (e.g. <code>755</code>) or textual (e.g. <code>drwxr-xr-x</code>) format.",run:OS.run_parse_unix_perms,input_type:"string",output_type:"string",args:[]},"Swap endianness":{description:"Switches the data from big-endian to little-endian or vice-versa. Data can be read in as hexadecimal or raw bytes. It will be returned in the same format as it is entered.",run:Endian.run_swap_endianness,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Data format",type:"option",value:Endian.DATA_FORMAT},{name:"Word length (bytes)",type:"number",value:Endian.WORD_LENGTH},{name:"Pad incomplete words",type:"boolean",value:Endian.PAD_INCOMPLETE_WORDS}]},"Syntax highlighter":{description:"Adds syntax highlighting to a range of source code languages. Note that this will not indent the code. Use one of the 'Beautify' operations for that.",run:Code.run_syntax_highlight,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"html",args:[{name:"Language/File extension",type:"option",value:Code.LANGUAGES},{name:"Display line numbers",type:"boolean",value:Code.LINE_NUMS}]},"Parse escaped string":{description:"Replaces escaped characters with the bytes they represent.<br><br>e.g.<code>Hello\\nWorld</code> becomes <code>Hello<br>World</code>",run:StrUtils.run_parse_escaped_string,input_type:"string",output_type:"string",args:[]},"TCP/IP Checksum":{description:"Calculates the checksum for a TCP (Transport Control Protocol) or IP (Internet Protocol) header from an input of raw bytes.",run:Checksum.run_tcp_ip,input_type:"byte_array",output_type:"string",args:[]},"Parse colour code":{description:"Converts a colour code in a standard format to other standard formats and displays the colour itself.<br><br><strong>Example inputs</strong><ul><li><code>#d9edf7</code></li><li><code>rgba(217,237,247,1)</code></li><li><code>hsla(200,65%,91%,1)</code></li><li><code>cmyk(0.12, 0.04, 0.00, 0.03)</code></li></ul>",run:HTML.run_parse_colour_code,input_type:"string",output_type:"html",args:[]},"Generate UUID":{description:"Generates an RFC 4122 version 4 compliant Universally Unique Identifier (UUID), also known as a Globally Unique Identifier (GUID).<br><br>A version 4 UUID relies on random numbers, in this case generated using <code>window.crypto</code> if available and falling back to <code>Math.random</code> if not.",run:UUID.run_generate_v4,input_type:"string",output_type:"string",args:[]}};var ControlsWaiter=function(a,b){this.app=a,this.manager=b};ControlsWaiter.prototype.adjust_width=function(){var a=document.getElementById("controls"),b=document.getElementById("step"),c=document.getElementById("clr-breaks"),d=document.querySelector("#save img"),e=document.querySelector("#load img"),f=document.querySelector("#step img"),g=document.querySelector("#clr-recipe img"),h=document.querySelector("#clr-breaks img"); -a.clientWidth<470?b.childNodes[1].nodeValue=" Step":b.childNodes[1].nodeValue=" Step through",a.clientWidth<400?(d.style.display="none",e.style.display="none",f.style.display="none",g.style.display="none",h.style.display="none"):(d.style.display="inline",e.style.display="inline",f.style.display="inline",g.style.display="inline",h.style.display="inline"),a.clientWidth<330?c.childNodes[1].nodeValue=" Clear breaks":c.childNodes[1].nodeValue=" Clear breakpoints"},ControlsWaiter.prototype.set_auto_bake=function(a){var b=document.getElementById("auto-bake");b.checked!==a&&b.click()},ControlsWaiter.prototype.bake_click=function(){this.app.bake(),$("#output-text").selectRange(0)},ControlsWaiter.prototype.step_click=function(){this.app.bake(!0),$("#output-text").selectRange(0)},ControlsWaiter.prototype.auto_bake_change=function(){var a=document.getElementById("auto-bake-label"),b=document.getElementById("auto-bake");this.app.auto_bake_=b.checked,b.checked?(a.classList.remove("btn-default"),a.classList.add("btn-success")):(a.classList.remove("btn-success"),a.classList.add("btn-default"))},ControlsWaiter.prototype.clear_recipe_click=function(){this.manager.recipe.clear_recipe()},ControlsWaiter.prototype.clear_breaks_click=function(){for(var a=document.querySelectorAll("#rec_list li.operation .breakpoint"),b=0;b<a.length;b++)a[b].setAttribute("break","false"),a[b].classList.remove("breakpoint-selected")},ControlsWaiter.prototype.initialise_save_link=function(a){a=a||this.app.get_recipe_config();var b=document.getElementById("save-link-recipe-checkbox").checked,c=document.getElementById("save-link-input-checkbox").checked,d=document.getElementById("save-link"),e=this.generate_state_url(b,c,a);d.innerHTML=Utils.truncate(e,120),d.setAttribute("href",e)},ControlsWaiter.prototype.generate_state_url=function(a,b,c){c=c||this.app.get_recipe_config();var d=window.location.protocol+"//"+window.location.host+window.location.pathname,e=JSON.stringify(c),f=Utils.to_base64(this.app.get_input(),"A-Za-z0-9+/");return a=a&&c.length>0,b=b&&f.length>0&&f.length<8e3,a&&(d+="?recipe="+encodeURIComponent(e)),a&&b?d+="&input="+encodeURIComponent(f):b&&(d+="?input="+encodeURIComponent(f)),d},ControlsWaiter.prototype.save_text_change=function(){try{var a=JSON.parse(document.getElementById("save-text").value);this.initialise_save_link(a)}catch(a){}},ControlsWaiter.prototype.save_click=function(){var a=this.app.get_recipe_config(),b=JSON.stringify(a).replace(/},{/g,"},\n{");document.getElementById("save-text").value=b,this.initialise_save_link(a),$("#save-modal").modal()},ControlsWaiter.prototype.slr_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.sli_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.load_click=function(){this.populate_load_recipes_list(),$("#load-modal").modal()},ControlsWaiter.prototype.save_button_click=function(){var a=document.getElementById("save-name").value,b=document.getElementById("save-text").value;if(!a)return void this.app.alert("Please enter a recipe name","danger",2e3);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=localStorage.recipe_id||0;c.push({id:++d,name:a,recipe:b}),localStorage.saved_recipes=JSON.stringify(c),localStorage.recipe_id=d,this.app.alert('Recipe saved as "'+a+'".',"success",2e3)},ControlsWaiter.prototype.populate_load_recipes_list=function(){for(var a=document.getElementById("load-name"),b=a.options.length;b--;)a.remove(b);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];for(b=0;b<c.length;b++){var d=document.createElement("option");d.value=c[b].id,d.innerHTML=c[b].name,a.appendChild(d)}document.getElementById("load-text").value=c.length?c[0].recipe:""},ControlsWaiter.prototype.load_delete_click=function(){var a=document.getElementById("load-name").value,b=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];b=b.filter(function(b){return b.id!==a}),localStorage.saved_recipes=JSON.stringify(b),this.populate_load_recipes_list()},ControlsWaiter.prototype.load_name_change=function(a){var b=a.target,c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=parseInt(b.value,10),e=c.filter(function(a){return a.id===d})[0];document.getElementById("load-text").value=e.recipe},ControlsWaiter.prototype.load_button_click=function(){try{var a=JSON.parse(document.getElementById("load-text").value);this.app.set_recipe_config(a),$("#rec_list [data-toggle=popover]").popover()}catch(a){this.app.alert("Invalid recipe","danger",2e3)}};var HTMLApp=function(a,b,c,d){this.categories=a,this.operations=b,this.dfavourites=c,this.doptions=d,this.options=Utils.extend({},d),this.chef=new Chef,this.manager=new Manager(this),this.auto_bake_=!1,this.progress=0,this.ing_id=0,window.chef=this.chef};HTMLApp.prototype.setup=function(){document.dispatchEvent(this.manager.appstart),this.initialise_splitter(),this.load_local_storage(),this.populate_operations_list(),this.manager.setup(),this.reset_layout(),this.set_compile_message(),this.load_URI_params()},HTMLApp.prototype.handle_error=function(a){console.error(a);var b=a.display_str||a.toString();this.alert(b,"danger",this.options.error_timeout,!this.options.show_errors)},HTMLApp.prototype.bake=function(a){var b;try{b=this.chef.bake(this.get_input(),this.get_recipe_config(),this.options,this.progress,a)}catch(a){this.handle_error(a)}b&&(b.error&&this.handle_error(b.error),this.options=b.options,this.dish_str="html"===b.type?Utils.strip_html_tags(b.result,!0):b.result,this.progress=b.progress,this.manager.recipe.update_breakpoint_indicator(b.progress),this.manager.output.set(b.result,b.type,b.duration),b.duration>this.options.auto_bake_threshold&&this.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.alert("Baking took longer than "+this.options.auto_bake_threshold+"ms, Auto Bake has been disabled.","warning",5e3)))},HTMLApp.prototype.auto_bake=function(){this.auto_bake_&&this.bake()},HTMLApp.prototype.silent_bake=function(){var a=(new Date).getTime(),b=this.get_recipe_config();return this.auto_bake_&&this.chef.silent_bake(b),(new Date).getTime()-a},HTMLApp.prototype.get_input=function(){var a=this.manager.input.get();return sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),a},HTMLApp.prototype.set_input=function(a){sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),this.manager.input.set(a)},HTMLApp.prototype.populate_operations_list=function(){document.body.appendChild(document.getElementById("edit-favourites"));for(var a="",b=0;b<this.categories.length;b++){for(var c=this.categories[b],d=0===b,e=new HTMLCategory(c.name,d),f=0;f<c.ops.length;f++){var g=c.ops[f],h=new HTMLOperation(g,this.operations[g],this,this.manager);e.add_operation(h)}a+=e.to_html()}document.getElementById("categories").innerHTML=a;var i=document.querySelectorAll("#categories .op_list");for(b=0;b<i.length;b++)i[b].dispatchEvent(this.manager.oplistcreate);document.querySelector("#categories a").appendChild(document.getElementById("edit-favourites"))},HTMLApp.prototype.initialise_splitter=function(){Split(["#operations","#recipe","#IO"],{sizes:[20,30,50],minSize:[240,325,500],gutterSize:4,onDrag:this.manager.controls.adjust_width.bind(this.manager.controls)}),Split(["#input","#output"],{direction:"vertical",gutterSize:4}),this.reset_layout()},HTMLApp.prototype.load_local_storage=function(){var a;void 0!==localStorage.options&&(a=JSON.parse(localStorage.options)),this.manager.options.load(a),this.load_favourites()},HTMLApp.prototype.load_favourites=function(){var a=localStorage.favourites&&localStorage.favourites.length>2?JSON.parse(localStorage.favourites):this.dfavourites;a=this.valid_favourites(a),this.save_favourites(a);var b=this.categories.filter(function(a){return"Favourites"===a.name})[0];b?b.ops=a:this.categories.unshift({name:"Favourites",ops:a})},HTMLApp.prototype.valid_favourites=function(a){for(var b=[],c=0;c<a.length;c++)this.operations.hasOwnProperty(a[c])?b.push(a[c]):this.alert('The operation "'+Utils.escape_html(a[c])+'" is no longer available. It has been removed from your favourites.',"info");return b},HTMLApp.prototype.save_favourites=function(a){localStorage.setItem("favourites",JSON.stringify(this.valid_favourites(a)))},HTMLApp.prototype.reset_favourites=function(){this.save_favourites(this.dfavourites),this.load_favourites(),this.populate_operations_list(),this.manager.recipe.initialise_operation_drag_n_drop()},HTMLApp.prototype.add_favourite=function(a){var b=JSON.parse(localStorage.favourites);return b.indexOf(a)>=0?void this.alert("'"+a+"' is already in your favourites","info",2e3):(b.push(a),this.save_favourites(b),this.load_favourites(),this.populate_operations_list(),void this.manager.recipe.initialise_operation_drag_n_drop())},HTMLApp.prototype.load_URI_params=function(){this.query_string=function(a){if(""===a)return{};for(var b={},c=0;c<a.length;c++){var d=a[c].split("=");2!==d.length?b[a[c]]=!0:b[d[0]]=decodeURIComponent(d[1].replace(/\+/g," "))}return b}(window.location.search.substr(1).split("&"));var a=this.auto_bake_;if(this.auto_bake_=!1,this.query_string.recipe)try{var b=JSON.parse(this.query_string.recipe);this.set_recipe_config(b)}catch(a){}else if(this.query_string.op){this.manager.recipe.clear_recipe();try{this.manager.recipe.add_operation(this.query_string.op)}catch(a){var c=this.manager.ops.filter_operations(this.query_string.op,!1);c.length&&this.manager.recipe.add_operation(c[0].name);var d=document.getElementById("search");d.value=this.query_string.op,d.dispatchEvent(new Event("search"))}}if(this.query_string.input)try{var e=Utils.from_base64(this.query_string.input);this.set_input(e)}catch(a){}this.auto_bake_=a,this.auto_bake()},HTMLApp.prototype.next_ing_id=function(){return this.ing_id++},HTMLApp.prototype.get_recipe_config=function(){var a=this.manager.recipe.get_config();return sessionStorage.setItem("recipe_config",JSON.stringify(a)),a},HTMLApp.prototype.set_recipe_config=function(a){sessionStorage.setItem("recipe_config",JSON.stringify(a)),document.getElementById("rec_list").innerHTML=null;for(var b=0;b<a.length;b++){for(var c=this.manager.recipe.add_operation(a[b].op),d=c.querySelectorAll(".arg"),e=0;e<d.length;e++)"checkbox"===d[e].getAttribute("type")?d[e].checked=a[b].args[e]:d[e].classList.contains("toggle-string")?(d[e].value=a[b].args[e].string,d[e].previousSibling.children[0].innerHTML=Utils.escape_html(a[b].args[e].option)+" <span class='caret'></span>"):d[e].value=a[b].args[e];a[b].disabled&&c.querySelector(".disable-icon").click(),a[b].breakpoint&&c.querySelector(".breakpoint").click(),this.progress=0}},HTMLApp.prototype.reset_layout=function(){document.getElementById("operations").style.width="calc(20% - 2px)",document.getElementById("recipe").style.width="calc(30% - 4px)",document.getElementById("IO").style.width="calc(50% - 2px)",document.getElementById("input").style.height="calc(50% - 2px)",document.getElementById("output").style.height="calc(50% - 2px)",this.manager.controls.adjust_width()},HTMLApp.prototype.set_compile_message=function(){var a=new Date,b=Utils.fuzzy_time(a.getTime()-window.compile_time),c='<span style="font-weight: normal">Last build: '+b.substr(0,1).toUpperCase()+b.substr(1)+" ago";""!==window.compile_message&&(c+=" - "+window.compile_message),c+="</span>",document.getElementById("notice").innerHTML=c},HTMLApp.prototype.alert=function(a,b,c,d){var e=new Date;if(console.log("["+e.toLocaleString()+"] "+a),!d){b=b||"danger",c=c||0;var f=document.getElementById("alert"),g=document.getElementById("alert-content");f.classList.remove("alert-danger"),f.classList.remove("alert-warning"),f.classList.remove("alert-info"),f.classList.remove("alert-success"),f.classList.add("alert-"+b),"block"===f.style.display?g.innerHTML+="<br><br>["+e.toLocaleTimeString()+"] "+a:g.innerHTML="["+e.toLocaleTimeString()+"] "+a,$("#alert").stop(),f.style.display="block",f.style.opacity=1,c>0&&(clearTimeout(this.alert_timeout),this.alert_timeout=setTimeout(function(){$("#alert").slideUp(100)},c))}},HTMLApp.prototype.confirm=function(a,b,c,d){d=d||this,document.getElementById("confirm-title").innerHTML=a,document.getElementById("confirm-body").innerHTML=b,document.getElementById("confirm-modal").style.display="block",this.confirm_closed=!1,$("#confirm-modal").modal().one("show.bs.modal",function(a){this.confirm_closed=!1}.bind(this)).one("click","#confirm-yes",function(){this.confirm_closed=!0,c.bind(d)(!0),$("#confirm-modal").modal("hide")}.bind(this)).one("hide.bs.modal",function(a){this.confirm_closed||c.bind(d)(!1),this.confirm_closed=!0}.bind(this))},HTMLApp.prototype.alert_close_click=function(){document.getElementById("alert").style.display="none"},HTMLApp.prototype.state_change=function(a){this.auto_bake(),this.options.update_url&&(this.last_state_url=this.manager.controls.generate_state_url(!0,!0),window.history.replaceState({},"CyberChef",this.last_state_url))},HTMLApp.prototype.pop_state=function(a){window.location.href.split("#")[0]!==this.last_state_url&&this.load_URI_params()},HTMLApp.prototype.call_api=function(a,b,c,d,e){b=b||"POST",c=c||{},d=d||void 0,e=e||"application/json";var f=null,g=!1;return $.ajax({url:a,async:!1,type:b,data:c,dataType:d,contentType:e,success:function(a){g=!0,f=a},error:function(a){g=!1,f=a}}),{success:g,response:f}};var HTMLCategory=function(a,b){this.name=a,this.selected=b,this.op_list=[]};HTMLCategory.prototype.add_operation=function(a){this.op_list.push(a)},HTMLCategory.prototype.to_html=function(){for(var a="cat"+this.name.replace(/[\s\/-:_]/g,""),b="<div class='panel category'> <a class='category-title' data-toggle='collapse' data-parent='#categories' href='#"+a+"'> "+this.name+" </a> <div id='"+a+"' class='panel-collapse collapse "+(this.selected?" in":"")+"'><ul class='op_list'>",c=0;c<this.op_list.length;c++)b+=this.op_list[c].to_stub_html();return b+="</ul></div></div>"};var HTMLIngredient=function(a,b,c){this.app=b,this.manager=c,this.name=a.name,this.type=a.type,this.value=a.value,this.disabled=a.disabled||!1,this.disable_args=a.disable_args||!1,this.placeholder=a.placeholder||!1,this.target=a.target,this.toggle_values=a.toggle_values,this.id="ing-"+this.app.next_ing_id()};HTMLIngredient.prototype.to_html=function(){var a,b,c="boolean"===this.type||"number"===this.type||"option"===this.type||"short_string"===this.type||"binary_short_string"===this.type,d=c?"":"<div class='clearfix'> </div>";switch(d+="<div class='arg-group"+(c?" inline-args":"")+("text"===this.type?" arg-group-text":"")+"'><label class='arg-label' for='"+this.id+"'>"+this.name+"</label>",this.type){case"string":case"binary_string":case"byte_array":d+="<input type='text' id='"+this.id+"' class='arg arg-input' arg_name='"+this.name+"' value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"short_string":case"binary_short_string":d+="<input type='text' id='"+this.id+"'class='arg arg-input short-string' arg_name='"+this.name+"'value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"toggle_string":for(d+="<div class='input-group'><div class='input-group-btn'> <button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'"+(this.disabled?" disabled='disabled'":"")+">"+this.toggle_values[0]+" <span class='caret'></span></button><ul class='dropdown-menu'>",a=0;a<this.toggle_values.length;a++)d+="<li><a href='#'>"+this.toggle_values[a]+"</a></li>";d+="</ul></div><input type='text' class='arg arg-input toggle-string'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+"></div>";break;case"number":d+="<input type='number' id='"+this.id+"'class='arg arg-input' arg_name='"+this.name+"'value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"boolean":d+="<input type='checkbox' id='"+this.id+"'class='arg' arg_name='"+this.name+"'"+(this.value?" checked='checked' ":"")+(this.disabled?" disabled='disabled'":"")+">",this.disable_args&&this.manager.add_dynamic_listener("#"+this.id,"click",this.toggle_disable_args,this);break;case"option":for(d+="<select class='arg' id='"+this.id+"'arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+=(b=this.value[a].match(/\[([a-z0-9 -()^]+)\]/i))?"<optgroup label='"+b[1]+"'>":(b=this.value[a].match(/\[\/([a-z0-9 -()^]+)\]/i))?"</optgroup>":"<option>"+this.value[a]+"</option>";d+="</select>";break;case"populate_option":for(d+="<select class='arg' id='"+this.id+"'arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+=(b=this.value[a].name.match(/\[([a-z0-9 -()^]+)\]/i))?"<optgroup label='"+b[1]+"'>":(b=this.value[a].name.match(/\[\/([a-z0-9 -()^]+)\]/i))?"</optgroup>":"<option populate-value='"+this.value[a].value+"'>"+this.value[a].name+"</option>";d+="</select>",this.manager.add_dynamic_listener("#"+this.id,"change",this.populate_option_change,this);break;case"editable_option":for(d+="<div class='editable-option'>",d+="<select class='editable-option-select' id='sel-"+this.id+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+="<option value='"+this.value[a].value+"'>"+this.value[a].name+"</option>";d+="</select>",d+="<input class='arg arg-input editable-option-input' id='"+this.id+"'arg_name='"+this.name+"' value='"+this.value[0].value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">",d+="</div>",this.manager.add_dynamic_listener("#sel-"+this.id,"change",this.editable_option_change,this);break;case"text":d+="<textarea id='"+this.id+"' class='arg' arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">"+this.value+"</textarea>"}return d+="</div>"},HTMLIngredient.prototype.toggle_disable_args=function(a){for(var b,c=a.target,d=c.parentNode.parentNode,e=d.querySelectorAll(".arg-group"),f=0;f<this.disable_args.length;f++){b=e[this.disable_args[f]].querySelectorAll("input, select, button");for(var g=0;g<b.length;g++)b[g].getAttribute("disabled")?b[g].removeAttribute("disabled"):b[g].setAttribute("disabled","disabled")}this.manager.recipe.ing_change()},HTMLIngredient.prototype.populate_option_change=function(a){var b=a.target,c=b.parentNode.parentNode,d=c.querySelectorAll(".arg-group")[this.target].querySelector("input, select, textarea");d.value=b.childNodes[b.selectedIndex].getAttribute("populate-value"),this.manager.recipe.ing_change()},HTMLIngredient.prototype.editable_option_change=function(a){var b=a.target,c=b.nextSibling;c.value=b.childNodes[b.selectedIndex].value,this.manager.recipe.ing_change()};var HTMLOperation=function(a,b,c,d){this.app=c,this.manager=d,this.name=a,this.description=b.description,this.manual_bake=b.manual_bake||!1,this.config=b,this.ing_list=[];for(var e=0;e<b.args.length;e++){var f=new HTMLIngredient(b.args[e],this.app,this.manager);this.ing_list.push(f)}};HTMLOperation.INFO_ICON="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAByElEQVR4XqVTzWoaYRQ9KZJmoVaS1J1QiYTIuOgqi9lEugguQhYhdGs3hTyAi0CWJTvJIks30ZBNsimUtlqkVLoQCuJsphRriyFjabWtEyf/Rv3iWcwwymTlgQuH851z5hu43wRGkEwmXwCIA4hiGAUAmUQikQbhEHwyGCWVSglVVUW73RYmyKnxjB56ncJ6NpsVxHGrI/ZLuniVb3DIqQmCHnrNkgcggNeSJPlisRgyJR2b737j/TcDsQUPwv6H5NR4BnroZcb6Z16N2PvyX6yna9Z8qp6JQ0Uf0ughmGHWBSAuyzJqrQ7eqKewY/dzE363C71e39LoWQq5wUwul4uzIBoIBHD01RgyrkZ8eDbvwUWnj623v2DHx4qB51IAzLIAXq8XP/7W0bUVVJtXWIk8wvlN364TA+/1IDMLwmWK/Hq3axmhaBdoGLeklm73ElaBYRgIzkyifHIOO4QQJKM3oJcZq6CgaVp0OTyHw9K/kQI4FiyHfdC0n2CWe5ApFosIPZ7C2tNpXpcDOehGyD/FIbd0euhlhllzFxRzC3fydbG4XRYbB9/tQ41n9m1U7l3lyp9LkfygiZeZCoecmtMqj/+Yxn7Od3v0j50qCO3zAAAAAElFTkSuQmCC",HTMLOperation.REMOVE_ICON="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABwklEQVR42qRTPU8CQRB9K2CCMRJ6NTQajOUaqfxIbLCRghhjQixosLAgFNBQ3l8wsabxLxBJbCyVUBiMCVQEQkOEKBbCnefM3p4eohWXzM3uvHlv52b2hG3bmOWZw4yPn1/XQkCQ9wFxcgZZ0QLKpifpN8Z1n1L13griBBjHhYK0nMT4b+wom53ClAAFQacZJ/m8rNfrSOZy0vxJjPP6IJ2WzWYTO6mUwiwtILiJJSHUKVSWkchkZK1WQzQaxU2pVGUglkjIbreLUCiEx0qlStlFCpfPiPstYDtVKJH9ZFI2Gw1FGA6H6LTbCAaDeGu1FJl6UuYjpwTGzucokZW1NfnS66kyfT4fXns9RaZmlgNcuhZQU+jowLzuOK/HgwEW3E5ZlhLXVWKk11P3wNYNWw+HZdA0sUgx1zjGmD05nckx0ilGjBJdUq3fr7K5e8bGf43RdL7fOPSQb4lI8SLbrUfkUIuY32VTI1bJn5BqDnh4Dodt9ryPUDzyD7aquWoKQohl2i9sAbubwPkTcHkP3FHsg+yT+7sN7G0AF3Xg6sHB3onbdgWWKBDQg/BcTuVt51dQA/JrnIcyIu6rmPV3/hJgACPc0BMEYTg+AAAAAElFTkSuQmCC",HTMLOperation.prototype.to_stub_html=function(a){var b="<li class='operation'";return this.description&&(b+=" data-container='body' data-toggle='popover' data-placement='auto right' data-content=\""+this.description+"\" data-html='true' data-trigger='hover'"),b+=">"+this.name,a&&(b+="<img src='data:image/png;base64,"+HTMLOperation.REMOVE_ICON+"' class='op-icon remove-icon'>"),this.description&&(b+="<img src='data:image/png;base64,"+HTMLOperation.INFO_ICON+"' class='op-icon'>"),b+="</li>"},HTMLOperation.prototype.to_full_html=function(){for(var a="<div class='arg-title'>"+this.name+"</div>",b=0;b<this.ing_list.length;b++)a+=this.ing_list[b].to_html();return a+="<div class='recip-icons'> <div class='breakpoint' title='Set breakpoint' break='false'></div> <div class='disable-icon recip-icon' title='Disable operation' disabled='false'></div>",a+="</div> <div class='clearfix'> </div>"},HTMLOperation.prototype.highlight_search_string=function(a,b,c){b>=0&&(this.name=this.name.slice(0,b)+"<b><u>"+this.name.slice(b,b+a.length)+"</u></b>"+this.name.slice(b+a.length)),this.description&&c>=0&&(this.description=this.description.slice(0,c)+"<b><u>"+this.description.slice(c,c+a.length)+"</u></b>"+this.description.slice(c+a.length))};var HighlighterWaiter=function(a){this.app=a,this.mouse_button_down=!1,this.mouse_target=null};HighlighterWaiter.INPUT=0,HighlighterWaiter.OUTPUT=1,HighlighterWaiter.prototype._is_selection_backwards=function(){var a=!1,b=window.getSelection();if(!b.isCollapsed){var c=document.createRange();c.setStart(b.anchorNode,b.anchorOffset),c.setEnd(b.focusNode,b.focusOffset),a=c.collapsed,c.detach()}return a},HighlighterWaiter.prototype._get_output_html_offset=function(a,b){var c=window.getSelection(),d=document.createRange();return d.selectNodeContents(document.getElementById("output-html")),d.setEnd(a,b),c.removeAllRanges(),c.addRange(d),c.toString().length},HighlighterWaiter.prototype._get_output_html_selection_offsets=function(){var a,b=window.getSelection(),c=0,d=0,e=!1;return b.rangeCount&&(a=b.getRangeAt(b.rangeCount-1),e=this._is_selection_backwards(),c=this._get_output_html_offset(a.startContainer,a.startOffset),d=this._get_output_html_offset(a.endContainer,a.endOffset),b.removeAllRanges(),b.addRange(a),e&&(b.collapseToEnd(),b.extend(b.anchorNode,a.startOffset))),{start:c,end:d}},HighlighterWaiter.prototype.input_scroll=function(a){var b=a.target;document.getElementById("input-highlighter").scrollTop=b.scrollTop,document.getElementById("input-highlighter").scrollLeft=b.scrollLeft},HighlighterWaiter.prototype.output_scroll=function(a){var b=a.target;document.getElementById("output-highlighter").scrollTop=b.scrollTop,document.getElementById("output-highlighter").scrollLeft=b.scrollLeft},HighlighterWaiter.prototype.input_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.INPUT,this.remove_highlights();var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("input-selection-info").innerHTML=this.selection_info(c,d),this.highlight_output([{start:c,end:d}]))},HighlighterWaiter.prototype.output_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.OUTPUT,this.remove_highlights();var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("output-selection-info").innerHTML=this.selection_info(c,d),this.highlight_input([{start:c,end:d}]))},HighlighterWaiter.prototype.output_html_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.OUTPUT;var b=this._get_output_html_selection_offsets();0===b.start&&0===b.end||(document.getElementById("output-selection-info").innerHTML=this.selection_info(b.start,b.end))},HighlighterWaiter.prototype.input_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.output_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.output_html_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.input_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.INPUT){var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("input-selection-info").innerHTML=this.selection_info(c,d),this.highlight_output([{start:c,end:d}]))}},HighlighterWaiter.prototype.output_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.OUTPUT){var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("output-selection-info").innerHTML=this.selection_info(c,d),this.highlight_input([{start:c,end:d}]))}},HighlighterWaiter.prototype.output_html_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.OUTPUT){var b=this._get_output_html_selection_offsets();0===b.start&&0===b.end||(document.getElementById("output-selection-info").innerHTML=this.selection_info(b.start,b.end))}},HighlighterWaiter.prototype.selection_info=function(a,b){var c=b.toString().length;c=c<2?2:c;var d=Utils.pad(a.toString(),c," ").replace(/ /g," "),e=Utils.pad(b.toString(),c," ").replace(/ /g," "),f=Utils.pad((b-a).toString(),c," ").replace(/ /g," ");return"start: "+d+"<br>end: "+e+"<br>length: "+f},HighlighterWaiter.prototype.remove_highlights=function(){document.getElementById("input-highlighter").innerHTML="",document.getElementById("output-highlighter").innerHTML="",document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML=""},HighlighterWaiter.prototype.generate_highlight_list=function(){for(var a=this.app.get_recipe_config(),b=[],c=0;c<a.length;c++)if(!a[c].disabled){if(a[c].breakpoint)return!1;var d=this.app.operations[a[c].op];if(d.highlight===!1||void 0===d.highlight)return!1;b.push({f:d.highlight,b:d.highlight_reverse,args:a[c].args})}return b},HighlighterWaiter.prototype.highlight_output=function(a){var b=this.generate_highlight_list();if(!b||!this.app.auto_bake_)return!1;for(var c=0;c<b.length;c++)a=[a[0]],"function"==typeof b[c].f&&(a=b[c].f(a,b[c].args));document.getElementById("output-selection-info").innerHTML=this.selection_info(a[0].start,a[0].end),this.highlight(document.getElementById("output-text"),document.getElementById("output-highlighter"),a)},HighlighterWaiter.prototype.highlight_input=function(a){var b=this.generate_highlight_list();if(!b||!this.app.auto_bake_)return!1;for(var c=0;c<b.length;c++)a=[a[0]],"function"==typeof b[c].b&&(a=b[c].b(a,b[c].args));document.getElementById("input-selection-info").innerHTML=this.selection_info(a[0].start,a[0].end),this.highlight(document.getElementById("input-text"),document.getElementById("input-highlighter"),a)},HighlighterWaiter.prototype.highlight=function(a,b,c){if(!this.app.options.show_highlighter)return!1;if(!this.app.options.attempt_highlight)return!1;if(!this.app.dish_str||this.app.dish_str.indexOf("\r")>=0)return!1;var d="[start_highlight]",e=/\[start_highlight\]/g,f="[end_highlight]",g=/\[end_highlight\]/g,h=a.value;if(1===c.length){if(c[0].end<c[0].start)return;h=h.slice(0,c[0].start)+d+h.slice(c[0].start,c[0].end)+f+h.slice(c[0].end,h.length)}else{for(var i="",j=!0,k=0;k<h.length;k++){for(var l=1;l<c.length;l++)c[l].end<c[l].start||(c[l].start===k&&(i+=d,j=!1),c[l].end===k&&(i+=f,j=!0));i+=h[k]}j||(i+=f),h=i}var m="hl1";h=h.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\n/g," ").replace(e,'<span class="'+m+'">').replace(g,"</span>")+" ",b.style.width=a.clientWidth+"px",b.innerHTML=h,b.scrollTop=a.scrollTop,b.scrollLeft=a.scrollLeft};var InputWaiter=function(a,b){this.app=a,this.manager=b,this.bad_keys=[16,17,18,19,20,27,33,34,35,36,37,38,39,40,44,91,92,93,112,113,114,115,116,117,118,119,120,121,122,123,144,145]};InputWaiter.prototype.get=function(){return document.getElementById("input-text").value},InputWaiter.prototype.set=function(a){document.getElementById("input-text").value=a,window.dispatchEvent(this.manager.statechange)},InputWaiter.prototype.set_input_info=function(a,b){var c=a.toString().length;c=c<2?2:c;var d=Utils.pad(a.toString(),c," ").replace(/ /g," "),e=Utils.pad(b.toString(),c," ").replace(/ /g," ");document.getElementById("input-info").innerHTML="length: "+d+"<br>lines: "+e},InputWaiter.prototype.input_change=function(a){this.manager.highlighter.remove_highlights(),this.app.progress=0;var b=this.get(),c=b.count("\n")+1;this.set_input_info(b.length,c),this.bad_keys.indexOf(a.keyCode)<0&&window.dispatchEvent(this.manager.statechange)},InputWaiter.prototype.input_dragover=function(a){return"move"!==a.dataTransfer.effectAllowed&&(a.stopPropagation(),a.preventDefault(),void a.target.classList.add("dropping-file"))},InputWaiter.prototype.input_dragleave=function(a){a.stopPropagation(),a.preventDefault(),a.target.classList.remove("dropping-file")},InputWaiter.prototype.input_drop=function(a){if("move"===a.dataTransfer.effectAllowed)return!1;a.stopPropagation(),a.preventDefault();var b=a.target,c=a.dataTransfer.files[0],d=a.dataTransfer.getData("Text"),e=new FileReader,f="",g=0,h=20480,i=function(){f.length>1e5&&this.app.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.app.alert("Turned off Auto Bake as the input is large","warning",5e3)),this.set(f);var a=this.app.get_recipe_config();a[0]&&"From Hex"===a[0].op||(a.unshift({op:"From Hex",args:["Space"]}),this.app.set_recipe_config(a)),b.classList.remove("loading_file")}.bind(this),j=function(){if(g>=c.size)return void i();b.value="Processing... "+Math.round(g/c.size*100)+"%";var a=c.slice(g,g+h);e.readAsArrayBuffer(a)};e.onload=function(a){var b=new Uint8Array(e.result);f+=Utils.to_hex_fast(b),g+=h,j()},b.classList.remove("dropping-file"),c?(b.classList.add("loading_file"),j()):d&&this.set(d)},InputWaiter.prototype.clear_io_click=function(){this.manager.highlighter.remove_highlights(),document.getElementById("input-text").value="",document.getElementById("output-text").value="",document.getElementById("input-info").innerHTML="",document.getElementById("output-info").innerHTML="",document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML="",window.dispatchEvent(this.manager.statechange)};var Manager=function(a){this.app=a,this.appstart=new CustomEvent("appstart",{bubbles:!0}),this.operationadd=new CustomEvent("operationadd",{bubbles:!0}),this.operationremove=new CustomEvent("operationremove",{bubbles:!0}),this.oplistcreate=new CustomEvent("oplistcreate",{bubbles:!0}),this.statechange=new CustomEvent("statechange",{bubbles:!0}),this.window=new WindowWaiter(this.app),this.controls=new ControlsWaiter(this.app,this),this.recipe=new RecipeWaiter(this.app,this),this.ops=new OperationsWaiter(this.app,this),this.input=new InputWaiter(this.app,this),this.output=new OutputWaiter(this.app,this),this.options=new OptionsWaiter(this.app),this.highlighter=new HighlighterWaiter(this.app),this.seasonal=new SeasonalWaiter(this.app,this),this.dynamic_handlers={},this.initialise_event_listeners()};Manager.prototype.setup=function(){this.recipe.initialise_operation_drag_n_drop(),this.controls.auto_bake_change(), -this.seasonal.load()},Manager.prototype.initialise_event_listeners=function(){window.addEventListener("resize",this.window.window_resize.bind(this.window)),window.addEventListener("blur",this.window.window_blur.bind(this.window)),window.addEventListener("focus",this.window.window_focus.bind(this.window)),window.addEventListener("statechange",this.app.state_change.bind(this.app)),window.addEventListener("popstate",this.app.pop_state.bind(this.app)),document.getElementById("bake").addEventListener("click",this.controls.bake_click.bind(this.controls)),document.getElementById("auto-bake").addEventListener("change",this.controls.auto_bake_change.bind(this.controls)),document.getElementById("step").addEventListener("click",this.controls.step_click.bind(this.controls)),document.getElementById("clr-recipe").addEventListener("click",this.controls.clear_recipe_click.bind(this.controls)),document.getElementById("clr-breaks").addEventListener("click",this.controls.clear_breaks_click.bind(this.controls)),document.getElementById("save").addEventListener("click",this.controls.save_click.bind(this.controls)),document.getElementById("save-button").addEventListener("click",this.controls.save_button_click.bind(this.controls)),document.getElementById("save-link-recipe-checkbox").addEventListener("change",this.controls.slr_check_change.bind(this.controls)),document.getElementById("save-link-input-checkbox").addEventListener("change",this.controls.sli_check_change.bind(this.controls)),document.getElementById("load").addEventListener("click",this.controls.load_click.bind(this.controls)),document.getElementById("load-delete-button").addEventListener("click",this.controls.load_delete_click.bind(this.controls)),document.getElementById("load-name").addEventListener("change",this.controls.load_name_change.bind(this.controls)),document.getElementById("load-button").addEventListener("click",this.controls.load_button_click.bind(this.controls)),this.add_multi_event_listener("#save-text","keyup paste",this.controls.save_text_change,this.controls),this.add_multi_event_listener("#search","keyup paste search",this.ops.search_operations,this.ops),this.add_dynamic_listener(".op_list li.operation","dblclick",this.ops.operation_dblclick,this.ops),document.getElementById("edit-favourites").addEventListener("click",this.ops.edit_favourites_click.bind(this.ops)),document.getElementById("save-favourites").addEventListener("click",this.ops.save_favourites_click.bind(this.ops)),document.getElementById("reset-favourites").addEventListener("click",this.ops.reset_favourites_click.bind(this.ops)),this.add_dynamic_listener(".op_list .op-icon","mouseover",this.ops.op_icon_mouseover,this.ops),this.add_dynamic_listener(".op_list .op-icon","mouseleave",this.ops.op_icon_mouseleave,this.ops),this.add_dynamic_listener(".op_list","oplistcreate",this.ops.op_list_create,this.ops),this.add_dynamic_listener("li.operation","operationadd",this.recipe.op_add.bind(this.recipe)),this.add_dynamic_listener(".arg","keyup",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".arg","change",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".disable-icon","click",this.recipe.disable_click,this.recipe),this.add_dynamic_listener(".breakpoint","click",this.recipe.breakpoint_click,this.recipe),this.add_dynamic_listener("#rec_list li.operation","dblclick",this.recipe.operation_dblclick,this.recipe),this.add_dynamic_listener("#rec_list li.operation > div","dblclick",this.recipe.operation_child_dblclick,this.recipe),this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a","click",this.recipe.dropdown_toggle_click,this.recipe),this.add_dynamic_listener("#rec_list","operationremove",this.recipe.op_remove.bind(this.recipe)),this.add_multi_event_listener("#input-text","keyup paste",this.input.input_change,this.input),document.getElementById("reset-layout").addEventListener("click",this.app.reset_layout.bind(this.app)),document.getElementById("clr-io").addEventListener("click",this.input.clear_io_click.bind(this.input)),document.getElementById("input-text").addEventListener("dragover",this.input.input_dragover.bind(this.input)),document.getElementById("input-text").addEventListener("dragleave",this.input.input_dragleave.bind(this.input)),document.getElementById("input-text").addEventListener("drop",this.input.input_drop.bind(this.input)),document.getElementById("input-text").addEventListener("scroll",this.highlighter.input_scroll.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mouseup",this.highlighter.input_mouseup.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mousemove",this.highlighter.input_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#input-text","mousedown dblclick select",this.highlighter.input_mousedown,this.highlighter),document.getElementById("save-to-file").addEventListener("click",this.output.save_click.bind(this.output)),document.getElementById("switch").addEventListener("click",this.output.switch_click.bind(this.output)),document.getElementById("undo-switch").addEventListener("click",this.output.undo_switch_click.bind(this.output)),document.getElementById("output-text").addEventListener("scroll",this.highlighter.output_scroll.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mouseup",this.highlighter.output_mouseup.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mousemove",this.highlighter.output_mousemove.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mouseup",this.highlighter.output_html_mouseup.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mousemove",this.highlighter.output_html_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#output-text","mousedown dblclick select",this.highlighter.output_mousedown,this.highlighter),this.add_multi_event_listener("#output-html","mousedown dblclick select",this.highlighter.output_html_mousedown,this.highlighter),document.getElementById("options").addEventListener("click",this.options.options_click.bind(this.options)),document.getElementById("reset-options").addEventListener("click",this.options.reset_options_click.bind(this.options)),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox",this.options.switch_change.bind(this.options)),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox",this.options.set_word_wrap.bind(this.options)),this.add_dynamic_listener(".option-item input[type=number]","keyup",this.options.number_change,this.options),this.add_dynamic_listener(".option-item input[type=number]","change",this.options.number_change,this.options),this.add_dynamic_listener(".option-item select","change",this.options.select_change,this.options),document.getElementById("alert-close").addEventListener("click",this.app.alert_close_click.bind(this.app))},Manager.prototype.add_listeners=function(a,b,c,d){d=d||this,[].forEach.call(document.querySelectorAll(a),function(a){a.addEventListener(b,c.bind(d))})},Manager.prototype.add_multi_event_listener=function(a,b,c,d){for(var e=b.split(" "),f=0;f<e.length;f++)document.querySelector(a).addEventListener(e[f],c.bind(d))},Manager.prototype.add_multi_event_listeners=function(a,b,c,d){for(var e=b.split(" "),f=0;f<e.length;f++)this.add_listeners(a,e[f],c,d)},Manager.prototype.add_dynamic_listener=function(a,b,c,d){var e={selector:a,callback:c.bind(d||this)};this.dynamic_handlers.hasOwnProperty(b)?this.dynamic_handlers[b].push(e):(this.dynamic_handlers[b]=[e],document.addEventListener(b,this.dynamic_listener_handler.bind(this)))},Manager.prototype.dynamic_listener_handler=function(a){for(var b=this.dynamic_handlers[a.type],c=a.target.matches||a.target.webkitMatchesSelector||a.target.mozMatchesSelector||a.target.msMatchesSelector||a.target.oMatchesSelector,d=0;d<b.length;d++)c&&a.target[c.name](b[d].selector)&&b[d].callback(a)};var OperationsWaiter=function(a,b){this.app=a,this.manager=b,this.options={},this.remove_intent=!1};OperationsWaiter.prototype.search_operations=function(a){var b,c;if("search"===a.type&&(a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&(this.manager.recipe.add_operation(b[c].innerHTML),this.app.auto_bake()))),13===a.keyCode)a.preventDefault();else if(40===a.keyCode)a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&b[c].classList.remove("selected-op"),c===b.length-1&&(c=-1),b[c+1].classList.add("selected-op"));else if(38===a.keyCode)a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&b[c].classList.remove("selected-op"),0===c&&(c=b.length),b[c-1].classList.add("selected-op"));else{for(var d=document.getElementById("search-results"),e=a.target,f=e.value;d.firstChild;)$(d.firstChild).popover("destroy"),d.removeChild(d.firstChild);if($("#categories .in").collapse("hide"),f){for(var g=this.filter_operations(f,!0),h="",i=0;i<g.length;i++)h+=g[i].to_stub_html();d.innerHTML=h,d.dispatchEvent(this.manager.oplistcreate)}}},OperationsWaiter.prototype.filter_operations=function(a,b){var c=[],d=[];a=a.toLowerCase();for(var e in this.app.operations){var f=this.app.operations[e],g=e.toLowerCase().indexOf(a),h=f.description.toLowerCase().indexOf(a);if(g>=0||h>=0){var i=new HTMLOperation(e,this.app.operations[e],this.app,this.manager);b&&i.highlight_search_string(a,g,h),g<0?c.push(i):d.push(i)}}return d.concat(c)},OperationsWaiter.prototype.get_selected_op=function(a){for(var b=0;b<a.length;b++)if(a[b].classList.contains("selected-op"))return b;return-1},OperationsWaiter.prototype.op_list_create=function(a){this.manager.recipe.create_sortable_seed_list(a.target),$("[data-toggle=popover]").popover()},OperationsWaiter.prototype.operation_dblclick=function(a){var b=a.target;this.manager.recipe.add_operation(b.textContent),this.app.auto_bake()},OperationsWaiter.prototype.edit_favourites_click=function(a){a.preventDefault(),a.stopPropagation();for(var b=this.app.categories.filter(function(a){return"Favourites"===a.name})[0],c="",d=0;d<b.ops.length;d++){var e=b.ops[d],f=new HTMLOperation(e,this.app.operations[e],this.app,this.manager);c+=f.to_stub_html(!0)}var g=document.getElementById("edit-favourites-list");g.innerHTML=c,this.remove_intent=!1;var h=Sortable.create(g,{filter:".remove-icon",onFilter:function(a){var b=h.closest(a.item);b&&($(b).popover("destroy"),b.parentNode.removeChild(b))},onEnd:function(a){this.remove_intent&&a.item.remove()}.bind(this)});Sortable.utils.on(g,"dragleave",function(){this.remove_intent=!0}.bind(this)),Sortable.utils.on(g,"dragover",function(){this.remove_intent=!1}.bind(this)),$("#edit-favourites-list [data-toggle=popover]").popover(),$("#favourites-modal").modal()},OperationsWaiter.prototype.save_favourites_click=function(){for(var a=[],b=document.querySelectorAll("#edit-favourites-list li"),c=0;c<b.length;c++)a.push(b[c].textContent);this.app.save_favourites(a),this.app.load_favourites(),this.app.populate_operations_list(),this.manager.recipe.initialise_operation_drag_n_drop()},OperationsWaiter.prototype.reset_favourites_click=function(){this.app.reset_favourites()},OperationsWaiter.prototype.op_icon_mouseover=function(a){var b=a.target.parentNode;"popover"===a.target.getAttribute("data-toggle")&&$(b).popover("hide")},OperationsWaiter.prototype.op_icon_mouseleave=function(a){var b=a.target.parentNode,c=a.toElement||a.relatedElement;"popover"===a.target.getAttribute("data-toggle")&&c===b&&$(b).popover("show")};var OptionsWaiter=function(a){this.app=a};OptionsWaiter.prototype.load=function(a){$(".option-item input:checkbox").bootstrapSwitch({size:"small",animate:!1});for(var b in a)this.app.options[b]=a[b];for(var c=document.querySelectorAll("#options-body input[type=checkbox]"),d=0;d<c.length;d++)$(c[d]).bootstrapSwitch("state",this.app.options[c[d].getAttribute("option")]);var e=document.querySelectorAll("#options-body input[type=number]");for(d=0;d<e.length;d++)e[d].value=this.app.options[e[d].getAttribute("option")],e[d].dispatchEvent(new CustomEvent("change",{bubbles:!0}));var f=document.querySelectorAll("#options-body select");for(d=0;d<f.length;d++)f[d].value=this.app.options[f[d].getAttribute("option")],f[d].dispatchEvent(new CustomEvent("change",{bubbles:!0}))},OptionsWaiter.prototype.options_click=function(){$("#options-modal").modal()},OptionsWaiter.prototype.reset_options_click=function(){this.load(this.app.doptions)},OptionsWaiter.prototype.switch_change=function(a,b){var c=a.target,d=c.getAttribute("option");this.app.options[d]=b,localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.number_change=function(a){var b=a.target,c=b.getAttribute("option");this.app.options[c]=parseInt(b.value,10),localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.select_change=function(a){var b=a.target,c=b.getAttribute("option");this.app.options[c]=b.value,localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.set_word_wrap=function(){document.getElementById("input-text").classList.remove("word-wrap"),document.getElementById("output-text").classList.remove("word-wrap"),document.getElementById("output-html").classList.remove("word-wrap"),document.getElementById("input-highlighter").classList.remove("word-wrap"),document.getElementById("output-highlighter").classList.remove("word-wrap"),this.app.options.word_wrap||(document.getElementById("input-text").classList.add("word-wrap"),document.getElementById("output-text").classList.add("word-wrap"),document.getElementById("output-html").classList.add("word-wrap"),document.getElementById("input-highlighter").classList.add("word-wrap"),document.getElementById("output-highlighter").classList.add("word-wrap"))};var OutputWaiter=function(a,b){this.app=a,this.manager=b};OutputWaiter.prototype.get=function(){return document.getElementById("output-text").value},OutputWaiter.prototype.set=function(data_str,type,duration){var output_text=document.getElementById("output-text"),output_html=document.getElementById("output-html"),output_highlighter=document.getElementById("output-highlighter"),input_highlighter=document.getElementById("input-highlighter");if("html"===type){output_text.style.display="none",output_html.style.display="block",output_highlighter.display="none",input_highlighter.display="none",output_text.value="",output_html.innerHTML=data_str;for(var script_elements=output_html.querySelectorAll("script"),i=0;i<script_elements.length;i++)try{eval(script_elements[i].innerHTML)}catch(a){console.error(a)}}else output_text.style.display="block",output_html.style.display="none",output_highlighter.display="block",input_highlighter.display="block",output_text.value=Utils.printable(data_str,!0),output_html.innerHTML="";this.manager.highlighter.remove_highlights();var lines=data_str.count("\n")+1;this.set_output_info(data_str.length,lines,duration)},OutputWaiter.prototype.set_output_info=function(a,b,c){var d=a.toString().length;d=d<4?4:d;var e=Utils.pad(a.toString(),d," ").replace(/ /g," "),f=Utils.pad(b.toString(),d," ").replace(/ /g," "),g=Utils.pad(c.toString()+"ms",d," ").replace(/ /g," ");document.getElementById("output-info").innerHTML="time: "+g+"<br>length: "+e+"<br>lines: "+f,document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML=""},OutputWaiter.prototype.save_click=function(){var a=Utils.to_base64(this.app.dish_str),b=window.prompt("Please enter a filename:","download.dat");if(b){var c=document.createElement("a");c.setAttribute("href","data:application/octet-stream;base64;charset=utf-8,"+a),c.setAttribute("download",b),c.style.display="none",document.body.appendChild(c),c.click(),c.remove()}},OutputWaiter.prototype.switch_click=function(){this.switch_orig_data=this.manager.input.get(),document.getElementById("undo-switch").disabled=!1,this.app.set_input(this.app.dish_str)},OutputWaiter.prototype.undo_switch_click=function(){this.app.set_input(this.switch_orig_data),document.getElementById("undo-switch").disabled=!0};var RecipeWaiter=function(a,b){this.app=a,this.manager=b,this.remove_intent=!1};RecipeWaiter.prototype.initialise_operation_drag_n_drop=function(){var a=document.getElementById("rec_list");Sortable.create(a,{group:"recipe",sort:!0,animation:0,delay:0,filter:".arg-input,.arg",setData:function(a,b){a.setData("Text",b.querySelector(".arg-title").textContent)},onEnd:function(a){this.remove_intent&&(a.item.remove(),a.target.dispatchEvent(this.manager.operationremove))}.bind(this)}),Sortable.utils.on(a,"dragover",function(){this.remove_intent=!1}.bind(this)),Sortable.utils.on(a,"dragleave",function(){this.remove_intent=!0,this.app.progress=0}.bind(this)),Sortable.utils.on(a,"touchend",function(b){var c=b.changedTouches[0],d=document.elementFromPoint(c.clientX,c.clientY);this.remove_intent=!a.contains(d)}.bind(this)),document.querySelector("#categories a").addEventListener("dragover",this.fav_dragover.bind(this)),document.querySelector("#categories a").addEventListener("dragleave",this.fav_dragleave.bind(this)),document.querySelector("#categories a").addEventListener("drop",this.fav_drop.bind(this))},RecipeWaiter.prototype.create_sortable_seed_list=function(a){Sortable.create(a,{group:{name:"recipe",pull:"clone",put:!1},sort:!1,setData:function(a,b){a.setData("Text",b.textContent)},onStart:function(a){$(a.item).popover("destroy"),a.item.setAttribute("data-toggle","popover-disabled")},onEnd:this.op_sort_end.bind(this)})},RecipeWaiter.prototype.op_sort_end=function(a){return this.remove_intent?void("rec_list"===a.item.parentNode.id&&a.item.remove()):($(a.clone).popover(),$(a.clone).children("[data-toggle=popover]").popover(),void("rec_list"===a.item.parentNode.id&&(this.build_recipe_operation(a.item),a.item.dispatchEvent(this.manager.operationadd))))},RecipeWaiter.prototype.fav_dragover=function(a){return"move"===a.dataTransfer.effectAllowed&&(a.stopPropagation(),a.preventDefault(),void(a.target.className&&a.target.className.indexOf("category-title")>-1?a.target.classList.add("favourites-hover"):a.target.parentNode.className&&a.target.parentNode.className.indexOf("category-title")>-1?a.target.parentNode.classList.add("favourites-hover"):a.target.parentNode.parentNode.className&&a.target.parentNode.parentNode.className.indexOf("category-title")>-1&&a.target.parentNode.parentNode.classList.add("favourites-hover")))},RecipeWaiter.prototype.fav_dragleave=function(a){a.stopPropagation(),a.preventDefault(),document.querySelector("#categories a").classList.remove("favourites-hover")},RecipeWaiter.prototype.fav_drop=function(a){a.stopPropagation(),a.preventDefault(),a.target.classList.remove("favourites-hover");var b=a.dataTransfer.getData("Text");this.app.add_favourite(b)},RecipeWaiter.prototype.ing_change=function(){window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.disable_click=function(a){var b=a.target;"false"===b.getAttribute("disabled")?(b.setAttribute("disabled","true"),b.classList.add("disable-icon-selected"),b.parentNode.parentNode.classList.add("disabled")):(b.setAttribute("disabled","false"),b.classList.remove("disable-icon-selected"),b.parentNode.parentNode.classList.remove("disabled")),this.app.progress=0,window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.breakpoint_click=function(a){var b=a.target;"false"===b.getAttribute("break")?(b.setAttribute("break","true"),b.classList.add("breakpoint-selected")):(b.setAttribute("break","false"),b.classList.remove("breakpoint-selected")),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.operation_dblclick=function(a){a.target.remove(),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.operation_child_dblclick=function(a){a.target.parentNode.remove(),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.get_config=function(){for(var a,b,c,d,e,f=[],g=document.querySelectorAll("#rec_list li.operation"),h=0;h<g.length;h++){a=[],c=g[h].querySelector(".disable-icon"),d=g[h].querySelector(".breakpoint"),b=g[h].querySelectorAll(".arg");for(var i=0;i<b.length;i++)"checkbox"===b[i].getAttribute("type")?a[i]=b[i].checked:b[i].classList.contains("toggle-string")?a[i]={option:b[i].previousSibling.children[0].textContent.slice(0,-1),string:b[i].value}:a[i]=b[i].value;e={op:g[h].querySelector(".arg-title").textContent,args:a},c&&"true"===c.getAttribute("disabled")&&(e.disabled=!0),d&&"true"===d.getAttribute("break")&&(e.breakpoint=!0),f.push(e)}return f},RecipeWaiter.prototype.update_breakpoint_indicator=function(a){for(var b=document.querySelectorAll("#rec_list li.operation"),c=0;c<b.length;c++)c===a?b[c].classList.add("break"):b[c].classList.remove("break")},RecipeWaiter.prototype.build_recipe_operation=function(a){var b=a.textContent,c=new HTMLOperation(b,this.app.operations[b],this.app,this.manager);a.innerHTML=c.to_full_html(),this.app.operations[b].flow_control&&a.classList.add("flow-control-op"),c.manual_bake&&this.app.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.app.alert("Auto-Bake is disabled by default when using this operation.","info",5e3))},RecipeWaiter.prototype.add_operation=function(a){var b=document.createElement("li");return b.classList.add("operation"),b.innerHTML=a,this.build_recipe_operation(b),document.getElementById("rec_list").appendChild(b),b.dispatchEvent(this.manager.operationadd),b},RecipeWaiter.prototype.clear_recipe=function(){for(var a=document.getElementById("rec_list");a.firstChild;)a.removeChild(a.firstChild);a.dispatchEvent(this.manager.operationremove)},RecipeWaiter.prototype.dropdown_toggle_click=function(a){var b=a.target,c=b.parentNode.parentNode.previousSibling;c.innerHTML=b.textContent+" <span class='caret'></span>",this.ing_change()},RecipeWaiter.prototype.op_add=function(a){window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.op_remove=function(a){window.dispatchEvent(this.manager.statechange)};var SeasonalWaiter=function(a,b){this.app=a,this.manager=b};SeasonalWaiter.prototype.load=function(){var a=new Date;11===a.getMonth()&&a.getDate()>12&&(this.app.options.snow=!1,this.create_snow_option(),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox[option='snow']",this.let_it_snow.bind(this)),window.addEventListener("resize",this.let_it_snow.bind(this)),this.manager.add_listeners(".btn","click",this.shake_off_snow,this),25===a.getDate()&&this.let_it_snow()),this.kkeys=[],window.addEventListener("keydown",this.konami_code_listener.bind(this))},SeasonalWaiter.prototype.insert_spider_icons=function(){var a="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB3UlEQVQ4y2NgGJaAmYGBgVnf0oKJgYGBobWtXamqqoYTn2I4CI+LTzM2NTulpKbu+vPHz2dV5RWlluZmi3j5+KqFJSSEzpw8uQPdAEYYIzo5Kfjrl28rWFlZzjAzMYuEBQao3Lh+g+HGvbsMzExMDN++fWf4/PXLBzY2tqYNK1f2+4eHM2xcuRLigsT09Igf3384MTExbf767etBI319jU8fPsi+//jx/72HDxh5uLkZ7ty7y/Dz1687Avz8n2UUFR3Z2NjOySoqfmdhYGBg+PbtuwI7O8e5H79+8X379t357PnzYo+ePP7y6cuXc9++f69nYGRsvf/w4XdtLS2R799/bBUWFHr57sP7Jbs3b/ZkzswvUP3165fZ7z9//r988WIVAyPDr8tXr576+u3bpb9//7YwMjKeV1dV41NWVGoVEhDgPH761DJREeHaz1+/lqlpafUx6+jrRfz4+fPy+w8fTu/fsf3uw7t3L39+//4cv7DwGQYGhpdPbt9m4BcRFlNWVJC4fuvWASszs4C379792Ldt2xZBUdEdDP5hYSqQGIjDGa965uYKCalpZQwMDAxhMTG9DAwMDLaurhIkJY7A8IgGBgYGBgd3Dz2yUpeFo6O4rasrA9T24ZRxAAMTwMpgEJwLAAAAAElFTkSuQmCC",b="iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACYVBMVEUAAAAcJSU2Pz85QkM9RUWEhIWMjI2MkJEcJSU2Pz85QkM9RUWWlpc9RUVXXl4cJSU2Pz85QkM8REU9RUVRWFh6ens9RUVCSkpNVFRdY2McJSU5QkM7REQ9RUVGTk5KUlJQVldcY2Rla2uTk5WampscJSVUWltZX2BrcHF1e3scJSUjLCw9RUVASEhFTU1HTk9bYWJeZGRma2xudHV1eHiZmZocJSUyOjpJUFFQVldSWlpTWVpXXl5YXl5rb3B9fX6RkZIcJSUmLy8tNTU9RUVFTU1IT1BOVldRV1hTWlp0enocJSUfKChJUFBWXV1hZ2hnbGwcJSVETExLUlJLU1NNVVVPVlZYXl9cY2RiaGlobW5rcXFyd3h0eHgcJSUpMTFDS0tQV1dRV1hSWFlWXF1bYWJma2tobW5uc3SsrK0cJSVJUFBMVFROVlZVW1xZX2BdYmNhZ2hjaGhla2tqcHBscHE4Pz9KUlJRWVlSWVlXXF1aYGFbYWFfZWZlampqbW4cJSUgKSkiKysuNjY0PD01PT07QkNES0tHTk5JUFBMUlNMU1NOU1ROVVVPVVZRVlZRV1dSWVlWXFxXXV5aX2BbYWFbYWJcYmJcYmNcY2RdYmNgZmZhZmdkaWpkampkamtlamtla2tma2tma2xnbG1obW5pbG1pb3Bqb3Brb3BtcXJudHVvcHFvcXJvc3NwcXNwdXVxc3RzeXl1eXp2eXl3ent6e3x+gYKAhISBg4SKi4yLi4yWlpeampudnZ6fn6CkpaanqKiur6+vr7C4uLm6urq6u7u8vLy9vb3Av8DR0dL2b74UAAAAgHRSTlMAEBAQEBAQECAgICAgMDBAQEBAQEBAUFBQUGBgYGBgYGBgYGBgcHBwcHCAgICAgICAgICAgICPj4+Pj4+Pj4+Pj5+fn5+fn5+fn5+vr6+vr6+/v7+/v7+/v7+/v7+/z8/Pz8/Pz8/Pz8/P39/f39/f39/f39/f7+/v7+/v7+/v78x6RlYAAAGBSURBVDjLY2AYWUCSgUGAk4GBTdlUhQebvP7yjIgCPQbWzBMnjx5wwJSX37Rwfm1isqj9/iPHTuxYlyeMJi+yunfptBkZOw/uWj9h3vatcycu8eRGlldb3Vsts3ph/cFTh7fN3bCoe2Vf8+TZoQhTvBa6REozVC7cuPvQnmULJm1e2z+308eyJieEBSLPXbKQIUqQIczk+N6eNaumtnZMaWhaHM89m8XVCqJA02Y5w0xmga6yfVsamtrN4xoXNzS0JTHkK3CXy4EVFMumcxUy2LbENTVkZfEzMDAudtJyTmNwS2XQreAFyvOlK9louDNVaXurmjkGgnTMkWDgXswtNouFISEX6Awv+RihQi5OcYY4DtVARpCCFCMGhiJ1hjwFBpagEAaWEpFoC0WQOCOjFMRRwXYMDB4BDLJ+QLYsg7GBGjtasLnEMjCIrWBgyAZ7058FI9x1SoFEnTCDsCyIhynPILYYSFgbYpUDA5bpQBluXzxpI1yYAbd2sCMYRhwAAHB9ZPztbuMUAAAAAElFTkSuQmCC",c="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";document.querySelector("link[rel=icon]").setAttribute("href","data:image/png;base64,"+a),document.querySelector("#bake img").setAttribute("src","data:image/png;base64,"+b),document.querySelector(".about-img-left").setAttribute("src","data:image/png;base64,"+c)},SeasonalWaiter.prototype.insert_spider_text=function(){document.title=document.title.replace(/Cyber/g,"Spider"),SeasonalWaiter.tree_walk(document.body,function(a){3===a.nodeType&&(a.nodeValue=a.nodeValue.replace(/Cyber/g,"Spider"))},!0),SeasonalWaiter.tree_walk(document.getElementById("bake-group"),function(a){3===a.nodeType&&(a.nodeValue=a.nodeValue.replace(/Bake/g,"Spin"))},!0),document.querySelector("#recipe .title").innerHTML="Web"},SeasonalWaiter.prototype.create_snow_option=function(){var a=document.getElementById("options-body"),b=document.createElement("div");b.className="option-item",b.innerHTML="<input type='checkbox' option='snow' checked /> Let it snow",a.appendChild(b),this.manager.options.load()},SeasonalWaiter.prototype.let_it_snow=function(){if($(document).snowfall("clear"),this.app.options.snow){var a={},b=navigator.userAgent.match(/Firefox\/(\d\d?)/);a=b&&parseInt(b[1],10)<30?{flakeCount:10,flakeColor:"#fff",flakePosition:"absolute",minSize:1,maxSize:2,minSpeed:1,maxSpeed:5,round:!1,shadow:!1,collection:!1,collectionHeight:20,deviceorientation:!0}:{flakeCount:35,flakeColor:"#fff",flakePosition:"absolute",minSize:5,maxSize:8,minSpeed:1,maxSpeed:5,round:!0,shadow:!0,collection:".btn",collectionHeight:20,deviceorientation:!0},$(document).snowfall(a)}},SeasonalWaiter.prototype.shake_off_snow=function(a){for(var b=a.target,c=b.getBoundingClientRect(),d=document.querySelectorAll("canvas.snowfall-canvas"),e=null,f=function(){h.clearRect(0,0,e.width,e.height),$(this).fadeIn()},g=0;g<d.length;g++)if(e=d[g],e.style.left===c.left+"px"&&e.style.top===c.top-20+"px"){var h=e.getContext("2d");$(e).fadeOut("slow",f);break}},SeasonalWaiter.prototype.konami_code_listener=function(a){this.kkeys.push(a.keyCode);for(var b=[38,38,40,40,37,39,37,39,66,65],c=0;c<this.kkeys.length;c++){if(this.kkeys[c]!==b[c]){this.kkeys=[];break}c===b.length-1&&($("body").children().toggleClass("konami"),this.kkeys=[])}},SeasonalWaiter.tree_walk=function(){var a={SCRIPT:!0,IFRAME:!0,OBJECT:!0,EMBED:!0,STYLE:!0,LINK:!0,META:!0};return function(b,c,d){for(var e=b.firstChild;e&&e!==b;){if((d||1===e.nodeType)&&c(e)===!1)return!1;if(1!==e.nodeType||!e.firstChild||e.tagName&&a[e.tagName]){if(e.nextSibling)e=e.nextSibling;else for(;(e=e.parentNode)!==b;)if(e.nextSibling){e=e.nextSibling;break}}else e=e.firstChild}}}();var WindowWaiter=function(a){this.app=a};WindowWaiter.prototype.window_resize=function(){clearTimeout(this.reset_layout_timeout),this.reset_layout_timeout=setTimeout(this.app.reset_layout.bind(this.app),200)},WindowWaiter.prototype.window_blur=function(){this.window_blur_time=(new Date).getTime()},WindowWaiter.prototype.window_focus=function(){var a=(new Date).getTime()-this.window_blur_time;a>6e4&&this.app.silent_bake()};var main=function(){var a=["To Base64","From Base64","To Hex","From Hex","To Hexdump","From Hexdump","URL Decode","Regular expression","Entropy","Fork"],b={update_url:!0,show_highlighter:!0,treat_as_utf8:!0,word_wrap:!0,show_errors:!0,error_timeout:4e3,auto_bake_threshold:200,attempt_highlight:!0,snow:!1};document.removeEventListener("DOMContentLoaded",main,!1),window.app=new HTMLApp(Categories,OperationConfig,a,b),window.app.setup()};window.console=console||{log:function(){},error:function(){}}, -window.compile_time=moment.tz("Wed Dec 14 2016 16:37:29","ddd MMM D YYYY HH:mm:ss","UTC").valueOf(),window.compile_message="Merry Christmas! Have a look in the options panel for some festive flavour.",document.addEventListener("DOMContentLoaded",main,!1);</script></body></html> \ No newline at end of file +function(a){"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=s({},b),a[M]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);W(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=!b.forceFallback&&Q,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),U.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){w&&w.state!==a&&(h(w,"display",a?"none":""),!a&&w.state&&x.insertBefore(w,t),w.state=a)}function c(a,b,c){if(a){c=c||O;do if(">*"===b&&a.parentNode===c||q(a,b))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(L," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(L," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return O.defaultView&&O.defaultView.getComputedStyle?c=O.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;e<f;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=O.createEvent("Event"),i=(a||b[M]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=w,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[M],j=i.options.onMove;return g=O.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){S=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a,b){var c=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&q(a,b)&&c++;return c}function q(a,b){if(a){b=b.split(".");var c=b.shift().toUpperCase(),d=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");return!(""!==c&&a.nodeName.toUpperCase()!=c||b.length&&((" "+a.className+" ").match(d)||[]).length!=b.length)}return!1}function r(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function s(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}if("undefined"==typeof window||"undefined"==typeof window.document)return function(){throw new Error("Sortable.js requires a window with a document")};var t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K={},L=/\s+/g,M="Sortable"+(new Date).getTime(),N=window,O=N.document,P=N.parseInt,Q=!!("draggable"in O.createElement("div")),R=function(a){return a=O.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),S=!1,T=Math.abs,U=([].slice,[]),V=r(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(A!==c&&(z=b.scroll,A=c,z===!0)){z=c;do if(z.offsetWidth<z.scrollWidth||z.offsetHeight<z.scrollHeight)break;while(z=z.parentNode)}z&&(d=z,e=z.getBoundingClientRect(),f=(T(e.right-j)<=h)-(T(e.left-j)<=h),g=(T(e.bottom-k)<=h)-(T(e.top-k)<=h)),f||g||(f=(l-j<=h)-(j<=h),g=(m-k<=h)-(k<=h),(f||g)&&(d=N)),K.vx===f&&K.vy===g&&K.el===d||(K.el=d,K.vx=f,K.vy=g,clearInterval(K.pid),d&&(K.pid=setInterval(function(){d===N?N.scrollTo(N.pageXOffset+f*i,N.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),W=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,k=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=c(h,e.draggable,d))){if(E=p(h,e.draggable),"function"==typeof k){if(k.call(this,a,h,this))return j(b,i,"filter",h,d,E),void a.preventDefault()}else if(k&&(k=k.split(",").some(function(a){if(a=c(i,a.trim(),d))return j(b,a,"filter",h,d,E),!0})))return;e.handle&&!c(i,e.handle,d)||this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,f=this,h=f.el,j=f.options,k=h.ownerDocument;c&&!t&&c.parentNode===h&&(H=a,x=h,t=c,u=t.parentNode,y=t.nextSibling,G=j.group,d=function(){f._disableDelayedDrag(),t.draggable=!0,g(t,f.options.chosenClass,!0),f._triggerDragStart(b)},j.ignore.split(",").forEach(function(a){i(t,a.trim(),l)}),e(k,"mouseup",f._onDrop),e(k,"touchend",f._onDrop),e(k,"touchcancel",f._onDrop),j.delay?(e(k,"mouseup",f._disableDelayedDrag),e(k,"touchend",f._disableDelayedDrag),e(k,"touchcancel",f._disableDelayedDrag),e(k,"mousemove",f._disableDelayedDrag),e(k,"touchmove",f._disableDelayedDrag),f._dragStartTimer=setTimeout(d,j.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),f(a,"mouseup",this._disableDelayedDrag),f(a,"touchend",this._disableDelayedDrag),f(a,"touchcancel",this._disableDelayedDrag),f(a,"mousemove",this._disableDelayedDrag),f(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(H={target:t,clientX:a.clientX,clientY:a.clientY},this._onDragStart(H,"touch")):this.nativeDraggable?(e(t,"dragend",this),e(x,"dragstart",this._onDragStart)):this._onDragStart(H,!0);try{O.selection?O.selection.empty():window.getSelection().removeAllRanges()}catch(a){}},_dragStarted:function(){x&&t&&(g(t,this.options.ghostClass,!0),a.active=this,j(this,x,"start",t,x,E))},_emulateDragOver:function(){if(I){if(this._lastX===I.clientX&&this._lastY===I.clientY)return;this._lastX=I.clientX,this._lastY=I.clientY,R||h(v,"display","none");var a=O.elementFromPoint(I.clientX,I.clientY),b=a,c=" "+this.options.group.name,d=U.length;if(b)do{if(b[M]&&b[M].options.groups.indexOf(c)>-1){for(;d--;)U[d]({clientX:I.clientX,clientY:I.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);R||h(v,"display","")}},_onTouchMove:function(b){if(H){a.active||this._dragStarted(),this._appendGhost();var c=b.touches?b.touches[0]:b,d=c.clientX-H.clientX,e=c.clientY-H.clientY,f=b.touches?"translate3d("+d+"px,"+e+"px,0)":"translate("+d+"px,"+e+"px)";J=!0,I=c,h(v,"webkitTransform",f),h(v,"mozTransform",f),h(v,"msTransform",f),h(v,"transform",f),b.preventDefault()}},_appendGhost:function(){if(!v){var a,b=t.getBoundingClientRect(),c=h(t),d=this.options;v=t.cloneNode(!0),g(v,d.ghostClass,!1),g(v,d.fallbackClass,!0),h(v,"top",b.top-P(c.marginTop,10)),h(v,"left",b.left-P(c.marginLeft,10)),h(v,"width",b.width),h(v,"height",b.height),h(v,"opacity","0.8"),h(v,"position","fixed"),h(v,"zIndex","100000"),h(v,"pointerEvents","none"),d.fallbackOnBody&&O.body.appendChild(v)||x.appendChild(v),a=v.getBoundingClientRect(),h(v,"width",2*b.width-a.width),h(v,"height",2*b.height-a.height)}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;this._offUpEvents(),"clone"==G.pull&&(w=t.cloneNode(!0),h(w,"display","none"),x.insertBefore(w,t)),b?("touch"===b?(e(O,"touchmove",this._onTouchMove),e(O,"touchend",this._onDrop),e(O,"touchcancel",this._onDrop)):(e(O,"mousemove",this._onTouchMove),e(O,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,t)),e(O,"drop",this),setTimeout(this._dragStarted,0))},_onDragOver:function(a){var d,e,f,g=this.el,i=this.options,j=i.group,l=j.put,o=G===j,p=i.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!i.dragoverBubble&&a.stopPropagation()),J=!0,G&&!i.disabled&&(o?p||(f=!x.contains(t)):G.pull&&l&&(G.name===j.name||l.indexOf&&~l.indexOf(G.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(V(a,i,this.el),S)return;if(d=c(a.target,i.draggable,g),e=t.getBoundingClientRect(),f)return b(!0),void(w||y?x.insertBefore(t,w||y):p||x.appendChild(t));if(0===g.children.length||g.children[0]===v||g===a.target&&(d=n(g,a))){if(d){if(d.animated)return;r=d.getBoundingClientRect()}b(o),k(x,g,t,e,d,r)!==!1&&(t.contains(g)||(g.appendChild(t),u=g),this._animate(e,t),d&&this._animate(r,d))}else if(d&&!d.animated&&d!==t&&void 0!==d.parentNode[M]){B!==d&&(B=d,C=h(d),D=h(d.parentNode));var q,r=d.getBoundingClientRect(),s=r.right-r.left,z=r.bottom-r.top,A=/left|right|inline/.test(C.cssFloat+C.display)||"flex"==D.display&&0===D["flex-direction"].indexOf("row"),E=d.offsetWidth>t.offsetWidth,F=d.offsetHeight>t.offsetHeight,H=(A?(a.clientX-r.left)/s:(a.clientY-r.top)/z)>.5,I=d.nextElementSibling,K=k(x,g,t,e,d,r);if(K!==!1){if(S=!0,setTimeout(m,30),b(o),1===K||K===-1)q=1===K;else if(A){var L=t.offsetTop,N=d.offsetTop;q=L===N?d.previousElementSibling===t&&!E||H&&E:N>L}else q=I!==t&&!F||H&&F;t.contains(g)||(q&&!I?g.appendChild(t):d.parentNode.insertBefore(t,q?I:d)),u=t.parentNode,this._animate(e,t),this._animate(r,d)}}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();h(b,"transition","none"),h(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,h(b,"transition","all "+c+"ms"),h(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){h(b,"transition",""),h(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;f(O,"touchmove",this._onTouchMove),f(a,"mouseup",this._onDrop),f(a,"touchend",this._onDrop),f(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(K.pid),clearTimeout(this._dragStartTimer),f(O,"mousemove",this._onTouchMove),this.nativeDraggable&&(f(O,"drop",this),f(c,"dragstart",this._onDragStart)),this._offUpEvents(),b&&(J&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation()),v&&v.parentNode.removeChild(v),t&&(this.nativeDraggable&&f(t,"dragend",this),l(t),g(t,this.options.ghostClass,!1),g(t,this.options.chosenClass,!1),x!==u?(F=p(t,d.draggable),F>=0&&(j(null,u,"sort",t,x,E,F),j(this,x,"sort",t,x,E,F),j(null,u,"add",t,x,E,F),j(this,x,"remove",t,x,E,F))):(w&&w.parentNode.removeChild(w),t.nextSibling!==y&&(F=p(t,d.draggable),F>=0&&(j(this,x,"update",t,x,E,F),j(this,x,"sort",t,x,E,F)))),a.active&&(null!==F&&F!==-1||(F=E),j(this,x,"end",t,x,E,F),this.save()))),this._nulling()},_nulling:function(){x=t=u=v=y=w=z=A=H=I=J=F=B=C=G=a.active=null},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?t&&(this._onDragOver(a),d(a)):"drop"!==b&&"dragend"!==b||this._onDrop(a)},toArray:function(){for(var a,b=[],d=this.el.children,e=0,f=d.length,g=this.options;e<f;e++)a=d[e],c(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||o(a));return b},sort:function(a){var b={},d=this.el;this.toArray().forEach(function(a,e){var f=d.children[e];c(f,this.options.draggable,d)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(d.removeChild(b[a]),d.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return c(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:(c[a]=b,void("group"===a&&W(c)))},destroy:function(){var a=this.el;a[M]=null,f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),this.nativeDraggable&&(f(a,"dragover",this),f(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),U.splice(U.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:e,off:f,css:h,find:i,is:function(a,b){return!!c(a,b,a)},extend:s,throttle:r,closest:c,toggleClass:g,index:p},a.create=function(b,c){return new a(b,c)},a.version="1.4.2",a}),function(a){"object"==typeof exports?module.exports=a(window.jQuery):"function"==typeof define&&define.amd?define(["jquery"],a):window.jQuery&&!window.jQuery.fn.colorpicker&&a(window.jQuery)}(function(a){var b=function(b,c){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,c&&a.extend(this.colors,c),b&&(void 0!==b.toLowerCase?(b+="",this.setColor(b)):void 0!==b.h&&(this.value=b))};b.prototype={constructor:b,colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",transparent:"transparent"},_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:""===a?0:void 0!==a.toLowerCase?(a.match(/^\./)&&(a="0"+a),Math.ceil(100*parseFloat(a))/100):1},isTransparent:function(a){return!!a&&(a=a.toLowerCase().trim(),"transparent"===a||a.match(/#?00000000/)||a.match(/(rgba|hsla)\(0,0,0,0?\.?0\)/))},rgbaIsTransparent:function(a){return 0===a.r&&0===a.g&&0===a.b&&0===a.a},setColor:function(a){a=a.toLowerCase().trim(),a&&(this.isTransparent(a)?this.value={h:0,s:0,b:0,a:0}:this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1})},stringToHSB:function(b){b=b.toLowerCase();var c;"undefined"!=typeof this.colors[b]&&(b=this.colors[b],c="alias");var d=this,e=!1;return a.each(this.stringParsers,function(a,f){var g=f.re.exec(b),h=g&&f.parse.apply(d,[g]),i=c||f.format||"rgba";return!h||(e=i.match(/hsla?/)?d.RGBtoHSB.apply(d,d.HSLtoRGB.apply(d,h)):d.RGBtoHSB.apply(d,h),d.origFormat=i,!1)}),e},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=Math.round(parseInt(100*(1-a),10)/100*100)/100},toRGB:function(a,b,c,d){a||(a=this.value.h,b=this.value.s,c=this.value.b),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d||this.value.a}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return this.rgbaIsTransparent(e)?"transparent":"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&f<=1?f:2-f,f/=2,g>1&&(g=1),{h:isNaN(e)?0:e,s:isNaN(g)?0:g,l:isNaN(f)?0:f,a:isNaN(d)?0:d}},toAlias:function(a,b,c,d){var e=this.toHex(a,b,c,d);for(var f in this.colors)if(this.colors[f]===e)return f;return!1},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return c<0?c+=1:c>1&&(c-=1),6*c<1?a+(b-a)*c*6:2*c<1?b:3*c<2?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){b<0&&(b=0);var e;e=c<=.5?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){a=a||"rgba";var b=!1;switch(a){case"rgb":return b=this.toRGB(),this.rgbaIsTransparent(b)?"transparent":"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":return b=this.toRGB(),"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":return b=this.toHSL(),"hsl("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%)";case"hsla":return b=this.toHSL(),"hsla("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%,"+b.a+")";case"hex":return this.toHex();case"alias":return this.toAlias()||this.toHex();default:return b}},stringParsers:[{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}}],colorNameToHex:function(a){return"undefined"!=typeof this.colors[a.toLowerCase()]&&this.colors[a.toLowerCase()]}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div><div class="colorpicker-selectors"></div></div>',align:"right",customClass:null,colorSelectors:null},d=function(d,e){if(this.element=a(d).addClass("colorpicker-element"),this.options=a.extend(!0,{},c,this.element.data(),e),this.component=this.options.component,this.component=this.component!==!1&&this.element.find(this.component),this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1&&a(this.container),this.input=this.element.is("input")?this.element:!!this.options.input&&this.element.find(this.options.input),this.input&&0===this.input.length&&(this.input=!1),this.color=new b(this.options.color!==!1?this.options.color:this.getValue(),this.options.colorSelectors),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.options.color!==!1&&(this.updateInput(this.color),this.updateData(this.color)),this.picker=a(this.options.template),this.options.customClass&&this.picker.addClass(this.options.customClass),this.options.inline?this.picker.addClass("colorpicker-inline colorpicker-visible"):this.picker.addClass("colorpicker-hidden"),this.options.horizontal&&this.picker.addClass("colorpicker-horizontal"),"rgba"!==this.format&&"hsla"!==this.format&&this.options.format!==!1||this.picker.addClass("colorpicker-with-alpha"),"right"===this.options.align&&this.picker.addClass("colorpicker-right"),this.options.inline===!0&&this.picker.addClass("colorpicker-no-arrow"),this.options.colorSelectors){var f=this;a.each(this.options.colorSelectors,function(b,c){var d=a("<i />").css("background-color",c).data("class",b);d.click(function(){f.setValue(a(this).css("background-color"))}),f.picker.find(".colorpicker-selectors").append(d)}),this.picker.find(".colorpicker-selectors").show()}this.picker.on("mousedown.colorpicker touchstart.colorpicker",a.proxy(this.mousedown,this)),this.picker.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.input.on({"change.colorpicker":a.proxy(this.change,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.input!==!1&&this.component!==!1&&"color"===this.input.attr("type")&&this.input.on({"click.colorpicker":a.proxy(this.show,this),"focus.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker","color").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.trigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1||this.options.container)return!1;var a=this.container&&this.container[0]!==document.body?"position":"offset",b=this.component||this.element,c=b[a]();"right"===this.options.align&&(c.left-=this.picker.outerWidth()-b.outerWidth()),this.picker.css({top:c.top+b.outerHeight(),left:c.left})},show:function(b){return!this.isDisabled()&&(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!b||this.hasInput()&&"color"!==this.input.attr("type")||b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),!this.component&&this.input||this.options.inline!==!1||a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),void this.element.trigger({type:"showPicker",color:this.color}))},hide:function(){this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(document).off({"mousedown.colorpicker":this.hide}),this.update(),this.element.trigger({type:"hidePicker",color:this.color})},updateData:function(a){return a=a||this.color.toString(this.format),this.element.data("color",a),a},updateInput:function(a){if(a=a||this.color.toString(this.format),this.input!==!1){if(this.options.colorSelectors){var c=new b(a,this.options.colorSelectors),d=c.toAlias();"undefined"!=typeof this.options.colorSelectors[d]&&(a=d)}this.input.prop("value",a)}return a},updatePicker:function(a){void 0!==a&&(this.color=new b(a,this.options.colorSelectors));var c=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,d=this.picker.find("i");if(0!==d.length)return this.options.horizontal===!1?(c=this.options.sliders,d.eq(1).css("top",c.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",c.alpha.maxTop*(1-this.color.value.a))):(c=this.options.slidersHorz,d.eq(1).css("left",c.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",c.alpha.maxLeft*(1-this.color.value.a))),d.eq(0).css({top:c.saturation.maxTop-this.color.value.b*c.saturation.maxTop,left:this.color.value.s*c.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(this.color.value.h,1,1,1)),this.picker.find(".colorpicker-alpha").css("backgroundColor",this.color.toHex()),this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor",this.color.toString(this.format)),a},updateComponent:function(a){if(a=a||this.color.toString(this.format),this.component!==!1){var b=this.component.find("i").eq(0);b.length>0?b.css({backgroundColor:a}):this.component.css({backgroundColor:a})}return a},update:function(a){var b;return this.getValue(!1)===!1&&a!==!0||(b=this.updateComponent(),this.updateInput(b),this.updateData(b),this.updatePicker()),b},setValue:function(a){this.color=new b(a,this.options.colorSelectors),this.update(!0),this.element.trigger({type:"changeColor",color:this.color,value:a})},getValue:function(a){a=void 0===a?"#000000":a;var b;return b=this.hasInput()?this.input.val():this.element.data("color"),void 0!==b&&""!==b&&null!==b||(b=a),b},hasInput:function(){return this.input!==!1},isDisabled:function(){return!!this.hasInput()&&this.input.prop("disabled")===!0},disable:function(){return!!this.hasInput()&&(this.input.prop("disabled",!0),this.element.trigger({type:"disable",color:this.color,value:this.getValue()}),!0)},enable:function(){return!!this.hasInput()&&(this.input.prop("disabled",!1),this.element.trigger({type:"enable",color:this.color,value:this.getValue()}),!0)},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){!b.pageX&&!b.pageY&&b.originalEvent&&b.originalEvent.touches&&(b.pageX=b.originalEvent.touches[0].pageX,b.pageY=b.originalEvent.touches[0].pageY),b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"touchmove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this),"touchend.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){!a.pageX&&!a.pageY&&a.originalEvent&&a.originalEvent.touches&&(a.pageX=a.originalEvent.touches[0].pageX,a.pageY=a.originalEvent.touches[0].pageY),a.stopPropagation(),a.preventDefault();var b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/this.currentSlider.maxLeft),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/this.currentSlider.maxTop),"setAlpha"===this.currentSlider.callTop&&this.options.format===!1&&(1!==this.color.value.a?(this.format="rgba",this.color.origFormat="rgba"):(this.format="hex",this.color.origFormat="hex")),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return b.stopPropagation(),b.preventDefault(),a(document).off({"mousemove.colorpicker":this.mousemove,"touchmove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup,"touchend.colorpicker":this.mouseup}),!1},change:function(a){this.keyup(a)},keyup:function(a){38===a.keyCode?(this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0)):40===a.keyCode?(this.color.value.a>0&&(this.color.value.a=Math.round(100*(this.color.value.a-.01))/100),this.update(!0)):(this.color=new b(this.input.val(),this.options.colorSelectors),this.color.origFormat&&this.options.format===!1&&(this.format=this.color.origFormat),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())),this.element.trigger({type:"changeColor",color:this.color,value:this.input.val()})}},a.colorpicker=d,a.fn.colorpicker=function(b){var c=Array.prototype.slice.call(arguments,1),e=1===this.length,f=null,g=this.each(function(){var e=a(this),g=e.data("colorpicker"),h="object"==typeof b?b:{};g||(g=new d(this,h),e.data("colorpicker",g)),"string"==typeof b?a.isFunction(g[b])?f=g[b].apply(g,c):(c.length&&(g[b]=c[0]),f=g[b]):f=e});return e?f:g},a.fn.colorpicker.constructor=d}),/** @license +======================================================================== + XPath.js - Pure JavaScript implementation of XPath 2.0 parser and evaluator + + Copyright (c) 2012 Sergey Ilinsky + Dual licensed under the MIT and GPL licenses. +*/ +function(){function a(a){this.code=a,this.message=Vc[a]}function b(b){var c=b.match(/\$?(?:(?![0-9-])(?:\w[\w.-]*|\*):)?(?![0-9-])(?:\w[\w.-]*|\*)|\(:|:\)|\/\/|\.\.|::|\d+(?:\.\d*)?(?:[eE][+-]?\d+)?|\.\d+(?:[eE][+-]?\d+)?|"[^"]*(?:""[^"]*)*"|'[^']*(?:''[^']*)*'|<<|>>|[!<>]=|(?![0-9-])[\w-]+:\*|\s+|./g);if(c){for(var d=0,e=0,f=c.length;e<f;e++)"(:"==c[e]?d++:":)"==c[e]&&d?d--:d||/^\s/.test(c[e])||(this[this.length++]=c[e]);if(d)throw new a("XPST0003")}}function c(){}function d(a,b,d,e){this.staticContext=a,this.item=b,this.scope=d||{},this.stack={},this.DOMAdapter=e||new c;var f=new Ec,g=f.getTimezoneOffset();this.dateTime=new _a(f.getFullYear(),f.getMonth()+1,f.getDate(),f.getHours(),f.getMinutes(),f.getSeconds()+f.getMilliseconds()/1e3,(-g)),this.timezone=new Ab(0,Gc.abs(~~(g/60)),Gc.abs(g%60),0,g>0)}function e(){this.dataTypes={},this.documents={},this.functions={},this.collations={},this.collections={}}function f(a,b,c){Xc[a]=c,Yc[a]=b}function g(a,b){Zc[a]=b}function h(c,d){var e=new b(c),f=l(e,d);if(!e.eof())throw new a("XPST0003");if(!f)throw new a("XPST0003");this.internalExpression=f}function i(){}function j(){}function k(){this.items=[]}function l(b,c){var d;if(!b.eof()&&(d=m(b,c))){var e=new k;for(e.items.push(d);","==b.peek();){if(b.next(),b.eof()||!(d=m(b,c)))throw new a("XPST0003");e.items.push(d)}return e}}function m(a,b){if(!a.eof())return s(a,b)||o(a,b)||u(a,b)||K(a,b)}function n(){this.bindings=[],this.returnExpr=null}function o(b,c){if("for"==b.peek()&&"$"==b.peek(1).substr(0,1)){b.next();var d,e=new n;do e.bindings.push(q(b,c));while(","==b.peek()&&b.next());if("return"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(d=m(b,c)))throw new a("XPST0003");return e.returnExpr=d,e}}function p(a,b,c,d){this.prefix=a,this.localName=b,this.namespaceURI=c,this.inExpr=d}function q(b,c){var d=b.peek().substr(1).match(id);if(!d)throw new a("XPST0003");if("*"==d[1]||"*"==d[2])throw new a("XPST0003");if(b.next(),"in"!=b.peek())throw new a("XPST0003");b.next();var e;if(b.eof()||!(e=m(b,c)))throw new a("XPST0003");return new p(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null,e)}function r(a,b,c){this.condExpr=a,this.thenExpr=b,this.elseExpr=c}function s(b,c){var d,e,f;if("if"==b.peek()&&"("==b.peek(1)){if(b.next(2),b.eof()||!(d=l(b,c)))throw new a("XPST0003");if(")"!=b.peek())throw new a("XPST0003");if(b.next(),"then"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(e=m(b,c)))throw new a("XPST0003");if("else"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(f=m(b,c)))throw new a("XPST0003");return new r(d,e,f)}}function t(a){this.quantifier=a,this.bindings=[],this.satisfiesExpr=null}function u(b,c){var d=b.peek();if(("some"==d||"every"==d)&&"$"==b.peek(1).substr(0,1)){b.next();var e,f=new t(d);do f.bindings.push(w(b,c));while(","==b.peek()&&b.next());if("satisfies"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(e=m(b,c)))throw new a("XPST0003");return f.satisfiesExpr=e,f}}function v(a,b,c,d){this.prefix=a,this.localName=b,this.namespaceURI=c,this.inExpr=d}function w(b,c){var d=b.peek().substr(1).match(id);if(!d)throw new a("XPST0003");if("*"==d[1]||"*"==d[2])throw new a("XPST0003");if(b.next(),"in"!=b.peek())throw new a("XPST0003");b.next();var e;if(b.eof()||!(e=m(b,c)))throw new a("XPST0003");return new v(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null,e)}function x(a,b,c){this.left=a,this.right=b,this.operator=c}function y(b,c){var d,e;if(!b.eof()&&(d=ya(b,c))){if(!(b.peek()in cd))return d;var f=b.peek();if(b.next(),b.eof()||!(e=ya(b,c)))throw new a("XPST0003");return new x(d,e,f)}}function z(a,b){var c=vc(a.left.evaluate(b),b);if(!c.length)return new Xa((!1));var d=vc(a.right.evaluate(b),b);if(!d.length)return new Xa((!1));for(var e,f,g=!1,h=0,i=c.length;h<i&&!g;h++)for(var j,k,l=0,m=d.length;l<m&&!g;l++)f=c[h],k=d[l],e=f instanceof xb,j=k instanceof xb,e&&j?(f=ub.cast(f),k=ub.cast(k)):(e?k instanceof Ab?f=Ab.cast(f):k instanceof yb?f=yb.cast(f):k.primitiveKind&&(f=Zc[k.primitiveKind].cast(f)):j&&(f instanceof Ab?k=Ab.cast(k):f instanceof yb?k=yb.cast(k):f.primitiveKind&&(k=Zc[f.primitiveKind].cast(k))),f instanceof Va&&(f=ub.cast(f)),k instanceof Va&&(k=ub.cast(k))),g=ad[_c[a.operator]](f,k,b).valueOf();return new Xa(g)}function A(a,b){var c=vc(a.left.evaluate(b),b);if(!c.length)return null;ua(b,c,"?");var d=vc(a.right.evaluate(b),b);if(!d.length)return null;ua(b,d,"?");var e=c[0],f=d[0];return e instanceof xb&&(e=ub.cast(e)),f instanceof xb&&(f=ub.cast(f)),e instanceof Va&&(e=ub.cast(e)),f instanceof Va&&(f=ub.cast(f)),ad[a.operator](e,f,b)}function B(a,b){var c=a.left.evaluate(b);if(!c.length)return null;ua(b,c,"?"),ta(b,c,Zb);var d=a.right.evaluate(b);return d.length?(ua(b,d,"?"),ta(b,d,Zb),bd[a.operator](c[0],d[0],b)):null}function C(a){this.left=a,this.items=[]}function D(b,c){var d;if(!b.eof()&&(d=F(b,c))){if(!(b.peek()in dd))return d;for(var e,f=new C(d);(e=b.peek())in dd;){if(b.next(),b.eof()||!(d=F(b,c)))throw new a("XPST0003");f.items.push([e,d])}return f}}function E(a){this.left=a,this.items=[]}function F(b,c){var d;if(!b.eof()&&(d=Aa(b,c))){if(!(b.peek()in ed))return d;for(var e,f=new E(d);(e=b.peek())in ed;){if(b.next(),b.eof()||!(d=Aa(b,c)))throw new a("XPST0003");f.items.push([e,d])}return f}}function G(a,b){this.operator=a,this.expression=b}function H(b,c){if(!b.eof()){if(!(b.peek()in fd))return I(b,c);for(var d,e="+";b.peek()in fd;)"-"==b.peek()&&(e="-"==e?"+":"-"),b.next();if(b.eof()||!(d=I(b,c)))throw new a("XPST0003");return new G(e,d)}}function I(a,b){return V(a,b)}function J(a){this.left=a,this.items=[]}function K(b,c){var d;if(!b.eof()&&(d=M(b,c))){if("or"!=b.peek())return d;for(var e=new J(d);"or"==b.peek();){if(b.next(),b.eof()||!(d=M(b,c)))throw new a("XPST0003");e.items.push(d)}return e}}function L(a){this.left=a,this.items=[]}function M(b,c){var d;if(!b.eof()&&(d=y(b,c))){if("and"!=b.peek())return d;for(var e=new L(d);"and"==b.peek();){if(b.next(),b.eof()||!(d=y(b,c)))throw new a("XPST0003");e.items.push(d)}return e}}function N(){}function O(a,b){if(!a.eof())return na(a,b)||R(a,b)}function P(b,c,d){for(var e;"["==b.peek();){if(b.next(),b.eof()||!(e=l(b,c)))throw new a("XPST0003");if(d.predicates.push(e),"]"!=b.peek())throw new a("XPST0003");b.next()}}function Q(a,b){this.axis=a,this.test=b,this.predicates=[]}function R(b,c){var d,e,f=b.peek();if("::"==b.peek(1)){if(!(f in gd))throw new a("XPST0003");if(b.next(2),b.eof()||!(d=X(b,c)))throw new a("XPST0003");e=new Q(f,d)}else if(".."==f)b.next(),e=new Q("parent",new Y("node"));else if("@"==f){if(b.next(),b.eof()||!(d=X(b,c)))throw new a("XPST0003");e=new Q("attribute",d)}else{if(b.eof()||!(d=X(b,c)))return;e=new Q(d instanceof Y&&"attribute"==d.name?"attribute":"child",d)}return P(b,c,e),e}function S(a,b,c){for(var d;a;a=c(a,"nextSibling"))b.push(a),(d=c(a,"firstChild"))&&S(d,b,c)}function T(a,b,c){for(var d;a;a=c(a,"previousSibling"))(d=c(a,"lastChild"))&&T(d,b,c),b.push(a)}function U(){this.items=[]}function V(b,c){if(!b.eof()){var d,e="/",f="//",g=new U,h=b.peek();if(h!=f&&h!=e||(b.next(),g.items.push(new qa(null,"root",Sc)),h==f&&g.items.push(new Q("descendant-or-self",new Y("node")))),!b.eof()&&(d=O(b,c))){for(g.items.push(d);(h=b.peek())==e||h==f;){if(h==f&&g.items.push(new Q("descendant-or-self",new Y("node"))),b.next(),b.eof()||!(d=O(b,c)))throw new a("XPST0003");g.items.push(d)}return 1==g.items.length?g.items[0]:g}if(h==e)return g.items[0];if(h==f)throw new a("XPST0003")}}function W(){}function X(a,b){if(!a.eof())return Z(a,b)||_(a,b)}function Y(a){this.name=a,this.args=[]}function Z(b,c){var d,e=b.peek();if("("==b.peek(1)){if(!(e in hd))throw new a("XPST0003");b.next(2);var f=new Y(e);if(")"!=b.peek())"document-node"==e||"element"==e||"attribute"==e||"processing-instruction"==e&&(d=la(b,c),d||(d=new ka(new ub(b.peek())),b.next()),f.args.push(d));else{if("schema-attribute"==e)throw new a("XPST0003");if("schema-element"==e)throw new a("XPST0003")}if(")"!=b.peek())throw new a("XPST0003");return b.next(),f}}function $(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function _(b,c){var d=b.peek().match(id);if(d){if("*"==d[1]&&"*"==d[2])throw new a("XPST0003");return b.next(),new $(d[1]||null,d[2],d[1]?"*"==d[1]?"*":c.getURIForPrefix(d[1])||null:c.defaultElementNamespace)}}function aa(a,b){if(!a.eof())return ea(a,b)||ca(a,b)||ra(a,b)||pa(a,b)||ga(a,b)}function ba(a){this.expression=a}function ca(b,c){if("("==b.peek()){b.next();var d=null;if(")"!=b.peek()&&(d=l(b,c)),")"!=b.peek())throw new a("XPST0003");return b.next(),new ba(d)}}function da(){}function ea(a,b){if("."==a.peek())return a.next(),new da}function fa(){}function ga(a,b){if(!a.eof())return ia(a,b)||la(a,b)}function ha(a){this.value=a}function ia(a,b){var c=a.peek(),d=ja(c);if(d)return a.next(),new ha(d)}function ja(a){var b=a.match(jd);if(b){var c=Cb;return b[5]?c=gb:(b[2]||b[3])&&(c=fb),new c((+a))}}function ka(a){this.value=a}function la(a,b){var c=a.peek().match(kd);if(c)return a.next(),new ka(new ub(c[1]?c[1].replace("''","'"):c[2]?c[2].replace('""','"'):""))}function ma(a){this.expression=a,this.predicates=[]}function na(a,b){var c;if(!a.eof()&&(c=aa(a,b))){var d=new ma(c);return P(a,b,d),0==d.predicates.length?d.expression:d}}function oa(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function pa(b,c){if("$"==b.peek().substr(0,1)){var d=b.peek().substr(1).match(id);if(d){if("*"==d[1]||"*"==d[2])throw new a("XPST0003");var e=new oa(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null);return b.next(),e}}}function qa(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c,this.args=[]}function ra(b,c){var d=b.peek().match(id);if(d&&"("==b.peek(1)){if(!d[1]&&d[2]in hd)return R(b,c);if("*"==d[1]||"*"==d[2])throw new a("XPST0003");var e,f=new qa(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1])||null:c.defaultFunctionNamespace);if(b.next(2),")"!=b.peek()){do{if(b.eof()||!(e=m(b,c)))throw new a("XPST0003");f.args.push(e)}while(","==b.peek()&&b.next());if(")"!=b.peek())throw new a("XPST0003")}return b.next(),f}}function sa(b,c,d,e,f){for(var g,h,i=e.length,j=c.length,k=0;k<c.length&&!c[k][2];)k++;if(i>j)throw new a("XPST0017");if(i<k)throw new a("XPST0017");for(var l=0;l<i;l++)h=c[l],g=e[l],ua(f,g,h[1]),ta(f,g,h[0]),"+"!=h[1]&&"*"!=h[1]&&(e[l]=g.length?g[0]:null)}function ta(b,c,d){for(var e,f,g=0,h=c.length;g<h;g++)if(f=c[g],d==Zb||d.prototype instanceof Zb){if(!b.DOMAdapter.isNode(f))throw new a("XPTY0004");if(d!=Zb&&(e=b.DOMAdapter.getProperty(f,"nodeType"),[null,bc,$b,dc,dc,null,null,cc,_b,ac,null,null,null][e]!=d))throw new a("XPTY0004")}else if(d==Ta||d.prototype instanceof Ta){if(f=vc([f],b)[0],d!=Ta&&(f instanceof xb?f=d.cast(f):d==ub?f instanceof Va&&(f=ub.cast(f)):d==gb&&Ua(f)&&(f=d.cast(f))),!(f instanceof d))throw new a("XPTY0004");c[g]=f}}function ua(b,c,d){var e=c.length;if("?"==d){if(e>1)throw new a("XPTY0004")}else if("+"==d){if(e<1)throw new a("XPTY0004")}else if("*"!=d&&1!=e)throw new a("XPTY0004")}function va(a){this.left=a,this.items=[]}function wa(b,c){var d,e;if(!b.eof()&&(d=Ca(b,c))){if("intersect"!=(e=b.peek())&&"except"!=e)return d;for(var f=new va(d);"intersect"==(e=b.peek())||"except"==e;){if(b.next(),b.eof()||!(d=Ca(b,c)))throw new a("XPST0003");f.items.push([e,d])}return f}}function xa(a,b){this.left=a,this.right=b}function ya(b,c){var d,e;if(!b.eof()&&(d=D(b,c))){if("to"!=b.peek())return d;if(b.next(),b.eof()||!(e=D(b,c)))throw new a("XPST0003");return new xa(d,e)}}function za(a){this.left=a,this.items=[]}function Aa(b,c){var d,e;if(!b.eof()&&(d=wa(b,c))){if("|"!=(e=b.peek())&&"union"!=e)return d;for(var f=new za(d);"|"==(e=b.peek())||"union"==e;){if(b.next(),b.eof()||!(d=wa(b,c)))throw new a("XPST0003");f.items.push(d)}return f}}function Ba(a,b){this.expression=a,this.type=b}function Ca(b,c){var d,e;if(!b.eof()&&(d=Ea(b,c))){if("instance"!=b.peek()||"of"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Oa(b,c)))throw new a("XPST0003");return new Ba(d,e)}}function Da(a,b){this.expression=a,this.type=b}function Ea(b,c){var d,e;if(!b.eof()&&(d=Ga(b,c))){if("treat"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Oa(b,c)))throw new a("XPST0003");return new Da(d,e)}}function Fa(a,b){this.expression=a,this.type=b}function Ga(b,c){var d,e;if(!b.eof()&&(d=Ia(b,c))){if("castable"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Qa(b,c)))throw new a("XPST0003");return new Fa(d,e)}}function Ha(a,b){this.expression=a,this.type=b}function Ia(b,c){var d,e;if(!b.eof()&&(d=H(b,c))){if("cast"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Qa(b,c)))throw new a("XPST0003");return new Ha(d,e)}}function Ja(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function Ka(b,c){var d=b.peek().match(id);if(d){if("*"==d[1]||"*"==d[2])throw new a("XPST0003");return b.next(),new Ja(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null)}}function La(a){this.test=a}function Ma(b,c){if(!b.eof()){var d;if("item"==b.peek()&&"("==b.peek(1)){if(b.next(2),")"!=b.peek())throw new a("XPST0003");return b.next(),new La}return(d=Z(b,c))?new La(d):(d=Ka(b,c))?new La(d):void 0}}function Na(a,b){this.itemType=a||null,this.occurence=b||null}function Oa(b,c){if(!b.eof()){if("empty-sequence"==b.peek()&&"("==b.peek(1)){if(b.next(2),")"!=b.peek())throw new a("XPST0003");return b.next(),new Na}var d,e;return!b.eof()&&(d=Ma(b,c))?(e=b.peek(),"?"==e||"*"==e||"+"==e?b.next():e=null,new Na(d,e)):void 0}}function Pa(a,b){this.itemType=a||null,this.occurence=b||null}function Qa(a,b){var c,d;if(!a.eof()&&(c=Ka(a,b)))return d=a.peek(),"?"==d?a.next():d=null,new Pa(c,d)}function Ra(){}function Sa(){}function Ta(){}function Ua(a){return a instanceof lb||a instanceof gb||a instanceof fb}function Va(a,b,c,d,e){this.scheme=a,this.authority=b,this.path=c,this.query=d,this.fragment=e}function Wa(a){this.value=a}function Xa(a){this.value=a}function Ya(a,b,c,d,e){this.year=a,this.month=b,this.day=c,this.timezone=d,this.negative=e}function Za(a,b){return 2==b&&(a%400==0||a%100!=0&&a%4==0)?29:pd[b-1]}function $a(a,b){if(!b){var c=Za(a.year,a.month);if(a.day>c)for(;a.day>c;)a.month+=1,a.month>12&&(a.year+=1,0==a.year&&(a.year=1),a.month=1),a.day-=c,c=Za(a.year,a.month);else if(a.day<1)for(;a.day<1;)a.month-=1,a.month<1&&(a.year-=1,0==a.year&&(a.year=-1),a.month=12),c=Za(a.year,a.month),a.day+=c}return a.month>12?(a.year+=~~(a.month/12),0==a.year&&(a.year=1),a.month=a.month%12):a.month<1&&(a.year+=~~(a.month/12)-1,0==a.year&&(a.year=-1),a.month=a.month%12+12),a}function _a(a,b,c,d,e,f,g,h){this.year=a,this.month=b,this.day=c,this.hours=d,this.minutes=e,this.seconds=f,this.timezone=g,this.negative=h}function ab(a,b){var c=Ac(a);return arguments.length<2&&(b=2),(c.length<b+1?new Cc(b+1-c.length).join("0"):"")+c}function bb(a){var b=a.timezone;return null==b?"":b?(b>0?"+":"-")+ab(Gc.abs(~~(b/60)))+":"+ab(Gc.abs(b%60)):"Z"}function cb(a){return(a.negative?"-":"")+ab(a.year,4)+"-"+ab(a.month)+"-"+ab(a.day)}function db(a){var b=Ac(a.seconds).split(".");return ab(a.hours)+":"+ab(a.minutes)+":"+ab(b[0])+(b.length>1?"."+b[1]:"")}function eb(a){return $a(wb(a))}function fb(a){this.value=a}function gb(a){this.value=a}function hb(a,b,c,d,e,f,g){this.year=a,this.month=b,this.day=c,this.hours=d,this.minutes=e,this.seconds=f,this.negative=g}function ib(a){return(a.year?a.year+"Y":"")+(a.month?a.month+"M":"")}function jb(a){return(a.day?a.day+"D":"")+(a.hours||a.minutes||a.seconds?"T"+(a.hours?a.hours+"H":"")+(a.minutes?a.minutes+"M":"")+(a.seconds?a.seconds+"S":""):"")}function kb(a){return zb(Bb(a))}function lb(a){this.value=a}function mb(a,b){this.day=a,this.timezone=b}function nb(a,b){this.month=a,this.timezone=b}function ob(a,b,c){this.month=a,this.day=b,this.timezone=c}function pb(a,b){this.year=a,this.timezone=b}function qb(a,b,c){this.year=a,this.month=b,this.timezone=c}function rb(a){this.value=a}function sb(){}function tb(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function ub(a){this.value=a}function vb(a,b,c,d){this.hours=a,this.minutes=b,this.seconds=c,this.timezone=d}function wb(a){return(a.seconds>=60||a.seconds<0)&&(a.minutes+=~~(a.seconds/60)-(a.seconds<0&&a.seconds%60?1:0),a.seconds=a.seconds%60+(a.seconds<0&&a.seconds%60?60:0)),(a.minutes>=60||a.minutes<0)&&(a.hours+=~~(a.minutes/60)-(a.minutes<0&&a.minutes%60?1:0),a.minutes=a.minutes%60+(a.minutes<0&&a.minutes%60?60:0)),(a.hours>=24||a.hours<0)&&(a instanceof _a&&(a.day+=~~(a.hours/24)-(a.hours<0&&a.hours%24?1:0)),a.hours=a.hours%24+(a.hours<0&&a.hours%24?24:0)),a}function xb(a){this.value=a}function yb(a,b,c){hb.call(this,a,b,0,0,0,0,c)}function zb(a){return a.month>=12&&(a.year+=~~(a.month/12),a.month%=12),a}function Ab(a,b,c,d,e){hb.call(this,0,0,a,b,c,d,e)}function Bb(a){return a.seconds>=60&&(a.minutes+=~~(a.seconds/60),a.seconds%=60),a.minutes>=60&&(a.hours+=~~(a.minutes/60),a.minutes%=60),a.hours>=24&&(a.day+=~~(a.hours/24),a.hours%=24),a}function Cb(a){this.value=a}function Db(a){this.value=a}function Eb(a){this.value=a}function Fb(a){this.value=a}function Gb(a){this.value=a}function Hb(a){this.value=a}function Ib(a){this.value=a}function Jb(a){this.value=a}function Kb(a){this.value=a}function Lb(a){this.value=a}function Mb(a){this.value=a}function Nb(a){this.value=a}function Ob(a){this.value=a}function Pb(a){this.value=a}function Qb(a){this.value=a}function Rb(a){this.value=a}function Sb(a){this.value=a}function Tb(a){this.value=a}function Ub(a){this.value=a}function Vb(a){this.value=a}function Wb(a){this.value=a}function Xb(a){this.value=a}function Yb(){}function Zb(){}function $b(){}function _b(){}function ac(){}function bc(){}function cc(){}function dc(){}function ec(a,b,c){var d=nc(a),e=nc(b);return new Xa("lt"==c?d<e:"gt"==c?d>e:d==e)}function fc(a,b,c){return gc(_a.cast(a),_a.cast(b),c)}function gc(a,b,c){var d=new Ab(0,0,0,0),e=tc(a,d).toString(),f=tc(b,d).toString();return new Xa("lt"==c?e<f:"gt"==c?e>f:e==f)}function hc(a,b,c){var d;a instanceof Ya?d=new Ya(a.year,a.month,a.day,a.timezone,a.negative):a instanceof _a&&(d=new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative)),d.year=d.year+b.year*("-"==c?-1:1),d.month=d.month+b.month*("-"==c?-1:1),$a(d,!0);var e=Za(d.year,d.month);return d.day>e&&(d.day=e),d}function ic(a,b,c){var d;if(a instanceof Ya){var e=60*(60*b.hours+b.minutes)+b.seconds;d=new Ya(a.year,a.month,a.day,a.timezone,a.negative),d.day=d.day+b.day*("-"==c?-1:1)-1*(e&&"-"==c),$a(d)}else a instanceof _a&&(d=new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative),d.seconds=d.seconds+b.seconds*("-"==c?-1:1),d.minutes=d.minutes+b.minutes*("-"==c?-1:1),d.hours=d.hours+b.hours*("-"==c?-1:1),d.day=d.day+b.day*("-"==c?-1:1),eb(d));return d}function jc(a){return(60*(60*(24*a.day+a.hours)+a.minutes)+a.seconds)*(a.negative?-1:1)}function kc(a){var b=(a=Gc.round(a))<0,c=~~((a=Gc.abs(a))/86400),d=~~((a-=3600*c*24)/3600),e=~~((a-=3600*d)/60),f=a-=60*e;return new Ab(c,d,e,f,b)}function lc(a){return(12*a.year+a.month)*(a.negative?-1:1)}function mc(a){var b=(a=Gc.round(a))<0,c=~~((a=Gc.abs(a))/12),d=a-=12*c;return new yb(c,d,b)}function nc(a){return a.seconds+60*(a.minutes-(null!=a.timezone?a.timezone%60:0)+60*(a.hours-(null!=a.timezone?~~(a.timezone/60):0)))}function oc(a){var b=new Ec((a.negative?-1:1)*a.year,a.month,a.day,0,0,0,0);return a instanceof _a&&(b.setHours(a.hours),b.setMinutes(a.minutes),b.setSeconds(a.seconds)),null!=a.timezone&&b.setMinutes(b.getMinutes()-a.timezone),b.getTime()/1e3}function pc(a,b){if(Ic(a)||Gc.abs(a)==Lc||Ic(b)||Gc.abs(b)==Lc)return 0;var c=Ac(a).match(jd),d=Ac(b).match(jd),e=Gc.max(1,(c[2]||c[3]||"").length+(c[5]||0)*("+"==c[4]?-1:1),(d[2]||d[3]||"").length+(d[5]||0)*("+"==d[4]?-1:1));return e+(e%2?0:1)}function qc(a,b,c){return new(a instanceof Cb&&b instanceof Cb&&c==Gc.round(c)?Cb:fb)(c)}function rc(a,b){if(null==a)return null;var c=a[b]*(a.negative?-1:1);return"seconds"==b?new fb(c):new Cb(c)}function sc(a,b){if(null==a)return null;if("timezone"==b){var c=a.timezone;return null==c?null:new Ab(0,Gc.abs(~~(c/60)),Gc.abs(c%60),0,c<0)}var d=a[b];return a instanceof Ya||"hours"==b&&24==d&&(d=0),a instanceof vb||(d*=a.negative?-1:1),"seconds"==b?new fb(d):new Cb(d)}function tc(a,b){if(null==a)return null;var c;if(c=a instanceof Ya?new Ya(a.year,a.month,a.day,a.timezone,a.negative):a instanceof vb?new vb(a.hours,a.minutes,a.seconds,a.timezone,a.negative):new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative),null==b)c.timezone=null;else{var d=jc(b)/60;if(null!=a.timezone){var e=d-a.timezone;a instanceof Ya?e<0&&c.day--:(c.minutes+=e%60,c.hours+=~~(e/60)),eb(c)}c.timezone=d}return c}function uc(b,c){if(!b.length)return!1;var d=b[0];if(c.DOMAdapter.isNode(d))return!0;if(1==b.length){if(d instanceof Xa)return d.value.valueOf();if(d instanceof ub)return!!d.valueOf().length;if(Ua(d))return!(Ic(d.valueOf())||0==d.valueOf());throw new a("FORG0006")}throw new a("FORG0006")}function vc(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++){if(c=a[f],d=null,null==c)d=null;else if(b.DOMAdapter.isNode(c)){var h=b.DOMAdapter.getProperty;switch(h(c,"nodeType")){case 1:d=new xb(h(c,"textContent"));break;case 2:d=new xb(h(c,"value"));break;case 3:case 4:case 8:d=new xb(h(c,"data"));break;case 7:d=new xb(h(c,"data"));break;case 9:var i=h(c,"documentElement");d=new xb(i?h(i,"textContent"):"")}}else c instanceof Ta&&(d=c);null!=d&&e.push(d)}return e}function wc(a,b){return a.sort(function(a,c){var d=b.DOMAdapter.compareDocumentPosition(a,c);return 2&d?1:4&d?-1:0})}function xc(b,c){var d="\xc0-\xd6\xd8-\xf6\xf8-\u02ff",e="\u0370-\u037d\u037f-\u1fff\u200c-\u200d",f="\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd",g="A-Z_a-z\\-.0-9\xb7"+d+"\u0300-\u036f"+e+"\u203f-\u2040"+f,h="A-Z_a-z"+d+e+f;if(b=b.replace(/\[\\i-\[:\]\]/g,"["+h+"]").replace(/\[\\c-\[:\]\]/g,"["+g+"]").replace(/\\i/g,"[:"+h+"]").replace(/\\I/g,"[^:"+h+"]").replace(/\\c/g,"[:"+g+"]").replace(/\\C/g,"[^:"+g+"]"),c&&!c.match(/^[smix]+$/))throw new a("FORX0001");var i=c.indexOf("s")>=0,j=c.indexOf("x")>=0;if(i||j){c=c.replace(/[sx]/g,"");for(var k,l=[],m=/\s/,n=0,o=b.length,p=!1,q="";n<o;n++)k=b.charAt(n),"\\"!=q&&("["==k?p=!0:"]"==k&&(p=!1)),!p&&j&&m.test(k)||(!p&&i&&"."==k&&"\\"!=q?l[l.length]="(?:.|\\s)":l[l.length]=k),q=k;b=l.join("")}return new Dc(b,c+"g")}function yc(){}function zc(){}var Ac=window.String,Bc=(window.Boolean,window.Number),Cc=(window.Object,window.Array),Dc=window.RegExp,Ec=window.Date,Fc=window.Function,Gc=window.Math,Hc=window.Error,Ic=(window.SyntaxError,window.TypeError,window.isNaN),Jc=window.isFinite,Kc=window.NaN,Lc=window.Infinity,Mc=window.btoa,Nc=window.atob,Oc=window.parseInt,Pc=function(){return Ac.prototype.trim?function(a){return Ac(a).trim()}:function(a){return Ac(a).replace(/^\s+|\s+$/g,"")}}(),Qc=function(){return Cc.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}}(),Rc="http://www.w3.org/2001/XMLSchema",Sc="http://www.w3.org/2005/xpath-functions",Tc="http://www.w3.org/2000/xmlns/",Uc="http://www.w3.org/XML/1998/namespace";a.prototype=new Hc;var Vc={};Vc.XPDY0002="Evaluation of an expression relies on some part of the dynamic context that has not been assigned a value.",Vc.XPST0003="Expression is not a valid instance of the grammar",Vc.XPTY0004="Type is not appropriate for the context in which the expression occurs",Vc.XPST0008="Expression refers to an element name, attribute name, schema type name, namespace prefix, or variable name that is not defined in the static context",Vc.XPST0010="Axis not supported",Vc.XPST0017="Expanded QName and number of arguments in a function call do not match the name and arity of a function signature",Vc.XPTY0018="The result of the last step in a path expression contains both nodes and atomic values",Vc.XPTY0019="The result of a step (other than the last step) in a path expression contains an atomic value.",Vc.XPTY0020="In an axis step, the context item is not a node.",Vc.XPST0051="It is a static error if a QName that is used as an AtomicType in a SequenceType is not defined in the in-scope schema types as an atomic type.",Vc.XPST0081="A QName used in an expression contains a namespace prefix that cannot be expanded into a namespace URI by using the statically known namespaces.",Vc.FORG0001="Invalid value for cast/constructor.",Vc.FORG0003="fn:zero-or-one called with a sequence containing more than one item.",Vc.FORG0004="fn:one-or-more called with a sequence containing no items.",Vc.FORG0005="fn:exactly-one called with a sequence containing zero or more than one item.",Vc.FORG0006="Invalid argument type.",Vc.FODC0001="No context document.",Vc.FORX0001="Invalid regular expression flags.",Vc.FOCA0002="Invalid lexical value.",Vc.FOCH0002="Unsupported collation.",Vc.FONS0004="No namespace found for prefix.",b.prototype.index=0,b.prototype.length=0,b.prototype.reset=function(){this.index=0},b.prototype.peek=function(a){return this[this.index+(a||0)]||""},b.prototype.next=function(a){return(this.index+=a||1)<this.length},b.prototype.back=function(a){return(this.index-=a||1)>0},b.prototype.eof=function(){return this.index>=this.length},c.prototype.isNode=function(a){return a&&!!a.nodeType},c.prototype.getProperty=function(a,b){return a[b]},c.prototype.isSameNode=function(a,b){return a==b},c.prototype.compareDocumentPosition=function(a,b){return a.compareDocumentPosition(b)},c.prototype.lookupNamespaceURI=function(a,b){return a.lookupNamespaceURI(b)},c.prototype.getElementById=function(a,b){return a.getElementById(b)},c.prototype.getElementsByTagNameNS=function(a,b,c){return a.getElementsByTagNameNS(b,c)},d.prototype.item=null,d.prototype.position=0,d.prototype.size=0,d.prototype.scope=null,d.prototype.stack=null,d.prototype.dateTime=null,d.prototype.timezone=null,d.prototype.staticContext=null,d.prototype.pushVariable=function(a,b){this.stack.hasOwnProperty(a)||(this.stack[a]=[]),this.stack[a].push(this.scope[a]),this.scope[a]=b},d.prototype.popVariable=function(a){this.stack.hasOwnProperty(a)&&(this.scope[a]=this.stack[a].pop(),this.stack[a].length||(delete this.stack[a],"undefined"==typeof this.scope[a]&&delete this.scope[a]))},e.prototype.baseURI=null,e.prototype.dataTypes=null,e.prototype.documents=null,e.prototype.functions=null,e.prototype.defaultFunctionNamespace=null,e.prototype.collations=null,e.prototype.defaultCollationName=Sc+"/collation/codepoint",e.prototype.collections=null,e.prototype.namespaceResolver=null,e.prototype.defaultElementNamespace=null;var Wc=/^(?:\{([^\}]+)\})?(.+)$/;e.prototype.setDataType=function(a,b){var c=a.match(Wc);c&&c[1]!=Rc&&(this.dataTypes[a]=b)},e.prototype.getDataType=function(a){var b=a.match(Wc);if(b)return b[1]==Rc?Zc[b[2]]:this.dataTypes[a]},e.prototype.setDocument=function(a,b){this.documents[a]=b},e.prototype.getDocument=function(a){return this.documents[a]},e.prototype.setFunction=function(a,b){var c=a.match(Wc);c&&c[1]!=Sc&&(this.functions[a]=b)},e.prototype.getFunction=function(a){var b=a.match(Wc);if(b)return b[1]==Sc?Xc[b[2]]:this.functions[a]},e.prototype.setCollation=function(a,b){this.collations[a]=b},e.prototype.getCollation=function(a){return this.collations[a]},e.prototype.setCollection=function(a,b){this.collections[a]=b},e.prototype.getCollection=function(a){return this.collections[a]},e.prototype.getURIForPrefix=function(b){var c,d=this.namespaceResolver,e=d&&d.lookupNamespaceURI?d.lookupNamespaceURI:d;if(e instanceof Fc&&(c=e.call(d,b)))return c;if("fn"==b)return Sc;if("xs"==b)return Rc;if("xml"==b)return Uc;if("xmlns"==b)return Tc;throw new a("XPST0081")},e.js2xs=function(a){return a="boolean"==typeof a?new Xa(a):"number"==typeof a?Ic(a)||!Jc(a)?new gb(a):ja(Ac(a)):new ub(Ac(a))},e.xs2js=function(a){return a=a instanceof Xa?a.valueOf():Ua(a)?a.valueOf():a.toString()};var Xc={},Yc={},Zc={},$c={};h.prototype.internalExpression=null,h.prototype.evaluate=function(a){return this.internalExpression.evaluate(a)},i.prototype.equals=function(a,b){throw"Not implemented"},i.prototype.compare=function(a,b){throw"Not implemented"},j.ANYSIMPLETYPE_DT=1,j.STRING_DT=2,j.BOOLEAN_DT=3,j.DECIMAL_DT=4,j.FLOAT_DT=5,j.DOUBLE_DT=6,j.DURATION_DT=7,j.DATETIME_DT=8,j.TIME_DT=9,j.DATE_DT=10,j.GYEARMONTH_DT=11,j.GYEAR_DT=12,j.GMONTHDAY_DT=13,j.GDAY_DT=14,j.GMONTH_DT=15,j.HEXBINARY_DT=16,j.BASE64BINARY_DT=17,j.ANYURI_DT=18,j.QNAME_DT=19,j.NOTATION_DT=20,j.NORMALIZEDSTRING_DT=21,j.TOKEN_DT=22,j.LANGUAGE_DT=23,j.NMTOKEN_DT=24,j.NAME_DT=25,j.NCNAME_DT=26,j.ID_DT=27,j.IDREF_DT=28,j.ENTITY_DT=29,j.INTEGER_DT=30,j.NONPOSITIVEINTEGER_DT=31,j.NEGATIVEINTEGER_DT=32,j.LONG_DT=33,j.INT_DT=34,j.SHORT_DT=35,j.BYTE_DT=36,j.NONNEGATIVEINTEGER_DT=37,j.UNSIGNEDLONG_DT=38,j.UNSIGNEDINT_DT=39,j.UNSIGNEDSHORT_DT=40,j.UNSIGNEDBYTE_DT=41,j.POSITIVEINTEGER_DT=42,j.LISTOFUNION_DT=43,j.LIST_DT=44,j.UNAVAILABLE_DT=45,j.DATETIMESTAMP_DT=46,j.DAYMONTHDURATION_DT=47,j.DAYTIMEDURATION_DT=48,j.PRECISIONDECIMAL_DT=49,j.ANYATOMICTYPE_DT=50,j.ANYTYPE_DT=51,j.XT_YEARMONTHDURATION_DT=-1,j.XT_UNTYPEDATOMIC_DT=-2,k.prototype.items=null,k.prototype.evaluate=function(a){for(var b=[],c=0,d=this.items.length;c<d;c++)b=$c.concatenate.call(a,b,this.items[c].evaluate(a));return b},n.prototype.bindings=null,n.prototype.returnExpr=null,n.prototype.evaluate=function(a){var b=[];return function(c,d){for(var e=c.bindings[d++],f=e.inExpr.evaluate(a),g=(e.namespaceURI?"{"+e.namespaceURI+"}":"")+e.localName,h=0,i=f.length;h<i;h++)a.pushVariable(g,f[h]),d<c.bindings.length?arguments.callee(c,d):b=b.concat(c.returnExpr.evaluate(a)),a.popVariable(g)}(this,0),b},p.prototype.prefix=null,p.prototype.localName=null,p.prototype.namespaceURI=null,p.prototype.inExpr=null,r.prototype.condExpr=null,r.prototype.thenExpr=null,r.prototype.elseExpr=null,r.prototype.evaluate=function(a){return this[uc(this.condExpr.evaluate(a),a)?"thenExpr":"elseExpr"].evaluate(a)},t.prototype.bindings=null,t.prototype.quantifier=null,t.prototype.satisfiesExpr=null,t.prototype.evaluate=function(a){var b="every"==this.quantifier,c=!!b;return function(d,e){for(var f=d.bindings[e++],g=f.inExpr.evaluate(a),h=(f.namespaceURI?"{"+f.namespaceURI+"}":"")+f.localName,i=0,j=g.length;i<j&&(b?c:!c);i++)a.pushVariable(h,g[i]),e<d.bindings.length?arguments.callee(d,e):c=uc(d.satisfiesExpr.evaluate(a),a),a.popVariable(h)}(this,0),[new Xa(c)]},v.prototype.prefix=null,v.prototype.localName=null,v.prototype.namespaceURI=null,v.prototype.inExpr=null,x.prototype.left=null,x.prototype.right=null,x.prototype.operator=null,x.prototype.evaluate=function(a){var b=cd[this.operator](this,a);return null==b?[]:[b]};var _c={"=":"eq","!=":"ne",">":"gt","<":"lt",">=":"ge","<=":"le"},ad={};ad.eq=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-equal");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-equal");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-equal"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-equal"):b instanceof vb?c instanceof vb&&(e="time-equal"):b instanceof _a?c instanceof _a&&(e="dateTime-equal"):b instanceof hb?c instanceof hb&&(e="duration-equal"):b instanceof qb?c instanceof qb&&(e="gYearMonth-equal"):b instanceof pb?c instanceof pb&&(e="gYear-equal"):b instanceof ob?c instanceof ob&&(e="gMonthDay-equal"):b instanceof nb?c instanceof nb&&(e="gMonth-equal"):b instanceof mb?c instanceof mb&&(e="gDay-equal"):b instanceof tb?c instanceof tb&&(e="QName-equal"):b instanceof rb?c instanceof rb&&(e="hexBinary-equal"):b instanceof Wa&&c instanceof Wa&&(e="base64Binary-equal");if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.ne=function(a,b,c){return new Xa((!ad.eq(a,b,c).valueOf()))},ad.gt=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-greater-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-greater-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-greater-than"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-greater-than"):b instanceof vb?c instanceof vb&&(e="time-greater-than"):b instanceof _a?c instanceof _a&&(e="dateTime-greater-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-greater-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-greater-than"); +if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.lt=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-less-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-less-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-less-than"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-less-than"):b instanceof vb?c instanceof vb&&(e="time-less-than"):b instanceof _a?c instanceof _a&&(e="dateTime-less-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-less-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-less-than");if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.ge=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-less-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-less-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-greater-than"].call(d,Xc.compare.call(d,b,c),new Cb((-1)))}else b instanceof Ya?c instanceof Ya&&(e="date-less-than"):b instanceof vb?c instanceof vb&&(e="time-less-than"):b instanceof _a?c instanceof _a&&(e="dateTime-less-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-less-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-less-than");if(e)return new Xa((!$c[e].call(d,b,c).valueOf()));throw new a("XPTY0004")},ad.le=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-greater-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-greater-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-less-than"].call(d,Xc.compare.call(d,b,c),new Cb(1))}else b instanceof Ya?c instanceof Ya&&(e="date-greater-than"):b instanceof vb?c instanceof vb&&(e="time-greater-than"):b instanceof _a?c instanceof _a&&(e="dateTime-greater-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-greater-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-greater-than");if(e)return new Xa((!$c[e].call(d,b,c).valueOf()));throw new a("XPTY0004")};var bd={};bd.is=function(a,b,c){return $c["is-same-node"].call(c,a,b)},bd[">>"]=function(a,b,c){return $c["node-after"].call(c,a,b)},bd["<<"]=function(a,b,c){return $c["node-before"].call(c,a,b)};var cd={"=":z,"!=":z,"<":z,"<=":z,">":z,">=":z,eq:A,ne:A,lt:A,le:A,gt:A,ge:A,is:B,">>":B,"<<":B};C.prototype.left=null,C.prototype.items=null;var dd={};dd["+"]=function(b,c,d){var e="",f=!1;if(Ua(b)?Ua(c)&&(e="numeric-add"):b instanceof Ya?c instanceof yb?e="add-yearMonthDuration-to-date":c instanceof Ab&&(e="add-dayTimeDuration-to-date"):b instanceof yb?c instanceof Ya?(e="add-yearMonthDuration-to-date",f=!0):c instanceof _a?(e="add-yearMonthDuration-to-dateTime",f=!0):c instanceof yb&&(e="add-yearMonthDurations"):b instanceof Ab?c instanceof Ya?(e="add-dayTimeDuration-to-date",f=!0):c instanceof vb?(e="add-dayTimeDuration-to-time",f=!0):c instanceof _a?(e="add-dayTimeDuration-to-dateTime",f=!0):c instanceof Ab&&(e="add-dayTimeDurations"):b instanceof vb?c instanceof Ab&&(e="add-dayTimeDuration-to-time"):b instanceof _a&&(c instanceof yb?e="add-yearMonthDuration-to-dateTime":c instanceof Ab&&(e="add-dayTimeDuration-to-dateTime")),e)return $c[e].call(d,f?c:b,f?b:c);throw new a("XPTY0004")},dd["-"]=function(b,c,d){var e="";if(Ua(b)?Ua(c)&&(e="numeric-subtract"):b instanceof Ya?c instanceof Ya?e="subtract-dates":c instanceof yb?e="subtract-yearMonthDuration-from-date":c instanceof Ab&&(e="subtract-dayTimeDuration-from-date"):b instanceof vb?c instanceof vb?e="subtract-times":c instanceof Ab&&(e="subtract-dayTimeDuration-from-time"):b instanceof _a?c instanceof _a?e="subtract-dateTimes":c instanceof yb?e="subtract-yearMonthDuration-from-dateTime":c instanceof Ab&&(e="subtract-dayTimeDuration-from-dateTime"):b instanceof yb?c instanceof yb&&(e="subtract-yearMonthDurations"):b instanceof Ab&&c instanceof Ab&&(e="subtract-dayTimeDurations"),e)return $c[e].call(d,b,c);throw new a("XPTY0004")},C.prototype.evaluate=function(a){var b=vc(this.left.evaluate(a),a);if(!b.length)return[];ua(a,b,"?");var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e,f=0,g=this.items.length;f<g;f++){if(d=vc(this.items[f][1].evaluate(a),a),!d.length)return[];ua(a,d,"?"),e=d[0],e instanceof xb&&(e=gb.cast(e)),c=dd[this.items[f][0]](c,e,a)}return[c]},E.prototype.left=null,E.prototype.items=null;var ed={};ed["*"]=function(b,c,d){var e="",f=!1;if(Ua(b)?Ua(c)?e="numeric-multiply":c instanceof yb?(e="multiply-yearMonthDuration",f=!0):c instanceof Ab&&(e="multiply-dayTimeDuration",f=!0):b instanceof yb?Ua(c)&&(e="multiply-yearMonthDuration"):b instanceof Ab&&Ua(c)&&(e="multiply-dayTimeDuration"),e)return $c[e].call(d,f?c:b,f?b:c);throw new a("XPTY0004")},ed.div=function(b,c,d){var e="";if(Ua(b)?Ua(c)&&(e="numeric-divide"):b instanceof yb?Ua(c)?e="divide-yearMonthDuration":c instanceof yb&&(e="divide-yearMonthDuration-by-yearMonthDuration"):b instanceof Ab&&(Ua(c)?e="divide-dayTimeDuration":c instanceof Ab&&(e="divide-dayTimeDuration-by-dayTimeDuration")),e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ed.idiv=function(b,c,d){if(Ua(b)&&Ua(c))return $c["numeric-integer-divide"].call(d,b,c);throw new a("XPTY0004")},ed.mod=function(b,c,d){if(Ua(b)&&Ua(c))return $c["numeric-mod"].call(d,b,c);throw new a("XPTY0004")},E.prototype.evaluate=function(a){var b=vc(this.left.evaluate(a),a);if(!b.length)return[];ua(a,b,"?");var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e,f=0,g=this.items.length;f<g;f++){if(d=vc(this.items[f][1].evaluate(a),a),!d.length)return[];ua(a,d,"?"),e=d[0],e instanceof xb&&(e=gb.cast(e)),c=ed[this.items[f][0]](c,e,a)}return[c]},G.prototype.operator=null,G.prototype.expression=null;var fd={};fd["-"]=function(b,c){if(Ua(b))return $c["numeric-unary-minus"].call(c,b);throw new a("XPTY0004")},fd["+"]=function(b,c){if(Ua(b))return $c["numeric-unary-plus"].call(c,b);throw new a("XPTY0004")},G.prototype.evaluate=function(a){var b=vc(this.expression.evaluate(a),a);if(!b.length)return[];ua(a,b,"?");var c=b[0];return c instanceof xb&&(c=gb.cast(c)),[fd[this.operator](c,a)]},J.prototype.left=null,J.prototype.items=null,J.prototype.evaluate=function(a){for(var b=uc(this.left.evaluate(a),a),c=0,d=this.items.length;c<d&&!b;c++)b=uc(this.items[c].evaluate(a),a);return[new Xa(b)]},L.prototype.left=null,L.prototype.items=null,L.prototype.evaluate=function(a){for(var b=uc(this.left.evaluate(a),a),c=0,d=this.items.length;c<d&&b;c++)b=uc(this.items[c].evaluate(a),a);return[new Xa(b)]},N.prototype.predicates=null,N.prototype.applyPredicates=function(a,b){for(var c,d=b.item,e=b.position,f=b.size,g=0,h=this.predicates.length;g<h;g++){c=a,a=[];for(var i,j=0,k=c.length;j<k;j++)b.item=c[j],b.position=j+1,b.size=k,i=this.predicates[g].evaluate(b),1==i.length&&Ua(i[0])?i[0].valueOf()==j+1&&a.push(c[j]):uc(i,b)&&a.push(c[j])}return b.item=d,b.position=e,b.size=f,a},Q.prototype=new N,Q.prototype.axis=null,Q.prototype.test=null;var gd={};gd.attribute={},gd.child={},gd.descendant={},gd["descendant-or-self"]={},gd.following={},gd["following-sibling"]={},gd.self={},gd.ancestor={},gd["ancestor-or-self"]={},gd.parent={},gd.preceding={},gd["preceding-sibling"]={},Q.prototype.evaluate=function(b){var c=b.item;if(!b.DOMAdapter.isNode(c))throw new a("XPTY0020");var d=[],e=b.DOMAdapter.getProperty,f=e(c,"nodeType");switch(this.axis){case"attribute":if(1==f)for(var g=e(c,"attributes"),h=0,i=g.length;h<i;h++)d.push(g[h]);break;case"child":for(var j=e(c,"firstChild");j;j=e(j,"nextSibling"))d.push(j);break;case"descendant-or-self":d.push(c);case"descendant":S(e(c,"firstChild"),d,e);break;case"following":for(var k,l=c;l;l=e(l,"parentNode"))(k=e(l,"nextSibling"))&&S(k,d,e);break;case"following-sibling":for(var j=c;j=e(j,"nextSibling");)d.push(j);break;case"self":d.push(c);break;case"ancestor-or-self":d.push(c);case"ancestor":for(var j=2==f?e(c,"ownerElement"):c;j=e(j,"parentNode");)d.push(j);break;case"parent":var l=2==f?e(c,"ownerElement"):e(c,"parentNode");l&&d.push(l);break;case"preceding":for(var k,l=c;l;l=e(l,"parentNode"))(k=e(l,"previousSibling"))&&T(k,d,e);break;case"preceding-sibling":for(var j=c;j=e(j,"previousSibling");)d.push(j)}if(d.length&&!(this.test instanceof Y&&"node"==this.test.name)){var m=d;d=[];for(var h=0,i=m.length;h<i;h++)this.test.test(m[h],b)&&d.push(m[h])}switch(d.length&&this.predicates.length&&(d=this.applyPredicates(d,b)),this.axis){case"ancestor":case"ancestor-or-self":case"parent":case"preceding":case"preceding-sibling":d.reverse()}return d},U.prototype.items=null,U.prototype.evaluate=function(b){for(var c,d=b.item,e=[d],f=0,g=this.items.length;f<g;f++){c=[];for(var h=0,i=e.length;h<i;h++){b.item=e[h];for(var j=0,k=this.items[f].evaluate(b),l=k.length;j<l;j++){if(f<g-1&&!b.DOMAdapter.isNode(k[j]))throw new a("XPTY0019");Qc(c,k[j])==-1&&c.push(k[j])}}e=c}return b.item=d,wc(e,b)},Y.prototype=new W,Y.prototype.name=null,Y.prototype.args=null;var hd={};hd["document-node"]={},hd.element={},hd.attribute={},hd["processing-instruction"]={},hd.comment={},hd.text={},hd.node={},hd["schema-element"]={},hd["schema-attribute"]={},Y.prototype.test=function(a,b){var c,d=b.DOMAdapter.getProperty,e=b.DOMAdapter.isNode(a)?d(a,"nodeType"):0;switch(this.name){case"node":return!!e;case"attribute":if(2!=e)return!1;break;case"document-node":return 9==e;case"element":return 1==e;case"processing-instruction":if(7!=e)return!1;break;case"comment":return 8==e;case"text":return 3==e||4==e;case"schema-attribute":throw"KindTest 'schema-attribute' not implemented";case"schema-element":throw"KindTest 'schema-element' not implemented"}return 2==e?"xmlns"!=d(a,"prefix")&&"xmlns"!=d(a,"localName"):7!=e||(c=d(a,"target"),this.args.length?c==this.args[0].value:"xml"!=c)},$.prototype=new W,$.prototype.prefix=null,$.prototype.localName=null,$.prototype.namespaceURI=null;var id=/^(?:(?![0-9-])(\w[\w.-]*|\*)\:)?(?![0-9-])(\w[\w.-]*|\*)$/;$.prototype.test=function(a,b){var c=b.DOMAdapter.getProperty,d=c(a,"nodeType");if(1==d||2==d){if("*"==this.localName)return(1==d||"xmlns"!=c(a,"prefix")&&"xmlns"!=c(a,"localName"))&&(!this.prefix||c(a,"namespaceURI")==this.namespaceURI);if(this.localName==c(a,"localName"))return"*"==this.namespaceURI||2==d&&!this.prefix&&!c(a,"prefix")||c(a,"namespaceURI")==this.namespaceURI}return!1},ba.prototype.evaluate=function(a){return this.expression?this.expression.evaluate(a):[]},da.prototype.evaluate=function(b){if(null==b.item)throw new a("XPDY0002");return[b.item]},fa.prototype.value=null,fa.prototype.evaluate=function(a){return[this.value]},ha.prototype=new fa;var jd=/^[+\-]?(?:(?:(\d+)(?:\.(\d*))?)|(?:\.(\d+)))(?:[eE]([+-])?(\d+))?$/;ka.prototype=new fa;var kd=/^'([^']*(?:''[^']*)*)'|"([^"]*(?:""[^"]*)*)"$/;ma.prototype=new N,ma.prototype.expression=null,ma.prototype.evaluate=function(a){var b=this.expression.evaluate(a);return this.predicates.length&&b.length&&(b=this.applyPredicates(b,a)),b},oa.prototype.prefix=null,oa.prototype.localName=null,oa.prototype.namespaceURI=null,oa.prototype.evaluate=function(b){var c=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName;if(b.scope.hasOwnProperty(c))return[b.scope[c]];throw new a("XPST0008")},qa.prototype.prefix=null,qa.prototype.localName=null,qa.prototype.namespaceURI=null,qa.prototype.args=null,qa.prototype.evaluate=function(b){for(var c,d,e=[],f=0,g=this.args.length;f<g;f++)e.push(this.args[f].evaluate(b));var h=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName;if(this.namespaceURI==Sc){if(d=Xc[this.localName]){(c=Yc[this.localName])&&sa(this.localName,c,d,e,b);var i=d.apply(b,e);return null==i?[]:i instanceof Cc?i:[i]}throw new a("XPST0017")}if(this.namespaceURI==Rc){if((d=Zc[this.localName])&&"NOTATION"!=this.localName&&"anyAtomicType"!=this.localName)return sa(this.localName,[[Ta,"?"]],d,e,b),null===e[0]?[]:[d.cast(e[0])];throw new a("XPST0017")}if(d=b.staticContext.getFunction(h)){var i=d.apply(b,e);return null==i?[]:i instanceof Cc?i:[i]}throw new a("XPST0017")};va.prototype.left=null,va.prototype.items=null,va.prototype.evaluate=function(a){for(var b,c=this.left.evaluate(a),d=0,e=this.items.length;d<e;d++)c=$c[(b=this.items[d])[0]].call(a,c,b[1].evaluate(a));return c},xa.prototype.left=null,xa.prototype.right=null,xa.prototype.evaluate=function(a){var b=this.left.evaluate(a);if(!b.length)return[];ua(a,b,"?"),ta(a,b,Cb);var c=this.right.evaluate(a);return c.length?(ua(a,c,"?"),ta(a,c,Cb),$c.to.call(a,b[0],c[0])):[]},za.prototype.left=null,za.prototype.items=null,za.prototype.evaluate=function(a){for(var b=this.left.evaluate(a),c=0,d=this.items.length;c<d;c++)b=$c.union.call(a,b,this.items[c].evaluate(a));return b},Ba.prototype.expression=null,Ba.prototype.type=null,Ba.prototype.evaluate=function(a){var b=this.expression.evaluate(a),c=this.type.itemType,d=this.type.occurence;if(!c)return[new Xa((!b.length))];if(!b.length)return[new Xa("?"==d||"*"==d)];if(1!=b.length&&"+"!=d&&"*"!=d)return[new Xa((!1))];if(!c.test)return[new Xa((!0))];for(var e=!0,f=0,g=b.length;f<g&&e;f++)e=c.test.test(b[f],a);return[new Xa(e)]},Da.prototype.expression=null,Da.prototype.type=null,Da.prototype.evaluate=function(b){var c=this.expression.evaluate(b),d=this.type.itemType,e=this.type.occurence;if(!d){if(c.length)throw new a("XPDY0050");return c}if("?"!=e&&"*"!=e&&!c.length)throw new a("XPDY0050");if("+"!=e&&"*"!=e&&1!=c.length)throw new a("XPDY0050");if(!d.test)return c;for(var f=0,g=c.length;f<g;f++)if(!d.test.test(c[f],b))throw new a("XPDY0050");return c},Fa.prototype.expression=null,Fa.prototype.type=null,Fa.prototype.evaluate=function(b){var c=this.expression.evaluate(b),d=this.type.itemType,e=this.type.occurence;if(c.length>1)return[new Xa((!1))];if(!c.length)return[new Xa("?"==e)];try{d.cast(vc(c,b)[0])}catch(b){if("XPST0051"==b.code)throw b;if("XPST0017"==b.code)throw new a("XPST0080");return[new Xa((!1))]}return[new Xa((!0))]},Ha.prototype.expression=null,Ha.prototype.type=null,Ha.prototype.evaluate=function(a){var b=this.expression.evaluate(a);return ua(a,b,this.type.occurence),b.length?[this.type.itemType.cast(vc(b,a)[0],a)]:[]},Ja.prototype.prefix=null,Ja.prototype.localName=null,Ja.prototype.namespaceURI=null,Ja.prototype.test=function(b,c){var d=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName,e=this.namespaceURI==Rc?Zc[this.localName]:c.staticContext.getDataType(d);if(e)return b instanceof e;throw new a("XPST0051")},Ja.prototype.cast=function(b,c){var d=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName,e=this.namespaceURI==Rc?Zc[this.localName]:c.staticContext.getDataType(d);if(e)return e.cast(b);throw new a("XPST0051")},La.prototype.test=null,Na.prototype.itemType=null,Na.prototype.occurence=null,Pa.prototype.itemType=null,Pa.prototype.occurence=null,Ra.prototype.builtInKind=j.ANYTYPE_DT,Sa.prototype=new Ra,Sa.prototype.builtInKind=j.ANYSIMPLETYPE_DT,Sa.prototype.primitiveKind=null,Sa.PRIMITIVE_ANYURI="anyURI",Sa.PRIMITIVE_BASE64BINARY="base64Binary",Sa.PRIMITIVE_BOOLEAN="boolean",Sa.PRIMITIVE_DATE="date",Sa.PRIMITIVE_DATETIME="dateTime",Sa.PRIMITIVE_DECIMAL="decimal",Sa.PRIMITIVE_DOUBLE="double",Sa.PRIMITIVE_DURATION="duration",Sa.PRIMITIVE_FLOAT="float",Sa.PRIMITIVE_GDAY="gDay",Sa.PRIMITIVE_GMONTH="gMonth",Sa.PRIMITIVE_GMONTHDAY="gMonthDay",Sa.PRIMITIVE_GYEAR="gYear",Sa.PRIMITIVE_GYEARMONTH="gYearMonth",Sa.PRIMITIVE_HEXBINARY="hexBinary",Sa.PRIMITIVE_NOTATION="NOTATION",Sa.PRIMITIVE_QNAME="QName",Sa.PRIMITIVE_STRING="string",Sa.PRIMITIVE_TIME="time",Ta.prototype=new Sa,Ta.prototype.builtInKind=j.ANYATOMICTYPE_DT,Ta.cast=function(b){throw new a("XPST0017")},g("anyAtomicType",Ta),Va.prototype=new Ta,Va.prototype.builtInKind=j.ANYURI_DT,Va.prototype.primitiveKind=Sa.PRIMITIVE_ANYURI,Va.prototype.scheme=null,Va.prototype.authority=null,Va.prototype.path=null,Va.prototype.query=null,Va.prototype.fragment=null,Va.prototype.toString=function(){return(this.scheme?this.scheme+":":"")+(this.authority?"//"+this.authority:"")+(this.path?this.path:"")+(this.query?"?"+this.query:"")+(this.fragment?"#"+this.fragment:"")};var ld=/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;Va.cast=function(b){if(b instanceof Va)return b;if(b instanceof ub||b instanceof xb){var c;if(c=Pc(b).match(ld))return new Va(c[2],c[4],c[5],c[7],c[9]);throw new a("FORG0001")}throw new a("XPTY0004")},g("anyURI",Va),Wa.prototype=new Ta,Wa.prototype.builtInKind=j.BASE64BINARY_DT,Wa.prototype.primitiveKind=Sa.PRIMITIVE_BASE64BINARY,Wa.prototype.value=null,Wa.prototype.valueOf=function(){return this.value},Wa.prototype.toString=function(){return this.value};var md=/^((([A-Za-z0-9+\/]\s*){4})*(([A-Za-z0-9+\/]\s*){3}[A-Za-z0-9+\/]|([A-Za-z0-9+\/]\s*){2}[AEIMQUYcgkosw048]\s*=|[A-Za-z0-9+\/]\s*[AQgw]\s*=\s*=))?$/;Wa.cast=function(b){if(b instanceof Wa)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(md);if(c)return new Wa(c[0]);throw new a("FORG0001")}if(b instanceof rb){for(var c=b.valueOf().match(/.{2}/g),d=[],e=0,f=c.length;e<f;e++)d.push(Ac.fromCharCode(Oc(c[e],16)));return new Wa(Mc(d.join("")))}throw new a("XPTY0004")},g("base64Binary",Wa),Xa.prototype=new Ta,Xa.prototype.builtInKind=j.BOOLEAN_DT,Xa.prototype.primitiveKind=Sa.PRIMITIVE_BOOLEAN,Xa.prototype.value=null,Xa.prototype.valueOf=function(){return this.value},Xa.prototype.toString=function(){return Ac(this.value)};var nd=/^(0|1|true|false)$/;Xa.cast=function(b){if(b instanceof Xa)return b;if(b instanceof ub||b instanceof xb){var c;if(c=Pc(b).match(nd))return new Xa("1"==c[1]||"true"==c[1]);throw new a("FORG0001")}if(Ua(b))return new Xa(0!=b);throw new a("XPTY0004")},g("boolean",Xa),Ya.prototype=new Ta,Ya.prototype.builtInKind=j.DATE_DT,Ya.prototype.primitiveKind=Sa.PRIMITIVE_DATE,Ya.prototype.year=null,Ya.prototype.month=null,Ya.prototype.day=null,Ya.prototype.timezone=null,Ya.prototype.negative=null,Ya.prototype.toString=function(){return cb(this)+bb(this)};var od=/^(-?)([1-9]\d\d\d+|0\d\d\d)-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;Ya.cast=function(b){if(b instanceof Ya)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(od);if(c){var d=+c[2],e=+c[3],f=+c[4];if(f-1<Za(d,e))return new Ya(d,e,f,c[5]?"Z"==c[5]?0:("-"==c[6]?-1:1)*(60*c[7]+1*c[8]):null,"-"==c[1]);throw new a("FORG0001")}throw new a("FORG0001")}if(b instanceof _a)return new Ya(b.year,b.month,b.day,b.timezone,b.negative);throw new a("XPTY0004")};var pd=[31,28,31,30,31,30,31,31,30,31,30,31];g("date",Ya),_a.prototype=new Ta,_a.prototype.builtInKind=j.DATETIME_DT,_a.prototype.primitiveKind=Sa.PRIMITIVE_DATETIME,_a.prototype.year=null,_a.prototype.month=null,_a.prototype.day=null,_a.prototype.hours=null,_a.prototype.minutes=null,_a.prototype.seconds=null,_a.prototype.timezone=null,_a.prototype.negative=null,_a.prototype.toString=function(){return cb(this)+"T"+db(this)+bb(this)};var qd=/^(-?)([1-9]\d\d\d+|0\d\d\d)-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])T(([01]\d|2[0-3]):([0-5]\d):([0-5]\d)(?:\.(\d+))?|(24:00:00)(?:\.(0+))?)(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;_a.cast=function(b){if(b instanceof _a)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(qd);if(c){var d=+c[2],e=+c[3],f=+c[4],g=!!c[10];if(f-1<Za(d,e))return eb(new _a(d,e,f,g?24:+c[6],g?0:+c[7],Bc((g?0:c[8])+"."+(g?0:c[9]||0)),c[12]?"Z"==c[12]?0:("-"==c[13]?-1:1)*(60*c[14]+1*c[15]):null,"-"==c[1]));throw new a("FORG0001")}throw new a("FORG0001")}if(b instanceof Ya)return new _a(b.year,b.month,b.day,0,0,0,b.timezone,b.negative);throw new a("XPTY0004")},g("dateTime",_a),fb.prototype=new Ta,fb.prototype.builtInKind=j.DECIMAL_DT,fb.prototype.primitiveKind=Sa.PRIMITIVE_DECIMAL,fb.prototype.value=null,fb.prototype.valueOf=function(){return this.value},fb.prototype.toString=function(){return Ac(this.value)};var rd=/^[+\-]?((\d+(\.\d*)?)|(\.\d+))$/;fb.cast=function(b){if(b instanceof fb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(rd);if(c)return new fb((+b));throw new a("FORG0001")}if(b instanceof Xa)return new fb(1*b);if(Ua(b)){if(!Ic(b)&&Jc(b))return new fb((+b));throw new a("FOCA0002")}throw new a("XPTY0004")},g("decimal",fb),gb.prototype=new Ta,gb.prototype.builtInKind=j.DOUBLE_DT,gb.prototype.primitiveKind=Sa.PRIMITIVE_DOUBLE,gb.prototype.value=null,gb.prototype.valueOf=function(){return this.value},gb.prototype.toString=function(){return Ac(this.value)};var sd=/^([+\-]?((\d+(\.\d*)?)|(\.\d+))([eE][+\-]?\d+)?|(-?INF)|NaN)$/;gb.cast=function(b){if(b instanceof gb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(sd);if(c)return new gb(c[7]?+c[7].replace("INF","Infinity"):+b);throw new a("FORG0001")}if(b instanceof Xa)return new gb(1*b);if(Ua(b))return new gb(b.value);throw new a("XPTY0004")},g("double",gb),hb.prototype=new Ta,hb.prototype.builtInKind=j.DURATION_DT,hb.prototype.primitiveKind=Sa.PRIMITIVE_DURATION,hb.prototype.year=null,hb.prototype.month=null,hb.prototype.day=null,hb.prototype.hours=null,hb.prototype.minutes=null,hb.prototype.seconds=null,hb.prototype.negative=null,hb.prototype.toString=function(){return(this.negative?"-":"")+"P"+(ib(this)+jb(this)||"T0S")};var td=/^(-)?P(?:([0-9]+)Y)?(?:([0-9]+)M)?(?:([0-9]+)D)?(?:T(?:([0-9]+)H)?(?:([0-9]+)M)?(?:((?:(?:[0-9]+(?:.[0-9]*)?)|(?:.[0-9]+)))S)?)?$/;hb.cast=function(b){if(b instanceof hb)return b;if(b instanceof yb)return new hb(b.year,b.month,0,0,0,0,b.negative);if(b instanceof Ab)return new hb(0,0,b.day,b.hours,b.minutes,b.seconds,b.negative);if(b instanceof ub||b instanceof xb){var c=Pc(b).match(td);if(c)return kb(new hb(+c[2]||0,+c[3]||0,+c[4]||0,+c[5]||0,+c[6]||0,+c[7]||0,"-"==c[1]));throw new a("FORG0001")}throw new a("XPTY0004")},g("duration",hb),lb.prototype=new Ta,lb.prototype.builtInKind=j.FLOAT_DT,lb.prototype.primitiveKind=Sa.PRIMITIVE_FLOAT,lb.prototype.value=null,lb.prototype.valueOf=function(){return this.value},lb.prototype.toString=function(){return Ac(this.value)};var ud=/^([+\-]?((\d+(\.\d*)?)|(\.\d+))([eE][+\-]?\d+)?|(-?INF)|NaN)$/;lb.cast=function(b){if(b instanceof lb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(ud);if(c)return new lb(c[7]?+c[7].replace("INF","Infinity"):+b);throw new a("FORG0001")}if(b instanceof Xa)return new lb(1*b);if(Ua(b))return new lb(b.value);throw new a("XPTY0004")},g("float",lb),mb.prototype=new Ta,mb.prototype.builtInKind=j.GDAY_DT,mb.prototype.primitiveKind=Sa.PRIMITIVE_GDAY,mb.prototype.day=null,mb.prototype.timezone=null,mb.prototype.toString=function(){return"---"+ab(this.day)+bb(this)};var vd=/^---(0[1-9]|[12]\d|3[01])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;mb.cast=function(b){if(b instanceof mb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(vd);if(c){var d=+c[1];return new mb(d,c[2]?"Z"==c[2]?0:("-"==c[3]?-1:1)*(60*c[4]+1*c[5]):null)}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new mb(b.day,b.timezone);throw new a("XPTY0004")},g("gDay",mb),nb.prototype=new Ta,nb.prototype.builtInKind=j.GMONTH_DT,nb.prototype.primitiveKind=Sa.PRIMITIVE_GMONTH,nb.prototype.month=null,nb.prototype.timezone=null,nb.prototype.toString=function(){return"--"+ab(this.month)+bb(this)};var wd=/^--(0[1-9]|1[0-2])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;nb.cast=function(b){if(b instanceof nb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(wd);if(c){var d=+c[1];return new nb(d,c[2]?"Z"==c[2]?0:("-"==c[3]?-1:1)*(60*c[4]+1*c[5]):null)}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new nb(b.month,b.timezone);throw new a("XPTY0004")},g("gMonth",nb),ob.prototype=new Ta,ob.prototype.builtInKind=j.GMONTHDAY_DT,ob.prototype.primitiveKind=Sa.PRIMITIVE_GMONTHDAY,ob.prototype.month=null,ob.prototype.day=null,ob.prototype.timezone=null,ob.prototype.toString=function(){return"--"+ab(this.month)+"-"+ab(this.day)+bb(this)};var xd=/^--(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;ob.cast=function(b){if(b instanceof ob)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(xd);if(c){var d=+c[1],e=+c[2];if(e-1<Za(1976,d))return new ob(d,e,c[3]?"Z"==c[3]?0:("-"==c[4]?-1:1)*(60*c[5]+1*c[6]):null);throw new a("FORG0001")}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new ob(b.month,b.day,b.timezone);throw new a("XPTY0004")},g("gMonthDay",ob),pb.prototype=new Ta,pb.prototype.builtInKind=j.GYEAR_DT,pb.prototype.primitiveKind=Sa.PRIMITIVE_GYEAR,pb.prototype.year=null,pb.prototype.timezone=null,pb.prototype.toString=function(){return ab(this.year)+bb(this)};var yd=/^-?([1-9]\d\d\d+|0\d\d\d)(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;pb.cast=function(b){if(b instanceof pb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(yd);if(c){var d=+c[1];return new pb(d,c[2]?"Z"==c[2]?0:("-"==c[3]?-1:1)*(60*c[4]+1*c[5]):null)}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new pb(b.year,b.timezone);throw new a("XPTY0004")},g("gYear",pb),qb.prototype=new Ta,qb.prototype.builtInKind=j.GYEARMONTH_DT,qb.prototype.primitiveKind=Sa.PRIMITIVE_GYEARMONTH,qb.prototype.year=null,qb.prototype.month=null,qb.prototype.timezone=null,qb.prototype.toString=function(){return ab(this.year)+"-"+ab(this.month)+bb(this)};var zd=/^-?([1-9]\d\d\d+|0\d\d\d)-(0[1-9]|1[0-2])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;qb.cast=function(b){if(b instanceof qb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(zd);if(c){var d=+c[1],e=+c[2];return new qb(d,e,c[3]?"Z"==c[3]?0:("-"==c[4]?-1:1)*(60*c[5]+1*c[6]):null)}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new qb(b.year,b.month,b.timezone);throw new a("XPTY0004")},g("gYearMonth",qb),rb.prototype=new Ta,rb.prototype.builtInKind=j.HEXBINARY_DT,rb.prototype.primitiveKind=Sa.PRIMITIVE_HEXBINARY,rb.prototype.value=null,rb.prototype.valueOf=function(){return this.value},rb.prototype.toString=function(){return this.value};var Ad=/^([0-9a-fA-F]{2})*$/;rb.cast=function(b){if(b instanceof rb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Ad);if(c)return new rb(c[0].toUpperCase());throw new a("FORG0001")}if(b instanceof Wa){for(var d,e=Nc(b.valueOf()),f=[],g=0,h=e.length;g<h;g++)d=e.charCodeAt(g).toString(16),f.push(new Cc(3-d.length).join("0")+d);return new rb(f.join(""))}throw new a("XPTY0004")},g("hexBinary",rb),sb.prototype=new Ta,sb.prototype.builtInKind=j.NOTATION_DT,sb.prototype.primitiveKind=Sa.PRIMITIVE_NOTATION,sb.cast=function(b){throw new a("XPST0017")},g("NOTATION",sb),tb.prototype=new Ta,tb.prototype.builtInKind=j.QNAME_DT,tb.prototype.primitiveKind=Sa.PRIMITIVE_QNAME,tb.prototype.prefix=null,tb.prototype.localName=null,tb.prototype.namespaceURI=null,tb.prototype.toString=function(){return(this.prefix?this.prefix+":":"")+this.localName};var Bd=/^(?:(?![0-9-])(\w[\w.-]*)\:)?(?![0-9-])(\w[\w.-]*)$/;tb.cast=function(b){if(b instanceof tb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Bd);if(c)return new tb(c[1]||null,c[2],null);throw new a("FORG0001")}throw new a("XPTY0004")},g("QName",tb),ub.prototype=new Ta,ub.prototype.value=null,ub.prototype.builtInKind=j.STRING_DT,ub.prototype.primitiveKind=Sa.PRIMITIVE_STRING,ub.prototype.valueOf=function(){return this.value},ub.prototype.toString=function(){return this.value},ub.cast=function(a){return new ub(Ac(a))},g("string",ub),vb.prototype=new Ta,vb.prototype.builtInKind=j.TIME_DT,vb.prototype.primitiveKind=Sa.PRIMITIVE_TIME,vb.prototype.hours=null,vb.prototype.minutes=null,vb.prototype.seconds=null,vb.prototype.timezone=null,vb.prototype.toString=function(){return db(this)+bb(this)};var Cd=/^(([01]\d|2[0-3]):([0-5]\d):([0-5]\d)(?:\.(\d+))?|(24:00:00)(?:\.(0+))?)(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;vb.cast=function(b){if(b instanceof vb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Cd);if(c){var d=!!c[6];return new vb(d?0:+c[2],d?0:+c[3],Bc((d?0:c[4])+"."+(d?0:c[5]||0)),c[8]?"Z"==c[8]?0:("-"==c[9]?-1:1)*(60*c[10]+1*c[11]):null)}throw new a("FORG0001")}if(b instanceof _a)return new vb(b.hours,b.minutes,b.seconds,b.timezone);throw new a("XPTY0004")},g("time",vb),xb.prototype=new Ta,xb.prototype.builtInKind=j.XT_UNTYPEDATOMIC_DT,xb.prototype.toString=function(){return Ac(this.value)},xb.cast=function(a){return a instanceof xb?a:new xb(Ac(a))},g("untypedAtomic",xb),yb.prototype=new hb,yb.prototype.builtInKind=j.XT_YEARMONTHDURATION_DT,yb.prototype.toString=function(){return(this.negative?"-":"")+"P"+(ib(this)||"0M")};var Dd=/^(-)?P(?:([0-9]+)Y)?(?:([0-9]+)M)?$/;yb.cast=function(b){if(b instanceof yb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Dd);if(c)return zb(new yb(+c[2]||0,+c[3]||0,"-"==c[1]));throw new a("FORG0001")}if(b instanceof Ab)return new yb(0,0);if(b instanceof hb)return new yb(b.year,b.month,b.negative);throw new a("XPTY0004")},g("yearMonthDuration",yb),Ab.prototype=new hb,Ab.prototype.builtInKind=j.DAYTIMEDURATION_DT,Ab.prototype.toString=function(){return(this.negative?"-":"")+"P"+(jb(this)||"T0S")};var Ed=/^(-)?P(?:([0-9]+)D)?(?:T(?:([0-9]+)H)?(?:([0-9]+)M)?(?:((?:(?:[0-9]+(?:.[0-9]*)?)|(?:.[0-9]+)))S)?)?$/;Ab.cast=function(b){if(b instanceof Ab)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Ed);if(c)return Bb(new Ab(+c[2]||0,+c[3]||0,+c[4]||0,+c[5]||0,"-"==c[1]));throw new a("FORG0001")}if(b instanceof yb)return new Ab(0,0,0,0);if(b instanceof hb)return new Ab(b.day,b.hours,b.minutes,b.seconds,b.negative);throw new a("XPTY0004")},g("dayTimeDuration",Ab),Cb.prototype=new fb,Cb.prototype.builtInKind=j.INTEGER_DT;var Fd=/^[-+]?[0-9]+$/;Cb.cast=function(b){if(b instanceof Cb)return new Cb(b.value);if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Fd);if(c)return new Cb((+b));throw new a("FORG0001")}if(b instanceof Xa)return new Cb(1*b);if(Ua(b)){if(!Ic(b)&&Jc(b))return new Cb((+b));throw new a("FOCA0002")}throw new a("XPTY0004")},g("integer",Cb),Db.prototype=new Cb,Db.prototype.builtInKind=j.NONPOSITIVEINTEGER_DT,Db.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=0)return new Db(c.value);throw new a("FORG0001")},g("nonPositiveInteger",Db),Eb.prototype=new Db,Eb.prototype.builtInKind=j.NEGATIVEINTEGER_DT,Eb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=-1)return new Eb(c.value);throw new a("FORG0001")},g("negativeInteger",Eb),Fb.prototype=new Cb,Fb.prototype.builtInKind=j.LONG_DT,Fb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=0x8000000000000000&&c.value>=-0x8000000000000000)return new Fb(c.value);throw new a("FORG0001")},g("long",Fb),Gb.prototype=new Fb,Gb.prototype.builtInKind=j.INT_DT,Gb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=2147483647&&c.value>=-2147483648)return new Gb(c.value);throw new a("FORG0001")},g("int",Gb),Hb.prototype=new Gb,Hb.prototype.builtInKind=j.SHORT_DT,Hb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=32767&&c.value>=-32768)return new Hb(c.value);throw new a("FORG0001")},g("short",Hb),Ib.prototype=new Hb,Ib.prototype.builtInKind=j.BYTE_DT,Ib.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=127&&c.value>=-128)return new Ib(c.value);throw new a("FORG0001")},g("byte",Ib),Jb.prototype=new Cb,Jb.prototype.builtInKind=j.NONNEGATIVEINTEGER_DT,Jb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=0)return new Jb(c.value);throw new a("FORG0001")},g("nonNegativeInteger",Jb),Kb.prototype=new Jb,Kb.prototype.builtInKind=j.POSITIVEINTEGER_DT,Kb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1)return new Kb(c.value);throw new a("FORG0001")},g("positiveInteger",Kb),Lb.prototype=new Jb,Lb.prototype.builtInKind=j.UNSIGNEDLONG_DT,Lb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=0x10000000000000000)return new Lb(c.value);throw new a("FORG0001")},g("unsignedLong",Lb),Mb.prototype=new Jb,Mb.prototype.builtInKind=j.UNSIGNEDINT_DT,Mb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=4294967295)return new Mb(c.value);throw new a("FORG0001")},g("unsignedInt",Mb),Nb.prototype=new Mb,Nb.prototype.builtInKind=j.UNSIGNEDSHORT_DT,Nb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=65535)return new Nb(c.value);throw new a("FORG0001")},g("unsignedShort",Nb),Ob.prototype=new Nb,Ob.prototype.builtInKind=j.UNSIGNEDBYTE_DT, +Ob.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=255)return new Ob(c.value);throw new a("FORG0001")},g("unsignedByte",Ob),Pb.prototype=new ub,Pb.prototype.builtInKind=j.NORMALIZEDSTRING_DT,Pb.cast=function(a){return new Pb(Ac(a))},g("normalizedString",Pb),Qb.prototype=new Pb,Qb.prototype.builtInKind=j.TOKEN_DT,Qb.cast=function(a){return new Qb(Ac(a))},g("token",Qb),Rb.prototype=new Qb,Rb.prototype.builtInKind=j.NAME_DT,Rb.cast=function(a){return new Rb(Ac(a))},g("Name",Rb),Sb.prototype=new Rb,Sb.prototype.builtInKind=j.NCNAME_DT,Sb.cast=function(a){return new Sb(Ac(a))},g("NCName",Sb),Tb.prototype=new Sb,Tb.prototype.builtInKind=j.ENTITY_DT,Tb.cast=function(a){return new Tb(Ac(a))},g("ENTITY",Tb),Ub.prototype=new Sb,Ub.prototype.builtInKind=j.ID_DT,Ub.cast=function(a){return new Ub(Ac(a))},g("ID",Ub),Vb.prototype=new Sb,Vb.prototype.builtInKind=j.IDREF_DT,Vb.cast=function(a){return new Vb(Ac(a))},g("IDREF",Vb),Wb.prototype=new Qb,Wb.prototype.builtInKind=j.LANGUAGE_DT,Wb.cast=function(a){return new Wb(Ac(a))},g("language",Wb),Xb.prototype=new Qb,Xb.prototype.builtInKind=j.NMTOKEN_DT,Xb.cast=function(a){return new Xb(Ac(a))},g("NMTOKEN",Xb),Zb.prototype=new Yb,$b.prototype=new Zb,_b.prototype=new Zb,ac.prototype=new Zb,bc.prototype=new Zb,cc.prototype=new Zb,dc.prototype=new Zb,$c["hexBinary-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["base64Binary-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["boolean-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["boolean-less-than"]=function(a,b){return new Xa(a.valueOf()<b.valueOf())},$c["boolean-greater-than"]=function(a,b){return new Xa(a.valueOf()>b.valueOf())},$c["yearMonthDuration-less-than"]=function(a,b){return new Xa(lc(a)<lc(b))},$c["yearMonthDuration-greater-than"]=function(a,b){return new Xa(lc(a)>lc(b))},$c["dayTimeDuration-less-than"]=function(a,b){return new Xa(jc(a)<jc(b))},$c["dayTimeDuration-greater-than"]=function(a,b){return new Xa(jc(a)>jc(b))},$c["duration-equal"]=function(a,b){return new Xa(a.negative==b.negative&&lc(a)==lc(b)&&jc(a)==jc(b))},$c["dateTime-equal"]=function(a,b){return gc(a,b,"eq")},$c["dateTime-less-than"]=function(a,b){return gc(a,b,"lt")},$c["dateTime-greater-than"]=function(a,b){return gc(a,b,"gt")},$c["date-equal"]=function(a,b){return fc(a,b,"eq")},$c["date-less-than"]=function(a,b){return fc(a,b,"lt")},$c["date-greater-than"]=function(a,b){return fc(a,b,"gt")},$c["time-equal"]=function(a,b){return ec(a,b,"eq")},$c["time-less-than"]=function(a,b){return ec(a,b,"lt")},$c["time-greater-than"]=function(a,b){return ec(a,b,"gt")},$c["gYearMonth-equal"]=function(a,b){return gc(new _a(a.year,a.month,Za(a.year,a.month),0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(b.year,b.month,Za(b.year,b.month),0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gYear-equal"]=function(a,b){return gc(new _a(a.year,1,1,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(b.year,1,1,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gMonthDay-equal"]=function(a,b){return gc(new _a(1972,a.month,a.day,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,b.month,b.day,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gMonth-equal"]=function(a,b){return gc(new _a(1972,a.month,Za(1972,b.month),0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,b.month,Za(1972,b.month),0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gDay-equal"]=function(a,b){return gc(new _a(1972,12,a.day,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,12,b.day,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["add-yearMonthDurations"]=function(a,b){return mc(lc(a)+lc(b))},$c["subtract-yearMonthDurations"]=function(a,b){return mc(lc(a)-lc(b))},$c["multiply-yearMonthDuration"]=function(a,b){return mc(lc(a)*b)},$c["divide-yearMonthDuration"]=function(a,b){return mc(lc(a)/b)},$c["divide-yearMonthDuration-by-yearMonthDuration"]=function(a,b){return new fb(lc(a)/lc(b))},$c["add-dayTimeDurations"]=function(a,b){return kc(jc(a)+jc(b))},$c["subtract-dayTimeDurations"]=function(a,b){return kc(jc(a)-jc(b))},$c["multiply-dayTimeDuration"]=function(a,b){return kc(jc(a)*b)},$c["divide-dayTimeDuration"]=function(a,b){return kc(jc(a)/b)},$c["divide-dayTimeDuration-by-dayTimeDuration"]=function(a,b){return new fb(jc(a)/jc(b))},$c["subtract-dateTimes"]=function(a,b){return kc(oc(a)-oc(b))},$c["subtract-dates"]=function(a,b){return kc(oc(a)-oc(b))},$c["subtract-times"]=function(a,b){return kc(nc(a)-nc(b))},$c["add-yearMonthDuration-to-dateTime"]=function(a,b){return hc(a,b,"+")},$c["add-dayTimeDuration-to-dateTime"]=function(a,b){return ic(a,b,"+")},$c["subtract-yearMonthDuration-from-dateTime"]=function(a,b){return hc(a,b,"-")},$c["subtract-dayTimeDuration-from-dateTime"]=function(a,b){return ic(a,b,"-")},$c["add-yearMonthDuration-to-date"]=function(a,b){return hc(a,b,"+")},$c["add-dayTimeDuration-to-date"]=function(a,b){return ic(a,b,"+")},$c["subtract-yearMonthDuration-from-date"]=function(a,b){return hc(a,b,"-")},$c["subtract-dayTimeDuration-from-date"]=function(a,b){return ic(a,b,"-")},$c["add-dayTimeDuration-to-time"]=function(a,b){var c=new vb(a.hours,a.minutes,a.seconds,a.timezone);return c.hours+=b.hours,c.minutes+=b.minutes,c.seconds+=b.seconds,wb(c)},$c["subtract-dayTimeDuration-from-time"]=function(a,b){var c=new vb(a.hours,a.minutes,a.seconds,a.timezone);return c.hours-=b.hours,c.minutes-=b.minutes,c.seconds-=b.seconds,wb(c)},$c["is-same-node"]=function(a,b){return new Xa(this.DOMAdapter.isSameNode(a,b))},$c["node-before"]=function(a,b){return new Xa((!!(4&this.DOMAdapter.compareDocumentPosition(a,b))))},$c["node-after"]=function(a,b){return new Xa((!!(2&this.DOMAdapter.compareDocumentPosition(a,b))))},$c["numeric-add"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,(c*e+d*e)/e)},$c["numeric-subtract"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,(c*e-d*e)/e)},$c["numeric-multiply"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,c*e*(d*e)/(e*e))},$c["numeric-divide"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,a*e/(b*e))},$c["numeric-integer-divide"]=function(a,b){var c=a/b;return new Cb(Gc.floor(c)+(c<0))},$c["numeric-mod"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,c*e%(d*e)/e)},$c["numeric-unary-plus"]=function(a){return a},$c["numeric-unary-minus"]=function(a){return a.value*=-1,a},$c["numeric-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["numeric-less-than"]=function(a,b){return new Xa(a.valueOf()<b.valueOf())},$c["numeric-greater-than"]=function(a,b){return new Xa(a.valueOf()>b.valueOf())},$c["QName-equal"]=function(a,b){return new Xa(a.localName==b.localName&&a.namespaceURI==b.namespaceURI)},$c.concatenate=function(a,b){return a.concat(b)},$c.union=function(b,c){for(var d,e=[],f=0,g=b.length;f<g;f++){if(!this.DOMAdapter.isNode(d=b[f]))throw new a("XPTY0004");Qc(e,d)==-1&&e.push(d)}for(var d,f=0,g=c.length;f<g;f++){if(!this.DOMAdapter.isNode(d=c[f]))throw new a("XPTY0004");Qc(e,d)==-1&&e.push(d)}return wc(e,this)},$c.intersect=function(b,c){for(var d,e,f=[],g=0,h=b.length;g<h;g++){if(!this.DOMAdapter.isNode(d=b[g]))throw new a("XPTY0004");e=!1;for(var i=0,j=c.length;i<j&&!e;i++){if(!this.DOMAdapter.isNode(c[i]))throw new a("XPTY0004");e=this.DOMAdapter.isSameNode(c[i],d)}e&&Qc(f,d)==-1&&f.push(d)}return wc(f,this)},$c.except=function(b,c){for(var d,e,f=[],g=0,h=b.length;g<h;g++){if(!this.DOMAdapter.isNode(d=b[g]))throw new a("XPTY0004");e=!1;for(var i=0,j=c.length;i<j&&!e;i++){if(!this.DOMAdapter.isNode(c[i]))throw new a("XPTY0004");e=this.DOMAdapter.isSameNode(c[i],d)}e||Qc(f,d)!=-1||f.push(d)}return wc(f,this)},$c.to=function(a,b){for(var c=[],d=a.valueOf(),e=b.valueOf();d<=e;d++)c.push(new Cb(d));return c},f("node-name",[[Zb,"?"]],function(a){if(null!=a){var b=this.DOMAdapter.getProperty;switch(b(a,"nodeType")){case 1:case 2:return new tb(b(a,"prefix"),b(a,"localName"),b(a,"namespaceURI"));case 5:throw"Not implemented";case 6:throw"Not implemented";case 7:return new tb(null,b(a,"target"),null);case 10:return new tb(null,b(a,"name"),null)}}return null}),f("nilled",[[Zb,"?"]],function(a){return null!=a&&1==this.DOMAdapter.getProperty(a,"nodeType")?new Xa((!1)):null}),f("string",[[Yb,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=this.item}return null==b?new ub(""):ub.cast(vc([b],this)[0])}),f("data",[[Yb,"*"]],function(a){return vc(a,this)}),f("base-uri",[[Zb,"?",!0]],function(b){if(!arguments.length){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return Va.cast(new ub(this.DOMAdapter.getProperty(b,"baseURI")||""))}),f("document-uri",[[Zb,"?"]],function(a){if(null!=a){var b=this.DOMAdapter.getProperty;if(9==b(a,"nodeType"))return Va.cast(new ub(b(a,"documentURI")||""))}return null}),f("resolve-uri",[[ub,"?"],[ub,"",!0]],function(b,c){if(arguments.length<2){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");c=new ub(this.DOMAdapter.getProperty(this.item,"baseURI")||"")}if(null==b)return null;if(""==b.valueOf()||"#"==b.valueOf().charAt(0))return Va.cast(c);var d=Va.cast(b);if(d.scheme)return d;var e=Va.cast(c);if(d.scheme=e.scheme,!d.authority&&(d.authority=e.authority,"/"!=d.path.charAt(0))){var f=d.path.split("/"),g=e.path.split("/");g.pop();for(var h=""==g[0]?1:0,i=0,j=f.length;i<j;i++)".."==f[i]?g.length>h?g.pop():(g.push(f[i]),h++):"."!=f[i]&&g.push(f[i]);".."!=f[--i]&&"."!=f[i]||g.push(""),d.path=g.join("/")}return d}),f("true",[],function(){return new Xa((!0))}),f("false",[],function(){return new Xa((!1))}),f("not",[[Yb,"*"]],function(a){return new Xa((!uc(a,this)))}),f("position",[],function(){return new Cb(this.position)}),f("last",[],function(){return new Cb(this.size)}),f("current-dateTime",[],function(){return this.dateTime}),f("current-date",[],function(){return Ya.cast(this.dateTime)}),f("current-time",[],function(){return vb.cast(this.dateTime)}),f("implicit-timezone",[],function(){return this.timezone}),f("default-collation",[],function(){return new ub(this.staticContext.defaultCollationName)}),f("static-base-uri",[],function(){return Va.cast(new ub(this.staticContext.baseURI||""))}),f("years-from-duration",[[hb,"?"]],function(a){return rc(a,"year")}),f("months-from-duration",[[hb,"?"]],function(a){return rc(a,"month")}),f("days-from-duration",[[hb,"?"]],function(a){return rc(a,"day")}),f("hours-from-duration",[[hb,"?"]],function(a){return rc(a,"hours")}),f("minutes-from-duration",[[hb,"?"]],function(a){return rc(a,"minutes")}),f("seconds-from-duration",[[hb,"?"]],function(a){return rc(a,"seconds")}),f("year-from-dateTime",[[_a,"?"]],function(a){return sc(a,"year")}),f("month-from-dateTime",[[_a,"?"]],function(a){return sc(a,"month")}),f("day-from-dateTime",[[_a,"?"]],function(a){return sc(a,"day")}),f("hours-from-dateTime",[[_a,"?"]],function(a){return sc(a,"hours")}),f("minutes-from-dateTime",[[_a,"?"]],function(a){return sc(a,"minutes")}),f("seconds-from-dateTime",[[_a,"?"]],function(a){return sc(a,"seconds")}),f("timezone-from-dateTime",[[_a,"?"]],function(a){return sc(a,"timezone")}),f("year-from-date",[[Ya,"?"]],function(a){return sc(a,"year")}),f("month-from-date",[[Ya,"?"]],function(a){return sc(a,"month")}),f("day-from-date",[[Ya,"?"]],function(a){return sc(a,"day")}),f("timezone-from-date",[[Ya,"?"]],function(a){return sc(a,"timezone")}),f("hours-from-time",[[vb,"?"]],function(a){return sc(a,"hours")}),f("minutes-from-time",[[vb,"?"]],function(a){return sc(a,"minutes")}),f("seconds-from-time",[[vb,"?"]],function(a){return sc(a,"seconds")}),f("timezone-from-time",[[vb,"?"]],function(a){return sc(a,"timezone")}),f("adjust-dateTime-to-timezone",[[_a,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)}),f("adjust-date-to-timezone",[[Ya,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)}),f("adjust-time-to-timezone",[[vb,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)}),f("name",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return new ub("")}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}var c=Xc["node-name"].call(this,b);return new ub(null==c?"":c.toString())}),f("local-name",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return new ub("")}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return new ub(this.DOMAdapter.getProperty(b,"localName")||"")}),f("namespace-uri",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return Va.cast(new ub(""))}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return Va.cast(new ub(this.DOMAdapter.getProperty(b,"namespaceURI")||""))}),f("number",[[Ta,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=vc([this.item],this)[0]}var c=new gb(Kc);if(null!=b)try{c=gb.cast(b)}catch(a){}return c}),f("lang",[[ub,"?"],[Zb,"",!0]],function(b,c){if(arguments.length<2){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");c=this.item}var d=this.DOMAdapter.getProperty;2==d(c,"nodeType")&&(c=d(c,"ownerElement"));for(var e;c;c=d(c,"parentNode"))if(e=d(c,"attributes"))for(var f=0,g=e.length;f<g;f++)if("xml:lang"==d(e[f],"nodeName"))return new Xa(d(e[f],"value").replace(/-.+/,"").toLowerCase()==b.valueOf().replace(/-.+/,"").toLowerCase());return new Xa((!1))}),f("root",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return null}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}var c=this.DOMAdapter.getProperty;2==c(b,"nodeType")&&(b=c(b,"ownerElement"));for(var d=b;d;d=c(b,"parentNode"))b=d;return b}),f("abs",[[gb,"?"]],function(a){return new fb(Gc.abs(a))}),f("ceiling",[[gb,"?"]],function(a){return new fb(Gc.ceil(a))}),f("floor",[[gb,"?"]],function(a){return new fb(Gc.floor(a))}),f("round",[[gb,"?"]],function(a){return new fb(Gc.round(a))}),f("round-half-to-even",[[gb,"?"],[Cb,"",!0]],function(a,b){var c=arguments.length>1?b.valueOf():0;if(c<0){var d=new Cb(Gc.pow(10,-c)),e=Gc.round($c["numeric-divide"].call(this,a,d)),f=new Cb(e);return nDecimal=Gc.abs($c["numeric-subtract"].call(this,f,$c["numeric-divide"].call(this,a,d))),$c["numeric-multiply"].call(this,$c["numeric-add"].call(this,f,new fb(.5==nDecimal&&e%2?-1:0)),d)}var d=new Cb(Gc.pow(10,c)),e=Gc.round($c["numeric-multiply"].call(this,a,d)),f=new Cb(e);return nDecimal=Gc.abs($c["numeric-subtract"].call(this,f,$c["numeric-multiply"].call(this,a,d))),$c["numeric-divide"].call(this,$c["numeric-add"].call(this,f,new fb(.5==nDecimal&&e%2?-1:0)),d)}),f("resolve-QName",[[ub,"?"],[bc]],function(b,c){if(null==b)return null;var d=b.valueOf(),e=d.match(Bd);if(!e)throw new a("FOCA0002");var f=e[1]||null,g=e[2],h=this.DOMAdapter.lookupNamespaceURI(c,f);if(null!=f&&!h)throw new a("FONS0004");return new tb(f,g,h||null)}),f("QName",[[ub,"?"],[ub]],function(b,c){var d=c.valueOf(),e=d.match(Bd);if(!e)throw new a("FOCA0002");return new tb(e[1]||null,e[2]||null,null==b?"":b.valueOf())}),f("prefix-from-QName",[[tb,"?"]],function(a){return null!=a&&a.prefix?new Sb(a.prefix):null}),f("local-name-from-QName",[[tb,"?"]],function(a){return null==a?null:new Sb(a.localName)}),f("namespace-uri-from-QName",[[tb,"?"]],function(a){return null==a?null:Va.cast(new ub(a.namespaceURI||""))}),f("namespace-uri-for-prefix",[[ub,"?"],[bc]],function(a,b){var c=null==a?"":a.valueOf(),d=this.DOMAdapter.lookupNamespaceURI(b,c||null);return null==d?null:Va.cast(new ub(d))}),f("in-scope-prefixes",[[bc]],function(a){throw"Function 'in-scope-prefixes' not implemented"}),f("boolean",[[Yb,"*"]],function(a){return new Xa(uc(a,this))}),f("index-of",[[Ta,"*"],[Ta],[ub,"",!0]],function(a,b,c){if(!a.length||null==b)return[];var d=b;d instanceof xb&&(d=ub.cast(d));for(var e,f=[],g=0,h=a.length;g<h;g++)e=a[g],e instanceof xb&&(e=ub.cast(e)),e.valueOf()===d.valueOf()&&f.push(new Cb(g+1));return f}),f("empty",[[Yb,"*"]],function(a){return new Xa((!a.length))}),f("exists",[[Yb,"*"]],function(a){return new Xa((!!a.length))}),f("distinct-values",[[Ta,"*"],[ub,"",!0]],function(a,b){if(arguments.length>1)throw"Collation parameter in function 'distinct-values' is not implemented";if(!a.length)return null;for(var c,d=[],e=0,f=a.length;e<f;e++){c=a[e],c instanceof xb&&(c=ub.cast(c));for(var g,h=0,i=d.length,j=!1;h<i&&!j;h++)g=d[h],g instanceof xb&&(g=ub.cast(g)),g.valueOf()===c.valueOf()&&(j=!0);j||d.push(a[e])}return d}),f("insert-before",[[Yb,"*"],[Cb],[Yb,"*"]],function(a,b,c){if(!a.length)return c;if(!c.length)return a;var d=a.length,e=b.valueOf();e<1?e=1:e>d&&(e=d+1);for(var f=[],g=0;g<d;g++)e==g+1&&(f=f.concat(c)),f.push(a[g]);return e==g+1&&(f=f.concat(c)),f}),f("remove",[[Yb,"*"],[Cb]],function(a,b){if(!a.length)return[];var c=a.length,d=b.valueOf();if(d<1||d>c)return a;for(var e=[],f=0;f<c;f++)d!=f+1&&e.push(a[f]);return e}),f("reverse",[[Yb,"*"]],function(a){return a.reverse(),a}),f("subsequence",[[Yb,"*"],[gb,""],[gb,"",!0]],function(a,b,c){var d=Gc.round(b),e=arguments.length>2?Gc.round(c):a.length-d+1;return a.slice(d-1,d-1+e)}),f("unordered",[[Yb,"*"]],function(a){return a}),f("zero-or-one",[[Yb,"*"]],function(b){if(b.length>1)throw new a("FORG0003");return b}),f("one-or-more",[[Yb,"*"]],function(b){if(!b.length)throw new a("FORG0004");return b}),f("exactly-one",[[Yb,"*"]],function(b){if(1!=b.length)throw new a("FORG0005");return b}),f("deep-equal",[[Yb,"*"],[Yb,"*"],[ub,"",!0]],function(a,b,c){throw"Function 'deep-equal' not implemented"}),f("count",[[Yb,"*"]],function(a){return new Cb(a.length)}),f("avg",[[Ta,"*"]],function(b){if(!b.length)return null;try{var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e=1,f=b.length;e<f;e++)d=b[e],d instanceof xb&&(d=gb.cast(d)),c=dd["+"](c,d,this);return ed.div(c,new Cb(f),this)}catch(b){throw"XPTY0004"!=b.code?b:new a("FORG0006")}}),f("max",[[Ta,"*"],[ub,"",!0]],function(b,c){if(!b.length)return null;try{var d=b[0];d instanceof xb&&(d=gb.cast(d));for(var e,f=1,g=b.length;f<g;f++)e=b[f],e instanceof xb&&(e=gb.cast(e)),ad.ge(e,d,this).valueOf()&&(d=e);return d}catch(b){throw"XPTY0004"!=b.code?b:new a("FORG0006")}}),f("min",[[Ta,"*"],[ub,"",!0]],function(b,c){if(!b.length)return null;try{var d=b[0];d instanceof xb&&(d=gb.cast(d));for(var e,f=1,g=b.length;f<g;f++)e=b[f],e instanceof xb&&(e=gb.cast(e)),ad.le(e,d,this).valueOf()&&(d=e);return d}catch(b){throw"XPTY0004"!=b.code?b:new a("FORG0006")}}),f("sum",[[Ta,"*"],[Ta,"?",!0]],function(b,c){if(!b.length)return arguments.length>1?c:new gb(0);try{var d=b[0];d instanceof xb&&(d=gb.cast(d));for(var e,f=1,g=b.length;f<g;f++)e=b[f],e instanceof xb&&(e=gb.cast(e)),d=dd["+"](d,e,this);return d}catch(b){throw"XPTY0004"!=b.code?b:new a("FORG0006")}}),f("id",[[ub,"*"],[Zb,"",!0]],function(b,c){if(arguments.length<2){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");c=this.item}var d=Xc.root.call(this,c);if(9!=this.DOMAdapter.getProperty(d,"nodeType"))throw new a("FODC0001");for(var e=[],f=0;f<b.length;f++)for(var g=0,h=Pc(b[f]).split(/\s+/),i=h.length;g<i;g++)(c=this.DOMAdapter.getElementById(d,h[g]))&&Qc(e,c)==-1&&e.push(c);return wc(e,this)}),f("idref",[[ub,"*"],[Zb,"",!0]],function(a,b){throw"Function 'idref' not implemented"}),f("doc",[[ub,"?",!0]],function(a){throw"Function 'doc' not implemented"}),f("doc-available",[[ub,"?",!0]],function(a){throw"Function 'doc-available' not implemented"}),f("collection",[[ub,"?",!0]],function(a){throw"Function 'collection' not implemented"}),f("element-with-id",[[ub,"*"],[Zb,"",!0]],function(a,b){throw"Function 'element-with-id' not implemented"}),f("codepoints-to-string",[[Cb,"*"]],function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(Ac.fromCharCode(a[c]));return new ub(b.join(""))}),f("string-to-codepoints",[[ub,"?"]],function(a){if(null==a)return null;var b=a.valueOf();if(""==b)return[];for(var c=[],d=0,e=b.length;d<e;d++)c.push(new Cb(b.charCodeAt(d)));return c}),f("compare",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(b,c,d){if(null==b||null==c)return null;var e,f=this.staticContext.defaultCollationName;if(arguments.length>2&&(f=d.valueOf()),e=f==Sc+"/collation/codepoint"?Gd:this.staticContext.getCollation(f),!e)throw new a("FOCH0002");return new Cb(e.compare(b.valueOf(),c.valueOf()))}),f("codepoint-equal",[[ub,"?"],[ub,"?"]],function(a,b){return null==a||null==b?null:new Xa(a.valueOf()==b.valueOf())}),f("concat",null,function(){if(arguments.length<2)throw new a("XPST0017");for(var b,c=[],d=0,e=arguments.length;d<e;d++)b=arguments[d],ua(this,b,"?"),b.length&&(c[c.length]=ub.cast(vc(b,this)[0]).valueOf());return new ub(c.join(""))}),f("string-join",[[ub,"*"],[ub]],function(a,b){return new ub(a.join(b))}),f("substring",[[ub,"?"],[gb],[gb,"",!0]],function(a,b,c){var d=null==a?"":a.valueOf(),e=Gc.round(b)-1,f=arguments.length>2?e+Gc.round(c):d.length;return new ub(f>e?d.substring(e,f):"")}),f("string-length",[[ub,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=ub.cast(vc([this.item],this)[0])}return new Cb(null==b?0:b.valueOf().length)}),f("normalize-space",[[ub,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=ub.cast(vc([this.item],this)[0])}return new ub(null==b?"":Pc(b).replace(/\s\s+/g," "))}),f("normalize-unicode",[[ub,"?"],[ub,"",!0]],function(a,b){throw"Function 'normalize-unicode' not implemented"}),f("upper-case",[[ub,"?"]],function(a){return new ub(null==a?"":a.valueOf().toUpperCase())}),f("lower-case",[[ub,"?"]],function(a){return new ub(null==a?"":a.valueOf().toLowerCase())}),f("translate",[[ub,"?"],[ub],[ub]],function(a,b,c){if(null==a)return new ub("");for(var d,e=a.valueOf().split(""),f=b.valueOf().split(""),g=c.valueOf().split(""),h=g.length,i=[],j=0,k=e.length;j<k;j++)(d=f.indexOf(e[j]))==-1?i[i.length]=e[j]:d<h&&(i[i.length]=g[d]);return new ub(i.join(""))}),f("encode-for-uri",[[ub,"?"]],function(a){return new ub(null==a?"":window.encodeURIComponent(a))}),f("iri-to-uri",[[ub,"?"]],function(a){return new ub(null==a?"":window.encodeURI(window.decodeURI(a)))}),f("escape-html-uri",[[ub,"?"]],function(a){if(null==a||""==a.valueOf())return new ub("");for(var b,c=a.valueOf().split(""),d=0,e=c.length;d<e;d++)((b=c[d].charCodeAt(0))<32||b>126)&&(c[d]=window.encodeURIComponent(c[d]));return new ub(c.join(""))}),f("contains",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'contains' is not implemented";return new Xa((null==a?"":a.valueOf()).indexOf(null==b?"":b.valueOf())>=0)}),f("starts-with",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'starts-with' is not implemented";return new Xa(0==(null==a?"":a.valueOf()).indexOf(null==b?"":b.valueOf()))}),f("ends-with",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'ends-with' is not implemented";var d=null==a?"":a.valueOf(),e=null==b?"":b.valueOf();return new Xa(d.indexOf(e)==d.length-e.length)}),f("substring-before",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'substring-before' is not implemented";var d,e=null==a?"":a.valueOf(),f=null==b?"":b.valueOf();return new ub((d=e.indexOf(f))>=0?e.substring(0,d):"")}),f("substring-after",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'substring-after' is not implemented";var d,e=null==a?"":a.valueOf(),f=null==b?"":b.valueOf();return new ub((d=e.indexOf(f))>=0?e.substring(d+f.length):"")}),f("matches",[[ub,"?"],[ub],[ub,"",!0]],function(a,b,c){var d=null==a?"":a.valueOf(),e=xc(b.valueOf(),arguments.length>2?c.valueOf():"");return new Xa(e.test(d))}),f("replace",[[ub,"?"],[ub],[ub],[ub,"",!0]],function(a,b,c,d){var e=null==a?"":a.valueOf(),f=xc(b.valueOf(),arguments.length>3?d.valueOf():"");return new Xa(e.replace(f,c.valueOf()))}),f("tokenize",[[ub,"?"],[ub],[ub,"",!0]],function(a,b,c){for(var d=null==a?"":a.valueOf(),e=xc(b.valueOf(),arguments.length>2?c.valueOf():""),f=[],g=0,h=d.split(e),i=h.length;g<i;g++)f.push(new ub(h[g]));return f}),f("trace",[[Yb,"*"],[ub]],function(a,b){var c=window.console;return c&&c.log&&c.log(b.valueOf(),a),a});var Gd=new i;Gd.equals=function(a,b){return a==b},Gd.compare=function(a,b){return a==b?0:a>b?1:-1},yc.prototype=new c;var Hd=new e;yc.prototype.getProperty=function(a,b){if(b in a)return a[b];if("baseURI"==b){for(var c,d="",e=Hd.getFunction("{http://www.w3.org/2005/xpath-functions}resolve-uri"),f=Hd.getDataType("{http://www.w3.org/2001/XMLSchema}string"),g=a;g;g=g.parentNode)1==g.nodeType&&(c=g.getAttribute("xml:base"))&&(d=e(new f(c),new f(d)).toString());return d}if("textContent"==b){var h=[];return function(a){for(var b,c=0;b=a.childNodes[c];c++)3==b.nodeType||4==b.nodeType?h.push(b.data):1==b.nodeType&&b.firstChild&&arguments.callee(b)}(a),h.join("")}},yc.prototype.compareDocumentPosition=function(a,b){if("compareDocumentPosition"in a)return a.compareDocumentPosition(b);if(b==a)return 0;var c,d,e,f,g,h=null,i=null;if(2==a.nodeType&&(h=a,a=this.getProperty(h,"ownerElement")),2==b.nodeType&&(i=b,b=this.getProperty(i,"ownerElement")),h&&i&&a&&a==b)for(f=0,c=this.getProperty(a,"attributes"),g=c.length;f<g;f++){if(d=c[f],d==h)return 36;if(d==i)return 34}var j,k,l,m,n=[],o=[];for(h&&n.push(h),e=a;e;e=e.parentNode)n.push(e);for(i&&o.push(i),e=b;e;e=e.parentNode)o.push(e);if((a.ownerDocument||a)!=(b.ownerDocument||b)||n[n.length-1]!=o[o.length-1])return 33;for(f=Gc.min(j=n.length,l=o.length);f;--f)if((k=n[--j])!=(m=o[--l])){if(2==k.nodeType)return 4;if(2==m.nodeType)return 2;if(!m.nextSibling)return 4;if(!k.nextSibling)return 2;for(e=m.previousSibling;e;e=e.previousSibling)if(e==k)return 4;return 2}return j<l?20:10},yc.prototype.lookupNamespaceURI=function(a,b){if("lookupNamespaceURI"in a)return a.lookupNamespaceURI(b);for(;a&&9!=a.nodeType;a=a.parentNode){if(b==this.getProperty(oChild,"prefix"))return this.getProperty(a,"namespaceURI");if(1==a.nodeType)for(var c=this.getProperty(a,"attributes"),d=0,e=c.length,f="xmlns:"+b;d<e;d++)if(this.getProperty(c[d],"nodeName")==f)return this.getProperty(c[d],"value")}return null},yc.prototype.getElementsByTagNameNS=function(a,b,c){if("getElementsByTagNameNS"in a)return a.getElementsByTagNameNS(b,c);var d=[],e="*"==b,f="*"==c;return function(a){for(var g,h=0;g=a.childNodes[h];h++)1==g.nodeType&&(!f&&c!=this.getProperty(g,"localName")||!e&&b!=this.getProperty(g,"namespaceURI")||(d[d.length]=g),g.firstChild&&arguments.callee(g))}(a),d};var Id=new yc;Id.getProperty=function(a,b){if("localName"==b&&1==a.nodeType)return a.nodeName.toLowerCase();if("prefix"==b)return null;if("namespaceURI"==b)return 1==a.nodeType?"http://www.w3.org/1999/xhtml":null;if("textContent"==b)return a.innerText;if("attributes"==b&&1==a.nodeType){for(var c,d,e=[],f=0,g=a.attributes,h=g.length;f<h;f++)c=g[f],c.specified&&(d=new cAttr,d.ownerElement=a,d.ownerDocument=a.ownerDocument,d.specified=!0,d.value=d.nodeValue=c.nodeValue,d.name=d.nodeName=d.localName=c.nodeName.toLowerCase(),e[e.length]=d);return e}return yc.prototype.getProperty.call(this,a,b)};var Jd=new yc;Jd.getProperty=function(a,b){if("localName"==b){if(7==a.nodeType)return null;if(1==a.nodeType)return a.baseName}if("prefix"==b||"namespaceURI"==b)return a[b]||null;if("textContent"==b)return a.text;if("attributes"==b&&1==a.nodeType){for(var c,d,e=[],f=0,g=a.attributes,h=g.length;f<h;f++)c=g[f],c.specified&&(d=new cAttr,d.nodeType=2,d.ownerElement=a,d.ownerDocument=a.ownerDocument,d.specified=!0,d.value=d.nodeValue=c.nodeValue,d.name=d.nodeName=c.nodeName,d.localName=c.baseName,d.prefix=c.prefix||null,d.namespaceURI=c.namespaceURI||null,e[e.length]=d);return e}return yc.prototype.getProperty.call(this,a,b)},Jd.getElementById=function(a,b){return a.nodeFromID(b)},zc.prototype.defaultOL2DOMAdapter=new yc,zc.prototype.defaultOL2HTMLDOMAdapter=new yc,zc.prototype.defaultHTMLStaticContext=new e,zc.prototype.defaultHTMLStaticContext.baseURI=window.document.location.href,zc.prototype.defaultHTMLStaticContext.defaultFunctionNamespace="http://www.w3.org/2005/xpath-functions",zc.prototype.defaultHTMLStaticContext.defaultElementNamespace="http://www.w3.org/1999/xhtml",zc.prototype.defaultXMLStaticContext=new e,zc.prototype.defaultXMLStaticContext.defaultFunctionNamespace="http://www.w3.org/2005/xpath-functions",zc.prototype.bOldMS=!!window.document.namespaces&&!window.document.createElementNS,zc.prototype.bOldW3=!zc.prototype.bOldMS&&"http://www.w3.org/1999/xhtml"!=window.document.documentElement.namespaceURI,zc.prototype.defaultDOMAdapter=new c,zc.prototype.compile=function(a,b){return new h(a,b)},zc.prototype.evaluate=function(a,b,c){a instanceof window.jQuery||(a=new window.jQuery(a)),"undefined"!=typeof b&&null!==b||(b="");var f=a[0];"undefined"==typeof f&&(f=null);var g=f&&"DIV"==(9==f.nodeType?f:f.ownerDocument).createElement("div").tagName?this.defaultHTMLStaticContext:this.defaultXMLStaticContext;g.namespaceResolver=c;var i=new h(Ac(b),g);g.namespaceResolver=null;var j,k=new window.jQuery,l=this.defaultOL2DOMAdapter;this.bOldMS?l=g==this.defaultHTMLStaticContext?Id:Jd:this.bOldW3&&g==this.defaultHTMLStaticContext&&(l=this.defaultOL2HTMLDOMAdapter),j=i.evaluate(new d(g,f,null,l));for(var m,n=0,o=j.length;n<o;n++)k.push(l.isNode(m=j[n])?m:e.xs2js(m));return k};var Kd=new zc,Ld=Kd.classes={};Ld.Exception=a,Ld.Expression=h,Ld.DOMAdapter=c,Ld.StaticContext=e,Ld.DynamicContext=d,Ld.StringCollator=i,window.xpath=Kd}();var CanvasComponents={draw_line:function(a,b,c,d,e){a.beginPath(),a.moveTo(b,c),a.lineTo(d,e),a.closePath(),a.stroke()},draw_bar_chart:function(a,b,c,d,e,f,g){g=g||15,(!e||e>Math.round(a.width/50))&&(e=Math.round(a.width/50)),(!f||f>Math.round(a.width/50))&&(f=Math.round(a.height/50));var h=a.getContext("2d"),i=.08*a.width,j=.03*a.width,k=.08*a.height,l=.15*a.height,m=a.height-k-l,n=a.width-i-j,o=k+m,p=k;h.font=g+"px Arial",h.lineWidth="1.0",h.strokeStyle="#444",CanvasComponents.draw_line(h,i,o,n+i,o),CanvasComponents.draw_line(h,i,o,i,p);var q=.003*n,r=(n-q*b.length)/b.length,s=i+q,t=Math.max.apply(Math,b);h.fillStyle="green";for(var u=0;u<b.length;u++){var v=b[u]/t*m;h.fillRect(s,o-v,r,v),s+=r+q}if(h.fillStyle="black",h.textAlign="center",s=i+q,e>=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r<d.length;r++)n=k/c*d[r].min+f,o=h+j+.1*i,p=n,q=h+j+.3*i,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].max+f,p=n,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].min+f,o=h+j+.3*i,p=k/c*d[r].max+f,q=o,CanvasComponents.draw_line(e,n,o,p,q),d[r].max>=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.length<b?Utils.pad_left(c.slice(d,c.length)+a,b,c):a; +},pad_right:function(a,b,c){return c=c||" ",a.length<b?Utils.pad_right(a+c.slice(0,b-a.length),b,c):a},pad:function(a,b,c){return Utils.pad_left(a,b,c)},truncate:function(a,b,c){return c=c||"...",a.length>b&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g,d=/[\x09-\x10\x0D\u2028\u2029]/g;return a=a.replace(c,"."),b||(a=a.replace(d,".")),a},parse_escaped_chars:function(a){return a.replace(/(\\)?\\([nrtbf]|x[\da-f]{2})/g,function(a,b,c){if("\\"===b)return"\\"+c;switch(c[0]){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"f":return"\f";case"x":return Utils.chr(parseInt(c.substr(1),16))}})},expand_alph_range:function(a){for(var b=[],c=0;c<a.length;c++)if(c<a.length-2&&"-"===a[c+1]&&"\\"!==a[c]){for(var d=Utils.ord(a[c]),e=Utils.ord(a[c+2]),f=d;f<=e;f++)b.push(Utils.chr(f));c+=2}else c<a.length-2&&"\\"===a[c]&&"-"===a[c+1]?(b.push("-"),c++):b.push(a[c]);return b},hex_to_byte_array:function(a){if(!a)return[];a=a.replace(/\s+/g,"");for(var b=[],c=0;c<a.length;c+=2)b.push(parseInt(a.substr(c,2),16));return b},byte_array_to_hex:function(a){if(!a)return"";for(var b="",c=0;c<a.length;c++)b+=Utils.hex(a[c])+" ";return b.slice(0,b.length-1)},str_to_byte_array:function(a){for(var b,c=new Array(a.length),d=a.length;d--;)if(b=a.charCodeAt(d),c[d]=b,b>255)return Utils.str_to_utf8_byte_array(a);return c},str_to_utf8_byte_array:function(a){var b=CryptoJS.enc.Utf8.parse(a),c=Utils.word_array_to_byte_array(b);return a.length!==b.sigBytes&&(window.app.options.attempt_highlight=!1),c},str_to_charcode:function(a){for(var b=new Array(a.length),c=a.length;c--;)b[c]=a.charCodeAt(c);return b},byte_array_to_utf8:function(a){try{for(var b=[],c=0;c<a.length;c++)b[c>>>2]|=a[c]<<24-c%4*8;var d=new CryptoJS.lib.WordArray.init(b,a.length),e=CryptoJS.enc.Utf8.stringify(d);return e.length!==d.sigBytes&&(window.app.options.attempt_highlight=!1),e}catch(b){return Utils.byte_array_to_chars(a)}},byte_array_to_chars:function(a){if(!a)return"";for(var b="",c=0;c<a.length;)b+=String.fromCharCode(a[c++]);return b},word_array_to_byte_array:function(a){if(a.sigBytes<=0)return[];for(var b=a.words,c=[],d=0;d<a.sigBytes;d++)c.push(b[d>>>2]>>>24-d%4*8&255);return c},UNIC_WIN1251_MAP:{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,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,1027:129,8225:135,1046:198,8222:132,1047:199,1168:165,1048:200,1113:154,1049:201,1045:197,1050:202,1028:170,160:160,1040:192,1051:203,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,1053:205,176:176,177:177,1114:156,181:181,182:182,183:183,8221:148,187:187,1029:189,1056:208,1057:209,1058:210,8364:136,1112:188,1115:158,1059:211,1060:212,1030:178,1061:213,1062:214,1063:215,1116:157,1064:216,1065:217,1031:175,1066:218,1067:219,1068:220,1069:221,1070:222,1032:163,8226:149,1071:223,1072:224,8482:153,1073:225,8240:137,1118:162,1074:226,1110:179,8230:133,1075:227,1033:138,1076:228,1077:229,8211:150,1078:230,1119:159,1079:231,1042:194,1080:232,1034:140,1025:168,1081:233,1082:234,8212:151,1083:235,1169:180,1084:236,1052:204,1085:237,1035:142,1086:238,1087:239,1088:240,1089:241,1090:242,1036:141,1041:193,1091:243,1092:244,8224:134,1093:245,8470:185,1094:246,1054:206,1095:247,1096:248,8249:139,1097:249,1098:250,1044:196,1099:251,1111:191,1055:207,1100:252,1038:161,8220:147,1101:253,8250:155,1102:254,8216:145,1103:255,1043:195,1105:184,1039:143,1026:128,1106:144,8218:130,1107:131,8217:146,1108:186,1109:190},WIN1251_UNIC_MAP:{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,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,160:160,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,176:176,177:177,181:181,182:182,183:183,187:187,168:1025,128:1026,129:1027,170:1028,189:1029,178:1030,175:1031,163:1032,138:1033,140:1034,142:1035,141:1036,161:1038,143:1039,192:1040,193:1041,194:1042,195:1043,196:1044,197:1045,198:1046,199:1047,200:1048,201:1049,202:1050,203:1051,204:1052,205:1053,206:1054,207:1055,208:1056,209:1057,210:1058,211:1059,212:1060,213:1061,214:1062,215:1063,216:1064,217:1065,218:1066,219:1067,220:1068,221:1069,222:1070,223:1071,224:1072,225:1073,226:1074,227:1075,228:1076,229:1077,230:1078,231:1079,232:1080,233:1081,234:1082,235:1083,236:1084,237:1085,238:1086,239:1087,240:1088,241:1089,242:1090,243:1091,244:1092,245:1093,246:1094,247:1095,248:1096,249:1097,250:1098,251:1099,252:1100,253:1101,254:1102,255:1103,184:1105,144:1106,131:1107,186:1108,190:1109,179:1110,191:1111,188:1112,154:1113,156:1114,158:1115,157:1116,162:1118,159:1119,165:1168,180:1169,150:8211,151:8212,145:8216,146:8217,130:8218,147:8220,148:8221,132:8222,134:8224,135:8225,149:8226,133:8230,137:8240,139:8249,155:8250,136:8364,185:8470,153:8482},unicode_to_win1251:function(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(!(d in Utils.UNIC_WIN1251_MAP))throw"Character '"+a.charAt(c)+"' isn't supported by Windows-1251";b.push(String.fromCharCode(Utils.UNIC_WIN1251_MAP[d]))}return b.join("")},win1251_to_unicode:function(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(!(d in Utils.WIN1251_UNIC_MAP))throw"Character '"+a.charAt(c)+"' isn't supported by Windows-1251";b.push(String.fromCharCode(Utils.WIN1251_UNIC_MAP[d]))}return b.join("")},to_base64:function(a,b){if(!a)return"";"string"==typeof a&&(a=Utils.str_to_byte_array(a)),b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";for(var c,d,e,f,g,h,i,j="",k=0;k<a.length;)c=a[k++],d=a[k++],e=a[k++],f=c>>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,isNaN(d)?h=i=64:isNaN(e)&&(i=64),j+=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);return j},from_base64:function(a,b,c,d){if(c=c||"string",!a)return"string"===c?"":[];b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",void 0===d&&(d=!0);var e,f,g,h,i,j,k,l=[],m=0;if(d){var n=new RegExp("[^"+b.replace(/[\[\]\\\-^$]/g,"\\$&")+"]","g");a=a.replace(n,"")}for(;m<a.length;)h=b.indexOf(a.charAt(m++)),i=b.indexOf(a.charAt(m++)||"="),j=b.indexOf(a.charAt(m++)||"="),k=b.indexOf(a.charAt(m++)||"="),i=i===-1?64:i,j=j===-1?64:j,k=k===-1?64:k,e=h<<2|i>>4,f=(15&i)<<4|j>>2,g=(3&j)<<6|k,l.push(e),64!==j&&l.push(f),64!==k&&l.push(g);return"string"===c?Utils.byte_array_to_utf8(l):l},to_hex:function(a,b,c){if(!a)return"";b="string"==typeof b?b:" ",c=c||2;for(var d="",e=0;e<a.length;e++)d+=Utils.pad(a[e].toString(16),c)+b;return"0x"===b&&(d="0x"+d),"\\x"===b&&(d="\\x"+d),b.length?d.slice(0,-b.length):d},to_hex_fast:function(a){if(!a)return"";for(var b=[],c=0;c<a.length;c++)b.push((a[c]>>>4).toString(16)),b.push((15&a[c]).toString(16));return b.join("")},from_hex:function(a,b,c){if(b=b||(a.indexOf(" ")>=0?"Space":"None"),c=c||2,"None"!==b){var d=Utils.regex_rep[b];a=a.replace(d,"")}for(var e=[],f=0;f<a.length;f+=c)e.push(parseInt(a.substr(f,c),16));return e},parse_csv:function(a){for(var b,c=!1,d=!1,e="",f=[],g=[],h=0;h<a.length;h++)b=a[h],c?(e+=b,c=!1):"\\"===b?(e+=b,c=!0):'"'!==b||d?'"'===b&&d?d=!1:","!==b||d?"\n"!==b&&"\r"!==b||d?e+=b:(f.push(e),e="",g.push(f),f=[]):(f.push(e),e=""):d=!0;return f.length&&(f.push(e),g.push(f)),g},strip_html_tags:function(a,b){return b&&(a=a.replace(/<(script|style)[^>]*>.*<\/(script|style)>/gim,"")),a.replace(/<[^>\n]+>/g,"")},escape_html:function(a){return a.replace(/</g,"<").replace(/'/g,"'").replace(/"/g,""").replace(/&/g,"&")},fuzzy_time:function(a){return moment.duration(a,"milliseconds").humanize()},extend:function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a},char_rep:{Space:" ",Comma:",","Semi-colon":";",Colon:":","Line feed":"\n",CRLF:"\r\n","0x":"0x","\\x":"\\x","Nothing (separate chars)":"",None:""},regex_rep:{Space:/\s+/g,Comma:/,/g,"Semi-colon":/;/g,Colon:/:/g,"Line feed":/\n/g,CRLF:/\r\n/g,"0x":/0x/g,"\\x":/\\x/g},format:{Hex:CryptoJS.enc.Hex,Base64:CryptoJS.enc.Base64,UTF8:CryptoJS.enc.Utf8,UTF16:CryptoJS.enc.Utf16,UTF16LE:CryptoJS.enc.Utf16LE,UTF16BE:CryptoJS.enc.Utf16BE,Latin1:CryptoJS.enc.Latin1}};$.fn.selectRange=function(a,b){return b||(b=a),this.each(function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(a,b);else if(this.createTextRange){var c=this.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}})},Array.prototype.unique=function(){for(var a={},b=[],c=0,d=this.length;c<d;c++)a.hasOwnProperty(this[c])||(b.push(this[c]),a[this[c]]=1);return b},Array.prototype.max=function(){return Math.max.apply(null,this)},Array.prototype.min=function(){return Math.min.apply(null,this)},Array.prototype.sum=function(){return this.reduce(function(a,b){return a+b},0)},Array.prototype.equals=function(a){if(!a)return!1;var b=this.length;if(b!==a.length)return!1;for(;b--;)if(this[b]!==a[b])return!1;return!0},String.prototype.count=function(a){return this.split(a).length-1},CryptoJS.enc.Hex.parse=function(a){a=a.replace(/\s/g,"");for(var b=a.length,c=[],d=0;d<b;d+=2)c[d>>>3]|=parseInt(a.substr(d,2),16)<<24-d%8*4;return new CryptoJS.lib.WordArray.init(c,b/2)};var Base={DEFAULT_RADIX:36,run_to:function(a,b){if(!a)throw"Error: Input must be a number";var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return a.toString(c)},run_from:function(a,b){var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return parseInt(a.replace(/\s/g,""),c)}},Base64={ALPHABET:"A-Za-z0-9+/=",ALPHABET_OPTIONS:[{name:"Standard: A-Za-z0-9+/=",value:"A-Za-z0-9+/="},{name:"URL safe: A-Za-z0-9-_",value:"A-Za-z0-9-_"},{name:"Filename safe: A-Za-z0-9+-=",value:"A-Za-z0-9+\\-="},{name:"itoa64: ./0-9A-Za-z=",value:"./0-9A-Za-z="},{name:"XML: A-Za-z0-9_.",value:"A-Za-z0-9_."},{name:"y64: A-Za-z0-9._-",value:"A-Za-z0-9._-"},{name:"z64: 0-9a-zA-Z+/=",value:"0-9a-zA-Z+/="},{name:"Radix-64: 0-9A-Za-z+/=",value:"0-9A-Za-z+/="},{name:"Uuencoding: [space]-_",value:" -_"},{name:"Xxencoding: +-0-9A-Za-z",value:"+\\-0-9A-Za-z"},{name:"BinHex: !-,-0-689@A-NP-VX-Z[`a-fh-mp-r",value:"!-,-0-689@A-NP-VX-Z[`a-fh-mp-r"},{name:"ROT13: N-ZA-Mn-za-m0-9+/=",value:"N-ZA-Mn-za-m0-9+/="}],run_to:function(a,b){var c=b[0]||Base64.ALPHABET;return Utils.to_base64(a,c)},REMOVE_NON_ALPH_CHARS:!0,run_from:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1];return Utils.from_base64(a,c,"byte_array",d)},BASE32_ALPHABET:"A-Z2-7=",run_to_32:function(a,b){if(!a)return"";for(var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q="",r=0;r<a.length;)c=a[r++],d=a[r++],e=a[r++],f=a[r++],g=a[r++],h=c>>3,i=(7&c)<<2|d>>6,j=d>>1&31,k=(1&d)<<4|e>>4,l=(15&e)<<1|f>>7,m=f>>2&63,n=(3&f)<<3|g>>5,o=31&g,isNaN(d)?j=k=l=m=n=o=32:isNaN(e)?l=m=n=o=32:isNaN(f)?m=n=o=32:isNaN(g)&&(o=32),q+=p.charAt(h)+p.charAt(i)+p.charAt(j)+p.charAt(k)+p.charAt(l)+p.charAt(m)+p.charAt(n)+p.charAt(o);return q},run_from_32:function(a,b){if(!a)return[];var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q=b[0],r=[],s=0;if(q){var t=new RegExp("[^"+p.replace(/[\]\\\-^]/g,"\\$&")+"]","g");a=a.replace(t,"")}for(;s<a.length;)h=p.indexOf(a.charAt(s++)),i=p.indexOf(a.charAt(s++)||"="),j=p.indexOf(a.charAt(s++)||"="),k=p.indexOf(a.charAt(s++)||"="),l=p.indexOf(a.charAt(s++)||"="),m=p.indexOf(a.charAt(s++)||"="),n=p.indexOf(a.charAt(s++)||"="),o=p.indexOf(a.charAt(s++)||"="),c=h<<3|i>>2,d=(3&i)<<6|j<<1|k>>4,e=(15&k)<<4|l>>1,f=(1&l)<<7|m<<2|n>>3,g=(7&n)<<5|o,r.push(c),(i&!0||32!==j)&&r.push(d),(k&!0||32!==l)&&r.push(e),(l&!0||32!==m)&&r.push(f),(n&!0||32!==o)&&r.push(g);return r},SHOW_IN_BINARY:!1,OFFSETS_SHOW_VARIABLE:!0,run_offsets:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1],e=Utils.to_base64(a,c),f=Utils.to_base64([0].concat(a),c),g=Utils.to_base64([0,0].concat(a),c),h=e.indexOf("="),i=f.indexOf("="),j=g.indexOf("="),k="<script type='application/javascript'>$('[data-toggle=\"tooltip\"]').tooltip()<\/script>",l="",m="";return a.length<1?"Please enter a string.":(h%4===2?(l=e.slice(0,-3),e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c).slice(0,-2))+"'>"+l+"</span><span class='hlgreen'>"+e.substr(e.length-3,1)+"</span><span class='hlred'>"+e.substr(e.length-2)+"</span>"):h%4===3?(l=e.slice(0,-2),e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c).slice(0,-1))+"'>"+l+"</span><span class='hlgreen'>"+e.substr(e.length-2,1)+"</span><span class='hlred'>"+e.substr(e.length-1)+"</span>"):(l=e,e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c))+"'>"+l+"</span>"),d||(e=l),m="<span class='hlred'>"+f.substr(0,1)+"</span><span class='hlgreen'>"+f.substr(1,1)+"</span>",f=f.substr(2),i%4===2?(l=f.slice(0,-3),f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1,-2))+"'>"+l+"</span><span class='hlgreen'>"+f.substr(f.length-3,1)+"</span><span class='hlred'>"+f.substr(f.length-2)+"</span>"):i%4===3?(l=f.slice(0,-2),f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1,-1))+"'>"+l+"</span><span class='hlgreen'>"+f.substr(f.length-2,1)+"</span><span class='hlred'>"+f.substr(f.length-1)+"</span>"):(l=f,f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1))+"'>"+l+"</span>"),d||(f=l),m="<span class='hlred'>"+g.substr(0,2)+"</span><span class='hlgreen'>"+g.substr(2,1)+"</span>",g=g.substr(3),j%4===2?(l=g.slice(0,-3),g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2,-2))+"'>"+l+"</span><span class='hlgreen'>"+g.substr(g.length-3,1)+"</span><span class='hlred'>"+g.substr(g.length-2)+"</span>"):j%4===3?(l=g.slice(0,-2),g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2,-2))+"'>"+l+"</span><span class='hlgreen'>"+g.substr(g.length-2,1)+"</span><span class='hlred'>"+g.substr(g.length-1)+"</span>"):(l=g,g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2))+"'>"+l+"</span>"),d||(g=l),d?"Characters highlighted in <span class='hlgreen'>green</span> could change if the input is surrounded by more data.\nCharacters highlighted in <span class='hlred'>red</span> are for padding purposes only.\nUnhighlighted characters are <span data-toggle='tooltip' data-placement='top' title='Tooltip on left'>static</span>.\nHover over the static sections to see what they decode to on their own.\n\nOffset 0: "+e+"\nOffset 1: "+f+"\nOffset 2: "+g+k:e+"\n"+f+"\n"+g)},highlight_to:function(a,b){return a[0].start=Math.floor(a[0].start/3*4),a[0].end=Math.ceil(a[0].end/3*4),a},highlight_from:function(a,b){return a[0].start=Math.ceil(a[0].start/4*3),a[0].end=Math.floor(a[0].end/4*3),a}},BitwiseOp={_bit_op:function(a,b,c,d,e){b&&b.length||(b=[0]);for(var f=[],g=null,h=null,i=null,j=0;j<a.length;j++)if(h=b[j%b.length],i=a[j],g=!d||0!==i&&i!==h?c(i,h):i,f.push(g),"Standard"!==e&&(!d||0!==i&&i!==h))switch(e){case"Input differential":b[j%b.length]=g;break;case"Output differential":b[j%b.length]=i}return f},XOR_PRESERVE_NULLS:!1,XOR_SCHEME:["Standard","Input differential","Output differential"],KEY_FORMAT:["Hex","Base64","UTF8","UTF16","UTF16LE","UTF16BE","Latin1"],run_xor:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||""),d=b[1],e=b[2];return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._xor,e,d)},XOR_BRUTE_KEY_LENGTH:["1","2"],XOR_BRUTE_SAMPLE_LENGTH:100,XOR_BRUTE_SAMPLE_OFFSET:0,XOR_BRUTE_PRINT_KEY:!0,XOR_BRUTE_OUTPUT_HEX:!1,run_xor_brute:function(a,b){var c,d,e,f=parseInt(b[0],10),g=b[1],h=b[2],i=b[3],j=b[4],k=b[5],l=b[6],m=b[7],n="";a=a.slice(h,h+g),""!==k&&(c=new RegExp(k,"im"));for(var o=1,p=Math.pow(256,f);o<p;o++)d=BitwiseOp._bit_op(a,Utils.hex_to_byte_array(o.toString(16)),BitwiseOp._xor,i,j),e=Utils.byte_array_to_utf8(d),""!==k&&e.search(c)===-1||(l&&(n+="Key = "+Utils.hex(o,2*f)+": "),n+=m?Utils.byte_array_to_hex(d)+"\n":Utils.printable(e,!1)+"\n",l&&(n+="\n"));return n},run_not:function(a,b){return BitwiseOp._bit_op(a,null,BitwiseOp._not)},run_and:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._and)},run_or:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._or)},run_add:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._add)},run_sub:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._sub)},_xor:function(a,b){return a^b},_not:function(a,b){return 255&~a},_and:function(a,b){return a&b},_or:function(a,b){return a|b},_add:function(a,b){return(a+b)%256},_sub:function(a,b){var c=a-b;return c<0?256+c:c}},ByteRepr={DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF"],HEX_DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF","0x","\\x","None"],BIN_DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF","None"],run_to_hex:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return Utils.to_hex(a,c,2)},run_from_hex:function(a,b){var c=b[0]||"Space";return Utils.from_hex(a,c,2)},CHARCODE_BASE:16,run_to_charcode:function(a,b){var c,d=Utils.char_rep[b[0]||"Space"],e=b[1],f="",g=2;if(e<2||e>36)throw"Error: Base argument must be between 2 and 36";for(var h=0;h<a.length;h++)c=Utils.ord(a[h]),16===e?(g=c<256?2:c<65536?4:c<16777216?6:c<4294967296?8:2,g>2&&(app.options.attempt_highlight=!1),f+=Utils.hex(c,g)+d):(app.options.attempt_highlight=!1,f+=c.toString(e)+d);return f.slice(0,-d.length)},run_from_charcode:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d=b[1],e=a.split(c),f=0;if(d<2||d>36)throw"Error: Base argument must be between 2 and 36";if(16!==d&&(app.options.attempt_highlight=!1),1===e.length&&a.length>17)for(e=[],f=0;f<a.length;f+=2)e.push(a.slice(f,f+2));var g="";for(f=0;f<e.length;f++)g+=Utils.chr(parseInt(e[f],d));return Utils.str_to_byte_array(g)},highlight_to:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d="\r\n"===c?1:c.length;return a[0].start=a[0].start*(2+d),a[0].end=a[0].end*(2+d)-d,"0x"!==c&&"\\x"!==c||(a[0].start+=2,a[0].end+=2),a},highlight_from:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d="\r\n"===c?1:c.length,e=d+2;return"0x"!==c&&"\\x"!==c||(a[0].start>1?a[0].start-=2:a[0].start=0,a[0].end>1?a[0].end-=2:a[0].end=0),a[0].start=0===a[0].start?0:Math.round(a[0].start/e),a[0].end=0===a[0].end?0:Math.ceil(a[0].end/e),a},run_to_decimal:function(a,b){var c=Utils.char_rep[b[0]];return a.join(c)},run_from_decimal:function(a,b){var c=Utils.char_rep[b[0]],d=a.split(c),e=[];""===d[d.length-1]&&(d=d.slice(0,d.length-1));for(var f=0;f<d.length;f++)e[f]=parseInt(d[f],10);return e},run_to_binary:function(a,b){for(var c=Utils.char_rep[b[0]||"Space"],d="",e=8,f=0;f<a.length;f++)d+=Utils.pad(a[f].toString(2),e)+c;return c.length?d.slice(0,-c.length):d},run_from_binary:function(a,b){if("None"!==b[0]){var c=Utils.regex_rep[b[0]||"Space"];a=a.replace(c,"")}for(var d=[],e=8,f=0;f<a.length;f+=e)d.push(parseInt(a.substr(f,e),2));return d},highlight_to_binary:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return a[0].start=a[0].start*(8+c.length),a[0].end=a[0].end*(8+c.length)-c.length,a},highlight_from_binary:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return a[0].start=0===a[0].start?0:Math.floor(a[0].start/(8+c.length)),a[0].end=0===a[0].end?0:Math.ceil(a[0].end/(8+c.length)),a},HEX_CONTENT_CONVERT_WHICH:["Only special chars","Only special chars including spaces","All chars"],HEX_CONTENT_SPACES_BETWEEN_BYTES:!1,run_to_hex_content:function(a,b){var c=b[0],d=b[1];if("All chars"===c){var e="|"+Utils.to_hex(a)+"|";return d||(e=e.replace(/ /g,"")),e}for(var f,g="",h=!1,i="Only special chars including spaces"===c,j=0;j<a.length;j++)f=a[j],32===f&&i||f<48&&32!==f||f>57&&f<65||f>90&&f<97||f>122?(h?d&&(g+=" "):(g+="|",h=!0),g+=Utils.to_hex([f])):(h&&(g+="|",h=!1),g+=Utils.chr(a[j]));return h&&(g+="|"),g},run_from_hex_content:function(a,b){for(var c,d=/\|([a-f\d ]{2,})\|/gi,e=[],f=0;c=d.exec(a);){for(;f<c.index;)e.push(Utils.ord(a[f++]));var g=Utils.from_hex(c[1]);if(g)for(var h=0;h<g.length;)e.push(g[h++]);else for(;f<d.lastIndex;)e.push(Utils.ord(a[f++]));f=d.lastIndex}for(;f<a.length;)e.push(Utils.ord(a[f++]));return e}},CharEnc={IO_FORMAT:["UTF8","UTF16","UTF16LE","UTF16BE","Latin1","Windows-1251","Hex","Base64"],run:function(a,b){var c=b[0],d=b[1];return"Windows-1251"===c?(a=Utils.win1251_to_unicode(a),a=CryptoJS.enc.Utf8.parse(a)):a=Utils.format[c].parse(a),"Windows-1251"===d?(a=CryptoJS.enc.Utf8.stringify(a),Utils.unicode_to_win1251(a)):Utils.format[d].stringify(a)}},Checksum={run_fletcher16:function(a,b){for(var c=0,d=0,e=0;e<a.length;e++)c=(c+a[e])%255,d=(d+c)%255;return Utils.hex((d<<8|c)>>>0,4)},run_adler32:function(a,b){for(var c=65521,d=1,e=0,f=0;f<a.length;f++)d+=a[f],e+=d;return d%=c,e%=c,Utils.hex((e<<16|d)>>>0,8)},run_crc32:function(a,b){for(var c=window.crc_table||(window.crc_table=Checksum._gen_crc_table()),d=-1,e=0;e<a.length;e++)d=d>>>8^c[255&(d^a[e])];return Utils.hex((d^-1)>>>0)},run_tcp_ip:function(a,b){for(var c=0,d=0;d<a.length;d++)c+=d%2===0?a[d]<<8:a[d];return c=(c>>16)+(65535&c),Utils.hex(65535-c)},_gen_crc_table:function(){for(var a,b=[],c=0;c<256;c++){a=c;for(var d=0;d<8;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}},Cipher={IO_FORMAT1:["Hex","Base64","UTF8","UTF16","UTF16LE","UTF16BE","Latin1"],IO_FORMAT2:["UTF8","UTF16","UTF16LE","UTF16BE","Latin1","Hex","Base64"],IO_FORMAT3:["Hex","Base64","UTF16","UTF16LE","UTF16BE","Latin1"],IO_FORMAT4:["Latin1","UTF8","UTF16","UTF16LE","UTF16BE","Hex","Base64"],MODES:["CBC","CFB","CTR","OFB","ECB"],PADDING:["Pkcs7","Iso97971","AnsiX923","Iso10126","ZeroPadding","NoPadding"],RESULT_TYPE:["Show all","Ciphertext","Key","IV","Salt"],_enc:function(a,b,c){var d=Utils.format[c[0].option].parse(c[0].string||""),e=Utils.format[c[1].option].parse(c[1].string||""),f=Utils.format[c[2].option].parse(c[2].string||""),g=CryptoJS.mode[c[3]],h=CryptoJS.pad[c[4]],i=c[5].toLowerCase(),j=c[6];0===e.sigBytes&&(d=d.toString(CryptoJS.enc.Latin1));var k=a.encrypt(b,d,{salt:f.sigBytes>0&&f,iv:e.sigBytes>0?e:null,mode:g,padding:h}),l="";return"show all"===i?(l+="Key: "+k.key.toString(Utils.format[j]),l+="\nIV: "+k.iv.toString(Utils.format[j]),k.salt&&(l+="\nSalt: "+k.salt.toString(Utils.format[j])),l+="\n\nCiphertext: "+k.ciphertext.toString(Utils.format[j])):l=k[i].toString(Utils.format[j]),l},_dec:function(a,b,c){var d=Utils.format[c[0].option].parse(c[0].string||""),e=Utils.format[c[1].option].parse(c[1].string||""),f=Utils.format[c[2].option].parse(c[2].string||""),g=CryptoJS.mode[c[3]],h=CryptoJS.pad[c[4]],i=c[5],j=c[6];if(!b.length)return"No input";var k=Utils.format[i].parse(b);0===e.sigBytes&&(d=d.toString(CryptoJS.enc.Latin1));var l,m=a.decrypt({ciphertext:k,salt:f.sigBytes>0&&f},d,{iv:e.sigBytes>0?e:null,mode:g,padding:h});try{l=m.toString(Utils.format[j])}catch(a){l="Decrypt error: "+a.message}return l},run_aes_enc:function(a,b){return Cipher._enc(CryptoJS.AES,a,b)},run_aes_dec:function(a,b){return Cipher._dec(CryptoJS.AES,a,b)},run_des_enc:function(a,b){return Cipher._enc(CryptoJS.DES,a,b)},run_des_dec:function(a,b){return Cipher._dec(CryptoJS.DES,a,b)},run_triple_des_enc:function(a,b){return Cipher._enc(CryptoJS.TripleDES,a,b)},run_triple_des_dec:function(a,b){return Cipher._dec(CryptoJS.TripleDES,a,b)},run_rabbit_enc:function(a,b){return Cipher._enc(CryptoJS.Rabbit,a,b)},run_rabbit_dec:function(a,b){return Cipher._dec(CryptoJS.Rabbit,a,b)},BLOWFISH_MODES:["ECB","CBC","PCBC","CFB","OFB","CTR"],BLOWFISH_OUTPUT_TYPES:["Base64","Hex","String","Raw"],run_blowfish_enc:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string).toString(Utils.format.Latin1),d=b[1],e=b[2];if(0===c.length)return"Enter a key";var f=blowfish.encrypt(a,c,{outputType:1,cipherMode:Cipher.BLOWFISH_MODES.indexOf(d)}),g=CryptoJS.enc.Hex.parse(f);return g.toString(Utils.format[e])},run_blowfish_dec:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string).toString(Utils.format.Latin1),d=b[1],e=b[2];return 0===c.length?"Enter a key":(a=Utils.format[e].parse(a),blowfish.decrypt(a.toString(CryptoJS.enc.Base64),c,{outputType:0,cipherMode:Cipher.BLOWFISH_MODES.indexOf(d)}))},KDF_KEY_SIZE:256,KDF_ITERATIONS:1,run_pbkdf2:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.PBKDF2(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_evpkdf:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.EvpKDF(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_rc4:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=CryptoJS.RC4.encrypt(c,d);return e.ciphertext.toString(Utils.format[b[2]])},RC4DROP_BYTES:768,run_rc4drop:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=b[3],f=CryptoJS.RC4Drop.encrypt(c,d,{drop:e});return f.ciphertext.toString(Utils.format[b[2]])},run_vigenere_enc:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(c+d)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(c+d)%26].toUpperCase()):(h+=a[j],i++);return h},run_vigenere_dec:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(d-c+f.length)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(d+f.length-c)%26].toUpperCase()):(h+=a[j],i++);return h}};CryptoJS.kdf.OpenSSL.execute=function(a,b,c,d){ +void 0!==d&&null!==d||(d=CryptoJS.lib.WordArray.random(8));var e=CryptoJS.algo.EvpKDF.create({keySize:b+c}).compute(a,d),f=CryptoJS.lib.WordArray.create(e.words.slice(b),4*c);return e.sigBytes=4*b,CryptoJS.lib.CipherParams.create({key:e,iv:f,salt:d})};var Code={LANGUAGES:["default-code","default-markup","bash","bsh","c","cc","coffee","cpp","cs","csh","cv","cxx","cyc","htm","html","in.tag","java","javascript","js","json","m","mxml","perl","pl","pm","py","python","rb","rc","rs","ruby","rust","sh","uq.val","xhtml","xml","xsl"],LINE_NUMS:!1,run_syntax_highlight:function(a,b){var c=b[0],d=b[1];return"<code class='prettyprint'>"+prettyPrintOne(Utils.escape_html(a),c,d)+"</code>"},BEAUTIFY_INDENT:"\\t",run_xml_beautify:function(a,b){var c=b[0];return vkbeautify.xml(a,c)},run_json_beautify:function(a,b){var c=b[0];return a?vkbeautify.json(a,c):""},run_css_beautify:function(a,b){var c=b[0];return vkbeautify.css(a,c)},run_sql_beautify:function(a,b){var c=b[0];return vkbeautify.sql(a,c)},PRESERVE_COMMENTS:!1,run_xml_minify:function(a,b){var c=b[0];return vkbeautify.xmlmin(a,c)},run_json_minify:function(a,b){return a?vkbeautify.jsonmin(a):""},run_css_minify:function(a,b){var c=b[0];return vkbeautify.cssmin(a,c)},run_sql_minify:function(a,b){return vkbeautify.sqlmin(a)},run_generic_beautify:function(a,b){function c(a,b,c){return g[c]=b[0],a.substring(0,b.index)+"###preserved_token"+c+"###"+a.substring(b.index+b[0].length)}for(var d,e=a,f=0,g=[],h=/'([^'\\]|\\.)*'/g;d=h.exec(e);)e=c(e,d,f++),h.lastIndex=d.index;for(var i=/"([^"\\]|\\.)*"/g;d=i.exec(e);)e=c(e,d,f++),i.lastIndex=d.index;for(var j=/\/\/[^\n\r]*/g;d=j.exec(e);)e=c(e,d,f++),j.lastIndex=d.index;for(var k=/\/\*[\s\S]*?\*\//gm;d=k.exec(e);)e=c(e,d,f++),k.lastIndex=d.index;for(var l=/(^|\n)#[^\n\r#]+/g;d=l.exec(e);)e=c(e,d,f++),l.lastIndex=d.index;for(var m=/\/.*?[^\\]\/[gim]{0,3}/gi;d=m.exec(e);)e=c(e,d,f++),m.lastIndex=d.index;e=e.replace(/;/g,";\n"),e=e.replace(/{/g,"{\n"),e=e.replace(/}/g,"\n}\n"),e=e.replace(/\r/g,""),e=e.replace(/^\s+/g,""),e=e.replace(/\n\s+/g,"\n"),e=e.replace(/\s*$/g,""),e=e.replace(/\n{/g,"{");for(var n=0,o=0;n<e.length;){switch(e[n]){case"{":o++;break;case"\n":if(n+1>=e.length)break;"}"===e[n+1]&&o--;var p=o>=0?Array(4*o+1).join(" "):"";e=e.substring(0,n+1)+p+e.substring(n+1),o>0&&(n+=4*o)}n++}e=e.replace(/\s*([!<>=+-\/*]?)=\s*/g," $1= "),e=e.replace(/\s*<([=]?)\s*/g," <$1 "),e=e.replace(/\s*>([=]?)\s*/g," >$1 "),e=e.replace(/([^+])\+([^+=])/g,"$1 + $2"),e=e.replace(/([^-])-([^-=])/g,"$1 - $2"),e=e.replace(/([^*])\*([^*=])/g,"$1 * $2"),e=e.replace(/([^\/])\/([^\/=])/g,"$1 / $2"),e=e.replace(/\s*,\s*/g,", "),e=e.replace(/\s*{/g," {"),e=e.replace(/}\n/g,"}\n\n"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim,"$1 ($2)\n $3"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim,"$1 ($2) $3"),e=e.replace(/else\s*\n([^{])/gim,"else\n $1"),e=e.replace(/else\s+([^{])/gim,"else $1"),e=e.replace(/\s+;/g,";"),e=e.replace(/\{\s+\}/g,"{}"),e=e.replace(/\[\s+\]/g,"[]"),e=e.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi,"} $1");for(var q=/###preserved_token(\d+)###/g;d=q.exec(e);){var r=parseInt(d[1],10);e=e.substring(0,d.index)+g[r]+e.substring(d.index+d[0].length),q.lastIndex=d.index}return e},XPATH_INITIAL:"",XPATH_DELIMITER:"\\n",run_xpath:function(a,b){const c=b[0],d=b[1];var e;try{e=$.parseXML(a)}catch(a){return"Invalid input XML."}var f;try{f=xpath.evaluate(e,c)}catch(a){return"Invalid XPath. Details:\n"+a.message}const g=new XMLSerializer,h=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:return g.serializeToString(a);case Node.ATTRIBUTE_NODE:return a.value;case Node.COMMENT_NODE:return a.data;case Node.DOCUMENT_NODE:return g.serializeToString(a);default:throw new Error("Unknown Node Type: "+a.nodeType)}};return Object.keys(f).map(function(a){return f[a]}).slice(0,-1).map(h).join(d)},CSS_SELECTOR_INITIAL:"",CSS_QUERY_DELIMITER:"\\n",run_css_query:function(a,b){const c=b[0],d=b[1];var e;try{e=$.parseHTML(a)}catch(a){return"Invalid input HTML."}var f;try{f=$(e).find(c)}catch(a){return"Invalid CSS Selector. Details:\n"+a.message}const g=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:return a.outerHTML;case Node.ATTRIBUTE_NODE:return a.value;case Node.COMMENT_NODE:return a.data;case Node.TEXT_NODE:return a.wholeText;case Node.DOCUMENT_NODE:return a.outerHTML;default:throw new Error("Unknown Node Type: "+a.nodeType)}};return Array.apply(null,Array(f.length)).map(function(a,b){return f[b]}).map(g).join(d)}},Compress={COMPRESSION_TYPE:["Dynamic Huffman Coding","Fixed Huffman Coding","None (Store)"],INFLATE_BUFFER_TYPE:["Adaptive","Block"],COMPRESSION_METHOD:["Deflate","None (Store)"],OS:["MSDOS","Unix","Macintosh"],RAW_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.RawDeflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.RawDeflate.CompressionType.DYNAMIC,"None (Store)":Zlib.RawDeflate.CompressionType.NONE},run_raw_deflate:function(a,b){var c=new Zlib.RawDeflate(a,{compressionType:Compress.RAW_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},INFLATE_INDEX:0,INFLATE_BUFFER_SIZE:0,INFLATE_RESIZE:!1,INFLATE_VERIFY:!1,RAW_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.RawInflate.BufferType.ADAPTIVE,Block:Zlib.RawInflate.BufferType.BLOCK},run_raw_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.RawInflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.RAW_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]}),d=Array.prototype.slice.call(c.decompress());if(d.length>158&&93===d[0]&&93===d[5]){for(var e=!1,f=0;f<155;f+=5)93!==d[f]&&(e=!0);if(!e)throw"Error: Unable to inflate data"}return d},ZLIB_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.Deflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.Deflate.CompressionType.DYNAMIC,"None (Store)":Zlib.Deflate.CompressionType.NONE},run_zlib_deflate:function(a,b){var c=new Zlib.Deflate(a,{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},ZLIB_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.Inflate.BufferType.ADAPTIVE,Block:Zlib.Inflate.BufferType.BLOCK},run_zlib_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.Inflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.ZLIB_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]});return Array.prototype.slice.call(c.decompress())},GZIP_CHECKSUM:!1,run_gzip:function(a,b){var c=b[1],d=b[2],e={deflateOptions:{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[0]]},flags:{fhcrc:b[3]}};c.length&&(e.flags.fname=!0,e.filename=c),d.length&&(e.flags.fcommenct=!0,e.comment=d);var f=new Zlib.Gzip(a,e);return Array.prototype.slice.call(f.compress())},run_gunzip:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.Gunzip(a);return Array.prototype.slice.call(c.decompress())},PKZIP_FILENAME:"file.txt",ZIP_COMPRESSION_METHOD_LOOKUP:{Deflate:Zlib.Zip.CompressionMethod.DEFLATE,"None (Store)":Zlib.Zip.CompressionMethod.STORE},ZIP_OS_LOOKUP:{MSDOS:Zlib.Zip.OperatingSystem.MSDOS,Unix:Zlib.Zip.OperatingSystem.UNIX,Macintosh:Zlib.Zip.OperatingSystem.MACINTOSH},run_pkzip:function(a,b){var c=Utils.str_to_byte_array(b[2]),d={filename:Utils.str_to_byte_array(b[0]),comment:Utils.str_to_byte_array(b[1]),compressionMethod:Compress.ZIP_COMPRESSION_METHOD_LOOKUP[b[3]],os:Compress.ZIP_OS_LOOKUP[b[4]],deflateOption:{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[5]]}},e=new Zlib.Zip;return c.length&&e.setPassword(c),e.addFile(a,d),Array.prototype.slice.call(e.compress())},PKUNZIP_VERIFY:!1,run_pkunzip:function(a,b){var c={password:Utils.str_to_byte_array(b[0]),verify:b[1]},d="",e=new Zlib.Unzip(a,c),f=e.getFilenames(),g="<div style='padding: 5px;'>"+f.length+" file(s) found</div>\n";g+="<div class='panel-group' id='zip-accordion' role='tablist' aria-multiselectable='true'>",window.uzip=e;for(var h=0;h<f.length;h++)d=Utils.byte_array_to_utf8(e.decompress(f[h])),g+="<div class='panel panel-default'><div class='panel-heading' role='tab' id='heading"+h+"'><h4 class='panel-title'><a class='collapsed' role='button' data-toggle='collapse' data-parent='#zip-accordion' href='#collapse"+h+"' aria-expanded='true' aria-controls='collapse"+h+"'>"+f[h]+"<span class='pull-right'>"+d.length.toLocaleString()+" bytes</span></a></h4></div><div id='collapse"+h+"' class='panel-collapse collapse' role='tabpanel' aria-labelledby='heading"+h+"'><div class='panel-body'>"+Utils.escape_html(d)+"</div></div></div>";return g+"</div>"},run_bzip2_decompress:function(a,b){var c,d=new Uint8Array(a),e="";return c=bzip2.array(d),e=bzip2.simple(c)}},Convert={DISTANCE_UNITS:["[Metric]","Nanometres (nm)","Micrometres (\xb5m)","Millimetres (mm)","Centimetres (cm)","Metres (m)","Kilometers (km)","[/Metric]","[Imperial]","Thou (th)","Inches (in)","Feet (ft)","Yards (yd)","Chains (ch)","Furlongs (fur)","Miles (mi)","Leagues (lea)","[/Imperial]","[Maritime]","Fathoms (ftm)","Cables","Nautical miles","[/Maritime]","[Comparisons]","Cars (4m)","Buses (8.4m)","American football fields (91m)","Football pitches (105m)","[/Comparisons]","[Astronomical]","Earth-to-Moons","Earth's equators","Astronomical units (au)","Light-years (ly)","Parsecs (pc)","[/Astronomical]"],DISTANCE_FACTOR:{"Nanometres (nm)":1e-9,"Micrometres (\xb5m)":1e-6,"Millimetres (mm)":.001,"Centimetres (cm)":.01,"Metres (m)":1,"Kilometers (km)":1e3,"Thou (th)":254e-7,"Inches (in)":.0254,"Feet (ft)":.3048,"Yards (yd)":.9144,"Chains (ch)":20.1168,"Furlongs (fur)":201.168,"Miles (mi)":1609.344,"Leagues (lea)":4828.032,"Fathoms (ftm)":1.853184,Cables:185.3184,"Nautical miles":1853.184,"Cars (4m)":4,"Buses (8.4m)":8.4,"American football fields (91m)":91,"Football pitches (105m)":105,"Earth-to-Moons":38e7,"Earth's equators":40075016.686,"Astronomical units (au)":149597870700,"Light-years (ly)":9460730472580800,"Parsecs (pc)":30856776e9},run_distance:function(a,b){var c=b[0],d=b[1];return a*=Convert.DISTANCE_FACTOR[c],a/Convert.DISTANCE_FACTOR[d]},DATA_UNITS:["Bits (b)","Nibbles","Octets","Bytes (B)","[Binary bits (2^n)]","Kibibits (Kib)","Mebibits (Mib)","Gibibits (Gib)","Tebibits (Tib)","Pebibits (Pib)","Exbibits (Eib)","Zebibits (Zib)","Yobibits (Yib)","[/Binary bits (2^n)]","[Decimal bits (10^n)]","Decabits","Hectobits","Kilobits (kb)","Megabits (Mb)","Gigabits (Gb)","Terabits (Tb)","Petabits (Pb)","Exabits (Eb)","Zettabits (Zb)","Yottabits (Yb)","[/Decimal bits (10^n)]","[Binary bytes (8 x 2^n)]","Kibibytes (KiB)","Mebibytes (MiB)","Gibibytes (GiB)","Tebibytes (TiB)","Pebibytes (PiB)","Exbibytes (EiB)","Zebibytes (ZiB)","Yobibytes (YiB)","[/Binary bytes (8 x 2^n)]","[Decimal bytes (8 x 10^n)]","Kilobytes (KB)","Megabytes (MB)","Gigabytes (GB)","Terabytes (TB)","Petabytes (PB)","Exabytes (EB)","Zettabytes (ZB)","Yottabytes (YB)","[/Decimal bytes (8 x 10^n)]"],DATA_FACTOR:{"Bits (b)":1,Nibbles:4,Octets:8,"Bytes (B)":8,"Kibibits (Kib)":1024,"Mebibits (Mib)":1048576,"Gibibits (Gib)":1073741824,"Tebibits (Tib)":1099511627776,"Pebibits (Pib)":0x4000000000000,"Exbibits (Eib)":0x1000000000000000,"Zebibits (Zib)":0x400000000000000000,"Yobibits (Yib)":1.2089258196146292e24,Decabits:10,Hectobits:100,"Kilobits (Kb)":1e3,"Megabits (Mb)":1e6,"Gigabits (Gb)":1e9,"Terabits (Tb)":1e12,"Petabits (Pb)":1e15,"Exabits (Eb)":1e18,"Zettabits (Zb)":1e21,"Yottabits (Yb)":1e24,"Kibibytes (KiB)":8192,"Mebibytes (MiB)":8388608,"Gibibytes (GiB)":8589934592,"Tebibytes (TiB)":8796093022208,"Pebibytes (PiB)":9007199254740992,"Exbibytes (EiB)":0x8000000000000000,"Zebibytes (ZiB)":9.44473296573929e21,"Yobibytes (YiB)":9.671406556917033e24,"Kilobytes (KB)":8e3,"Megabytes (MB)":8e6,"Gigabytes (GB)":8e9,"Terabytes (TB)":8e12,"Petabytes (PB)":8e15,"Exabytes (EB)":8e18,"Zettabytes (ZB)":8e21,"Yottabytes (YB)":8e24},run_data_size:function(a,b){var c=b[0],d=b[1];return a*=Convert.DATA_FACTOR[c],a/Convert.DATA_FACTOR[d]},AREA_UNITS:["[Metric]","Square metre (sq m)","Square kilometre (sq km)","Centiare (ca)","Deciare (da)","Are (a)","Decare (daa)","Hectare (ha)","[/Metric]","[Imperial]","Square inch (sq in)","Square foot (sq ft)","Square yard (sq yd)","Square mile (sq mi)","Perch (sq per)","Rood (ro)","International acre (ac)","[/Imperial]","[US customary units]","US survey acre (ac)","US survey square mile (sq mi)","US survey township","[/US customary units]","[Nuclear physics]","Yoctobarn (yb)","Zeptobarn (zb)","Attobarn (ab)","Femtobarn (fb)","Picobarn (pb)","Nanobarn (nb)","Microbarn (\u03bcb)","Millibarn (mb)","Barn (b)","Kilobarn (kb)","Megabarn (Mb)","Outhouse","Shed","Planck area","[/Nuclear physics]","[Comparisons]","Washington D.C.","Isle of Wight","Wales","Texas","[/Comparisons]"],AREA_FACTOR:{"Square metre (sq m)":1,"Square kilometre (sq km)":1e6,"Centiare (ca)":1,"Deciare (da)":10,"Are (a)":100,"Decare (daa)":1e3,"Hectare (ha)":1e4,"Square inch (sq in)":64516e-8,"Square foot (sq ft)":.09290304,"Square yard (sq yd)":.83612736,"Square mile (sq mi)":2589988.110336,"Perch (sq per)":42.21,"Rood (ro)":1011,"International acre (ac)":4046.8564224,"US survey acre (ac)":4046.87261,"US survey square mile (sq mi)":2589998.470305239,"US survey township":93239944.9309886,"Yoctobarn (yb)":1e-52,"Zeptobarn (zb)":1e-49,"Attobarn (ab)":1e-46,"Femtobarn (fb)":1e-43,"Picobarn (pb)":1e-40,"Nanobarn (nb)":1e-37,"Microbarn (\u03bcb)":1e-34,"Millibarn (mb)":1e-31,"Barn (b)":1e-28,"Kilobarn (kb)":1e-25,"Megabarn (Mb)":1e-22,"Planck area":2.6e-70,Shed:1e-52,Outhouse:1e-34,"Washington D.C.":176119191.502848,"Isle of Wight":38e7,Wales:20779e6,Texas:696241e6},run_area:function(a,b){var c=b[0],d=b[1];return a*=Convert.AREA_FACTOR[c],a/Convert.AREA_FACTOR[d]},MASS_UNITS:["[Metric]","Yoctogram (yg)","Zeptogram (zg)","Attogram (ag)","Femtogram (fg)","Picogram (pg)","Nanogram (ng)","Microgram (\u03bcg)","Milligram (mg)","Centigram (cg)","Decigram (dg)","Gram (g)","Decagram (dag)","Hectogram (hg)","Kilogram (kg)","Megagram (Mg)","Tonne (t)","Gigagram (Gg)","Teragram (Tg)","Petagram (Pg)","Exagram (Eg)","Zettagram (Zg)","Yottagram (Yg)","[/Metric]","[Imperial Avoirdupois]","Grain (gr)","Dram (dr)","Ounce (oz)","Pound (lb)","Nail","Stone (st)","Quarter (gr)","Tod","US hundredweight (cwt)","Imperial hundredweight (cwt)","US ton (t)","Imperial ton (t)","[/Imperial Avoirdupois]","[Imperial Troy]","Grain (gr)","Pennyweight (dwt)","Troy dram (dr t)","Troy ounce (oz t)","Troy pound (lb t)","Mark","[/Imperial Troy]","[Archaic]","Wey","Wool wey","Suffolk wey","Wool sack","Coal sack","Load","Last","Flax or feather last","Gunpowder last","Picul","Rice last","[/Archaic]","[Comparisons]","Big Ben (14 tonnes)","Blue whale (180 tonnes)","International Space Station (417 tonnes)","Space Shuttle (2,041 tonnes)","RMS Titanic (52,000 tonnes)","Great Pyramid of Giza (6,000,000 tonnes)","Earth's oceans (1.4 yottagrams)","[/Comparisons]","[Astronomical]","A teaspoon of neutron star (5,500 million tonnes)","Lunar mass (ML)","Earth mass (M\u2295)","Jupiter mass (MJ)","Solar mass (M\u2609)","Sagittarius A* (7.5 x 10^36 kgs-ish)","Milky Way galaxy (1.2 x 10^42 kgs)","The observable universe (1.45 x 10^53 kgs)","[/Astronomical]"],MASS_FACTOR:{"Yoctogram (yg)":1e-24,"Zeptogram (zg)":1e-21,"Attogram (ag)":1e-18,"Femtogram (fg)":1e-15,"Picogram (pg)":1e-12,"Nanogram (ng)":1e-9,"Microgram (\u03bcg)":1e-6,"Milligram (mg)":.001,"Centigram (cg)":.01,"Decigram (dg)":.1,"Gram (g)":1,"Decagram (dag)":10,"Hectogram (hg)":100,"Kilogram (kg)":1e3,"Megagram (Mg)":1e6,"Tonne (t)":1e6,"Gigagram (Gg)":1e9,"Teragram (Tg)":1e12,"Petagram (Pg)":1e15,"Exagram (Eg)":1e18,"Zettagram (Zg)":1e21,"Yottagram (Yg)":1e24,"Grain (gr)":.06479891,"Dram (dr)":1.7718451953125,"Ounce (oz)":28.349523125,"Pound (lb)":453.59237,Nail:3175.14659,"Stone (st)":6350.29318,"Quarter (gr)":12700.58636,Tod:12700.58636,"US hundredweight (cwt)":45359.237,"Imperial hundredweight (cwt)":50802.34544,"US ton (t)":907184.74,"Imperial ton (t)":1016046.9088,"Pennyweight (dwt)":1.55517384,"Troy dram (dr t)":3.8879346,"Troy ounce (oz t)":31.1034768,"Troy pound (lb t)":373.2417216,Mark:248.8278144,Wey:76500,"Wool wey":101700,"Suffolk wey":161500,"Wool sack":153e3,"Coal sack":50802.34544,Load:918e3,Last:1836e3,"Flax or feather last":77e4,"Gunpowder last":109e4,Picul:60478.982,"Rice last":12e5,"Big Ben (14 tonnes)":14e6,"Blue whale (180 tonnes)":18e7,"International Space Station (417 tonnes)":417e6,"Space Shuttle (2,041 tonnes)":2041e6,"RMS Titanic (52,000 tonnes)":52e9,"Great Pyramid of Giza (6,000,000 tonnes)":6e12,"Earth's oceans (1.4 yottagrams)":1.4e24,"A teaspoon of neutron star (5,500 million tonnes)":55e14,"Lunar mass (ML)":7.342e25,"Earth mass (M\u2295)":5.97219e27,"Jupiter mass (MJ)":1.8981411476999997e30,"Solar mass (M\u2609)":1.98855e33,"Sagittarius A* (7.5 x 10^36 kgs-ish)":7.5e39,"Milky Way galaxy (1.2 x 10^42 kgs)":1.2e45,"The observable universe (1.45 x 10^53 kgs)":1.45e56},run_mass:function(a,b){var c=b[0],d=b[1];return a*=Convert.MASS_FACTOR[c],a/Convert.MASS_FACTOR[d]},SPEED_UNITS:["[Metric]","Metres per second (m/s)","Kilometres per hour (km/h)","[/Metric]","[Imperial]","Miles per hour (mph)","Knots (kn)","[/Imperial]","[Comparisons]","Human hair growth rate","Bamboo growth rate","World's fastest snail","Usain Bolt's top speed","Jet airliner cruising speed","Concorde","SR-71 Blackbird","Space Shuttle","International Space Station","[/Comparisons]","[Scientific]","Sound in standard atmosphere","Sound in water","Lunar escape velocity","Earth escape velocity","Earth's solar orbit","Solar system's Milky Way orbit","Milky Way relative to the cosmic microwave background","Solar escape velocity","Neutron star escape velocity (0.3c)","Light in a diamond (0.4136c)","Signal in an optical fibre (0.667c)","Light (c)","[/Scientific]"],SPEED_FACTOR:{"Metres per second (m/s)":1,"Kilometres per hour (km/h)":.2778,"Miles per hour (mph)":.44704,"Knots (kn)":.5144,"Human hair growth rate":4.8e-9,"Bamboo growth rate":14e-6,"World's fastest snail":.00275,"Usain Bolt's top speed":12.42,"Jet airliner cruising speed":250,Concorde:603,"SR-71 Blackbird":981,"Space Shuttle":1400,"International Space Station":7700,"Sound in standard atmosphere":340.3,"Sound in water":1500,"Lunar escape velocity":2375,"Earth escape velocity":11200,"Earth's solar orbit":29800,"Solar system's Milky Way orbit":2e5,"Milky Way relative to the cosmic microwave background":552e3,"Solar escape velocity":617700,"Neutron star escape velocity (0.3c)":1e8,"Light in a diamond (0.4136c)":124e6,"Signal in an optical fibre (0.667c)":2e8,"Light (c)":299792458},run_speed:function(a,b){var c=b[0],d=b[1];return a*=Convert.SPEED_FACTOR[c],a/Convert.SPEED_FACTOR[d]}},DateTime={UNITS:["Seconds (s)","Milliseconds (ms)","Microseconds (\u03bcs)","Nanoseconds (ns)"],run_from_unix_timestamp:function(a,b){var c,d=b[0];if(a=parseFloat(a),"Seconds (s)"===d)return c=moment.unix(a),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss")+" UTC";if("Milliseconds (ms)"===d)return c=moment(a),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";if("Microseconds (\u03bcs)"===d)return c=moment(a/1e3),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";if("Nanoseconds (ns)"===d)return c=moment(a/1e6),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";throw"Unrecognised unit"},run_to_unix_timestamp:function(a,b){var c=b[0],d=moment(a);if("Seconds (s)"===c)return d.unix();if("Milliseconds (ms)"===c)return d.valueOf();if("Microseconds (\u03bcs)"===c)return 1e3*d.valueOf();if("Nanoseconds (ns)"===c)return 1e6*d.valueOf();throw"Unrecognised unit"},DATETIME_FORMATS:[{name:"Standard date and time",value:"DD/MM/YYYY HH:mm:ss"},{name:"American-style date and time",value:"MM/DD/YYYY HH:mm:ss"},{name:"International date and time",value:"YYYY-MM-DD HH:mm:ss"},{name:"Verbose date and time",value:"dddd Do MMMM YYYY HH:mm:ss Z z"},{name:"UNIX timestamp (seconds)",value:"X"},{name:"UNIX timestamp offset (milliseconds)",value:"x"},{name:"Automatic",value:""}],INPUT_FORMAT_STRING:"DD/MM/YYYY HH:mm:ss",OUTPUT_FORMAT_STRING:"dddd Do MMMM YYYY HH:mm:ss Z z",TIMEZONES:["UTC"].concat(moment.tz.names()),run_translate_format:function(a,b){var c,d=b[1],e=b[2],f=b[3],g=b[4];try{if(c=moment.tz(a,d,e),!c||"Invalid date"===c.format())throw Error}catch(a){return"Invalid format.\n\n"+DateTime.FORMAT_EXAMPLES}return c.tz(g).format(f)},run_parse:function(a,b){var c,d=b[1],e=b[2],f="";try{if(c=moment.tz(a,d,e),!c||"Invalid date"===c.format())throw Error}catch(a){return"Invalid format.\n\n"+DateTime.FORMAT_EXAMPLES}return f+="Date: "+c.format("dddd Do MMMM YYYY")+"\nTime: "+c.format("HH:mm:ss")+"\nPeriod: "+c.format("A")+"\nTimezone: "+c.format("z")+"\nUTC offset: "+c.format("ZZ")+"\n\nDaylight Saving Time: "+c.isDST()+"\nLeap year: "+c.isLeapYear()+"\nDays in this month: "+c.daysInMonth()+"\n\nDay of year: "+c.dayOfYear()+"\nWeek number: "+c.weekYear()+"\nQuarter: "+c.quarter()},FORMAT_EXAMPLES:"Format string tokens:\n\n<table class='table table-striped table-hover table-condensed table-bordered' style='font-family: sans-serif'> <thead> <tr> <th>Category</th> <th>Token</th> <th>Output</th> </tr> </thead> <tbody> <tr> <td><b>Month</b></td> <td>M</td> <td>1 2 ... 11 12</td> </tr> <tr> <td></td> <td>Mo</td> <td>1st 2nd ... 11th 12th</td> </tr> <tr> <td></td> <td>MM</td> <td>01 02 ... 11 12</td> </tr> <tr> <td></td> <td>MMM</td> <td>Jan Feb ... Nov Dec</td> </tr> <tr> <td></td> <td>MMMM</td> <td>January February ... November December</td> </tr> <tr> <td><b>Quarter</b></td> <td>Q</td> <td>1 2 3 4</td> </tr> <tr> <td><b>Day of Month</b></td> <td>D</td> <td>1 2 ... 30 31</td> </tr> <tr> <td></td> <td>Do</td> <td>1st 2nd ... 30th 31st</td> </tr> <tr> <td></td> <td>DD</td> <td>01 02 ... 30 31</td> </tr> <tr> <td><b>Day of Year</b></td> <td>DDD</td> <td>1 2 ... 364 365</td> </tr> <tr> <td></td> <td>DDDo</td> <td>1st 2nd ... 364th 365th</td> </tr> <tr> <td></td> <td>DDDD</td> <td>001 002 ... 364 365</td> </tr> <tr> <td><b>Day of Week</b></td> <td>d</td> <td>0 1 ... 5 6</td> </tr> <tr> <td></td> <td>do</td> <td>0th 1st ... 5th 6th</td> </tr> <tr> <td></td> <td>dd</td> <td>Su Mo ... Fr Sa</td> </tr> <tr> <td></td> <td>ddd</td> <td>Sun Mon ... Fri Sat</td> </tr> <tr> <td></td> <td>dddd</td> <td>Sunday Monday ... Friday Saturday</td> </tr> <tr> <td><b>Day of Week (Locale)</b></td> <td>e</td> <td>0 1 ... 5 6</td> </tr> <tr> <td><b>Day of Week (ISO)</b></td> <td>E</td> <td>1 2 ... 6 7</td> </tr> <tr> <td><b>Week of Year</b></td> <td>w</td> <td>1 2 ... 52 53</td> </tr> <tr> <td></td> <td>wo</td> <td>1st 2nd ... 52nd 53rd</td> </tr> <tr> <td></td> <td>ww</td> <td>01 02 ... 52 53</td> </tr> <tr> <td><b>Week of Year (ISO)</b></td> <td>W</td> <td>1 2 ... 52 53</td> </tr> <tr> <td></td> <td>Wo</td> <td>1st 2nd ... 52nd 53rd</td> </tr> <tr> <td></td> <td>WW</td> <td>01 02 ... 52 53</td> </tr> <tr> <td><b>Year</b></td> <td>YY</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>YYYY</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>Week Year</b></td> <td>gg</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>gggg</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>Week Year (ISO)</b></td> <td>GG</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>GGGG</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>AM/PM</b></td> <td>A</td> <td>AM PM</td> </tr> <tr> <td></td> <td>a</td> <td>am pm</td> </tr> <tr> <td><b>Hour</b></td> <td>H</td> <td>0 1 ... 22 23</td> </tr> <tr> <td></td> <td>HH</td> <td>00 01 ... 22 23</td> </tr> <tr> <td></td> <td>h</td> <td>1 2 ... 11 12</td> </tr> <tr> <td></td> <td>hh</td> <td>01 02 ... 11 12</td> </tr> <tr> <td><b>Minute</b></td> <td>m</td> <td>0 1 ... 58 59</td> </tr> <tr> <td></td> <td>mm</td> <td>00 01 ... 58 59</td> </tr> <tr> <td><b>Second</b></td> <td>s</td> <td>0 1 ... 58 59</td> </tr> <tr> <td></td> <td>ss</td> <td>00 01 ... 58 59</td> </tr> <tr> <td><b>Fractional Second</b></td> <td>S</td> <td>0 1 ... 8 9</td> </tr> <tr> <td></td> <td>SS</td> <td>00 01 ... 98 99</td> </tr> <tr> <td></td> <td>SSS</td> <td>000 001 ... 998 999</td> </tr> <tr> <td></td> <td>SSSS ... SSSSSSSSS</td> <td>000[0..] 001[0..] ... 998[0..] 999[0..]</td> </tr> <tr> <td><b>Timezone</b></td> <td>z or zz</td> <td>EST CST ... MST PST</td> </tr> <tr> <td></td> <td>Z</td> <td>-07:00 -06:00 ... +06:00 +07:00</td> </tr> <tr> <td></td> <td>ZZ</td> <td>-0700 -0600 ... +0600 +0700</td> </tr> <tr> <td><b>Unix Timestamp</b></td> <td>X</td> <td>1360013296</td> </tr> <tr> <td><b>Unix Millisecond Timestamp</b></td> <td>x</td> <td>1360013296123</td> </tr> </tbody></table>"},Endian={DATA_FORMAT:["Hex","Raw"],WORD_LENGTH:4,PAD_INCOMPLETE_WORDS:!0,run_swap_endianness:function(a,b){var c=b[0],d=b[1],e=b[2],f=[],g=[],h=[],i=0,j=0;if(d<=0)return"Word length must be greater than 0";switch(c){case"Hex":f=Utils.from_hex(a);break;case"Raw":f=Utils.str_to_byte_array(a);break;default:f=a}for(i=0;i<f.length;i+=d){var k=f.slice(i,i+d);if(e&&k.length<d)for(j=k.length;j<d;j++)k.push(0);h.push(k)}for(i=0;i<h.length;i++)for(j=h[i].length;j--;)g.push(h[i][j]);switch(c){case"Hex":return Utils.to_hex(g);case"Raw":return Utils.byte_array_to_utf8(g);default:return g}}},Entropy={CHUNK_SIZE:1e3,run_entropy:function(a,b){var c=b[0],d="",e=Entropy._calc_entropy(a);d+="Shannon entropy: "+e+"\n<br><canvas id='chart-area'></canvas><br>\n- 0 represents no randomness (i.e. all the bytes in the data have the same value) whereas 8, the maximum, represents a completely random string.\n- Standard English text usually falls somewhere between 3.5 and 5.\n- Properly encrypted or compressed data of a reasonable length should have an entropy of over 7.5.\n\nThe following results show the entropy of chunks of the input data. Chunks with particularly high entropy could suggest encrypted or compressed sections.\n\n<br><script> var canvas = document.getElementById('chart-area'), parent_rect = canvas.parentNode.getBoundingClientRect(), entropy = "+e+", height = parent_rect.height * 0.25; canvas.width = parent_rect.width * 0.95; canvas.height = height > 150 ? 150 : height; CanvasComponents.draw_scale_bar(canvas, entropy, 8, [ { label: 'English text', min: 3.5, max: 5 },{ label: 'Encrypted/compressed', min: 7.5, max: 8 } ]); <\/script>";var f=0;if(0!==c)for(var g=0;g<a.length;g+=c)f=Entropy._calc_entropy(a.slice(g,g+c)),d+="Bytes "+g+" to "+(g+c)+": "+f+"\n";else d+="Chunk size cannot be 0.";return d},FREQ_ZEROS:!1,run_freq_distrib:function(a,b){if(!a.length)return"No data";for(var c=new Array(256),d=new Array(256),e=a.length,f=b[0],g=0;g<256;g++)c[g]=0;for(g=0;g<e;g++)c[a[g]]++;var h=0;for(g=0;g<256;g++)c[g]>0&&h++,d[g]=c[g]/e*100;var i="<canvas id='chart-area'></canvas><br>Total data length: "+e+"\nNumber of bytes represented: "+h+"\nNumber of bytes not represented: "+(256-h)+"\n\nByte Percentage\n<script> var canvas = document.getElementById('chart-area'), parent_rect = canvas.parentNode.getBoundingClientRect(), scores = "+JSON.stringify(d)+"; canvas.width = parent_rect.width * 0.95; canvas.height = parent_rect.height * 0.9; CanvasComponents.draw_bar_chart(canvas, scores, 'Byte', 'Frequency %', 16, 6); <\/script>";for(g=0;g<256;g++)(c[g]||f)&&(i+=" "+Utils.hex(g,2)+" ("+Utils.pad_right(d[g].toFixed(2).replace(".00","")+"%)",8)+Array(Math.ceil(d[g])+1).join("|")+"\n");return i},_calc_entropy:function(a){for(var b=[],c=a.unique(),d=Utils.byte_array_to_chars(a),e=0;e<c.length;e++)b.push(d.count(Utils.chr(c[e]))/a.length);var f,g=0;for(e=0;e<b.length;e++)f=b[e],g+=f*Math.log(f)/Math.log(2);return-g}},Extract={_search:function(a,b,c,d){for(var e,f="",g=0;e=b.exec(a);)c&&c.test(e[0])||(g++,f+=e[0]+"\n");return d&&(f="Total found: "+g+"\n\n"+f),f},MIN_STRING_LEN:3,DISPLAY_TOTAL:!1,run_strings:function(a,b){var c=b[0]||Extract.MIN_STRING_LEN,d=b[1],e="[A-Z\\d/\\-:.,_$%'\"()<>= !\\[\\]{}@]",f=new RegExp(e+"{"+c+",}","ig");return Extract._search(a,f,null,d)},INCLUDE_IPV4:!0,INCLUDE_IPV6:!1,REMOVE_LOCAL:!1,run_ip:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g="(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?",h="((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|(?![\\dA-F])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})",i="";if(c&&d?i=g+"|"+h:c?i=g:d&&(i=h),i){var j=new RegExp(i,"ig");if(e){var k="10\\..+",l="192\\.168\\..+",m="172\\.(?:1[6-9]|2\\d|3[01])\\..+",n="127\\..+",o=new RegExp("^(?:"+k+"|"+l+"|"+m+"|"+n+")");return Extract._search(a,j,o,f)}return Extract._search(a,j,null,f)}return""},run_email:function(a,b){var c=b[0],d=/\w[-.\w]*@[-\w]+(?:\.[-\w]+)*\.[A-Z]{2,4}/gi;return Extract._search(a,d,null,c)},run_mac:function(a,b){var c=b[0],d=/[A-F\d]{2}(?:[:-][A-F\d]{2}){5}/gi;return Extract._search(a,d,null,c)},run_urls:function(a,b){var c=b[0],d="[A-Z]+://",e="[-\\w]+(?:\\.\\w[-\\w]*)+",f=":\\d+",g="/[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]*";g+="(?:[.!,?]+[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]+)*";var h=new RegExp(d+e+"(?:"+f+")?(?:"+g+")?","ig");return Extract._search(a,h,null,c)},run_domains:function(a,b){var c=b[0],d="https?://",e="[-\\w\\.]+",f="\\.(?:com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+",g=new RegExp("(?:"+d+")?"+e+f,"ig");return Extract._search(a,g,null,c)},INCLUDE_WIN_PATH:!0,INCLUDE_UNIX_PATH:!0,run_file_paths:function(a,b){var c=b[0],d=b[1],e=b[2],f="[A-Z]:\\\\",g="[A-Z\\d][A-Z\\d\\- '_\\(\\)]{0,61}",h="[A-Z\\d]{1,6}",i=f+"(?:"+g+"\\\\?)*"+g+"(?:\\."+h+")?",j="(?:/[A-Z\\d.][A-Z\\d\\-.]{0,61})+",k="";if(c&&d?k=i+"|"+j:c?k=i:d&&(k=j),k){var l=new RegExp(k,"ig");return Extract._search(a,l,null,e)}return""},run_dates:function(a,b){var c=b[0],d="(?:19|20)\\d\\d[- /.](?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])",e="(?:0[1-9]|[12][0-9]|3[01])[- /.](?:0[1-9]|1[012])[- /.](?:19|20)\\d\\d",f="(?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])[- /.](?:19|20)\\d\\d",g=new RegExp(d+"|"+e+"|"+f,"ig");return Extract._search(a,g,null,c)},run_all_idents:function(a,b){var c="";return c+="IP addresses\n",c+=Extract.run_ip(a,[!0,!0,!1]),c+="\nEmail addresses\n",c+=Extract.run_email(a,[]),c+="\nMAC addresses\n",c+=Extract.run_mac(a,[]),c+="\nURLs\n",c+=Extract.run_urls(a,[]),c+="\nDomain names\n",c+=Extract.run_domains(a,[]),c+="\nFile paths\n",c+=Extract.run_file_paths(a,[!0,!0]),c+="\nDates\n",c+=Extract.run_dates(a,[])}},FileType={run_detect:function(a,b){var c=FileType._magic_type(a);if(c){ +var d="File extension: "+c.ext+"\nMIME type: "+c.mime;return c.desc&&c.desc.length&&(d+="\nDescription: "+c.desc),d}return"Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?"},IGNORE_COMMON_BYTE_SEQUENCES:!0,run_scan_for_embedded_files:function(a,b){for(var c,d="Scanning data for 'magic bytes' which may indicate embedded files. The following results may be false positives and should not be treat as reliable. Any suffiently long file is likely to contain these magic bytes coincidentally.\n",e=b[0],f=["ico","ttf",""],g=0,h=0,i=0;i<a.length;i++)if(c=FileType._magic_type(a.slice(i))){if(e&&f.indexOf(c.ext)>-1){h++;continue}g++,d+="\nOffset "+i+" (0x"+Utils.hex(i)+"):\n File extension: "+c.ext+"\n MIME type: "+c.mime+"\n",c.desc&&c.desc.length&&(d+=" Description: "+c.desc+"\n")}return 0===g&&(d+="\nNo embedded files were found."),h>0&&(d+="\n\n"+h,d+=1===h?" file type was detected that has a common byte sequence. This is likely to be a false positive.":" file types were detected that have common byte sequences. These are likely to be false positives.",d+=" Run this operation with the 'Ignore common byte sequences' option unchecked to see details."),d},_magic_type:function(a){return a&&a.length>1?255===a[0]&&216===a[1]&&255===a[2]?{ext:"jpg",mime:"image/jpeg"}:137===a[0]&&80===a[1]&&78===a[2]&&71===a[3]?{ext:"png",mime:"image/png"}:71===a[0]&&73===a[1]&&70===a[2]?{ext:"gif",mime:"image/gif"}:87===a[8]&&69===a[9]&&66===a[10]&&80===a[11]?{ext:"webp",mime:"image/webp"}:(73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3])&&67===a[8]&&82===a[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3]?{ext:"tif",mime:"image/tiff"}:66===a[0]&&77===a[1]?{ext:"bmp",mime:"image/bmp"}:73===a[0]&&73===a[1]&&188===a[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===a[0]&&66===a[1]&&80===a[2]&&83===a[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===a[0]&&75===a[1]&&3===a[2]&&4===a[3]&&109===a[30]&&105===a[31]&&109===a[32]&&101===a[33]&&116===a[34]&&121===a[35]&&112===a[36]&&101===a[37]&&97===a[38]&&112===a[39]&&112===a[40]&&108===a[41]&&105===a[42]&&99===a[43]&&97===a[44]&&116===a[45]&&105===a[46]&&111===a[47]&&110===a[48]&&47===a[49]&&101===a[50]&&112===a[51]&&117===a[52]&&98===a[53]&&43===a[54]&&122===a[55]&&105===a[56]&&112===a[57]?{ext:"epub",mime:"application/epub+zip"}:80!==a[0]||75!==a[1]||3!==a[2]&&5!==a[2]&&7!==a[2]||4!==a[3]&&6!==a[3]&&8!==a[3]?117===a[257]&&115===a[258]&&116===a[259]&&97===a[260]&&114===a[261]?{ext:"tar",mime:"application/x-tar"}:82!==a[0]||97!==a[1]||114!==a[2]||33!==a[3]||26!==a[4]||7!==a[5]||0!==a[6]&&1!==a[6]?31===a[0]&&139===a[1]&&8===a[2]?{ext:"gz",mime:"application/gzip"}:66===a[0]&&90===a[1]&&104===a[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===a[0]&&122===a[1]&&188===a[2]&&175===a[3]&&39===a[4]&&28===a[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===a[0]&&1===a[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===a[0]&&0===a[1]&&0===a[2]&&(24===a[3]||32===a[3])&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]||51===a[0]&&103===a[1]&&112===a[2]&&53===a[3]||0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&109===a[8]&&112===a[9]&&52===a[10]&&50===a[11]&&109===a[16]&&112===a[17]&&52===a[18]&&49===a[19]&&109===a[20]&&112===a[21]&&52===a[22]&&50===a[23]&&105===a[24]&&115===a[25]&&111===a[26]&&109===a[27]?{ext:"mp4",mime:"video/mp4"}:0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&86===a[10]?{ext:"m4v",mime:"video/x-m4v"}:77===a[0]&&84===a[1]&&104===a[2]&&100===a[3]?{ext:"mid",mime:"audio/midi"}:109===a[31]&&97===a[32]&&116===a[33]&&114===a[34]&&111===a[35]&&115===a[36]&&107===a[37]&&97===a[38]?{ext:"mkv",mime:"video/x-matroska"}:26===a[0]&&69===a[1]&&223===a[2]&&163===a[3]?{ext:"webm",mime:"video/webm"}:0===a[0]&&0===a[1]&&0===a[2]&&20===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]?{ext:"mov",mime:"video/quicktime"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&65===a[8]&&86===a[9]&&73===a[10]?{ext:"avi",mime:"video/x-msvideo"}:48===a[0]&&38===a[1]&&178===a[2]&&117===a[3]&&142===a[4]&&102===a[5]&&207===a[6]&&17===a[7]&&166===a[8]&&217===a[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===a[0]&&0===a[1]&&1===a[2]&&"b"===a[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===a[0]&&68===a[1]&&51===a[2]||255===a[0]&&251===a[1]?{ext:"mp3",mime:"audio/mpeg"}:102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&65===a[10]||77===a[0]&&52===a[1]&&65===a[2]&&32===a[3]?{ext:"m4a",mime:"audio/m4a"}:79===a[0]&&103===a[1]&&103===a[2]&&83===a[3]?{ext:"ogg",mime:"audio/ogg"}:102===a[0]&&76===a[1]&&97===a[2]&&67===a[3]?{ext:"flac",mime:"audio/x-flac"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&87===a[8]&&65===a[9]&&86===a[10]&&69===a[11]?{ext:"wav",mime:"audio/x-wav"}:35===a[0]&&33===a[1]&&65===a[2]&&77===a[3]&&82===a[4]&&10===a[5]?{ext:"amr",mime:"audio/amr"}:37===a[0]&&80===a[1]&&68===a[2]&&70===a[3]?{ext:"pdf",mime:"application/pdf"}:77===a[0]&&90===a[1]?{ext:"exe",mime:"application/x-msdownload"}:67!==a[0]&&70!==a[0]||87!==a[1]||83!==a[2]?123===a[0]&&92===a[1]&&114===a[2]&&116===a[3]&&102===a[4]?{ext:"rtf",mime:"application/rtf"}:119===a[0]&&79===a[1]&&70===a[2]&&70===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff",mime:"application/font-woff"}:119===a[0]&&79===a[1]&&70===a[2]&&50===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff2",mime:"application/font-woff"}:76===a[34]&&80===a[35]&&(2===a[8]&&0===a[9]&&1===a[10]||1===a[8]&&0===a[9]&&0===a[10]||2===a[8]&&0===a[9]&&2===a[10])?{ext:"eot",mime:"application/octet-stream"}:0===a[0]&&1===a[1]&&0===a[2]&&0===a[3]&&0===a[4]?{ext:"ttf",mime:"application/font-sfnt"}:79===a[0]&&84===a[1]&&84===a[2]&&79===a[3]&&0===a[4]?{ext:"otf",mime:"application/font-sfnt"}:0===a[0]&&0===a[1]&&1===a[2]&&0===a[3]?{ext:"ico",mime:"image/x-icon"}:70===a[0]&&76===a[1]&&86===a[2]&&1===a[3]?{ext:"flv",mime:"video/x-flv"}:37===a[0]&&33===a[1]?{ext:"ps",mime:"application/postscript"}:253===a[0]&&55===a[1]&&122===a[2]&&88===a[3]&&90===a[4]&&0===a[5]?{ext:"xz",mime:"application/x-xz"}:83===a[0]&&81===a[1]&&76===a[2]&&105===a[3]?{ext:"sqlite",mime:"application/x-sqlite3"}:31===a[0]&&157===a[1]||31===a[0]&&160===a[1]?{ext:"z, tar.z",mime:"application/x-gtar"}:127===a[0]&&69===a[1]&&76===a[2]&&70===a[3]?{ext:"none, axf, bin, elf, o, prx, puff, so",mime:"application/x-executable",desc:"Executable and Linkable Format file. No standard file extension."}:202===a[0]&&254===a[1]&&186===a[2]&&190===a[3]?{ext:"class",mime:"application/java-vm"}:239===a[0]&&187===a[1]&&191===a[2]?{ext:"txt",mime:"text/plain",desc:"UTF-8 encoded Unicode byte order mark detected, commonly but not exclusively seen in text files."}:255===a[0]&&254===a[1]&&0===a[2]&&0===a[3]?{ext:"",mime:"",desc:"Little-endian UTF-32 encoded Unicode byte order mark detected."}:255===a[0]&&254===a[1]?{ext:"",mime:"",desc:"Little-endian UTF-16 encoded Unicode byte order mark detected."}:67===a[32769]&&68===a[32770]&&48===a[32771]&&48===a[32772]&&49===a[32773]||67===a[34817]&&68===a[34818]&&48===a[34819]&&48===a[34820]&&49===a[34821]||67===a[36865]&&68===a[36866]&&48===a[36867]&&48===a[36868]&&49===a[36869]?{ext:"iso",mime:"application/octet-stream",desc:"ISO 9660 CD/DVD image file"}:208===a[0]&&207===a[1]&&17===a[2]&&224===a[3]&&161===a[4]&&177===a[5]&&26===a[6]&&225===a[7]?{ext:"doc, xls, ppt",mime:"application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint",desc:"Microsoft Office documents"}:100===a[0]&&101===a[1]&&120===a[2]&&10===a[3]&&48===a[4]&&51===a[5]&&53===a[6]&&0===a[7]?{ext:"dex",mime:"application/octet-stream",desc:"Dalvik Executable (Android)"}:75===a[0]&&68===a[1]&&77===a[2]?{ext:"vmdk",mime:"application/vmdk, application/x-virtualbox-vmdk"}:67===a[0]&&114===a[1]&&50===a[2]&&52===a[3]?{ext:"crx",mime:"application/crx",desc:"Google Chrome extension or packaged app"}:null:{ext:"swf",mime:"application/x-shockwave-flash"}:{ext:"rar",mime:"application/x-rar-compressed"}:{ext:"zip",mime:"application/zip"}:null}},HTML={CONVERT_ALL:!1,CONVERT_OPTIONS:["Named entities where possible","Numeric entities","Hex entities"],run_to_entity:function(a,b){for(var c=b[0],d="Numeric entities"===b[1],e="Hex entities"===b[1],f=Utils.str_to_charcode(a),g="",h=0;h<f.length;h++)g+=c&&d?"&#"+f[h]+";":c&&e?"&#x"+Utils.hex(f[h])+";":c?HTML._byte_to_entity[f[h]]||"&#"+f[h]+";":d?f[h]>255||HTML._byte_to_entity.hasOwnProperty(f[h])?"&#"+f[h]+";":Utils.chr(f[h]):e?f[h]>255||HTML._byte_to_entity.hasOwnProperty(f[h])?"&#x"+Utils.hex(f[h])+";":Utils.chr(f[h]):HTML._byte_to_entity[f[h]]||(f[h]>255?"&#"+f[h]+";":Utils.chr(f[h]));return g},run_from_entity:function(a,b){for(var c,d=/&(#?x?[a-zA-Z0-9]{1,8});/g,e="",f=0;c=d.exec(a);){for(;f<c.index;)e+=a[f++];var g=HTML._entity_to_byte[c[1]];if(g)e+=Utils.chr(g);else if(!g&&"#"===c[1][0]&&c[1].length>1&&/^#\d{1,5}$/.test(c[1])){var h=c[1].slice(1,c[1].length);e+=Utils.chr(parseInt(h,10))}else if(!g&&"#"===c[1][0]&&c[1].length>3&&/^#x[\dA-F]{2,8}$/i.test(c[1])){var i=c[1].slice(2,c[1].length);e+=Utils.chr(parseInt(i,16))}else for(;f<d.lastIndex;)e+=a[f++];f=d.lastIndex}for(;f<a.length;)e+=a[f++];return e},REMOVE_INDENTATION:!0,REMOVE_LINE_BREAKS:!0,run_strip_tags:function(a,b){var c=b[0],d=b[1];return a=Utils.strip_html_tags(a),c&&(a=a.replace(/\n[ \f\t]+/g,"\n")),d&&(a=a.replace(/^\s*\n/,"").replace(/(\n\s*){2,}/g,"\n")),a},run_parse_colour_code:function(a,b){var c=null,d=0,e=0,f=0,g=1;if(c=a.match(/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i))d=parseInt(c[1],16),e=parseInt(c[2],16),f=parseInt(c[3],16);else if(c=a.match(/rgba?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)(?:,\s?(\d(?:\.\d+)?))?\)/i))d=parseFloat(c[1]),e=parseFloat(c[2]),f=parseFloat(c[3]),g=c[4]?parseFloat(c[4]):1;else if(c=a.match(/hsla?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)%,\s?(\d{1,3}(?:\.\d+)?)%(?:,\s?(\d(?:\.\d+)?))?\)/i)){var h=parseFloat(c[1])/360,i=parseFloat(c[2])/100,j=parseFloat(c[3])/100,k=HTML._hsl_to_rgb(h,i,j);d=k[0],e=k[1],f=k[2],g=c[4]?parseFloat(c[4]):1}else if(c=a.match(/cmyk\((\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?)\)/i)){var l=parseFloat(c[1]),m=parseFloat(c[2]),n=parseFloat(c[3]),o=parseFloat(c[4]);d=Math.round(255*(1-l)*(1-o)),e=Math.round(255*(1-m)*(1-o)),f=Math.round(255*(1-n)*(1-o))}var p=HTML._rgb_to_hsl(d,e,f),q=Math.round(360*p[0]),r=Math.round(100*p[1]),s=Math.round(100*p[2]),t=1-Math.max(d/255,e/255,f/255),u=(1-d/255-t)/(1-t),c=(1-e/255-t)/(1-t),v=(1-f/255-t)/(1-t);u=isNaN(u)?"0":u.toFixed(2),c=isNaN(c)?"0":c.toFixed(2),v=isNaN(v)?"0":v.toFixed(2),t=t.toFixed(2);var w="#"+Utils.pad_left(Math.round(d).toString(16),2)+Utils.pad_left(Math.round(e).toString(16),2)+Utils.pad_left(Math.round(f).toString(16),2),x="rgb("+d+", "+e+", "+f+")",y="rgba("+d+", "+e+", "+f+", "+g+")",z="hsl("+q+", "+r+"%, "+s+"%)",A="hsla("+q+", "+r+"%, "+s+"%, "+g+")",B="cmyk("+u+", "+c+", "+v+", "+t+")";return"<div id='colorpicker' style='display: inline-block'></div>Hex: "+w+"\nRGB: "+x+"\nRGBA: "+y+"\nHSL: "+z+"\nHSLA: "+A+"\nCMYK: "+B+"<script> $('#colorpicker').colorpicker({ format: 'rgba', color: '"+y+"', container: true, inline: true, }).on('changeColor', function(e) { var color = e.color.toRGB(); document.getElementById('input-text').value = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + color.a + ')'; window.app.auto_bake(); }); <\/script>"},_hsl_to_rgb:function(a,b,c){var d,e,f;if(0===b)d=e=f=c;else{var g=function(a,b,c){return c<0&&(c+=1),c>1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},h=c<.5?c*(1+b):c+b-c*b,i=2*c-h;d=g(i,h,a+1/3),e=g(i,h,a),f=g(i,h,a-1/3)}return[Math.round(255*d),Math.round(255*e),Math.round(255*f)]},_rgb_to_hsl:function(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f===g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(b<c?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return[d,e,h]},_byte_to_entity:{34:""",38:"&",39:"'",60:"<",62:">",160:" ",161:"¡",162:"¢",163:"£",164:"¤",165:"¥",166:"¦",167:"§",168:"¨",169:"©",170:"ª",171:"«",172:"¬",173:"­",174:"®",175:"¯",176:"°",177:"±",178:"²",179:"³",180:"´",181:"µ",182:"¶",183:"·",184:"¸",185:"¹",186:"º",187:"»",188:"¼",189:"½",190:"¾",191:"¿",192:"À",193:"Á",194:"Â",195:"Ã",196:"Ä",197:"Å",198:"Æ",199:"Ç",200:"È",201:"É",202:"Ê",203:"Ë",204:"Ì",205:"Í",206:"Î",207:"Ï",208:"Ð",209:"Ñ",210:"Ò",211:"Ó",212:"Ô",213:"Õ",214:"Ö",215:"×",216:"Ø",217:"Ù",218:"Ú",219:"Û",220:"Ü",221:"Ý",222:"Þ",223:"ß",224:"à",225:"á",226:"â",227:"ã",228:"ä",229:"å",230:"æ",231:"ç",232:"è",233:"é",234:"ê",235:"ë",236:"ì",237:"í",238:"î",239:"ï",240:"ð",241:"ñ",242:"ò",243:"ó",244:"ô",245:"õ",246:"ö",247:"÷",248:"ø",249:"ù",250:"ú",251:"û",252:"ü",253:"ý",254:"þ",255:"ÿ",338:"Œ",339:"œ",352:"Š",353:"š",376:"Ÿ",402:"ƒ",710:"ˆ",732:"˜",913:"Α",914:"Β",915:"Γ",916:"Δ",917:"Ε",918:"Ζ",919:"Η",920:"Θ",921:"Ι",922:"Κ",923:"Λ",924:"Μ",925:"Ν",926:"Ξ",927:"Ο",928:"Π",929:"Ρ",931:"Σ",932:"Τ",933:"Υ",934:"Φ",935:"Χ",936:"Ψ",937:"Ω",945:"α",946:"β",947:"γ",948:"δ",949:"ε",950:"ζ",951:"η",952:"θ",953:"ι",954:"κ",955:"λ",956:"μ",957:"ν",958:"ξ",959:"ο",960:"π",961:"ρ",962:"ς",963:"σ",964:"τ",965:"υ",966:"φ",967:"χ",968:"ψ",969:"ω",977:"ϑ",978:"ϒ",982:"ϖ",8194:" ",8195:" ",8201:" ",8204:"‌",8205:"‍",8206:"‎",8207:"‏",8211:"–",8212:"—",8216:"‘",8217:"’",8218:"‚",8220:"“",8221:"”",8222:"„",8224:"†",8225:"‡",8226:"•",8230:"…",8240:"‰",8242:"′",8243:"″",8249:"‹",8250:"›",8254:"‾",8260:"⁄",8364:"€",8465:"ℑ",8472:"℘",8476:"ℜ",8482:"™",8501:"ℵ",8592:"←",8593:"↑",8594:"→",8595:"↓",8596:"↔",8629:"↵",8656:"⇐",8657:"⇑",8658:"⇒",8659:"⇓",8660:"⇔",8704:"∀",8706:"∂",8707:"∃",8709:"∅",8711:"∇",8712:"∈",8713:"∉",8715:"∋",8719:"∏",8721:"∑",8722:"−",8727:"∗",8730:"√",8733:"∝",8734:"∞",8736:"∠",8743:"∧",8744:"∨",8745:"∩",8746:"∪",8747:"∫",8756:"∴",8764:"∼",8773:"≅",8776:"≈",8800:"≠",8801:"≡",8804:"≤",8805:"≥",8834:"⊂",8835:"⊃",8836:"⊄",8838:"⊆",8839:"⊇",8853:"⊕",8855:"⊗",8869:"⊥",8901:"⋅",8942:"⋮",8968:"⌈",8969:"⌉",8970:"⌊",8971:"⌋",9001:"⟨",9002:"⟩",9674:"◊",9824:"♠",9827:"♣",9829:"♥",9830:"♦"},_entity_to_byte:{quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,vellip:8942,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830}},HTTP={run_strip_headers:function(a,b){var c=a.indexOf("\r\n\r\n")+(c<0)?a.indexOf("\n\n")+2:c+4;return c<2?a:a.slice(c,a.length)},run_parse_user_agent:function(a,b){var c=UAS_parser.parse(a);return"Type: "+c.type+"\nFamily: "+c.uaFamily+"\nName: "+c.uaName+"\nURL: "+c.uaUrl+"\nCompany: "+c.uaCompany+"\nCompany URL: "+c.uaCompanyUrl+"\n\nOS Family: "+c.osFamily+"\nOS Name: "+c.osName+"\nOS URL: "+c.osUrl+"\nOS Company: "+c.osCompany+"\nOS Company URL: "+c.osCompanyUrl+"\nDevice Type: "+c.deviceType+"\n"}},Hash={run_md5:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.MD5(a).toString(CryptoJS.enc.Hex)},run_sha1:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA1(a).toString(CryptoJS.enc.Hex)},run_sha224:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA224(a).toString(CryptoJS.enc.Hex)},run_sha256:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA256(a).toString(CryptoJS.enc.Hex)},run_sha384:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA384(a).toString(CryptoJS.enc.Hex)},run_sha512:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA512(a).toString(CryptoJS.enc.Hex)},SHA3_LENGTH:["512","384","256","224"],run_sha3:function(a,b){a=CryptoJS.enc.Latin1.parse(a);var c=b[0],d={outputLength:parseInt(c,10)};return CryptoJS.SHA3(a,d).toString(CryptoJS.enc.Hex)},run_ripemd160:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.RIPEMD160(a).toString(CryptoJS.enc.Hex)},HMAC_FUNCTIONS:["MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160"],run_hmac:function(a,b){var c=b[1];a=CryptoJS.enc.Latin1.parse(a);var d={MD5:CryptoJS.HmacMD5(a,b[0]),SHA1:CryptoJS.HmacSHA1(a,b[0]),SHA224:CryptoJS.HmacSHA224(a,b[0]),SHA256:CryptoJS.HmacSHA256(a,b[0]),SHA384:CryptoJS.HmacSHA384(a,b[0]),SHA512:CryptoJS.HmacSHA512(a,b[0]),SHA3:CryptoJS.HmacSHA3(a,b[0]),"RIPEMD-160":CryptoJS.HmacRIPEMD160(a,b[0])};return d[c].toString(CryptoJS.enc.Hex)},run_all:function(a,b){var c=Utils.str_to_byte_array(a),d="MD5: "+Hash.run_md5(a,[])+"\nSHA1: "+Hash.run_sha1(a,[])+"\nSHA2 224: "+Hash.run_sha224(a,[])+"\nSHA2 256: "+Hash.run_sha256(a,[])+"\nSHA2 384: "+Hash.run_sha384(a,[])+"\nSHA2 512: "+Hash.run_sha512(a,[])+"\nSHA3 224: "+Hash.run_sha3(a,["224"])+"\nSHA3 256: "+Hash.run_sha3(a,["256"])+"\nSHA3 384: "+Hash.run_sha3(a,["384"])+"\nSHA3 512: "+Hash.run_sha3(a,["512"])+"\nRIPEMD-160: "+Hash.run_ripemd160(a,[])+"\n\nChecksums:\nFletcher-16: "+Checksum.run_fletcher16(c,[])+"\nAdler-32: "+Checksum.run_adler32(c,[])+"\nCRC-32: "+Checksum.run_crc32(c,[]);return d},run_analyse:function(a,b){a=a.replace(/\s/g,"");var c="",d=a.length/2,e=8*d,f=[];if(!/^[a-f0-9]+$/i.test(a))return"Invalid hash";switch(c+="Hash length: "+a.length+"\nByte length: "+d+"\nBit length: "+e+"\n\nBased on the length, this hash could have been generated by one of the following hashing functions:\n",e){case 4:f=["Fletcher-4","Luhn algorithm","Verhoeff algorithm"];break;case 8:f=["Fletcher-8"];break;case 16:f=["BSD checksum","CRC-16","SYSV checksum","Fletcher-16"];break;case 32:f=["CRC-32","Fletcher-32","Adler-32"];break;case 64:f=["CRC-64","RIPEMD-64","SipHash"];break;case 128:f=["MD5","MD4","MD2","HAVAL-128","RIPEMD-128","Snefru","Tiger-128"];break;case 160:f=["SHA-1","SHA-0","FSB-160","HAS-160","HAVAL-160","RIPEMD-160","Tiger-160"];break;case 192:f=["Tiger","HAVAL-192"];break;case 224:f=["SHA-224","SHA3-224","ECOH-224","FSB-224","HAVAL-224"];break;case 256:f=["SHA-256","SHA3-256","BLAKE-256","ECOH-256","FSB-256","GOST","Gr\xf8stl-256","HAVAL-256","PANAMA","RIPEMD-256","Snefru"];break;case 320:f=["RIPEMD-320"];break;case 384:f=["SHA-384","SHA3-384","ECOH-384","FSB-384"];break;case 512:f=["SHA-512","SHA3-512","BLAKE-512","ECOH-512","FSB-512","Gr\xf8stl-512","JH","MD6","Spectral Hash","SWIFFT","Whirlpool"];break;case 1024:f=["Fowler-Noll-Vo"];break;default:f=["Unknown"]}return c+f.join("\n")}},Hexdump={WIDTH:16,UPPER_CASE:!1,INCLUDE_FINAL_LENGTH:!1,run_to:function(a,b){for(var c=b[0]||Hexdump.WIDTH,d=b[1],e=b[2],f="",g=2,h=0;h<a.length;h+=c){for(var i=a.slice(h,h+c),j="",k=0;k<i.length;k++)j+=Utils.hex(i[k],g)+" ";var l=Utils.hex(h,8);d&&(j=j.toUpperCase(),l=l.toUpperCase()),f+=l+" "+Utils.pad_right(j,c*(g+1))+" |"+Utils.pad_right(Utils.printable(Utils.byte_array_to_chars(i)),i.length)+"|\n",e&&h+i.length===a.length&&(f+=Utils.hex(h+i.length,8)+"\n")}return f.slice(0,-1)},run_from:function(a,b){for(var c,d,e=[],f=/^\s*(?:[\dA-F]{4,16}:?)?\s*((?:[\dA-F]{2}\s){1,8}(?:\s|[\dA-F]{2}-)(?:[\dA-F]{2}\s){1,8}|(?:[\dA-F]{2}\s|[\dA-F]{4}\s)+)/gim;c=f.exec(a);){d=Utils.from_hex(c[1].replace(/-/g," "));for(var g=0;g<d.length;g++)e.push(d[g])}var h=a.indexOf("\n"),i=(h-13)/4;return Math.floor(i)===i&&a.indexOf("\r")===-1&&e.indexOf(13)===-1||(app.options.attempt_highlight=!1),e},highlight_to:function(a,b){var c=b[0]||16,d=14+4*c,e=Math.floor(a[0].start/c),f=a[0].start%c,g=0,h=0;a[0].start=e*d+10+3*f,e=Math.floor(a[0].end/c),f=a[0].end%c,0===f&&(e--,f=c),a[0].end=e*d+10+3*f-1;var i=Math.floor(a[0].start/d),j=Math.floor(a[0].end/d);if(i===j)a.push(a[0]);else for(g=a[0].start,h=(i+1)*d-c-5,a.push({start:g,end:h});h<a[0].end;)i++,g=i*d+10,h=(i+1)*d-c-5,h>a[0].end&&(h=a[0].end),a.push({start:g,end:h});var k=a.length,l=0;g=0,h=0;for(var m=1;m<k;m++)l=Math.floor(a[m].start/d),g=(a[m].start-l*d-10)/3+(d-c-2)+l*d,h=(a[m].end+1-l*d-10)/3+(d-c-2)+l*d,a.push({start:g,end:h});return a},highlight_from:function(a,b){var c=b[0]||16,d=14+4*c,e=Math.floor(a[0].start/d),f=a[0].start%d;return f<10?a[0].start=e*c:f>10+3*c?a[0].start=(e+1)*c:a[0].start=e*c+Math.floor((f-10)/3),e=Math.floor(a[0].end/d),f=a[0].end%d,f<10?a[0].end=e*c:f>10+3*c?a[0].end=(e+1)*c:a[0].end=e*c+Math.ceil((f-10)/3),a}},IP={INCLUDE_NETWORK_INFO:!0,ENUMERATE_ADDRESSES:!0,ALLOW_LARGE_LIST:!1,run_parse_ip_range:function(a,b){var c,d=b[0],e=b[1],f=b[2],g=/^\s*((?:\d{1,3}\.){3}\d{1,3})\/(\d\d?)\s*$/,h=/^\s*((?:\d{1,3}\.){3}\d{1,3})\s*-\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/,i=/^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\/(\d\d?\d?)\s*$/i,j=/^\s*(((?=.*::)(?!.*::[^-]+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*-\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\17)::|:\b|(?![\dA-F])))|(?!\16\17)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i;return(c=g.exec(a))?IP._ipv4_cidr_range(c,d,e,f):(c=h.exec(a))?IP._ipv4_hyphenated_range(c,d,e,f):(c=i.exec(a))?IP._ipv6_cidr_range(c,d):(c=j.exec(a))?IP._ipv6_hyphenated_range(c,d):"Invalid input.\n\nEnter either a CIDR range (e.g. 10.0.0.0/24) or a hyphenated range (e.g. 10.0.0.0 - 10.0.1.0). IPv6 also supported."},IPv4_REGEX:/^\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/,IPv6_REGEX:/^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i,run_parse_ipv6:function(a,b){var c,d="";if(!(c=IP.IPv6_REGEX.exec(a)))return"Invalid IPv6 address";var e=IP._str_to_ipv6(c[1]),f=IP._ipv6_to_str(e),g=IP._ipv6_to_str(e,!0);if(d+="Longhand: "+f+"\nShorthand: "+g+"\n","::"===g)d+="\nUnspecified address corresponding to 0.0.0.0/32 in IPv4.",d+="\nUnspecified address range: ::/128";else if("::1"===g)d+="\nLoopback address to the local host corresponding to 127.0.0.1/8 in IPv4.",d+="\nLoopback addresses range: ::1/128";else if(0===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&65535===e[5])d+="\nIPv4-mapped IPv6 address detected. IPv6 clients will be handled natively by default, and IPv4 clients appear as IPv6 clients at their IPv4-mapped IPv6 address.",d+="\nMapped IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\nIPv4-mapped IPv6 addresses range: ::ffff:0:0/96";else if(0===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&65535===e[4]&&0===e[5])d+="\nIPv4-translated address detected. Used by Stateless IP/ICMP Translation (SIIT). See RFCs 6145 and 6052 for more details.",d+="\nTranslated IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\nIPv4-translated addresses range: ::ffff:0:0:0/96";else if(256===e[0])d+="\nDiscard prefix detected. This is used when forwarding traffic to a sinkhole router to mitigate the effects of a denial-of-service attack. See RFC 6666 for more details.",d+="\nDiscard range: 100::/64";else if(100===e[0]&&65435===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&0===e[5])d+="\n'Well-Known' prefix for IPv4/IPv6 translation detected. See RFC 6052 for more details.",d+="\nTranslated IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\n'Well-Known prefix range: 64:ff9b::/96";else if(8193===e[0]&&0===e[1]){d+="\nTeredo tunneling IPv6 address detected\n";var h=(e[2]<<16)+e[3],i=65535&~e[5],j=~((e[6]<<16)+e[7]),k=e[4]>>>15&1,l=e[4]>>>14&1,m=e[4]>>>10&15,n=e[4]>>>8&3,o=255&e[4];d+="\nServer IPv4 address: "+IP._ipv4_to_str(h)+"\nClient IPv4 address: "+IP._ipv4_to_str(j)+"\nClient UDP port: "+i+"\nFlags:\n\tCone: "+k,d+=k?" (Client is behind a cone NAT)":" (Client is not behind a cone NAT)",d+="\n\tR: "+l,l&&(d+=" Error: This flag should be set to 0. See RFC 5991 and RFC 4380."),d+="\n\tRandom1: "+Utils.bin(m,4)+"\n\tUG: "+Utils.bin(n,2),n&&(d+=" Error: This flag should be set to 00. See RFC 4380."),d+="\n\tRandom2: "+Utils.bin(o,8),d+=!l&&!n&&m&&o?"\n\nThis is a valid Teredo address which complies with RFC 4380 and RFC 5991.":l||n?"\n\nThis is an invalid Teredo address.":"\n\nThis is a valid Teredo address which complies with RFC 4380, however it does not comply with RFC 5991 (Teredo Security Updates) as there are no randomised bits in the flag field.",d+="\n\nTeredo prefix range: 2001::/32"}else if(8193===e[0]&&2===e[1]&&0===e[2])d+="\nAssigned to the Benchmarking Methodology Working Group (BMWG) for benchmarking IPv6. Corresponds to 198.18.0.0/15 for benchmarking IPv4. See RFC 5180 for more details.",d+="\nBMWG range: 2001:2::/48";else if(8193===e[0]&&e[1]>=16&&e[1]<=31)d+="\nDeprecated, previously ORCHIDv1 (Overlay Routable Cryptographic Hash Identifiers).\nORCHIDv1 range: 2001:10::/28\nORCHIDv2 now uses 2001:20::/28.";else if(8193===e[0]&&e[1]>=32&&e[1]<=47)d+="\nORCHIDv2 (Overlay Routable Cryptographic Hash Identifiers).\nThese are non-routed IPv6 addresses used for Cryptographic Hash Identifiers.",d+="\nORCHIDv2 range: 2001:20::/28";else if(8193===e[0]&&3512===e[1])d+="\nThis is a documentation IPv6 address. This range should be used whenever an example IPv6 address is given or to model networking scenarios. Corresponds to 192.0.2.0/24, 198.51.100.0/24, and 203.0.113.0/24 in IPv4.",d+="\nDocumentation range: 2001:db8::/32";else if(8194===e[0]){d+="\n6to4 transition IPv6 address detected. See RFC 3056 for more details.\n6to4 prefix range: 2002::/16";var p=IP._ipv4_to_str((e[1]<<16)+e[2]),q=e[3],r=e[4].toString(16)+e[5].toString(16)+e[6].toString(16)+e[7].toString(16),s=new BigInteger(r,16);d+="\n\nEncapsulated IPv4 address: "+p+"\nSLA ID: "+q+"\nInterface ID (base 16): "+r+"\nInterface ID (base 10): "+s.toString()}else e[0]>=64512&&e[0]<=65023?(d+="\nThis is a unique local address comparable to the IPv4 private addresses 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. See RFC 4193 for more details.",d+="\nUnique local addresses range: fc00::/7"):e[0]>=65152&&e[0]<=65215?(d+="\nThis is a link-local address comparable to the auto-configuration addresses 169.254.0.0/16 in IPv4.",d+="\nLink-local addresses range: fe80::/10"):e[0]>=65280&&(d+="\nThis is a reserved multicast address.",d+="\nMulticast addresses range: ff00::/8");return d},IP_FORMAT_LIST:["Dotted Decimal","Decimal","Hex"],run_change_ip_format:function(a,b){for(var c=b[0],d=b[1],e=a.split("\n"),f="",g=0,h=0;h<e.length;h++)if(""!==e[h]){var i=[];if(c!==d){switch(c){case"Dotted Decimal":var j=e[h].split(".");for(g=0;g<j.length;g++)i.push(parseInt(j[g],10));break;case"Decimal":var k=e[h].toString();i.push(k>>24&255),i.push(k>>16&255),i.push(k>>8&255),i.push(255&k);break;case"Hex":i=Utils.hex_to_byte_array(e[h]);break;default:throw"Unsupported input IP format"}switch(d){case"Dotted Decimal":var l="";for(g=0;g<i.length;g++)l+=i[g]+".";f+=l.slice(0,l.length-1)+"\n";break;case"Decimal":var m=(i[0]<<24|i[1]<<16|i[2]<<8|i[3])>>>0;f+=m.toString()+"\n";break;case"Hex":var n="";for(g=0;g<i.length;g++)n+=Utils.hex(i[g]);f+=n+"\n";break;default:throw"Unsupported output IP format"}}else f+=e[h]+"\n"}return f.slice(0,f.length-1)},DELIM_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon"],GROUP_CIDR:24,GROUP_ONLY_SUBNET:!1,run_group_ips:function(a,b){var c=Utils.char_rep[b[0]],d=b[1],e=b[2],f=d<32?~(4294967295>>>d):4294967295,g=IP._gen_ipv6_mask(d),h=a.split(c),i={},j={},k=null,l="",m=null,n=null,o="";if(d<0||d>127)return"CIDR must be less than 32 for IPv4 or 128 for IPv6";for(var p=0;p<h.length;p++)if(k=IP.IPv4_REGEX.exec(h[p]))m=IP._str_to_ipv4(k[1])>>>0,n=m&f,i.hasOwnProperty(n)?i[n].push(m):i[n]=[m];else if(k=IP.IPv6_REGEX.exec(h[p])){m=IP._str_to_ipv6(k[1]),n=[],o="";for(var q=0;q<8;q++)n.push(m[q]&g[q]);o=IP._ipv6_to_str(n,!0),j.hasOwnProperty(o)?j[o].push(m):j[o]=[m]}for(n in i)if(i[n]=i[n].sort(),l+=IP._ipv4_to_str(n)+"/"+d+"\n",!e){for(p=0;p<i[n].length;p++)l+=" "+IP._ipv4_to_str(i[n][p])+"\n";l+="\n"}for(o in j)if(l+=o+"/"+d+"\n",!e){for(p=0;p<j[o].length;p++)l+=" "+IP._ipv6_to_str(j[o][p],!0)+"\n";l+="\n"}return l},_LARGE_RANGE_ERROR:'The specified range contains more than 65,536 addresses. Running this query could crash your browser. If you want to run it, select the "Allow large queries" option. You are advised to turn off "Auto Bake" whilst editing large ranges.', +_ipv4_cidr_range:function(a,b,c,d){var e="",f=IP._str_to_ipv4(a[1]),g=parseInt(a[2],10);if(g<0||g>31)return"IPv4 CIDR must be less than 32";var h=~(4294967295>>>g),i=f&h,j=i|~h;return b&&(e+="Network: "+IP._ipv4_to_str(f)+"\n",e+="CIDR: "+g+"\n",e+="Mask: "+IP._ipv4_to_str(h)+"\n",e+="Range: "+IP._ipv4_to_str(i)+" - "+IP._ipv4_to_str(j)+"\n",e+="Total addresses in range: "+((j-i>>>0)+1)+"\n\n"),c&&(e+=g>=16||d?IP._generate_ipv4_range(i,j).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_cidr_range:function(a,b){var c="",d=IP._str_to_ipv6(a[1]),e=parseInt(a[a.length-1],10);if(e<0||e>127)return"IPv6 CIDR must be less than 128";for(var f=IP._gen_ipv6_mask(e),g=new Array(8),h=new Array(8),i="",j=new Array(128),k=0;k<8;k++)if(g[k]=d[k]&f[k],h[k]=g[k]|65535&~f[k],i=(h[k]-g[k]).toString(2),"0"!==i)for(var l=0;l<i.length;l++)j[16*k+16-(i.length-l)]=i[l];return b&&(c+="Network: "+IP._ipv6_to_str(d)+"\n",c+="Shorthand: "+IP._ipv6_to_str(d,!0)+"\n",c+="CIDR: "+e+"\n",c+="Mask: "+IP._ipv6_to_str(f)+"\n",c+="Range: "+IP._ipv6_to_str(g)+" - "+IP._ipv6_to_str(h)+"\n",c+="Total addresses in range: "+(parseInt(j.join(""),2)+1)+"\n\n"),c},_gen_ipv6_mask:function(a){for(var b,c=new Array(8),d=0;d<8;d++)a>16*(d+1)?c[d]=65535:(b=a-16*d,b<0&&(b=0),c[d]=~(65535>>>b|4294901760));return c},_ipv4_hyphenated_range:function(a,b,c,d){for(var e="",f=IP._str_to_ipv4(a[1]),g=IP._str_to_ipv4(a[2]),h=f^g,i=32,j=0;0!==h;)h>>=1,i--,j=j<<1|1;j=~j>>>0;var k=f&j,l=k&j,m=l|~j;return b&&(e+="Minimum subnet required to hold this range:\n",e+="\tNetwork: "+IP._ipv4_to_str(k)+"\n",e+="\tCIDR: "+i+"\n",e+="\tMask: "+IP._ipv4_to_str(j)+"\n",e+="\tSubnet range: "+IP._ipv4_to_str(l)+" - "+IP._ipv4_to_str(m)+"\n",e+="\tTotal addresses in subnet: "+((m-l>>>0)+1)+"\n\n",e+="Range: "+IP._ipv4_to_str(f)+" - "+IP._ipv4_to_str(g)+"\n",e+="Total addresses in range: "+((g-f>>>0)+1)+"\n\n"),c&&(e+=g-f>>>0<=65536||d?IP._generate_ipv4_range(f,g).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_hyphenated_range:function(a,b){for(var c="",d=IP._str_to_ipv6(a[1]),e=IP._str_to_ipv6(a[14]),f="",g=new Array(128),h=0;h<128;h++)g[h]="0";for(h=0;h<8;h++)if(f=(e[h]-d[h]).toString(2),"0"!==f)for(var i=0;i<f.length;i++)g[16*h+16-(f.length-i)]=f[i];return b&&(c+="Range: "+IP._ipv6_to_str(d)+" - "+IP._ipv6_to_str(e)+"\n",c+="Shorthand range: "+IP._ipv6_to_str(d,!0)+" - "+IP._ipv6_to_str(e,!0)+"\n",c+="Total addresses in range: "+(parseInt(g.join(""),2)+1)+"\n\n"),c},_str_to_ipv4:function(a){function b(a){if(4!==a.length)throw"More than 4 blocks.";for(var b=[],c=0;c<4;c++)if(b[c]=parseInt(a[c],10),b[c]<0||b[c]>255)throw"Block out of range.";return b}var c=a.split("."),d=b(c),e=0;return e+=d[0]<<24,e+=d[1]<<16,e+=d[2]<<8,e+=d[3]},_ipv4_to_str:function(a){var b=a>>24&255,c=a>>16&255,d=a>>8&255,e=255&a;return b+"."+c+"."+d+"."+e},_str_to_ipv6:function(a){function b(a){if(a.length<3||a.length>8)throw"Badly formatted IPv6 address.";for(var b=[],c=0;c<a.length;c++)if(b[c]=parseInt(a[c],16),b[c]<0||b[c]>65535)throw"Block out of range.";return b}for(var c=a.split(":"),d=b(c),e=0,f=new Array(8),g=0;g<8;g++)isNaN(d[e])?(f[g]=0,g===8-d.slice(e).length&&e++):(f[g]=d[e],e++);return f},_ipv6_to_str:function(a,b){var c="",d=0;if(b){var e=-1,f=-1,g=0,h=-1;for(d=0;d<8;d++)0===a[d]&&h===d-1?h=d:0===a[d]&&(g=d,h=d),h>=0&&h-g>f-e&&(e=g,f=h);for(d=0;d<8;d++)d!==e?c+=Utils.hex(a[d],1)+":":(c+=":",d=f,7===f&&(c+=":"));":"===c[0]&&(c=":"+c)}else for(d=0;d<8;d++)c+=Utils.hex(a[d],4)+":";return c.slice(0,c.length-1)},_generate_ipv4_range:function(a,b){var c=[];if(b>=a)for(;a<=b;a++)c.push(IP._ipv4_to_str(a));else c[0]="Second IP address smaller than first.";return c}},JS={PARSE_LOC:!1,PARSE_RANGE:!1,PARSE_TOKENS:!1,PARSE_COMMENT:!1,PARSE_TOLERANT:!1,run_parse:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h={},i={loc:c,range:d,tokens:e,comment:f,tolerant:g};return h=esprima.parse(a,i),JSON.stringify(h,null,2)},BEAUTIFY_INDENT:"\\t",BEAUTIFY_QUOTES:["Auto","Single","Double"],BEAUTIFY_SEMICOLONS:!0,BEAUTIFY_COMMENT:!0,run_beautify:function(a,b){var c,d=b[0]||JS.BEAUTIFY_INDENT,e=b[1].toLowerCase(),f=b[2],g=b[3],h="";try{c=esprima.parse(a,{range:!0,tokens:!0,comment:!0});var i={format:{indent:{style:d},quotes:e,semicolons:f},comment:g};i.comment&&(c=escodegen.attachComments(c,c.comments,c.tokens)),h=escodegen.generate(c,i)}catch(a){throw"Unable to parse JavaScript.<br>"+a.message}return h},run_minify:function(a,b){var c="",d=esprima.parse(a),e=esmangle.optimize(d,null),f=esmangle.mangle(e);return c=escodegen.generate(f,{format:{renumber:!0,hexadecimal:!0,escapeless:!0,compact:!0,semicolons:!1,parentheses:!1}})}},MAC={OUTPUT_CASE:["Both","Upper only","Lower only"],NO_DELIM:!0,DASH_DELIM:!0,COLON_DELIM:!0,CISCO_STYLE:!1,run_format:function(a,b){if(!a)return"";var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=[],i=a.toLowerCase().split(/[,\s\r\n]+/);return i.forEach(function(a){var b=a.replace(/[:.-]+/g,""),i=b.replace(/(.{2}(?=.))/g,"$1-"),j=b.replace(/(.{2}(?=.))/g,"$1:"),k=b.replace(/(.{4}(?=.))/g,"$1.");"Lower only"===c?(d&&h.push(b),e&&h.push(i),f&&h.push(j),g&&h.push(k)):"Upper only"===c?(d&&h.push(b.toUpperCase()),e&&h.push(i.toUpperCase()),f&&h.push(j.toUpperCase()),g&&h.push(k.toUpperCase())):(d&&h.push(b,b.toUpperCase()),e&&h.push(i,i.toUpperCase()),f&&h.push(j,j.toUpperCase()),g&&h.push(k,k.toUpperCase())),h.push("")}),h.join("\n")}},Numberwang={run:function(a,b){if(!a)return"Let's play Wangernumb!";var c=a.match(/\d+/);return c?c[0]+"! That's Numberwang!":"Sorry, that's not Numberwang. Let's rotate the board!"}},OS={run_parse_unix_perms:function(a,b){var c={d:!1,sl:!1,np:!1,s:!1,cd:!1,bd:!1,dr:!1,sb:!1,su:!1,sg:!1,ru:!1,wu:!1,eu:!1,rg:!1,wg:!1,eg:!1,ro:!1,wo:!1,eo:!1},d=0,e=0,f=0,g=0,h="",i=null,j=null;if(0===a.search(/\s*[0-7]{1,4}\s*/i))i=a.match(/\s*([0-7]{1,4})\s*/i)[1],4===i.length?(d=parseInt(i[0],8),e=parseInt(i[1],8),f=parseInt(i[2],8),g=parseInt(i[3],8)):(i.length>0&&(e=parseInt(i[0],8)),i.length>1&&(f=parseInt(i[1],8)),i.length>2&&(g=parseInt(i[2],8))),c.su=d>>2&1,c.sg=d>>1&1,c.sb=1&d,c.ru=e>>2&1,c.wu=e>>1&1,c.eu=1&e,c.rg=f>>2&1,c.wg=f>>1&1,c.eg=1&f,c.ro=g>>2&1,c.wo=g>>1&1,c.eo=1&g;else{if(0!==a.search(/\s*[dlpcbDrwxsStT-]{1,10}\s*/))return"Invalid input format.\nPlease enter the permissions in either octal (e.g. 755) or textual (e.g. drwxr-xr-x) format.";switch(j=a.match(/\s*([dlpcbDrwxsStT-]{1,10})\s*/)[1],j[0]){case"d":c.d=!0;break;case"l":c.sl=!0;break;case"p":c.np=!0;break;case"s":c.s=!0;break;case"c":c.cd=!0;break;case"b":c.bd=!0;break;case"D":c.dr=!0}if(j.length>1&&(c.ru="r"===j[1]),j.length>2&&(c.wu="w"===j[2]),j.length>3)switch(j[3]){case"x":c.eu=!0;break;case"s":c.eu=!0,c.su=!0;break;case"S":c.su=!0}if(j.length>4&&(c.rg="r"===j[4]),j.length>5&&(c.wg="w"===j[5]),j.length>6)switch(j[6]){case"x":c.eg=!0;break;case"s":c.eg=!0,c.sg=!0;break;case"S":c.sg=!0}if(j.length>7&&(c.ro="r"===j[7]),j.length>8&&(c.wo="w"===j[8]),j.length>9)switch(j[9]){case"x":c.eo=!0;break;case"t":c.eo=!0,c.sb=!0;break;case"T":c.sb=!0}}return h+="Textual representation: "+OS._perms_to_str(c),h+="\nOctal representation: "+OS._perms_to_octal(c),j&&(h+="\nFile type: "+OS._ft_from_perms(c)),c.su&&(h+="\nThe setuid flag is set"),c.sg&&(h+="\nThe setgid flag is set"),c.sb&&(h+="\nThe sticky bit is set"),h+="\n\n +---------+-------+-------+-------+\n | | User | Group | Other |\n +---------+-------+-------+-------+\n | Read | "+(c.ru?"X":" ")+" | "+(c.rg?"X":" ")+" | "+(c.ro?"X":" ")+" |\n +---------+-------+-------+-------+\n | Write | "+(c.wu?"X":" ")+" | "+(c.wg?"X":" ")+" | "+(c.wo?"X":" ")+" |\n +---------+-------+-------+-------+\n | Execute | "+(c.eu?"X":" ")+" | "+(c.eg?"X":" ")+" | "+(c.eo?"X":" ")+" |\n +---------+-------+-------+-------+\n"},_perms_to_str:function(a){var b="",c="-";return a.d&&(c="d"),a.sl&&(c="l"),a.np&&(c="p"),a.s&&(c="s"),a.cd&&(c="c"),a.bd&&(c="b"),a.dr&&(c="D"),b=c,b+=a.ru?"r":"-",b+=a.wu?"w":"-",b+=a.eu&&a.su?"s":a.su?"S":a.eu?"x":"-",b+=a.rg?"r":"-",b+=a.wg?"w":"-",b+=a.eg&&a.sg?"s":a.sg?"S":a.eg?"x":"-",b+=a.ro?"r":"-",b+=a.wo?"w":"-",b+=a.eo&&a.sb?"t":a.sb?"T":a.eo?"x":"-"},_perms_to_octal:function(a){var b=0,c=0,d=0,e=0;return a.su&&(b+=4),a.sg&&(b+=2),a.sb&&(b+=1),a.ru&&(c+=4),a.wu&&(c+=2),a.eu&&(c+=1),a.rg&&(d+=4),a.wg&&(d+=2),a.eg&&(d+=1),a.ro&&(e+=4),a.wo&&(e+=2),a.eo&&(e+=1),b.toString()+c.toString()+d.toString()+e.toString()},_ft_from_perms:function(a){return a.d?"Directory":a.sl?"Symbolic link":a.np?"Named pipe":a.s?"Socket":a.cd?"Character device":a.bd?"Block device":a.dr?"Door":"Regular file"}},PublicKey={X509_INPUT_FORMAT:["PEM","DER Hex","Base64","Raw"],run_parse_x509:function(a,b){var c=new X509,d=b[0];if(!a.length)return"No input";switch(d){case"DER Hex":a=a.replace(/\s/g,""),c.hex=a,c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(a,"CERTIFICATE");break;case"PEM":c.hex=X509.pemToHex(a),c.pem=a;break;case"Base64":c.hex=Utils.to_hex(Utils.from_base64(a,null,"byte_array"),""),c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(c.hex,"CERTIFICATE");break;case"Raw":c.hex=Utils.to_hex(Utils.str_to_byte_array(a),""),c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(c.hex,"CERTIFICATE");break;default:throw"Undefined input format"}var e=ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,0,0]),f=c.getSerialNumberHex(),g=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,2,0]))),h=c.getIssuerString(),i=c.getNotBefore(),j=c.getNotAfter(),k=c.getSubjectString(),l=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,6,0,0]))),m=X509.getPublicKeyFromCertPEM(c.pem),n=[],o="",p=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[1,0]))),q=ASN1HEX.getDecendantHexVByNthList(c.hex,0,[2]).substr(2),r="",s=ASN1HEX.dump(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,7]));"EC"===m.type?(n.push({key:"Curve Name",value:m.curveName}),n.push({key:"Length",value:(new BigInteger(m.pubKeyHex,16).bitLength()-3)/2+" bits"}),n.push({key:"pub",value:PublicKey._format_byte_str(m.pubKeyHex,16,18)})):"DSA"===m.type?(n.push({key:"pub",value:PublicKey._format_byte_str(m.y.toString(16),16,18)}),n.push({key:"P",value:PublicKey._format_byte_str(m.p.toString(16),16,18)}),n.push({key:"Q",value:PublicKey._format_byte_str(m.q.toString(16),16,18)}),n.push({key:"G",value:PublicKey._format_byte_str(m.g.toString(16),16,18)})):m.e?(n.push({key:"Length",value:m.n.bitLength()+" bits"}),n.push({key:"Modulus",value:PublicKey._format_byte_str(m.n.toString(16),16,18)}),n.push({key:"Exponent",value:m.e+" (0x"+m.e.toString(16)+")"})):n.push({key:"Error",value:"Unknown Public Key type"}),r=0===ASN1HEX.dump(q).indexOf("SEQUENCE")?" r: "+PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(q,0,[0]),16,18)+"\n s: "+PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(q,0,[1]),16,18)+"\n":" Signature: "+PublicKey._format_byte_str(q,16,18)+"\n";for(var t=0;t<n.length;t++)o+=" "+n[t].key+":"+Utils.pad_left(n[t].value+"\n",18-(n[t].key.length+3)+n[t].value.length+1," ");var u=PublicKey._format_dn_str(h,2),v=PublicKey._format_date(i),w=PublicKey._format_date(j),x=PublicKey._format_dn_str(k,2),y="Version: "+(parseInt(e,16)+1)+" (0x"+e+")\nSerial number: "+new BigInteger(f,16).toString()+" (0x"+f+")\nAlgorithm ID: "+g+"\nValidity\n Not Before: "+v+" (dd-mm-yy hh:mm:ss) ("+i+")\n Not After: "+w+" (dd-mm-yy hh:mm:ss) ("+j+")\nIssuer\n"+u+"Subject\n"+x+"Public Key\n Algorithm: "+l+"\n"+o+"Certificate Signature\n Algorithm: "+p+"\n"+r+"\nExtensions (parsed ASN.1)\n"+s;return y},run_pem_to_hex:function(a,b){return a.indexOf("-----BEGIN")<0&&(a="-----BEGIN CERTIFICATE-----"+a),a.indexOf("-----END")<0&&(a+="-----END CERTIFICATE-----"),KEYUTIL.getHexFromPEM(a)},PEM_HEADER_STRING:"CERTIFICATE",run_hex_to_pem:function(a,b){return KJUR.asn1.ASN1Util.getPEMStringFromHex(a.replace(/\s/g,""),b[0])},run_hex_to_object_identifier:function(a,b){return KJUR.asn1.ASN1Util.oidHexToInt(a.replace(/\s/g,""))},run_object_identifier_to_hex:function(a,b){return KJUR.asn1.ASN1Util.oidIntToHex(a)},ASN1_TRUNCATE_LENGTH:32,run_parse_asn1_hex_string:function(a,b){var c=b[1],d=b[0];return ASN1HEX.dump(a.replace(/\s/g,""),{ommit_long_octet:c},d)},_format_dn_str:function(a,b){for(var c,d,e,f="",g=a.split(",/|"),h=0,i=0;i<g.length;i++)g[i].length&&(c=g[i].split("=")[0],h=c.length>h?c.length:h);for(i=0;i<g.length;i++)g[i].length&&(c=g[i].split("=")[0],d=g[i].split("=")[1],e=Utils.pad_right(c,h)+" = "+d+"\n",f+=Utils.pad_left(e,b+e.length," "));return f},_format_byte_str:function(a,b,c){a=Utils.to_hex(Utils.from_hex(a),":"),b=3*b;for(var d="",e=0;e<a.length;e+=b){var f=a.slice(e,e+b)+"\n";d+=0===e?f:Utils.pad_left(f,c+f.length," ")}return d.slice(0,d.length-1)},_format_date:function(a){return a[4]+a[5]+"/"+a[2]+a[3]+"/"+a[0]+a[1]+" "+a[6]+a[7]+":"+a[8]+a[9]+":"+a[10]+a[11]}};X509.hex2dn=function(a){for(var b="",c=ASN1HEX.getPosArrayOfChildren_AtObj(a,0),d=0;d<c.length;d++){var e=ASN1HEX.getHexOfTLV_AtObj(a,c[d]);b=b+",/|"+X509.hex2rdn(e)}return b},X509.DN_ATTRHEX={"0603550403":"commonName","0603550404":"surname","0603550406":"countryName","0603550407":"localityName","0603550408":"stateOrProvinceName","0603550409":"streetAddress","060355040a":"organizationName","060355040b":"organizationalUnitName","060355040c":"title","0603550414":"telephoneNumber","060355042a":"givenName","06032b06010505070201":"id_certificatePolicies","06036086480186f8420101":"netscape-cert-type","06036086480186f8420102":"netscape-base-url","06036086480186f8420103":"netscape-revocation-url","06036086480186f8420104":"netscape-ca-revocation-url","06036086480186f8420107":"netscape-cert-renewal-url","06036086480186f8420108":"netscape-ca-policy-url","06036086480186f842010c":"netscape-ssl-server-name","06036086480186f842010d":"netscape-comment","0603604c010201":"A1","0603604c010203":"A3","0603604c01020110":"Certification Practice Statement pointer","0603604c010301":"Dados do cert parte 1","0603604c010305":"Dados do cert parte 2","0603604c010306":"Dados do cert parte 3","06030992268993f22c640119":"domainComponent","06032a24a0f2a07d01010a":"Signet pilot","06032a24a0f2a07d01010b":"Signet intraNet","06032a24a0f2a07d010102":"Signet personal","06032a24a0f2a07d010114":"Signet securityPolicy","06032a24a0f2a07d010103":"Signet business","06032a24a0f2a07d010104":"Signet legal","06032a24a497a35301640101":"Certificates Australia policyIdentifier","06032a85702201":"seis-cp","06032a8570220101":"SEIS certificatePolicy-s10","06032a85702202":"SEIS pe","06032a85702203":"SEIS at","06032a8570220301":"SEIS at-personalIdentifier","06032a8648ce380201":"holdinstruction-none","06032a8648ce380202":"holdinstruction-callissuer","06032a8648ce380203":"holdinstruction-reject","06032a8648ce380401":"dsa","06032a8648ce380403":"dsaWithSha1","06032a8648ce3d01":"fieldType","06032a8648ce3d0101":"prime-field","06032a8648ce3d0102":"characteristic-two-field","06032a8648ce3d010201":"ecPublicKey","06032a8648ce3d010203":"characteristic-two-basis","06032a8648ce3d01020301":"onBasis","06032a8648ce3d01020302":"tpBasis","06032a8648ce3d01020303":"ppBasis","06032a8648ce3d02":"publicKeyType","06032a8648ce3d0201":"ecPublicKey","06032a8648ce3e0201":"dhPublicNumber","06032a864886f67d07":"nsn","06032a864886f67d0741":"nsn-ce","06032a864886f67d074100":"entrustVersInfo","06032a864886f67d0742":"nsn-alg","06032a864886f67d07420a":"cast5CBC","06032a864886f67d07420b":"cast5MAC","06032a864886f67d07420c":"pbeWithMD5AndCAST5-CBC","06032a864886f67d07420d":"passwordBasedMac","06032a864886f67d074203":"cast3CBC","06032a864886f67d0743":"nsn-oc","06032a864886f67d074300":"entrustUser","06032a864886f67d0744":"nsn-at","06032a864886f67d074400":"entrustCAInfo","06032a864886f67d07440a":"attributeCertificate","06032a864886f70d0101":"pkcs-1","06032a864886f70d010101":"rsaEncryption","06032a864886f70d010102":"md2withRSAEncryption","06032a864886f70d010103":"md4withRSAEncryption","06032a864886f70d010104":"md5withRSAEncryption","06032a864886f70d010105":"sha1withRSAEncryption","06032a864886f70d010106":"rsaOAEPEncryptionSET","06032a864886f70d010910020b":"SMIMEEncryptionKeyPreference","06032a864886f70d010c":"pkcs-12","06032a864886f70d010c01":"pkcs-12-PbeIds","06032a864886f70d010c0101":"pbeWithSHAAnd128BitRC4","06032a864886f70d010c0102":"pbeWithSHAAnd40BitRC4","06032a864886f70d010c0103":"pbeWithSHAAnd3-KeyTripleDES-CBC","06032a864886f70d010c0104":"pbeWithSHAAnd2-KeyTripleDES-CBC","06032a864886f70d010c0105":"pbeWithSHAAnd128BitRC2-CBC","06032a864886f70d010c0106":"pbeWithSHAAnd40BitRC2-CBC","06032a864886f70d010c0a":"pkcs-12Version1","06032a864886f70d010c0a01":"pkcs-12BadIds","06032a864886f70d010c0a0101":"pkcs-12-keyBag","06032a864886f70d010c0a0102":"pkcs-12-pkcs-8ShroudedKeyBag","06032a864886f70d010c0a0103":"pkcs-12-certBag","06032a864886f70d010c0a0104":"pkcs-12-crlBag","06032a864886f70d010c0a0105":"pkcs-12-secretBag","06032a864886f70d010c0a0106":"pkcs-12-safeContentsBag","06032a864886f70d010c02":"pkcs-12-ESPVKID","06032a864886f70d010c0201":"pkcs-12-PKCS8KeyShrouding","06032a864886f70d010c03":"pkcs-12-BagIds","06032a864886f70d010c0301":"pkcs-12-keyBagId","06032a864886f70d010c0302":"pkcs-12-certAndCRLBagId","06032a864886f70d010c0303":"pkcs-12-secretBagId","06032a864886f70d010c0304":"pkcs-12-safeContentsId","06032a864886f70d010c0305":"pkcs-12-pkcs-8ShroudedKeyBagId","06032a864886f70d010c04":"pkcs-12-CertBagID","06032a864886f70d010c0401":"pkcs-12-X509CertCRLBagID","06032a864886f70d010c0402":"pkcs-12-SDSICertBagID","06032a864886f70d010c05":"pkcs-12-OID","06032a864886f70d010c0501":"pkcs-12-PBEID","06032a864886f70d010c050101":"pkcs-12-PBEWithSha1And128BitRC4","06032a864886f70d010c050102":"pkcs-12-PBEWithSha1And40BitRC4","06032a864886f70d010c050103":"pkcs-12-PBEWithSha1AndTripleDESCBC","06032a864886f70d010c050104":"pkcs-12-PBEWithSha1And128BitRC2CBC","06032a864886f70d010c050105":"pkcs-12-PBEWithSha1And40BitRC2CBC","06032a864886f70d010c050106":"pkcs-12-PBEWithSha1AndRC4","06032a864886f70d010c050107":"pkcs-12-PBEWithSha1AndRC2CBC","06032a864886f70d010c0502":"pkcs-12-EnvelopingID","06032a864886f70d010c050201":"pkcs-12-RSAEncryptionWith128BitRC4","06032a864886f70d010c050202":"pkcs-12-RSAEncryptionWith40BitRC4","06032a864886f70d010c050203":"pkcs-12-RSAEncryptionWithTripleDES","06032a864886f70d010c0503":"pkcs-12-SignatureID","06032a864886f70d010c050301":"pkcs-12-RSASignatureWithSHA1Digest","06032a864886f70d0103":"pkcs-3","06032a864886f70d010301":"dhKeyAgreement","06032a864886f70d0105":"pkcs-5","06032a864886f70d010501":"pbeWithMD2AndDES-CBC","06032a864886f70d01050a":"pbeWithSHAAndDES-CBC","06032a864886f70d010503":"pbeWithMD5AndDES-CBC","06032a864886f70d010504":"pbeWithMD2AndRC2-CBC","06032a864886f70d010506":"pbeWithMD5AndRC2-CBC","06032a864886f70d010509":"pbeWithMD5AndXOR","06032a864886f70d0107":"pkcs-7","06032a864886f70d010701":"data","06032a864886f70d010702":"signedData","06032a864886f70d010703":"envelopedData","06032a864886f70d010704":"signedAndEnvelopedData","06032a864886f70d010705":"digestData","06032a864886f70d010706":"encryptedData","06032a864886f70d010707":"dataWithAttributes","06032a864886f70d010708":"encryptedPrivateKeyInfo","06032a864886f70d0109":"pkcs-9","06032a864886f70d010901":"emailAddress","06032a864886f70d01090a":"issuerAndSerialNumber","06032a864886f70d01090b":"passwordCheck","06032a864886f70d01090c":"publicKey","06032a864886f70d01090d":"signingDescription","06032a864886f70d01090e":"extensionReq","06032a864886f70d01090f":"sMIMECapabilities","06032a864886f70d01090f01":"preferSignedData","06032a864886f70d01090f02":"canNotDecryptAny","06032a864886f70d01090f03":"receiptRequest","06032a864886f70d01090f04":"receipt","06032a864886f70d01090f05":"contentHints","06032a864886f70d01090f06":"mlExpansionHistory","06032a864886f70d010910":"id-sMIME","06032a864886f70d01091000":"id-mod","06032a864886f70d0109100001":"id-mod-cms","06032a864886f70d0109100002":"id-mod-ess","06032a864886f70d01091001":"id-ct","06032a864886f70d0109100101":"id-ct-receipt","06032a864886f70d01091002":"id-aa","06032a864886f70d0109100201":"id-aa-receiptRequest","06032a864886f70d0109100202":"id-aa-securityLabel","06032a864886f70d0109100203":"id-aa-mlExpandHistory","06032a864886f70d0109100204":"id-aa-contentHint","06032a864886f70d010902":"unstructuredName","06032a864886f70d010914":"friendlyName","06032a864886f70d010915":"localKeyID","06032a864886f70d010916":"certTypes","06032a864886f70d01091601":"x509Certificate","06032a864886f70d01091602":"sdsiCertificate","06032a864886f70d010917":"crlTypes","06032a864886f70d01091701":"x509Crl","06032a864886f70d010903":"contentType","06032a864886f70d010904":"messageDigest","06032a864886f70d010905":"signingTime","06032a864886f70d010906":"countersignature","06032a864886f70d010907":"challengePassword","06032a864886f70d010908":"unstructuredAddress","06032a864886f70d010909":"extendedCertificateAttributes","06032a864886f70d02":"digestAlgorithm","06032a864886f70d0202":"md2","06032a864886f70d0204":"md4","06032a864886f70d0205":"md5","06032a864886f70d03":"encryptionAlgorithm","06032a864886f70d030a":"desCDMF","06032a864886f70d0302":"rc2CBC","06032a864886f70d0303":"rc2ECB","06032a864886f70d0304":"rc4","06032a864886f70d0305":"rc4WithMAC","06032a864886f70d0306":"DESX-CBC","06032a864886f70d0307":"DES-EDE3-CBC","06032a864886f70d0308":"RC5CBC","06032a864886f70d0309":"RC5-CBCPad","06032a864886f7140403":"microsoftExcel","06032a864886f7140404":"titledWithOID","06032a864886f7140405":"microsoftPowerPoint","06032b81051086480954":"x9-84","06032b8105108648095400":"x9-84-Module","06032b810510864809540001":"x9-84-Biometrics","06032b810510864809540002":"x9-84-CMS","06032b810510864809540003":"x9-84-Identifiers","06032b8105108648095401":"biometric","06032b810510864809540100":"id-unknown-Type","06032b810510864809540101":"id-body-Odor","06032b81051086480954010a":"id-palm","06032b81051086480954010b":"id-retina","06032b81051086480954010c":"id-signature","06032b81051086480954010d":"id-speech-Pattern","06032b81051086480954010e":"id-thermal-Image","06032b81051086480954010f":"id-vein-Pattern","06032b810510864809540110":"id-thermal-Face-Image","06032b810510864809540111":"id-thermal-Hand-Image","06032b810510864809540112":"id-lip-Movement","06032b810510864809540113":"id-gait","06032b810510864809540102":"id-dna","06032b810510864809540103":"id-ear-Shape","06032b810510864809540104":"id-facial-Features","06032b810510864809540105":"id-finger-Image","06032b810510864809540106":"id-finger-Geometry","06032b810510864809540107":"id-hand-Geometry","06032b810510864809540108":"id-iris-Features","06032b810510864809540109":"id-keystroke-Dynamics","06032b8105108648095402":"processing-algorithm","06032b8105108648095403":"matching-method","06032b8105108648095404":"format-Owner","06032b810510864809540400":"cbeff-Owner","06032b810510864809540401":"ibia-Owner","06032b81051086480954040101":"id-ibia-SAFLINK","06032b8105108648095404010a":"id-ibia-SecuGen","06032b8105108648095404010b":"id-ibia-PreciseBiometric","06032b8105108648095404010c":"id-ibia-Identix","06032b8105108648095404010d":"id-ibia-DERMALOG","06032b8105108648095404010e":"id-ibia-LOGICO","06032b8105108648095404010f":"id-ibia-NIST","06032b81051086480954040110":"id-ibia-A3Vision","06032b81051086480954040111":"id-ibia-NEC","06032b81051086480954040112":"id-ibia-STMicroelectronics","06032b81051086480954040102":"id-ibia-Bioscrypt","06032b81051086480954040103":"id-ibia-Visionics","06032b81051086480954040104":"id-ibia-InfineonTechnologiesAG","06032b81051086480954040105":"id-ibia-IridianTechnologies","06032b81051086480954040106":"id-ibia-Veridicom","06032b81051086480954040107":"id-ibia-CyberSIGN","06032b81051086480954040108":"id-ibia-eCryp.","06032b81051086480954040109":"id-ibia-FingerprintCardsAB","06032b810510864809540402":"x9-Owner","06032b0e021a05":"sha","06032b0e03020101":"rsa","06032b0e03020a":"desMAC","06032b0e03020b":"rsaSignature","06032b0e03020c":"dsa","06032b0e03020d":"dsaWithSHA","06032b0e03020e":"mdc2WithRSASignature","06032b0e03020f":"shaWithRSASignature","06032b0e030210":"dhWithCommonModulus","06032b0e030211":"desEDE","06032b0e030212":"sha","06032b0e030213":"mdc-2","06032b0e030202":"md4WitRSA","06032b0e03020201":"sqmod-N","06032b0e030214":"dsaCommon","06032b0e030215":"dsaCommonWithSHA","06032b0e030216":"rsaKeyTransport","06032b0e030217":"keyed-hash-seal","06032b0e030218":"md2WithRSASignature","06032b0e030219":"md5WithRSASignature","06032b0e03021a":"sha1","06032b0e03021b":"dsaWithSHA1","06032b0e03021c":"dsaWithCommonSHA1","06032b0e03021d":"sha-1WithRSAEncryption","06032b0e030203":"md5WithRSA","06032b0e03020301":"sqmod-NwithRSA","06032b0e030204":"md4WithRSAEncryption","06032b0e030206":"desECB","06032b0e030207":"desCBC","06032b0e030208":"desOFB","06032b0e030209":"desCFB","06032b0e030301":"simple-strong-auth-mechanism","06032b0e07020101":"ElGamal","06032b0e07020301":"md2WithRSA","06032b0e07020302":"md2WithElGamal","06032b2403":"algorithm","06032b240301":"encryptionAlgorithm","06032b24030101":"des","06032b240301010101":"desECBPad","06032b24030101010101":"desECBPadISO","06032b240301010201":"desCBCPad","06032b24030101020101":"desCBCPadISO","06032b24030102":"idea","06032b2403010201":"ideaECB","06032b240301020101":"ideaECBPad","06032b24030102010101":"ideaECBPadISO","06032b2403010202":"ideaCBC","06032b240301020201":"ideaCBCPad","06032b24030102020101":"ideaCBCPadISO","06032b2403010203":"ideaOFB","06032b2403010204":"ideaCFB","06032b24030103":"des-3","06032b240301030101":"des-3ECBPad","06032b24030103010101":"des-3ECBPadISO","06032b240301030201":"des-3CBCPad","06032b24030103020101":"des-3CBCPadISO","06032b240302":"hashAlgorithm","06032b24030201":"ripemd160","06032b24030202":"ripemd128","06032b24030203":"ripemd256","06032b24030204":"mdc2singleLength","06032b24030205":"mdc2doubleLength","06032b240303":"signatureAlgorithm","06032b24030301":"rsa","06032b2403030101":"rsaMitSHA-1","06032b2403030102":"rsaMitRIPEMD160","06032b24030302":"ellipticCurve","06032b240304":"signatureScheme","06032b24030401":"iso9796-1","06032b2403040201":"iso9796-2","06032b2403040202":"iso9796-2rsa","06032b2404":"attribute","06032b2405":"policy","06032b2406":"api","06032b240601":"manufacturerSpecific","06032b240602":"functionalitySpecific","06032b2407":"api","06032b240701":"keyAgreement","06032b240702":"keyTransport","06032b06010401927c0a0101":"UNINETT policyIdentifier","06032b0601040195180a":"ICE-TEL policyIdentifier","06032b0601040197552001":"cryptlibEnvelope","06032b0601040197552002":"cryptlibPrivateKey","060a2b060104018237":"Microsoft OID","060a2b0601040182370a":"Crypto 2.0","060a2b0601040182370a01":"certTrustList","060a2b0601040182370a0101":"szOID_SORTED_CTL","060a2b0601040182370a0a":"Microsoft CMC OIDs","060a2b0601040182370a0a01":"szOID_CMC_ADD_ATTRIBUTES","060a2b0601040182370a0b":"Microsoft certificate property OIDs","060a2b0601040182370a0b01":"szOID_CERT_PROP_ID_PREFIX","060a2b0601040182370a0c":"CryptUI","060a2b0601040182370a0c01":"szOID_ANY_APPLICATION_POLICY","060a2b0601040182370a02":"nextUpdateLocation","060a2b0601040182370a0301":"certTrustListSigning","060a2b0601040182370a030a":"szOID_KP_QUALIFIED_SUBORDINATION","060a2b0601040182370a030b":"szOID_KP_KEY_RECOVERY","060a2b0601040182370a030c":"szOID_KP_DOCUMENT_SIGNING","060a2b0601040182370a0302":"timeStampSigning","060a2b0601040182370a0303":"serverGatedCrypto","060a2b0601040182370a030301":"szOID_SERIALIZED","060a2b0601040182370a0304":"encryptedFileSystem","060a2b0601040182370a030401":"szOID_EFS_RECOVERY","060a2b0601040182370a0305":"szOID_WHQL_CRYPTO","060a2b0601040182370a0306":"szOID_NT5_CRYPTO","060a2b0601040182370a0307":"szOID_OEM_WHQL_CRYPTO","060a2b0601040182370a0308":"szOID_EMBEDDED_NT_CRYPTO","060a2b0601040182370a0309":"szOID_ROOT_LIST_SIGNER","060a2b0601040182370a0401":"yesnoTrustAttr","060a2b0601040182370a0501":"szOID_DRM","060a2b0601040182370a0502":"szOID_DRM_INDIVIDUALIZATION","060a2b0601040182370a0601":"szOID_LICENSES","060a2b0601040182370a0602":"szOID_LICENSE_SERVER","060a2b0601040182370a07":"szOID_MICROSOFT_RDN_PREFIX","060a2b0601040182370a0701":"szOID_KEYID_RDN","060a2b0601040182370a0801":"szOID_REMOVE_CERTIFICATE","060a2b0601040182370a0901":"szOID_CROSS_CERT_DIST_POINTS","060a2b0601040182370c":"Catalog","060a2b0601040182370c0101":"szOID_CATALOG_LIST","060a2b0601040182370c0102":"szOID_CATALOG_LIST_MEMBER","060a2b0601040182370c0201":"CAT_NAMEVALUE_OBJID","060a2b0601040182370c0202":"CAT_MEMBERINFO_OBJID","060a2b0601040182370d":"Microsoft PKCS10 OIDs","060a2b0601040182370d01":"szOID_RENEWAL_CERTIFICATE","060a2b0601040182370d0201":"szOID_ENROLLMENT_NAME_VALUE_PAIR","060a2b0601040182370d0202":"szOID_ENROLLMENT_CSP_PROVIDER","060a2b0601040182370d0203":"OS Version","060a2b0601040182370f":"Microsoft Java","060a2b06010401823710":"Microsoft Outlook/Exchange","060a2b0601040182371004":"Outlook Express","060a2b06010401823711":"Microsoft PKCS12 attributes","060a2b0601040182371101":"szOID_LOCAL_MACHINE_KEYSET","060a2b06010401823712":"Microsoft Hydra","060a2b06010401823713":"Microsoft ISPU Test","060a2b06010401823702":"Authenticode","060a2b06010401823702010a":"spcAgencyInfo","060a2b06010401823702010b":"spcStatementType","060a2b06010401823702010c":"spcSpOpusInfo","060a2b06010401823702010e":"certExtensions","060a2b06010401823702010f":"spcPelmageData","060a2b060104018237020112":"SPC_RAW_FILE_DATA_OBJID","060a2b060104018237020113":"SPC_STRUCTURED_STORAGE_DATA_OBJID","060a2b060104018237020114":"spcLink","060a2b060104018237020115":"individualCodeSigning","060a2b060104018237020116":"commercialCodeSigning","060a2b060104018237020119":"spcLink","060a2b06010401823702011a":"spcMinimalCriteriaInfo","060a2b06010401823702011b":"spcFinancialCriteriaInfo","060a2b06010401823702011c":"spcLink","060a2b06010401823702011d":"SPC_HASH_INFO_OBJID","060a2b06010401823702011e":"SPC_SIPINFO_OBJID","060a2b060104018237020104":"spcIndirectDataContext","060a2b0601040182370202":"CTL for Software Publishers Trusted CAs","060a2b060104018237020201":"szOID_TRUSTED_CODESIGNING_CA_LIST","060a2b060104018237020202":"szOID_TRUSTED_CLIENT_AUTH_CA_LIST","060a2b060104018237020203":"szOID_TRUSTED_SERVER_AUTH_CA_LIST","060a2b06010401823714":"Microsoft Enrollment Infrastructure","060a2b0601040182371401":"szOID_AUTO_ENROLL_CTL_USAGE","060a2b0601040182371402":"szOID_ENROLL_CERTTYPE_EXTENSION","060a2b060104018237140201":"szOID_ENROLLMENT_AGENT","060a2b060104018237140202":"szOID_KP_SMARTCARD_LOGON","060a2b060104018237140203":"szOID_NT_PRINCIPAL_NAME","060a2b0601040182371403":"szOID_CERT_MANIFOLD","06092b06010401823715":"Microsoft CertSrv Infrastructure","06092b0601040182371501":"szOID_CERTSRV_CA_VERSION","06092b0601040182371514":"Client Information","060a2b06010401823719":"Microsoft Directory Service","060a2b0601040182371901":"szOID_NTDS_REPLICATION","060a2b06010401823703":"Time Stamping","060a2b060104018237030201":"SPC_TIME_STAMP_REQUEST_OBJID","060a2b0601040182371e":"IIS","060a2b0601040182371f":"Windows updates and service packs","060a2b0601040182371f01":"szOID_PRODUCT_UPDATE","060a2b06010401823704":"Permissions","060a2b06010401823728":"Fonts","060a2b06010401823729":"Microsoft Licensing and Registration","060a2b0601040182372a":"Microsoft Corporate PKI (ITG)","060a2b06010401823758":"CAPICOM","060a2b0601040182375801":"szOID_CAPICOM_VERSION","060a2b0601040182375802":"szOID_CAPICOM_ATTRIBUTE","060a2b060104018237580201":"szOID_CAPICOM_DOCUMENT_NAME","060a2b060104018237580202":"szOID_CAPICOM_DOCUMENT_DESCRIPTION","060a2b0601040182375803":"szOID_CAPICOM_ENCRYPTED_DATA","060a2b060104018237580301":"szOID_CAPICOM_ENCRYPTED_CONTENT","06032b0601050507":"pkix","06032b060105050701":"privateExtension","06032b06010505070101":"authorityInfoAccess","06032b06010505070c02":"CMC Data","06032b060105050702":"policyQualifierIds","06032b06010505070202":"unotice","06032b060105050703":"keyPurpose","06032b06010505070301":"serverAuth","06032b06010505070302":"clientAuth","06032b06010505070303":"codeSigning","06032b06010505070304":"emailProtection","06032b06010505070305":"ipsecEndSystem","06032b06010505070306":"ipsecTunnel","06032b06010505070307":"ipsecUser","06032b06010505070308":"timeStamping","06032b060105050704":"cmpInformationTypes", +"06032b06010505070401":"caProtEncCert","06032b06010505070402":"signKeyPairTypes","06032b06010505070403":"encKeyPairTypes","06032b06010505070404":"preferredSymmAlg","06032b06010505070405":"caKeyUpdateInfo","06032b06010505070406":"currentCRL","06032b06010505073001":"ocsp","06032b06010505073002":"caIssuers","06032b06010505080101":"HMAC-MD5","06032b06010505080102":"HMAC-SHA","060360864801650201010a":"mosaicKeyManagementAlgorithm","060360864801650201010b":"sdnsKMandSigAlgorithm","060360864801650201010c":"mosaicKMandSigAlgorithm","060360864801650201010d":"SuiteASignatureAlgorithm","060360864801650201010e":"SuiteAConfidentialityAlgorithm","060360864801650201010f":"SuiteAIntegrityAlgorithm","06036086480186f84201":"cert-extension","06036086480186f842010a":"EntityLogo","06036086480186f842010b":"UserPicture","06036086480186f8420109":"HomePage-url","06036086480186f84202":"data-type","06036086480186f8420201":"GIF","06036086480186f8420202":"JPEG","06036086480186f8420203":"URL","06036086480186f8420204":"HTML","06036086480186f8420205":"netscape-cert-sequence","06036086480186f8420206":"netscape-cert-url","06036086480186f84203":"directory","06036086480186f8420401":"serverGatedCrypto","06036086480186f845010603":"Unknown Verisign extension","06036086480186f845010606":"Unknown Verisign extension","06036086480186f84501070101":"Verisign certificatePolicy","06036086480186f8450107010101":"Unknown Verisign policy qualifier","06036086480186f8450107010102":"Unknown Verisign policy qualifier","0603678105":"TCPA","060367810501":"tcpa_specVersion","060367810502":"tcpa_attribute","06036781050201":"tcpa_at_tpmManufacturer","0603678105020a":"tcpa_at_securityQualities","0603678105020b":"tcpa_at_tpmProtectionProfile","0603678105020c":"tcpa_at_tpmSecurityTarget","0603678105020d":"tcpa_at_foundationProtectionProfile","0603678105020e":"tcpa_at_foundationSecurityTarget","0603678105020f":"tcpa_at_tpmIdLabel","06036781050202":"tcpa_at_tpmModel","06036781050203":"tcpa_at_tpmVersion","06036781050204":"tcpa_at_platformManufacturer","06036781050205":"tcpa_at_platformModel","06036781050206":"tcpa_at_platformVersion","06036781050207":"tcpa_at_componentManufacturer","06036781050208":"tcpa_at_componentModel","06036781050209":"tcpa_at_componentVersion","060367810503":"tcpa_protocol","06036781050301":"tcpa_prtt_tpmIdProtocol","0603672a00":"contentType","0603672a0000":"PANData","0603672a0001":"PANToken","0603672a0002":"PANOnly","0603672a01":"msgExt","0603672a0a":"national","0603672a0a8140":"Japan","0603672a02":"field","0603672a0200":"fullName","0603672a0201":"givenName","0603672a020a":"amount","0603672a0202":"familyName","0603672a0203":"birthFamilyName","0603672a0204":"placeName","0603672a0205":"identificationNumber","0603672a0206":"month","0603672a0207":"date","0603672a02070b":"accountNumber","0603672a02070c":"passPhrase","0603672a0208":"address","0603672a0209":"telephone","0603672a03":"attribute","0603672a0300":"cert","0603672a030000":"rootKeyThumb","0603672a030001":"additionalPolicy","0603672a04":"algorithm","0603672a05":"policy","0603672a0500":"root","0603672a06":"module","0603672a07":"certExt","0603672a0700":"hashedRootKey","0603672a0701":"certificateType","0603672a0702":"merchantData","0603672a0703":"cardCertRequired","0603672a0704":"tunneling","0603672a0705":"setExtensions","0603672a0706":"setQualifier","0603672a08":"brand","0603672a0801":"IATA-ATA","0603672a081e":"Diners","0603672a0822":"AmericanExpress","0603672a0804":"VISA","0603672a0805":"MasterCard","0603672a08ae7b":"Novus","0603672a09":"vendor","0603672a0900":"GlobeSet","0603672a0901":"IBM","0603672a090a":"Griffin","0603672a090b":"Certicom","0603672a090c":"OSS","0603672a090d":"TenthMountain","0603672a090e":"Antares","0603672a090f":"ECC","0603672a0910":"Maithean","0603672a0911":"Netscape","0603672a0912":"Verisign","0603672a0913":"BlueMoney","0603672a0902":"CyberCash","0603672a0914":"Lacerte","0603672a0915":"Fujitsu","0603672a0916":"eLab","0603672a0917":"Entrust","0603672a0918":"VIAnet","0603672a0919":"III","0603672a091a":"OpenMarket","0603672a091b":"Lexem","0603672a091c":"Intertrader","0603672a091d":"Persimmon","0603672a0903":"Terisa","0603672a091e":"NABLE","0603672a091f":"espace-net","0603672a0920":"Hitachi","0603672a0921":"Microsoft","0603672a0922":"NEC","0603672a0923":"Mitsubishi","0603672a0924":"NCR","0603672a0925":"e-COMM","0603672a0926":"Gemplus","0603672a0904":"RSADSI","0603672a0905":"VeriFone","0603672a0906":"TrinTech","0603672a0907":"BankGate","0603672a0908":"GTE","0603672a0909":"CompuSource","0603551d01":"authorityKeyIdentifier","0603551d0a":"basicConstraints","0603551d0b":"nameConstraints","0603551d0c":"policyConstraints","0603551d0d":"basicConstraints","0603551d0e":"subjectKeyIdentifier","0603551d0f":"keyUsage","0603551d10":"privateKeyUsagePeriod","0603551d11":"subjectAltName","0603551d12":"issuerAltName","0603551d13":"basicConstraints","0603551d02":"keyAttributes","0603551d14":"cRLNumber","0603551d15":"cRLReason","0603551d16":"expirationDate","0603551d17":"instructionCode","0603551d18":"invalidityDate","0603551d1a":"issuingDistributionPoint","0603551d1b":"deltaCRLIndicator","0603551d1c":"issuingDistributionPoint","0603551d1d":"certificateIssuer","0603551d03":"certificatePolicies","0603551d1e":"nameConstraints","0603551d1f":"cRLDistributionPoints","0603551d20":"certificatePolicies","0603551d21":"policyMappings","0603551d22":"policyConstraints","0603551d23":"authorityKeyIdentifier","0603551d24":"policyConstraints","0603551d25":"extKeyUsage","0603551d04":"keyUsageRestriction","0603551d05":"policyMapping","0603551d06":"subtreesConstraint","0603551d07":"subjectAltName","0603551d08":"issuerAltName","0603551d09":"subjectDirectoryAttributes","0603550400":"objectClass","0603550401":"aliasObjectName","060355040d":"description","060355040e":"searchGuide","060355040f":"businessCategory","0603550410":"postalAddress","0603550411":"postalCode","0603550412":"postOfficeBox","0603550413":"physicalDeliveryOfficeName","0603550402":"knowledgeInformation","0603550415":"telexNumber","0603550416":"teletexTerminalIdentifier","0603550417":"facsimileTelephoneNumber","0603550418":"x121Address","0603550419":"internationalISDNNumber","060355041a":"registeredAddress","060355041b":"destinationIndicator","060355041c":"preferredDeliveryMehtod","060355041d":"presentationAddress","060355041e":"supportedApplicationContext","060355041f":"member","0603550420":"owner","0603550421":"roleOccupant","0603550422":"seeAlso","0603550423":"userPassword","0603550424":"userCertificate","0603550425":"caCertificate","0603550426":"authorityRevocationList","0603550427":"certificateRevocationList","0603550428":"crossCertificatePair","0603550429":"givenName","0603550405":"serialNumber","0603550434":"supportedAlgorithms","0603550435":"deltaRevocationList","060355043a":"crossCertificatePair","06035508":"X.500-Algorithms","0603550801":"X.500-Alg-Encryption","060355080101":"rsa","0603604c0101":"DPC"};var Punycode={IDN:!1,run_to_ascii:function(a,b){var c=b[0];return c?punycode.ToASCII(a):punycode.encode(a)},run_to_unicode:function(a,b){var c=b[0];return c?punycode.ToUnicode(a):punycode.decode(a)}},QuotedPrintable={run_to:function(a,b){var c=QuotedPrintable.mimeEncode(a);return c=c.replace(/\r?\n|\r/g,function(){return"\r\n"}).replace(/[\t ]+$/gm,function(a){return a.replace(/ /g,"=20").replace(/\t/g,"=09")}),QuotedPrintable._addSoftLinebreaks(c,"qp")},run_from:function(a,b){var c=a.replace(/\=(?:\r?\n|$)/g,"");return QuotedPrintable.mimeDecode(c)},mimeDecode:function(a){for(var b,c,d=(a.match(/\=[\da-fA-F]{2}/g)||[]).length,e=a.length-2*d,f=new Array(e),g=0,h=0,i=a.length;h<i;h++)b=a.charAt(h),"="===b&&(c=a.substr(h+1,2))&&/[\da-fA-F]{2}/.test(c)?(f[g++]=parseInt(c,16),h+=2):f[g++]=b.charCodeAt(0);return f},mimeEncode:function(a){for(var b=[[9],[10],[13],[32],[33],[35,60],[62],[64,94],[96,126]],c="",d=0,e=a.length;d<e;d++)c+=this._checkRanges(a[d],b)?String.fromCharCode(a[d]):"="+(a[d]<16?"0":"")+a[d].toString(16).toUpperCase();return c},_checkRanges:function(a,b){for(var c=b.length-1;c>=0;c--)if(b[c].length){if(1===b[c].length&&a===b[c][0])return!0;if(2===b[c].length&&a>=b[c][0]&&a<=b[c][1])return!0}return!1},_addSoftLinebreaks:function(a,b){var c=76;return b=(b||"base64").toString().toLowerCase().trim(),"qp"===b?this._addQPSoftLinebreaks(a,c):this._addBase64SoftLinebreaks(a,c)},_addBase64SoftLinebreaks:function(a,b){return a=(a||"").toString().trim(),a.replace(new RegExp(".{"+b+"}","g"),"$&\r\n").trim()},_addQPSoftLinebreaks:function(a,b){for(var c,d,e,f=0,g=a.length,h=Math.floor(b/3),i="";f<g;)if(e=a.substr(f,b),c=e.match(/\r\n/))e=e.substr(0,c.index+c[0].length),i+=e,f+=e.length;else if("\n"!==e.substr(-1))if(c=e.substr(-h).match(/\n.*?$/))e=e.substr(0,e.length-(c[0].length-1)),i+=e,f+=e.length;else{if(e.length>b-h&&(c=e.substr(-h).match(/[ \t\.,!\?][^ \t\.,!\?]*$/)))e=e.substr(0,e.length-(c[0].length-1));else if("\r"===e.substr(-1))e=e.substr(0,e.length-1);else if(e.match(/\=[\da-f]{0,2}$/i))for((c=e.match(/\=[\da-f]{0,1}$/i))&&(e=e.substr(0,e.length-c[0].length));e.length>3&&e.length<g-f&&!e.match(/^(?:=[\da-f]{2}){1,4}$/i)&&(c=e.match(/\=[\da-f]{2}$/gi))&&(d=parseInt(c[0].substr(1,2),16),!(d<128))&&(e=e.substr(0,e.length-3),!(d>=192)););f+e.length<g&&"\n"!==e.substr(-1)?(76===e.length&&e.match(/\=[\da-f]{2}$/i)?e=e.substr(0,e.length-3):76===e.length&&(e=e.substr(0,e.length-1)),f+=e.length,e+="=\r\n"):f+=e.length,i+=e}else i+=e,f+=e.length;return i}},Rotate={ROTATE_AMOUNT:1,ROTATE_WHOLE:!1,_rot:function(a,b,c){for(var d=[],e=0;e<a.length;e++){for(var f=a[e],g=0;g<b;g++)f=c(f);d.push(f)}return d},run_rotr:function(a,b){return b[1]?Rotate._rotr_whole(a,b[0]):Rotate._rot(a,b[0],Rotate._rotr)},run_rotl:function(a,b){return b[1]?Rotate._rotl_whole(a,b[0]):Rotate._rot(a,b[0],Rotate._rotl)},ROT13_AMOUNT:13,ROT13_LOWERCASE:!0,ROT13_UPPERCASE:!0,run_rot13:function(a,b){var c,d=b[2],e=a,f=b[0],g=b[1];if(d){d<0&&(d=26-Math.abs(d)%26);for(var h=0;h<a.length;h++)c=a[h],g&&c>=65&&c<=90?(c=(c-65+d)%26,e[h]=c+65):f&&c>=97&&c<=122&&(c=(c-97+d)%26,e[h]=c+97)}return e},ROT47_AMOUNT:47,run_rot47:function(a,b){var c,d=b[0],e=a;if(d){d<0&&(d=94-Math.abs(d)%94);for(var f=0;f<a.length;f++)c=a[f],c>=33&&c<=126&&(c=(c-33+d)%94,e[f]=c+33)}return e},_rotr:function(a){var b=(1&a)<<7;return a>>1|b},_rotl:function(a){var b=a>>7&1;return 255&(a<<1|b)},_rotr_whole:function(a,b){var c,d=0,e=[];b%=8;for(var f=0;f<a.length;f++){var g=a[f]>>>0;c=g>>b|d,d=(g&Math.pow(2,b)-1)<<8-b,e.push(c)}return e[0]|=d,e},_rotl_whole:function(a,b){var c,d=0,e=[];b%=8;for(var f=a.length-1;f>=0;f--){var g=a[f];c=255&(g<<b|d),d=g>>8-b&Math.pow(2,b)-1,e[f]=c}return e[a.length-1]=e[a.length-1]|d,e}},SeqUtils={DELIMITER_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon","Colon","Nothing (separate chars)"],SORT_REVERSE:!1,SORT_ORDER:["Alphabetical (case sensitive)","Alphabetical (case insensitive)","IP address"],run_sort:function(a,b){var c=Utils.char_rep[b[0]],d=b[1],e=b[2],f=a.split(c);return"Alphabetical (case sensitive)"===e?f=f.sort():"Alphabetical (case insensitive)"===e?f=f.sort(SeqUtils._case_insensitive_sort):"IP address"===e&&(f=f.sort(SeqUtils._ip_sort)),d&&f.reverse(),f.join(c)},run_unique:function(a,b){var c=Utils.char_rep[b[0]];return a.split(c).unique().join(c)},SEARCH_TYPE:["Regex","Extended (\\n, \\t, \\x...)","Simple string"],run_count:function(a,b){var c=b[0].string,d=b[0].option;if("Regex"!==d||!c)return c?(0===d.indexOf("Extended")&&(c=Utils.parse_escaped_chars(c)),a.count(c)):0;try{var e=new RegExp(c,"gi"),f=a.match(e);return f.length}catch(a){return 0}},REVERSE_BY:["Character","Line"],run_reverse:function(a,b){if("Line"===b[0]){for(var c=[],d=[],e=[],f=0;f<a.length;f++)10===a[f]?(c.push(d),d=[]):d.push(a[f]);for(c.push(d),c.reverse(),f=0;f<c.length;f++)e=e.concat(c[f]),e.push(10);return e.slice(0,a.length)}return a.reverse()},run_add_line_numbers:function(a,b){for(var c=a.split("\n"),d="",e=c.length.toString().length,f=0;f<c.length;f++)d+=Utils.pad((f+1).toString(),e," ")+" "+c[f]+"\n";return d.slice(0,d.length-1)},run_remove_line_numbers:function(a,b){return a.replace(/^[ \t]{0,5}\d+[\s:|\-,.)\]]/gm,"")},run_expand_alph_range:function(a,b){return Utils.expand_alph_range(a).join(b[0])},_case_insensitive_sort:function(a,b){return a.toLowerCase().localeCompare(b.toLowerCase())},_ip_sort:function(a,b){var c=a.split("."),d=b.split(".");return c=16777216*c[0]+65536*c[1]+256*c[2]+1*c[3],d=16777216*d[0]+65536*d[1]+256*d[2]+1*d[3],isNaN(c)&&!isNaN(d)?1:!isNaN(c)&&isNaN(d)?-1:isNaN(c)&&isNaN(d)?a.localeCompare(b):c-d}},StrUtils={REGEX_PRE_POPULATE:[{name:"User defined",value:""},{name:"IPv4 address",value:"(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?"},{name:"IPv6 address",value:"((?=.*::)(?!.*::.+::)(::)?([\\dA-Fa-f]{1,4}:(:|\\b)|){5}|([\\dA-Fa-f]{1,4}:){6})((([\\dA-Fa-f]{1,4}((?!\\3)::|:\\b|(?![\\dA-Fa-f])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})"},{name:"Email address",value:"(\\w[-.\\w]*)@([-\\w]+(?:\\.[-\\w]+)*)\\.([A-Za-z]{2,4})"},{name:"URL",value:'([A-Za-z]+://)([-\\w]+(?:\\.\\w[-\\w]*)+)(:\\d+)?(/[^.!,?;"\\x27<>()\\[\\]{}\\s\\x7F-\\xFF]*(?:[.!,?]+[^.!,?;"\\x27<>()\\[\\]{}\\s\\x7F-\\xFF]+)*)?'},{name:"Domain",value:"(?:(https?):\\/\\/)?([-\\w.]+)\\.(com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+"},{name:"Windows file path",value:"([A-Za-z]):\\\\((?:[A-Za-z\\d][A-Za-z\\d\\- \\x27_\\(\\)]{0,61}\\\\?)*[A-Za-z\\d][A-Za-z\\d\\- \\x27_\\(\\)]{0,61})(\\.[A-Za-z\\d]{1,6})?"},{name:"UNIX file path",value:"(?:/[A-Za-z\\d.][A-Za-z\\d\\-.]{0,61})+"},{name:"MAC address",value:"[A-Fa-f\\d]{2}(?:[:-][A-Fa-f\\d]{2}){5}"},{name:"Date (yyyy-mm-dd)",value:"((?:19|20)\\d\\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])"},{name:"Date (dd/mm/yyyy)",value:"(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.]((?:19|20)\\d\\d)"},{name:"Date (mm/dd/yyyy)",value:"(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]((?:19|20)\\d\\d)"},{name:"Strings",value:'[A-Za-z\\d/\\-:.,_$%\\x27"()<>= !\\[\\]{}@]{4,}'}],REGEX_CASE_INSENSITIVE:!0,REGEX_MULTILINE_MATCHING:!0,OUTPUT_FORMAT:["Highlight matches","List matches","List capture groups","List matches with capture groups"],DISPLAY_TOTAL:!1,run_regex:function(a,b){var c=b[1],d=b[2],e=b[3],f=b[4],g=b[5],h="g";if(d&&(h+="i"),e&&(h+="m"),!c||"^"===c||"$"===c)return Utils.escape_html(a);try{var i=new RegExp(c,h);switch(g){case"Highlight matches":return StrUtils._regex_highlight(a,i,f);case"List matches":return Utils.escape_html(StrUtils._regex_list(a,i,f,!0,!1));case"List capture groups":return Utils.escape_html(StrUtils._regex_list(a,i,f,!1,!0));case"List matches with capture groups":return Utils.escape_html(StrUtils._regex_list(a,i,f,!0,!0));default:return"Error: Invalid output format"}}catch(a){return"Invalid regex. Details: "+a.message}},CASE_SCOPE:["All","Word","Sentence","Paragraph"],run_upper:function(a,b){var c=b[0];switch(c){case"Word":return a.replace(/(\b\w)/gi,function(a){return a.toUpperCase()});case"Sentence":return a.replace(/(?:\.|^)\s*(\b\w)/gi,function(a){return a.toUpperCase()});case"Paragraph":return a.replace(/(?:\n|^)\s*(\b\w)/gi,function(a){return a.toUpperCase()});case"All":default:return a.toUpperCase()}},run_lower:function(a,b){return a.toLowerCase()},SEARCH_TYPE:["Regex","Extended (\\n, \\t, \\x...)","Simple string"],FIND_REPLACE_GLOBAL:!0,FIND_REPLACE_CASE:!1,FIND_REPLACE_MULTILINE:!0,run_find_replace:function(a,b){var c=b[0].string,d=b[0].option,e=b[1],f=b[2],g=b[3],h=b[4],i="";return f&&(i+="g"),g&&(i+="i"),h&&(i+="m"),"Regex"===d?c=new RegExp(c,i):0===d.indexOf("Extended")&&(c=Utils.parse_escaped_chars(c)),a.replace(c,e,i)},SPLIT_DELIM:",",DELIMITER_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon","Colon","Nothing (separate chars)"],run_split:function(a,b){var c=b[0]||StrUtils.SPLIT_DELIM,d=Utils.char_rep[b[1]],e=a.split(c);return e.join(d)},DIFF_SAMPLE_DELIMITER:"\\n\\n",DIFF_BY:["Character","Word","Line","Sentence","CSS","JSON"],run_diff:function(a,b){var c,d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=a.split(d),j="";if(!i||2!==i.length)return"Incorrect number of samples, perhaps you need to modify the sample delimiter or add more samples?";switch(e){case"Character":c=JsDiff.diffChars(i[0],i[1]);break;case"Word":c=h?JsDiff.diffWords(i[0],i[1]):JsDiff.diffWordsWithSpace(i[0],i[1]);break;case"Line":c=h?JsDiff.diffTrimmedLines(i[0],i[1]):JsDiff.diffLines(i[0],i[1]);break;case"Sentence":c=JsDiff.diffSentences(i[0],i[1]);break;case"CSS":c=JsDiff.diffCss(i[0],i[1]);break;case"JSON":c=JsDiff.diffJson(i[0],i[1]);break;default:return"Invalid 'Diff by' option."}for(var k=0;k<c.length;k++)c[k].added?f&&(j+="<span class='hlgreen'>"+Utils.escape_html(c[k].value)+"</span>"):c[k].removed?g&&(j+="<span class='hlred'>"+Utils.escape_html(c[k].value)+"</span>"):j+=Utils.escape_html(c[k].value);return j},OFF_CHK_SAMPLE_DELIMITER:"\\n\\n",run_offset_checker:function(a,b){var c,d=b[0],e=a.split(d),f=[],g=0,h=0,i=!1,j=!1;if(!e||e.length<2)return"Not enough samples, perhaps you need to modify the sample delimiter or add more data?";for(h=0;h<e.length;h++)f[h]="";for(g=0;g<e[0].length;g++){for(c=e[0][g],i=!1,h=1;h<e.length;h++){if(e[h][g]!==c){i=!1;break}i=!0}for(h=0;h<e.length;h++)e[h].length<=g?(j&&(f[h]+="</span>"),h===e.length-1&&(j=!1)):(i&&!j?(f[h]+="<span class='hlgreen'>"+Utils.escape_html(e[h][g]),e[h].length===g+1&&(f[h]+="</span>"),h===e.length-1&&(j=!0)):!i&&j?(f[h]+="</span>"+Utils.escape_html(e[h][g]),h===e.length-1&&(j=!1)):(f[h]+=Utils.escape_html(e[h][g]),j&&e[h].length===g+1&&(f[h]+="</span>",e[h].length-1!==g&&(j=!1))),e[0].length-1===g&&(j&&(f[h]+="</span>"),f[h]+=Utils.escape_html(e[h].substring(g+1))))}return f.join(d)},run_parse_escaped_string:function(a,b){return Utils.parse_escaped_chars(a)},_regex_highlight:function(a,b,c){for(var d,e="",f=1,g=0,h=0;d=b.exec(a);)e+=Utils.escape_html(a.slice(g,d.index)),e+="<span class='hl"+f+"'>"+Utils.escape_html(d[0])+"</span>",f=1===f?2:1,g=b.lastIndex,h++;return e+=Utils.escape_html(a.slice(g,a.length)),c&&(e="Total found: "+h+"\n\n"+e),e},_regex_list:function(a,b,c,d,e){for(var f,g="",h=0;f=b.exec(a);)if(h++,d&&(g+=f[0]+"\n"),e)for(var i=1;i<f.length;i++)d&&(g+=" Group "+i+": "),g+=f[i]+"\n";return c&&(g="Total found: "+h+"\n\n"+g),g}},Tidy={REMOVE_SPACES:!0,REMOVE_CARIAGE_RETURNS:!0,REMOVE_LINE_FEEDS:!0,REMOVE_TABS:!0,REMOVE_FORM_FEEDS:!0,REMOVE_FULL_STOPS:!1,run_remove_whitespace:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=a;return c&&(i=i.replace(/ /g,"")),d&&(i=i.replace(/\r/g,"")),e&&(i=i.replace(/\n/g,"")),f&&(i=i.replace(/\t/g,"")),g&&(i=i.replace(/\f/g,"")),h&&(i=i.replace(/\./g,"")),i},run_remove_nulls:function(a,b){for(var c=[],d=0;d<a.length;d++)0!==a[d]&&c.push(a[d]);return c},APPLY_TO_EACH_LINE:!1,DROP_START:0,DROP_LENGTH:5,run_drop_bytes:function(a,b){var c=b[0],d=b[1],e=b[2];if(c<0||d<0)throw"Error: Invalid value";if(!e)return a.slice(0,c).concat(a.slice(c+d,a.length));for(var f=[],g=[],h=0;h<a.length;h++)10===a[h]?(f.push(g),g=[]):g.push(a[h]);f.push(g);var i=[];for(h=0;h<f.length;h++)i=i.concat(f[h].slice(0,c).concat(f[h].slice(c+d,f[h].length))),i.push(10);return i.slice(0,i.length-1)},TAKE_START:0,TAKE_LENGTH:5,run_take_bytes:function(a,b){var c=b[0],d=b[1],e=b[2];if(c<0||d<0)throw"Error: Invalid value";if(!e)return a.slice(c,c+d);for(var f=[],g=[],h=0;h<a.length;h++)10===a[h]?(f.push(g),g=[]):g.push(a[h]);f.push(g);var i=[];for(h=0;h<f.length;h++)i=i.concat(f[h].slice(c,c+d)),i.push(10);return i.slice(0,i.length-1)},PAD_POSITION:["Start","End"],PAD_LENGTH:5,PAD_CHAR:" ",run_pad:function(a,b){var c=b[0],d=b[1],e=b[2],f=a.split("\n"),g="",h=0;if("Start"===c)for(h=0;h<f.length;h++)g+=Utils.pad_left(f[h],f[h].length+d,e)+"\n";else if("End"===c)for(h=0;h<f.length;h++)g+=Utils.pad_right(f[h],f[h].length+d,e)+"\n";return g.slice(0,g.length-1)}},URL_={ENCODE_ALL:!1,run_to:function(a,b){var c=b[0];return c?URL_._encode_all_chars(a):encodeURI(a)},run_from:function(a,b){var c=a.replace(/\+/g,"%20");try{return decodeURIComponent(c)}catch(a){return unescape(c)}},run_parse:function(a,b){var c=document.createElement("a");if(c.href="http://example.com/",c.href=a,c.protocol){var d="";if(c.hostname!==window.location.hostname&&(d="Protocol:\t"+c.protocol+"\n",c.hostname&&(d+="Hostname:\t"+c.hostname+"\n"),c.port&&(d+="Port:\t\t"+c.port+"\n")),c.pathname){var e=c.pathname;0===e.indexOf(window.location.pathname)&&(e=e.replace(window.location.pathname,"")),e&&(d+="Path name:\t"+e+"\n")}if(c.hash&&(d+="Hash:\t\t"+c.hash+"\n"),c.search){d+="Arguments:\n";for(var f=c.search.slice(1,c.search.length).split("&"),g=[],h=0,i=0;i<f.length;i++)g.push(f[i].split("=")),h=g[i][0].length>h?g[i][0].length:h;for(i=0;i<g.length;i++)d+="\t"+Utils.pad_right(g[i][0],h),d+=g[i].length>1&&g[i][1].length?" = "+g[i][1]+"\n":"\n"}return d}return"Invalid URI"},_encode_all_chars:function(a){return encodeURIComponent(a).replace(/!/g,"%21").replace(/#/g,"%23").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/\-/g,"%2D").replace(/\./g,"%2E").replace(/_/g,"%5F").replace(/~/g,"%7E")}},UUID={run_generate_v4:function(a,b){if("undefined"!=typeof window.crypto&&"undefined"!=typeof window.crypto.getRandomValues){var c=new Uint32Array(4),d=0;return window.crypto.getRandomValues(c),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=c[d>>3]>>d%8*4&15,e="x"===a?b:3&b|8;return d++,e.toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})}},Unicode={PREFIXES:["\\u","%u","U+"],run_unescape:function(a,b){for(var c,d=Unicode._prefix_to_regex[b[0]],e=new RegExp(d+"([a-f\\d]{4,6})","ig"),f="",g=0;c=e.exec(a);)f+=a.slice(g,c.index),g=c.index,f+=Utils.chr(parseInt(c[1],16)),g=e.lastIndex;return f+=a.slice(g,a.length)},_prefix_to_regex:{"\\u":"\\\\u","%u":"%u","U+":"U\\+"}},Chef=function(){this.dish=new Dish};Chef.prototype.bake=function(a,b,c,d,e){var f=(new Date).getTime(),g=new Recipe(b),h=g.contains_flow_control(),i=!1;c.hasOwnProperty("attempt_highlight")&&(c.attempt_highlight=!0),h&&(c.attempt_highlight=!1),d>=b.length&&(d=0),e&&(g.set_breakpoint(d,!1),g.set_breakpoint(d+1,!0)),d>0&&h&&(g.remove_breaks_up_to(d),d=0),0===d&&this.dish.set(a,Dish.STRING);try{d=g.execute(this.dish,d)}catch(a){i=a,d=a.progress}return{result:this.dish.type===Dish.HTML?this.dish.get(Dish.HTML):this.dish.get(Dish.STRING),type:Dish.enum_lookup(this.dish.type),progress:d,options:c,duration:(new Date).getTime()-f,error:i}},Chef.prototype.silent_bake=function(a){var b=(new Date).getTime(),c=new Recipe(a),d=new Dish("",Dish.STRING);try{c.execute(d)}catch(a){}return(new Date).getTime()-b};var Dish=function(a,b){this.value=a||"string"==typeof a?a:null,this.type=b||Dish.BYTE_ARRAY};Dish.BYTE_ARRAY=0,Dish.STRING=1,Dish.NUMBER=2,Dish.HTML=3,Dish.type_enum=function(a){switch(a){case"byte_array":case"Byte array":return Dish.BYTE_ARRAY;case"string":case"String":return Dish.STRING;case"number":case"Number":return Dish.NUMBER;case"html":case"HTML":return Dish.HTML;default:throw"Invalid data type string. No matching enum."}},Dish.enum_lookup=function(a){switch(a){case Dish.BYTE_ARRAY:return"byte_array";case Dish.STRING:return"string";case Dish.NUMBER:return"number";case Dish.HTML:return"html";default:throw"Invalid data type enum. No matching type."}},Dish.prototype.set=function(a,b){if(this.value=a,this.type=b,!this.valid()){var c=Utils.truncate(JSON.stringify(this.value),13);throw"Data is not a valid "+Dish.enum_lookup(b)+": "+c}},Dish.prototype.get=function(a){return this.type!==a&&this.translate(a),this.value},Dish.prototype.translate=function(a){switch(this.type){case Dish.STRING:this.value=this.value?Utils.str_to_byte_array(this.value):[],this.type=Dish.BYTE_ARRAY;break;case Dish.NUMBER:this.value="number"==typeof this.value?Utils.str_to_byte_array(this.value.toString()):[],this.type=Dish.BYTE_ARRAY;break;case Dish.HTML:this.value=this.value?Utils.str_to_byte_array(Utils.strip_html_tags(this.value,!0)):[],this.type=Dish.BYTE_ARRAY}switch(a){case Dish.STRING:case Dish.HTML:this.value=this.value?Utils.byte_array_to_utf8(this.value):"",this.type=Dish.STRING;break;case Dish.NUMBER:this.value=this.value?parseFloat(Utils.byte_array_to_utf8(this.value)):0,this.type=Dish.NUMBER}},Dish.prototype.valid=function(){switch(this.type){case Dish.BYTE_ARRAY:if(!(this.value instanceof Array))return!1;for(var a=0;a<this.value.length;a++)if("number"!=typeof this.value[a]||this.value[a]<0||this.value[a]>255)return!1;return!0;case Dish.STRING:case Dish.HTML:return"string"==typeof this.value;case Dish.NUMBER:return"number"==typeof this.value;default:return!1}};const FlowControl={FORK_DELIM:"\\n",MERGE_DELIM:"\\n",run_fork:function(a){var b=a.op_list,c=b[a.progress].input_type,d=b[a.progress].output_type,e=a.dish.get(c),f=b[a.progress].get_ing_values(),g=f[0],h=f[1],i=[],j=[];e&&(j=e.split(g));for(var k=a.progress+1;k<b.length&&("Merge"!==b[k].name||b[k].is_disabled());k++)i.push(b[k]);var l,m=new Recipe,n="";for(m.add_operations(i),k=0;k<j.length;k++){var o=new Dish(j[k],c);l=m.execute(o,0),n+=o.get(d)+h}return a.dish.set(n,d),a.progress+=l,a},run_merge:function(a){return a},JUMP_NUM:0,MAX_JUMPS:10,run_jump:function(a){var b=a.op_list[a.progress].get_ing_values(),c=b[0],d=b[1];if(a.num_jumps>=d)throw"Reached maximum jumps, sorry!";return a.progress+=c,a.num_jumps++,a},run_cond_jump:function(a){var b=a.op_list[a.progress].get_ing_values(),c=a.dish,d=b[0],e=b[1],f=b[2];if(a.num_jumps>=f)throw"Reached maximum jumps, sorry!";return""!==d&&c.get(Dish.STRING).search(d)>-1&&(a.progress+=e,a.num_jumps++),a},run_return:function(a){return a.progress=a.op_list.length,a}};var Ingredient=function(a){this.name="",this.type="",this.value=null,a&&this._parse_config(a)};Ingredient.prototype._parse_config=function(a){this.name=a.name,this.type=a.type},Ingredient.prototype.get_config=function(){return this.value},Ingredient.prototype.set_value=function(a){this.value=Ingredient.prepare(a,this.type)},Ingredient.prepare=function(a,b){switch(b){case"binary_string":case"binary_short_string":case"editable_option":return Utils.parse_escaped_chars(a);case"byte_array":return"string"==typeof a?(a=a.replace(/\s+/g,""),Utils.hex_to_byte_array(a)):a;case"number":var c=parseFloat(a);if(isNaN(c)){var d=Utils.truncate(a.toString(),10);throw"Invalid ingredient value. Not a number: "+d}return c;default:return a}};var Operation=function(a,b){this.name=a,this.description="",this.input_type=-1,this.output_type=-1,this.run=null,this.highlight=null,this.highlight_reverse=null,this.breakpoint=!1,this.disabled=!1,this.ing_list=[],b&&this._parse_config(b)};Operation.prototype._parse_config=function(a){this.description=a.description,this.input_type=Dish.type_enum(a.input_type),this.output_type=Dish.type_enum(a.output_type),this.run=a.run,this.highlight=a.highlight,this.highlight_reverse=a.highlight_reverse,this.flow_control=a.flow_control;for(var b=0;b<a.args.length;b++){var c=a.args[b],d=new Ingredient(c);this.add_ingredient(d)}},Operation.prototype.get_config=function(){for(var a=[],b=0;b<this.ing_list.length;b++)a.push(this.ing_list[b].get_config());var c={op:this.name,args:a};return c},Operation.prototype.add_ingredient=function(a){this.ing_list.push(a)},Operation.prototype.set_ing_values=function(a){for(var b=0;b<a.length;b++)this.ing_list[b].set_value(a[b])},Operation.prototype.get_ing_values=function(){for(var a=[],b=0;b<this.ing_list.length;b++)a.push(this.ing_list[b].value);return a},Operation.prototype.set_breakpoint=function(a){this.breakpoint=!!a},Operation.prototype.is_breakpoint=function(){return this.breakpoint},Operation.prototype.set_disabled=function(a){this.disabled=!!a},Operation.prototype.is_disabled=function(){return this.disabled},Operation.prototype.is_flow_control=function(){return this.flow_control};var Recipe=function(a){this.op_list=[],a&&this._parse_config(a)};Recipe.prototype._parse_config=function(a){for(var b=0;b<a.length;b++){var c=a[b].op,d=OperationConfig[c],e=new Operation(c,d);e.set_ing_values(a[b].args),e.set_breakpoint(a[b].breakpoint),e.set_disabled(a[b].disabled),this.add_operation(e)}},Recipe.prototype.get_config=function(){for(var a=[],b=0;b<this.op_list.length;b++)a.push(this.op_list[b].get_config());return a},Recipe.prototype.add_operation=function(a){this.op_list.push(a)},Recipe.prototype.add_operations=function(a){this.op_list=this.op_list.concat(a)},Recipe.prototype.set_breakpoint=function(a,b){try{this.op_list[a].set_breakpoint(b)}catch(a){}},Recipe.prototype.remove_breaks_up_to=function(a){for(var b=0;b<a;b++)this.op_list[b].set_breakpoint(!1)},Recipe.prototype.contains_flow_control=function(){for(var a=0;a<this.op_list.length;a++)if(this.op_list[a].is_flow_control())return!0;return!1},Recipe.prototype.last_op_index=function(a){for(var b,c=a+1||0;c<this.op_list.length;c++){if(b=this.op_list[c],b.is_disabled())return c-1;if(b.is_breakpoint())return c-1}return c-1},Recipe.prototype.execute=function(a,b){b=b||0;for(var c,d,e,f=0,g=b;g<this.op_list.length;g++)if(c=this.op_list[g],!c.is_disabled()){if(c.is_breakpoint())return g;try{if(d=a.get(c.input_type),c.is_flow_control()){var h={progress:g,dish:a,op_list:this.op_list,num_jumps:f};h=c.run(h),g=h.progress,f=h.num_jumps}else e=c.run(d,c.get_ing_values()),a.set(e,c.output_type)}catch(a){var i="string"==typeof a?{message:a}:a;throw i.progress=g,i.display_str=c.name+" - ",i.fileName?i.display_str+=i.name+" in "+i.fileName+" on line "+i.lineNumber+".<br><br>Message: "+i.message:i.display_str+=i.message,i}}return this.op_list.length},Recipe.prototype.to_string=function(){return JSON.stringify(this.get_config())},Recipe.prototype.from_string=function(a){var b=JSON.parse(a);this._parse_config(b)};const Categories=[{name:"Favourites",ops:[]},{name:"Data format",ops:["To Hexdump","From Hexdump","To Hex","From Hex","To Charcode","From Charcode","To Decimal","From Decimal","To Binary","From Binary","To Base64","From Base64","Show Base64 offsets","To Base32","From Base32","To Base","From Base","To HTML Entity","From HTML Entity","URL Encode","URL Decode","Unescape Unicode Characters","To Quoted Printable","From Quoted Printable","To Punycode","From Punycode","To Hex Content","From Hex Content","PEM to Hex","Hex to PEM","Parse ASN.1 hex string","Change IP format","Text encoding","Swap endianness"]},{name:"Encryption / Encoding",ops:["AES Encrypt","AES Decrypt","Blowfish Encrypt","Blowfish Decrypt","DES Encrypt","DES Decrypt","Triple DES Encrypt","Triple DES Decrypt","Rabbit Encrypt","Rabbit Decrypt","RC4","RC4 Drop","ROT13","ROT47","XOR","XOR Brute Force","Vigen\xe8re Encode","Vigen\xe8re Decode","Derive PBKDF2 key","Derive EVP key"]},{name:"Public Key",ops:["Parse X.509 certificate","Parse ASN.1 hex string","PEM to Hex","Hex to PEM","Hex to Object Identifier","Object Identifier to Hex"]},{name:"Logical operations",ops:["XOR","XOR Brute Force","OR","NOT","AND","ADD","SUB","Rotate left","Rotate right","ROT13"]},{name:"Networking",ops:["Strip HTTP headers","Parse User Agent","Parse IP range","Parse IPv6 address","Parse URI","URL Encode","URL Decode","Format MAC addresses","Change IP format","Group IP addresses"]},{name:"Language",ops:["Text encoding","Unescape Unicode Characters"]},{name:"Utils",ops:["Diff","Remove whitespace","Remove null bytes","To Upper case","To Lower case","Add line numbers","Remove line numbers","Reverse","Sort","Unique","Split","Count occurrences","Expand alphabet range","Parse escaped string","Drop bytes","Take bytes","Pad lines","Find / Replace","Regular expression","Offset checker","Convert distance","Convert area","Convert mass","Convert speed","Convert data units","Parse UNIX file permissions","Swap endianness","Parse colour code"]},{name:"Date / Time",ops:["Parse DateTime","Translate DateTime Format","From UNIX Timestamp","To UNIX Timestamp","Extract dates"]},{name:"Extractors",ops:["Strings","Extract IP addresses","Extract email addresses","Extract MAC addresses","Extract URLs","Extract domains","Extract file paths","Extract dates","Regular expression","XPath expression","CSS selector"] +},{name:"Compression",ops:["Raw Deflate","Raw Inflate","Zlib Deflate","Zlib Inflate","Gzip","Gunzip","Zip","Unzip","Bzip2 Decompress"]},{name:"Hashing",ops:["Analyse hash","Generate all hashes","MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160","HMAC","Fletcher-16 Checksum","Adler-32 Checksum","CRC-32 Checksum","TCP/IP Checksum"]},{name:"Code tidy",ops:["Syntax highlighter","Generic Code Beautify","JavaScript Parser","JavaScript Beautify","JavaScript Minify","JSON Beautify","JSON Minify","XML Beautify","XML Minify","SQL Beautify","SQL Minify","CSS Beautify","CSS Minify","XPath expression","CSS selector","Strip HTML tags","Diff"]},{name:"Other",ops:["Entropy","Frequency distribution","Detect File Type","Scan for Embedded Files","Generate UUID","Numberwang"]},{name:"Flow control",ops:["Fork","Merge","Jump","Conditional Jump","Return"]}],OperationConfig={Fork:{description:"Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",run:FlowControl.run_fork,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Split delimiter",type:"binary_short_string",value:FlowControl.FORK_DELIM},{name:"Merge delimiter",type:"binary_short_string",value:FlowControl.MERGE_DELIM}]},Merge:{description:"Consolidate all branches back into a single trunk. The opposite of Fork.",run:FlowControl.run_merge,input_type:"string",output_type:"string",flow_control:!0,args:[]},Jump:{description:"Jump forwards or backwards over the specified number of operations.",run:FlowControl.run_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Number of operations to jump over",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},"Conditional Jump":{description:"Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression.",run:FlowControl.run_cond_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Match (regex)",type:"string",value:""},{name:"Number of operations to jump over if match found",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},Return:{description:"End execution of operations at this point in the recipe.",run:FlowControl.run_return,input_type:"string",output_type:"string",flow_control:!0,args:[]},"From Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>",run:Base64.run_from,highlight:Base64.highlight_from,highlight_reverse:Base64.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>",run:Base64.run_to,highlight:Base64.highlight_to,highlight_reverse:Base64.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS}]},"From Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_from_32,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_to_32,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET}]},"Show Base64 offsets":{description:"When a string is within a block of data and the whole block is Base64'd, the string itself could be represented in Base64 in three distinct ways depending on its offset within the block.<br><br>This operation shows all possible offsets for a given string so that each possible encoding can be considered.",run:Base64.run_offsets,input_type:"byte_array",output_type:"html",args:[{name:"Alphabet",type:"binary_string",value:Base64.ALPHABET},{name:"Show variable chars and padding",type:"boolean",value:Base64.OFFSETS_SHOW_VARIABLE}]},XOR:{description:"XOR the input with the given key.<br>e.g. <code>fe023da5</code><br><br><strong>Options</strong><br><u>Null preserving:</u> If the current byte is 0x00 or the same as the key, skip it.<br><br><u>Scheme:</u><ul><li>Standard - key is unchanged after each round</li><li>Input differential - key is set to the value of the previous unprocessed byte</li><li>Output differential - key is set to the value of the previous processed byte</li></ul>",run:BitwiseOp.run_xor,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT},{name:"Scheme",type:"option",value:BitwiseOp.XOR_SCHEME},{name:"Null preserving",type:"boolean",value:BitwiseOp.XOR_PRESERVE_NULLS}]},"XOR Brute Force":{description:"Enumerate all possible XOR solutions. Current maximum key length is 2 due to browser performance.<br><br>Optionally enter a regex string that you expect to find in the plaintext to filter results (crib).",run:BitwiseOp.run_xor_brute,input_type:"byte_array",output_type:"string",args:[{name:"Key length",type:"option",value:BitwiseOp.XOR_BRUTE_KEY_LENGTH},{name:"Length of sample",type:"number",value:BitwiseOp.XOR_BRUTE_SAMPLE_LENGTH},{name:"Offset of sample",type:"number",value:BitwiseOp.XOR_BRUTE_SAMPLE_OFFSET},{name:"Null preserving",type:"boolean",value:BitwiseOp.XOR_PRESERVE_NULLS},{name:"Differential",type:"boolean",value:BitwiseOp.XOR_DIFFERENTIAL},{name:"Crib (known plaintext string)",type:"binary_string",value:""},{name:"Print key",type:"boolean",value:BitwiseOp.XOR_BRUTE_PRINT_KEY},{name:"Output as hex",type:"boolean",value:BitwiseOp.XOR_BRUTE_OUTPUT_HEX}]},NOT:{description:"Returns the inverse of each byte.",run:BitwiseOp.run_not,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[]},AND:{description:"AND the input with the given key.<br>e.g. <code>fe023da5</code>",run:BitwiseOp.run_and,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},OR:{description:"OR the input with the given key.<br>e.g. <code>fe023da5</code>",run:BitwiseOp.run_or,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},ADD:{description:"ADD the input with the given key (e.g. <code>fe023da5</code>), MOD 255",run:BitwiseOp.run_add,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},SUB:{description:"SUB the input with the given key (e.g. <code>fe023da5</code>), MOD 255",run:BitwiseOp.run_sub,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},"From Hex":{description:"Converts a hexadecimal byte string back into a its raw value.<br><br>e.g. <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code> becomes the UTF-8 encoded string <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code>",run:ByteRepr.run_from_hex,highlight:ByteRepr.highlight_from,highlight_reverse:ByteRepr.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.HEX_DELIM_OPTIONS}]},"To Hex":{description:"Converts the input string to hexadecimal bytes separated by the specified delimiter.<br><br>e.g. The UTF-8 encoded string <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code> becomes <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code>",run:ByteRepr.run_to_hex,highlight:ByteRepr.highlight_to,highlight_reverse:ByteRepr.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.HEX_DELIM_OPTIONS}]},"From Charcode":{description:"Converts unicode character codes back into text.<br><br>e.g. <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code> becomes <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code>",run:ByteRepr.run_from_charcode,highlight:ByteRepr.highlight_from,highlight_reverse:ByteRepr.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS},{name:"Base",type:"number",value:ByteRepr.CHARCODE_BASE}]},"To Charcode":{description:"Converts text to its unicode character code equivalent.<br><br>e.g. <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code> becomes <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code>",run:ByteRepr.run_to_charcode,highlight:ByteRepr.highlight_to,highlight_reverse:ByteRepr.highlight_from,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS},{name:"Base",type:"number",value:ByteRepr.CHARCODE_BASE}]},"From Binary":{description:"Converts a binary string back into its raw form.<br><br>e.g. <code>01001000 01101001</code> becomes <code>Hi</code>",run:ByteRepr.run_from_binary,highlight:ByteRepr.highlight_from_binary,highlight_reverse:ByteRepr.highlight_to_binary,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.BIN_DELIM_OPTIONS}]},"To Binary":{description:"Displays the input data as a binary string.<br><br>e.g. <code>Hi</code> becomes <code>01001000 01101001</code>",run:ByteRepr.run_to_binary,highlight:ByteRepr.highlight_to_binary,highlight_reverse:ByteRepr.highlight_from_binary,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.BIN_DELIM_OPTIONS}]},"From Decimal":{description:"Converts the data from an ordinal integer array back into its raw form.<br><br>e.g. <code>72 101 108 108 111</code> becomes <code>Hello</code>",run:ByteRepr.run_from_decimal,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS}]},"To Decimal":{description:"Converts the input data to an ordinal integer array.<br><br>e.g. <code>Hello</code> becomes <code>72 101 108 108 111</code>",run:ByteRepr.run_to_decimal,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS}]},"From Hexdump":{description:"Attempts to convert a hexdump back into raw data. This operation supports many different hexdump variations, but probably not all. Make sure you verify that the data it gives you is correct before continuing analysis.",run:Hexdump.run_from,highlight:Hexdump.highlight_from,highlight_reverse:Hexdump.highlight_to,input_type:"string",output_type:"byte_array",args:[]},"To Hexdump":{description:"Creates a hexdump of the input data, displaying both the hexademinal values of each byte and an ASCII representation alongside.",run:Hexdump.run_to,highlight:Hexdump.highlight_to,highlight_reverse:Hexdump.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Width",type:"number",value:Hexdump.WIDTH},{name:"Upper case hex",type:"boolean",value:Hexdump.UPPER_CASE},{name:"Include final length",type:"boolean",value:Hexdump.INCLUDE_FINAL_LENGTH}]},"From Base":{description:"Converts a number to decimal from a given numerical base.",run:Base.run_from,input_type:"string",output_type:"number",args:[{name:"Radix",type:"number",value:Base.DEFAULT_RADIX}]},"To Base":{description:"Converts a decimal number to a given numerical base.",run:Base.run_to,input_type:"number",output_type:"string",args:[{name:"Radix",type:"number",value:Base.DEFAULT_RADIX}]},"From HTML Entity":{description:"Converts HTML entities back to characters<br><br>e.g. <code>&<span>amp;</span></code> becomes <code>&</code>",run:HTML.run_from_entity,input_type:"string",output_type:"string",args:[]},"To HTML Entity":{description:"Converts characters to HTML entities<br><br>e.g. <code>&</code> becomes <code>&<span>amp;</span></code>",run:HTML.run_to_entity,input_type:"string",output_type:"string",args:[{name:"Convert all characters",type:"boolean",value:HTML.CONVERT_ALL},{name:"Convert to",type:"option",value:HTML.CONVERT_OPTIONS}]},"Strip HTML tags":{description:"Removes all HTML tags from the input.",run:HTML.run_strip_tags,input_type:"string",output_type:"string",args:[{name:"Remove indentation",type:"boolean",value:HTML.REMOVE_INDENTATION},{name:"Remove excess line breaks",type:"boolean",value:HTML.REMOVE_LINE_BREAKS}]},"URL Decode":{description:"Converts URI/URL percent-encoded characters back to their raw values.<br><br>e.g. <code>%3d</code> becomes <code>=</code>",run:URL_.run_from,input_type:"string",output_type:"string",args:[]},"URL Encode":{description:"Encodes problematic characters into percent-encoding, a format supported by URIs/URLs.<br><br>e.g. <code>=</code> becomes <code>%3d</code>",run:URL_.run_to,input_type:"string",output_type:"string",args:[{name:"Encode all special chars",type:"boolean",value:URL_.ENCODE_ALL}]},"Parse URI":{description:"Pretty prints complicated Uniform Resource Identifier (URI) strings for ease of reading. Particularly useful for Uniform Resource Locators (URLs) with a lot of arguments.",run:URL_.run_parse,input_type:"string",output_type:"string",args:[]},"Unescape Unicode Characters":{description:"Converts unicode-escaped character notation back into raw characters.<br><br>Supports the prefixes:<ul><li><code>\\u</code></li><li><code>%u</code></li><li><code>U+</code></li></ul>e.g. <code>\\u03c3\\u03bf\\u03c5</code> becomes <code>\u03c3\u03bf\u03c5</code>",run:Unicode.run_unescape,input_type:"string",output_type:"string",args:[{name:"Prefix",type:"option",value:Unicode.PREFIXES}]},"From Quoted Printable":{description:"Converts QP-encoded text back to standard text.",run:QuotedPrintable.run_from,input_type:"string",output_type:"byte_array",args:[]},"To Quoted Printable":{description:"Quoted-Printable, or QP encoding, is an encoding using printable ASCII characters (alphanumeric and the equals sign '=') to transmit 8-bit data over a 7-bit data path or, generally, over a medium which is not 8-bit clean. It is defined as a MIME content transfer encoding for use in e-mail.<br><br>QP works by using the equals sign '=' as an escape character. It also limits line length to 76, as some software has limits on line length.",run:QuotedPrintable.run_to,input_type:"byte_array",output_type:"string",args:[]},"From Punycode":{description:"Punycode is a way to represent Unicode with the limited character subset of ASCII supported by the Domain Name System.<br><br>e.g. <code>mnchen-3ya</code> decodes to <code>m\xfcnchen</code>",run:Punycode.run_to_unicode,input_type:"string",output_type:"string",args:[{name:"Internationalised domain name",type:"boolean",value:Punycode.IDN}]},"To Punycode":{description:"Punycode is a way to represent Unicode with the limited character subset of ASCII supported by the Domain Name System.<br><br>e.g. <code>m\xfcnchen</code> encodes to <code>mnchen-3ya</code>",run:Punycode.run_to_ascii,input_type:"string",output_type:"string",args:[{name:"Internationalised domain name",type:"boolean",value:Punycode.IDN}]},"From Hex Content":{description:"Translates hexadecimal bytes in text back to raw bytes.<br><br>e.g. <code>foo|3d|bar</code> becomes <code>foo=bar</code>.",run:ByteRepr.run_from_hex_content,input_type:"string",output_type:"byte_array",args:[]},"To Hex Content":{description:"Converts special characters in a string to hexadecimal.<br><br>e.g. <code>foo=bar</code> becomes <code>foo|3d|bar</code>.",run:ByteRepr.run_to_hex_content,input_type:"byte_array",output_type:"string",args:[{name:"Convert",type:"option",value:ByteRepr.HEX_CONTENT_CONVERT_WHICH},{name:"Print spaces between bytes",type:"boolean",value:ByteRepr.HEX_CONTENT_SPACES_BETWEEN_BYTES}]},"Change IP format":{description:"Convert an IP address from one format to another, e.g. <code>172.20.23.54</code> to <code>ac141736</code>",run:IP.run_change_ip_format,input_type:"string",output_type:"string",args:[{name:"Input format",type:"option",value:IP.IP_FORMAT_LIST},{name:"Output format",type:"option",value:IP.IP_FORMAT_LIST}]},"Parse IP range":{description:"Given a CIDR range (e.g. <code>10.0.0.0/24</code>) or a hyphenated range (e.g. <code>10.0.0.0 - 10.0.1.0</code>), this operation provides network information and enumerates all IP addresses in the range.<br><br>IPv6 is supported but will not be enumerated.",run:IP.run_parse_ip_range,input_type:"string",output_type:"string",args:[{name:"Include network info",type:"boolean",value:IP.INCLUDE_NETWORK_INFO},{name:"Enumerate IP addresses",type:"boolean",value:IP.ENUMERATE_ADDRESSES},{name:"Allow large queries",type:"boolean",value:IP.ALLOW_LARGE_LIST}]},"Group IP addresses":{description:"Groups a list of IP addresses into subnets. Supports both IPv4 and IPv6 addresses.",run:IP.run_group_ips,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:IP.DELIM_OPTIONS},{name:"Subnet (CIDR)",type:"number",value:IP.GROUP_CIDR},{name:"Only show the subnets",type:"boolean",value:IP.GROUP_ONLY_SUBNET}]},"Parse IPv6 address":{description:"Displays the longhand and shorthand versions of a valid IPv6 address.<br><br>Recognises all reserved ranges and parses encapsulated or tunnelled addresses including Teredo and 6to4.",run:IP.run_parse_ipv6,input_type:"string",output_type:"string",args:[]},"Text encoding":{description:"Translates the data between different character encodings.<br><br>Supported charsets are:<ul><li>UTF8</li><li>UTF16</li><li>UTF16LE (little-endian)</li><li>UTF16BE (big-endian)</li><li>Hex</li><li>Base64</li><li>Latin1 (ISO-8859-1)</li><li>Windows-1251</li></ul>",run:CharEnc.run,input_type:"string",output_type:"string",args:[{name:"Input type",type:"option",value:CharEnc.IO_FORMAT},{name:"Output type",type:"option",value:CharEnc.IO_FORMAT}]},"AES Decrypt":{description:"To successfully decrypt AES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 16 bytes of encrypted material.",run:Cipher.run_aes_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"AES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Advanced Encryption Standard (AES) is a U.S. Federal Information Processing Standard (FIPS). It was selected after a 5-year process where 15 competing designs were evaluated.<br><br>AES-128, AES-192, and AES-256 are supported. The variant will be chosen based on the size of the key passed in. If a passphrase is used, a 256-bit key will be generated.",run:Cipher.run_aes_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"DES Decrypt":{description:"To successfully decrypt DES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_des_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"DES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>DES is a previously dominant algorithm for encryption, and was published as an official U.S. Federal Information Processing Standard (FIPS). It is now considered to be insecure due to its small key size.",run:Cipher.run_des_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"Triple DES Decrypt":{description:"To successfully decrypt Triple DES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_triple_des_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"Triple DES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Triple DES applies DES three times to each block to increase key size.",run:Cipher.run_triple_des_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"Blowfish Decrypt":{description:"Blowfish is a symmetric-key block cipher designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. AES now receives more attention.",run:Cipher.run_blowfish_dec,input_type:"string",output_type:"string",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Mode",type:"option",value:Cipher.BLOWFISH_MODES},{name:"Input format",type:"option",value:Cipher.IO_FORMAT3}]},"Blowfish Encrypt":{description:"Blowfish is a symmetric-key block cipher designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. AES now receives more attention.",run:Cipher.run_blowfish_enc,input_type:"string",output_type:"string",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Mode",type:"option",value:Cipher.BLOWFISH_MODES},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Rabbit Decrypt":{description:"To successfully decrypt Rabbit, you need either:<ul><li>The passphrase</li><li>Or the key and IV (This is currently broken. You need the key and salt at the moment.)</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_rabbit_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"Rabbit Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Rabbit is a high-performance stream cipher and a finalist in the eSTREAM Portfolio. It is one of the four designs selected after a 3 1/2 year process where 22 designs were evaluated.",run:Cipher.run_rabbit_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},RC4:{description:"RC4 is a widely-used stream cipher. It is used in popular protocols such as SSL and WEP. Although remarkable for its simplicity and speed, the algorithm's history doesn't inspire confidence in its security.",run:Cipher.run_rc4,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Passphrase",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Input format",type:"option",value:Cipher.IO_FORMAT4},{name:"Output format",type:"option",value:Cipher.IO_FORMAT4}]},"RC4 Drop":{description:"It was discovered that the first few bytes of the RC4 keystream are strongly non-random and leak information about the key. We can defend against this attack by discarding the initial portion of the keystream. This modified algorithm is traditionally called RC4-drop.",run:Cipher.run_rc4drop,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Passphrase",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Input format",type:"option",value:Cipher.IO_FORMAT4},{name:"Output format",type:"option",value:Cipher.IO_FORMAT4},{name:"Number of bytes to drop",type:"number",value:Cipher.RC4DROP_BYTES}]},"Derive PBKDF2 key":{description:"PBKDF2 is a password-based key derivation function. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.<br><br>A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.<br><br>Enter your passphrase as the input and then set the relevant options to generate a key.",run:Cipher.run_pbkdf2,input_type:"string",output_type:"string",args:[{name:"Key size",type:"number",value:Cipher.KDF_KEY_SIZE},{name:"Iterations",type:"number",value:Cipher.KDF_ITERATIONS},{name:"Salt (hex)",type:"string",value:""},{name:"Input format",type:"option",value:Cipher.IO_FORMAT2},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Derive EVP key":{description:"EVP is a password-based key derivation function used extensively in OpenSSL. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.<br><br>A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.<br><br>Enter your passphrase as the input and then set the relevant options to generate a key.",run:Cipher.run_evpkdf,input_type:"string",output_type:"string",args:[{name:"Key size",type:"number",value:Cipher.KDF_KEY_SIZE},{name:"Iterations",type:"number",value:Cipher.KDF_ITERATIONS},{name:"Salt (hex)",type:"string",value:""},{name:"Input format",type:"option",value:Cipher.IO_FORMAT2},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Vigen\xe8re Encode":{description:"The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",run:Cipher.run_vigenere_enc,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Key",type:"string",value:""}]},"Vigen\xe8re Decode":{description:"The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",run:Cipher.run_vigenere_dec,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Key",type:"string",value:""}]},"Rotate right":{description:"Rotates each byte to the right by the number of bits specified. Currently only supports 8-bit values.",run:Rotate.run_rotr,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Number of bits",type:"number",value:Rotate.ROTATE_AMOUNT},{name:"Rotate as a whole",type:"boolean",value:Rotate.ROTATE_WHOLE}]},"Rotate left":{description:"Rotates each byte to the left by the number of bits specified. Currently only supports 8-bit values.",run:Rotate.run_rotl,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Number of bits",type:"number",value:Rotate.ROTATE_AMOUNT},{name:"Rotate as a whole",type:"boolean",value:Rotate.ROTATE_WHOLE}]},ROT13:{description:"A simple caesar substitution cipher which rotates alphabet characters by the specified amount (default 13).",run:Rotate.run_rot13,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Rotate lower case chars",type:"boolean",value:Rotate.ROT13_LOWERCASE},{name:"Rotate upper case chars",type:"boolean",value:Rotate.ROT13_UPPERCASE},{name:"Amount",type:"number",value:Rotate.ROT13_AMOUNT}]},ROT47:{description:"A slightly more complex variation of a caesar cipher, which includes ASCII characters from 33 '!' to 126 '~'. Default rotation: 47.",run:Rotate.run_rot47,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Amount", +type:"number",value:Rotate.ROT47_AMOUNT}]},"Strip HTTP headers":{description:"Removes HTTP headers from a request or response by looking for the first instance of a double newline.",run:HTTP.run_strip_headers,input_type:"string",output_type:"string",args:[]},"Parse User Agent":{description:"Attempts to identify and categorise information contained in a user-agent string.",run:HTTP.run_parse_user_agent,input_type:"string",output_type:"string",args:[]},"Format MAC addresses":{description:"Displays given MAC addresses in multiple different formats.<br><br>Expects addresses in a list separated by newlines, spaces or commas.<br><br>WARNING: There are no validity checks.",run:MAC.run_format,input_type:"string",output_type:"string",args:[{name:"Output case",type:"option",value:MAC.OUTPUT_CASE},{name:"No delimiter",type:"boolean",value:MAC.NO_DELIM},{name:"Dash delimiter",type:"boolean",value:MAC.DASH_DELIM},{name:"Colon delimiter",type:"boolean",value:MAC.COLON_DELIM},{name:"Cisco style",type:"boolean",value:MAC.CISCO_STYLE}]},"Offset checker":{description:"Compares multiple inputs (separated by the specified delimiter) and highlights matching characters which appear at the same position in all samples.",run:StrUtils.run_offset_checker,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.OFF_CHK_SAMPLE_DELIMITER}]},"Remove whitespace":{description:"Optionally removes all spaces, carriage returns, line feeds, tabs and form feeds from the input data.<br><br>This operation also supports the removal of full stops which are sometimes used to represent non-printable bytes in ASCII output.",run:Tidy.run_remove_whitespace,input_type:"string",output_type:"string",args:[{name:"Spaces",type:"boolean",value:Tidy.REMOVE_SPACES},{name:"Carriage returns (\\r)",type:"boolean",value:Tidy.REMOVE_CARIAGE_RETURNS},{name:"Line feeds (\\n)",type:"boolean",value:Tidy.REMOVE_LINE_FEEDS},{name:"Tabs",type:"boolean",value:Tidy.REMOVE_TABS},{name:"Form feeds (\\f)",type:"boolean",value:Tidy.REMOVE_FORM_FEEDS},{name:"Full stops",type:"boolean",value:Tidy.REMOVE_FULL_STOPS}]},"Remove null bytes":{description:"Removes all null bytes (<code>0x00</code>) from the input.",run:Tidy.run_remove_nulls,input_type:"byte_array",output_type:"byte_array",args:[]},"Drop bytes":{description:"Cuts the specified number of bytes out of the data.",run:Tidy.run_drop_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.DROP_START},{name:"Length",type:"number",value:Tidy.DROP_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Take bytes":{description:"Takes a slice of the specified number of bytes from the data.",run:Tidy.run_take_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.TAKE_START},{name:"Length",type:"number",value:Tidy.TAKE_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Pad lines":{description:"Add the specified number of the specified character to the beginning or end of each line",run:Tidy.run_pad,input_type:"string",output_type:"string",args:[{name:"Position",type:"option",value:Tidy.PAD_POSITION},{name:"Length",type:"number",value:Tidy.PAD_LENGTH},{name:"Character",type:"binary_short_string",value:Tidy.PAD_CHAR}]},Reverse:{description:"Reverses the input string.",run:SeqUtils.run_reverse,input_type:"byte_array",output_type:"byte_array",args:[{name:"By",type:"option",value:SeqUtils.REVERSE_BY}]},Sort:{description:"Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only.",run:SeqUtils.run_sort,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS},{name:"Reverse",type:"boolean",value:SeqUtils.SORT_REVERSE},{name:"Order",type:"option",value:SeqUtils.SORT_ORDER}]},Unique:{description:"Removes duplicate strings from the input.",run:SeqUtils.run_unique,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS}]},"Count occurrences":{description:"Counts the number of times the provided string occurs in the input.",run:SeqUtils.run_count,input_type:"string",output_type:"number",args:[{name:"Search string",type:"toggle_string",value:"",toggle_values:SeqUtils.SEARCH_TYPE}]},"Add line numbers":{description:"Adds line numbers to the output.",run:SeqUtils.run_add_line_numbers,input_type:"string",output_type:"string",args:[]},"Remove line numbers":{description:"Removes line numbers from the output if they can be trivially detected.",run:SeqUtils.run_remove_line_numbers,input_type:"string",output_type:"string",args:[]},"Find / Replace":{description:"Replaces all occurrences of the first string with the second.<br><br>The three match options are only relevant to regex search strings.",run:StrUtils.run_find_replace,manual_bake:!0,input_type:"string",output_type:"string",args:[{name:"Find",type:"toggle_string",value:"",toggle_values:StrUtils.SEARCH_TYPE},{name:"Replace",type:"binary_string",value:""},{name:"Global match",type:"boolean",value:StrUtils.FIND_REPLACE_GLOBAL},{name:"Case insensitive",type:"boolean",value:StrUtils.FIND_REPLACE_CASE},{name:"Multiline matching",type:"boolean",value:StrUtils.FIND_REPLACE_MULTILINE}]},"To Upper case":{description:"Converts the input string to upper case, optionally limiting scope to only the first character in each word, sentence or paragraph.",run:StrUtils.run_upper,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Scope",type:"option",value:StrUtils.CASE_SCOPE}]},"To Lower case":{description:"Converts every character in the input to lower case.",run:StrUtils.run_lower,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[]},Split:{description:"Splits a string into sections around a given delimiter.",run:StrUtils.run_split,input_type:"string",output_type:"string",args:[{name:"Split delimiter",type:"binary_short_string",value:StrUtils.SPLIT_DELIM},{name:"Join delimiter",type:"option",value:StrUtils.DELIMITER_OPTIONS}]},Strings:{description:"Extracts all strings from the input.",run:Extract.run_strings,input_type:"string",output_type:"string",args:[{name:"Minimum length",type:"number",value:Extract.MIN_STRING_LEN},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract IP addresses":{description:"Extracts all IPv4 and IPv6 addresses.<br><br>Warning: Given a string <code>710.65.0.456</code>, this will match <code>10.65.0.45</code> so always check the original input!",run:Extract.run_ip,input_type:"string",output_type:"string",args:[{name:"IPv4",type:"boolean",value:Extract.INCLUDE_IPV4},{name:"IPv6",type:"boolean",value:Extract.INCLUDE_IPV6},{name:"Remove local IPv4 addresses",type:"boolean",value:Extract.REMOVE_LOCAL},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract email addresses":{description:"Extracts all email addresses from the input.",run:Extract.run_email,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract MAC addresses":{description:"Extracts all Media Access Control (MAC) addresses from the input.",run:Extract.run_mac,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract URLs":{description:"Extracts Uniform Resource Locators (URLs) from the input. The protocol (http, ftp etc.) is required otherwise there will be far too many false positives.",run:Extract.run_urls,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract domains":{description:"Extracts domain names with common Top-Level Domains (TLDs).<br>Note that this will not include paths. Use <strong>Extract URLs</strong> to find entire URLs.",run:Extract.run_domains,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract file paths":{description:"Extracts anything that looks like a Windows or UNIX file path.<br><br>Note that if UNIX is selected, there will likely be a lot of false positives.",run:Extract.run_file_paths,input_type:"string",output_type:"string",args:[{name:"Windows",type:"boolean",value:Extract.INCLUDE_WIN_PATH},{name:"UNIX",type:"boolean",value:Extract.INCLUDE_UNIX_PATH},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract dates":{description:"Extracts dates in the following formats<ul><li><code>yyyy-mm-dd</code></li><li><code>dd/mm/yyyy</code></li><li><code>mm/dd/yyyy</code></li></ul>Dividers can be any of /, -, . or space",run:Extract.run_dates,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Regular expression":{description:"Define your own regular expression to search the input data with, optionally choosing from a list of pre-defined patterns.",run:StrUtils.run_regex,manual_bake:!0,input_type:"string",output_type:"html",args:[{name:"Built in regexes",type:"populate_option",value:StrUtils.REGEX_PRE_POPULATE,target:1},{name:"Regex",type:"text",value:""},{name:"Case insensitive",type:"boolean",value:StrUtils.REGEX_CASE_INSENSITIVE},{name:"Multiline matching",type:"boolean",value:StrUtils.REGEX_MULTILINE_MATCHING},{name:"Display total",type:"boolean",value:StrUtils.DISPLAY_TOTAL},{name:"Output format",type:"option",value:StrUtils.OUTPUT_FORMAT}]},"XPath expression":{description:"Extract information from an XML document with an XPath query",run:Code.run_xpath,input_type:"string",output_type:"string",args:[{name:"XPath",type:"string",value:Code.XPATH_INITIAL},{name:"Result delimiter",type:"binary_short_string",value:Code.XPATH_DELIMITER}]},"CSS selector":{description:"Extract information from an HTML document with a CSS selector",run:Code.run_css_query,input_type:"string",output_type:"string",args:[{name:"CSS selector",type:"string",value:Code.CSS_SELECTOR_INITIAL},{name:"Delimiter",type:"binary_short_string",value:Code.CSS_QUERY_DELIMITER}]},"From UNIX Timestamp":{description:"Converts a UNIX timestamp to a datetime string.<br><br>e.g. <code>978346800</code> becomes <code>Mon 1 January 2001 11:00:00 UTC</code>",run:DateTime.run_from_unix_timestamp,input_type:"number",output_type:"string",args:[{name:"Units",type:"option",value:DateTime.UNITS}]},"To UNIX Timestamp":{description:"Parses a datetime string and returns the corresponding UNIX timestamp.<br><br>e.g. <code>Mon 1 January 2001 11:00:00 UTC</code> becomes <code>978346800</code>",run:DateTime.run_to_unix_timestamp,input_type:"string",output_type:"number",args:[{name:"Units",type:"option",value:DateTime.UNITS}]},"Translate DateTime Format":{description:"Parses a datetime string in one format and re-writes it in another.<br><br>Run with no input to see the relevant format string examples.",run:DateTime.run_translate_format,input_type:"string",output_type:"html",args:[{name:"Built in formats",type:"populate_option",value:DateTime.DATETIME_FORMATS,target:1},{name:"Input format string",type:"binary_string",value:DateTime.INPUT_FORMAT_STRING},{name:"Input timezone",type:"option",value:DateTime.TIMEZONES},{name:"Output format string",type:"binary_string",value:DateTime.OUTPUT_FORMAT_STRING},{name:"Output timezone",type:"option",value:DateTime.TIMEZONES}]},"Parse DateTime":{description:"Parses a DateTime string in your specified format and displays it in whichever timezone you choose with the following information:<ul><li>Date</li><li>Time</li><li>Period (AM/PM)</li><li>Timezone</li><li>UTC offset</li><li>Daylight Saving Time</li><li>Leap year</li><li>Days in this month</li><li>Day of year</li><li>Week number</li><li>Quarter</li></ul>Run with no input to see format string examples if required.",run:DateTime.run_parse,input_type:"string",output_type:"html",args:[{name:"Built in formats",type:"populate_option",value:DateTime.DATETIME_FORMATS,target:1},{name:"Input format string",type:"binary_string",value:DateTime.INPUT_FORMAT_STRING},{name:"Input timezone",type:"option",value:DateTime.TIMEZONES}]},"Convert distance":{description:"Converts a unit of distance to another format.",run:Convert.run_distance,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.DISTANCE_UNITS},{name:"Output units",type:"option",value:Convert.DISTANCE_UNITS}]},"Convert area":{description:"Converts a unit of area to another format.",run:Convert.run_area,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.AREA_UNITS},{name:"Output units",type:"option",value:Convert.AREA_UNITS}]},"Convert mass":{description:"Converts a unit of mass to another format.",run:Convert.run_mass,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.MASS_UNITS},{name:"Output units",type:"option",value:Convert.MASS_UNITS}]},"Convert speed":{description:"Converts a unit of speed to another format.",run:Convert.run_speed,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.SPEED_UNITS},{name:"Output units",type:"option",value:Convert.SPEED_UNITS}]},"Convert data units":{description:"Converts a unit of data to another format.",run:Convert.run_data_size,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.DATA_UNITS},{name:"Output units",type:"option",value:Convert.DATA_UNITS}]},"Raw Deflate":{description:"Compresses data using the deflate algorithm with no headers.",run:Compress.run_raw_deflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},"Raw Inflate":{description:"Decompresses data which has been compressed using the deflate algorithm with no headers.",run:Compress.run_raw_inflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start index",type:"number",value:Compress.INFLATE_INDEX},{name:"Initial output buffer size",type:"number",value:Compress.INFLATE_BUFFER_SIZE},{name:"Buffer expansion type",type:"option",value:Compress.INFLATE_BUFFER_TYPE},{name:"Resize buffer after decompression",type:"boolean",value:Compress.INFLATE_RESIZE},{name:"Verify result",type:"boolean",value:Compress.INFLATE_VERIFY}]},"Zlib Deflate":{description:"Compresses data using the deflate algorithm adding zlib headers.",run:Compress.run_zlib_deflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},"Zlib Inflate":{description:"Decompresses data which has been compressed using the deflate algorithm with zlib headers.",run:Compress.run_zlib_inflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start index",type:"number",value:Compress.INFLATE_INDEX},{name:"Initial output buffer size",type:"number",value:Compress.INFLATE_BUFFER_SIZE},{name:"Buffer expansion type",type:"option",value:Compress.INFLATE_BUFFER_TYPE},{name:"Resize buffer after decompression",type:"boolean",value:Compress.INFLATE_RESIZE},{name:"Verify result",type:"boolean",value:Compress.INFLATE_VERIFY}]},Gzip:{description:"Compresses data using the deflate algorithm with gzip headers.",run:Compress.run_gzip,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE},{name:"Filename (optional)",type:"string",value:""},{name:"Comment (optional)",type:"string",value:""},{name:"Include file checksum",type:"boolean",value:Compress.GZIP_CHECKSUM}]},Gunzip:{description:"Decompresses data which has been compressed using the deflate algorithm with gzip headers.",run:Compress.run_gunzip,input_type:"byte_array",output_type:"byte_array",args:[]},Zip:{description:"Compresses data using the PKZIP algorithm with the given filename.<br><br>No support for multiple files at this time.",run:Compress.run_pkzip,input_type:"byte_array",output_type:"byte_array",args:[{name:"Filename",type:"string",value:Compress.PKZIP_FILENAME},{name:"Comment",type:"string",value:""},{name:"Password",type:"binary_string",value:""},{name:"Compression method",type:"option",value:Compress.COMPRESSION_METHOD},{name:"Operating system",type:"option",value:Compress.OS},{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},Unzip:{description:"Decompresses data using the PKZIP algorithm and displays it per file, with support for passwords.",run:Compress.run_pkunzip,input_type:"byte_array",output_type:"html",args:[{name:"Password",type:"binary_string",value:""},{name:"Verify result",type:"boolean",value:Compress.PKUNZIP_VERIFY}]},"Bzip2 Decompress":{description:"Decompresses data using the Bzip2 algorithm.",run:Compress.run_bzip2_decompress,input_type:"byte_array",output_type:"string",args:[]},"Generic Code Beautify":{description:"Attempts to pretty print C-style languages such as C, C++, C#, Java, PHP, JavaScript etc.<br><br>This will not do a perfect job, and the resulting code may not work any more. This operation is designed purely to make obfuscated or minified code more easy to read and understand.<br><br>Things which will not work properly:<ul><li>For loop formatting</li><li>Do-While loop formatting</li><li>Switch/Case indentation</li><li>Certain bit shift operators</li></ul>",run:Code.run_generic_beautify,input_type:"string",output_type:"string",args:[]},"JavaScript Parser":{description:"Returns an Abstract Syntax Tree for valid JavaScript code.",run:JS.run_parse,input_type:"string",output_type:"string",args:[{name:"Location info",type:"boolean",value:JS.PARSE_LOC},{name:"Range info",type:"boolean",value:JS.PARSE_RANGE},{name:"Include tokens array",type:"boolean",value:JS.PARSE_TOKENS},{name:"Include comments array",type:"boolean",value:JS.PARSE_COMMENT},{name:"Report errors and try to continue",type:"boolean",value:JS.PARSE_TOLERANT}]},"JavaScript Beautify":{description:"Parses and pretty prints valid JavaScript code. Also works with JavaScript Object Notation (JSON).",run:JS.run_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:JS.BEAUTIFY_INDENT},{name:"Quotes",type:"option",value:JS.BEAUTIFY_QUOTES},{name:"Semicolons before closing braces",type:"boolean",value:JS.BEAUTIFY_SEMICOLONS},{name:"Include comments",type:"boolean",value:JS.BEAUTIFY_COMMENT}]},"JavaScript Minify":{description:"Compresses JavaScript code.",run:JS.run_minify,input_type:"string",output_type:"string",args:[]},"XML Beautify":{description:"Indents and prettifies eXtensible Markup Language (XML) code.",run:Code.run_xml_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"JSON Beautify":{description:"Indents and prettifies JavaScript Object Notation (JSON) code.",run:Code.run_json_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"CSS Beautify":{description:"Indents and prettifies Cascading Style Sheets (CSS) code.",run:Code.run_css_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"SQL Beautify":{description:"Indents and prettifies Structured Query Language (SQL) code.",run:Code.run_sql_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"XML Minify":{description:"Compresses eXtensible Markup Language (XML) code.",run:Code.run_xml_minify,input_type:"string",output_type:"string",args:[{name:"Preserve comments",type:"boolean",value:Code.PRESERVE_COMMENTS}]},"JSON Minify":{description:"Compresses JavaScript Object Notation (JSON) code.",run:Code.run_json_minify,input_type:"string",output_type:"string",args:[]},"CSS Minify":{description:"Compresses Cascading Style Sheets (CSS) code.",run:Code.run_css_minify,input_type:"string",output_type:"string",args:[{name:"Preserve comments",type:"boolean",value:Code.PRESERVE_COMMENTS}]},"SQL Minify":{description:"Compresses Structured Query Language (SQL) code.",run:Code.run_sql_minify,input_type:"string",output_type:"string",args:[]},"Analyse hash":{description:"Tries to determine information about a given hash and suggests which algorithm may have been used to generate it based on its length.",run:Hash.run_analyse,input_type:"string",output_type:"string",args:[]},MD5:{description:"MD5 (Message-Digest 5) is a widely used hash function. It has been used in a variety of security applications and is also commonly used to check the integrity of files.<br><br>However, MD5 is not collision resistant and it isn't suitable for applications like SSL/TLS certificates or digital signatures that rely on this property.",run:Hash.run_md5,input_type:"string",output_type:"string",args:[]},SHA1:{description:"The SHA (Secure Hash Algorithm) hash functions were designed by the NSA. SHA-1 is the most established of the existing SHA hash functions and it is used in a variety of security applications and protocols.<br><br>However, SHA-1's collision resistance has been weakening as new attacks are discovered or improved.",run:Hash.run_sha1,input_type:"string",output_type:"string",args:[]},SHA224:{description:"SHA-224 is largely identical to SHA-256 but is truncated to 224 bytes.",run:Hash.run_sha224,input_type:"string",output_type:"string",args:[]},SHA256:{description:"SHA-256 is one of the four variants in the SHA-2 set. It isn't as widely used as SHA-1, though it provides much better security.",run:Hash.run_sha256,input_type:"string",output_type:"string",args:[]},SHA384:{description:"SHA-384 is largely identical to SHA-512 but is truncated to 384 bytes.",run:Hash.run_sha384,input_type:"string",output_type:"string",args:[]},SHA512:{description:"SHA-512 is largely identical to SHA-256 but operates on 64-bit words rather than 32.",run:Hash.run_sha512,input_type:"string",output_type:"string",args:[]},SHA3:{description:"This is an implementation of Keccak[c=2d]. SHA3 functions based on different implementations of Keccak will give different results.",run:Hash.run_sha3,input_type:"string",output_type:"string",args:[{name:"Output length",type:"option",value:Hash.SHA3_LENGTH}]},"RIPEMD-160":{description:"RIPEMD (RACE Integrity Primitives Evaluation Message Digest) is a family of cryptographic hash functions developed in Leuven, Belgium, by Hans Dobbertin, Antoon Bosselaers and Bart Preneel at the COSIC research group at the Katholieke Universiteit Leuven, and first published in 1996.<br><br>RIPEMD was based upon the design principles used in MD4, and is similar in performance to the more popular SHA-1.<br><br>RIPEMD-160 is an improved, 160-bit version of the original RIPEMD, and the most common version in the family.",run:Hash.run_ripemd160,input_type:"string",output_type:"string",args:[]},HMAC:{description:"Keyed-Hash Message Authentication Codes (HMAC) are a mechanism for message authentication using cryptographic hash functions.",run:Hash.run_hmac,input_type:"string",output_type:"string",args:[{name:"Password",type:"binary_string",value:""},{name:"Hashing function",type:"option",value:Hash.HMAC_FUNCTIONS}]},"Fletcher-16 Checksum":{description:"The Fletcher checksum is an algorithm for computing a position-dependent checksum devised by John Gould Fletcher at Lawrence Livermore Labs in the late 1970s.<br><br>The objective of the Fletcher checksum was to provide error-detection properties approaching those of a cyclic redundancy check but with the lower computational effort associated with summation techniques.",run:Checksum.run_fletcher16,input_type:"byte_array",output_type:"string",args:[]},"Adler-32 Checksum":{description:"Adler-32 is a checksum algorithm which was invented by Mark Adler in 1995, and is a modification of the Fletcher checksum. Compared to a cyclic redundancy check of the same length, it trades reliability for speed (preferring the latter).<br><br>Adler-32 is more reliable than Fletcher-16, and slightly less reliable than Fletcher-32.",run:Checksum.run_adler32,input_type:"byte_array",output_type:"string",args:[]},"CRC-32 Checksum":{description:"A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.<br><br>The CRC was invented by W. Wesley Peterson in 1961; the 32-bit CRC function of Ethernet and many other standards is the work of several researchers and was published in 1975.",run:Checksum.run_crc32,input_type:"byte_array",output_type:"string",args:[]},"Generate all hashes":{description:"Generates all available hashes and checksums for the input.",run:Hash.run_all,input_type:"string",output_type:"string",args:[]},Entropy:{description:"Calculates the Shannon entropy of the input data which gives an idea of its randomness. 8 is the maximum.",run:Entropy.run_entropy,input_type:"byte_array",output_type:"html",args:[{name:"Chunk size",type:"number",value:Entropy.CHUNK_SIZE}]},"Frequency distribution":{description:"Displays the distribution of bytes in the data as a graph.",run:Entropy.run_freq_distrib,input_type:"byte_array",output_type:"html",args:[{name:"Show 0%'s",type:"boolean",value:Entropy.FREQ_ZEROS}]},Numberwang:{description:"Based on the popular gameshow by Mitchell and Webb.",run:Numberwang.run,input_type:"string",output_type:"string",args:[]},"Parse X.509 certificate":{description:"X.509 is an ITU-T standard for a public key infrastructure (PKI) and Privilege Management Infrastructure (PMI). It is commonly involved with SSL/TLS security.<br><br>This operation displays the contents of a certificate in a human readable format, similar to the openssl command line tool.",run:PublicKey.run_parse_x509,input_type:"string",output_type:"string",args:[{name:"Input format",type:"option",value:PublicKey.X509_INPUT_FORMAT}]},"PEM to Hex":{description:"Converts PEM (Privacy Enhanced Mail) format to a hexadecimal DER (Distinguished Encoding Rules) string.",run:PublicKey.run_pem_to_hex,input_type:"string",output_type:"string",args:[]},"Hex to PEM":{description:"Converts a hexadecimal DER (Distinguished Encoding Rules) string into PEM (Privacy Enhanced Mail) format.",run:PublicKey.run_hex_to_pem,input_type:"string",output_type:"string",args:[{name:"Header string",type:"string",value:PublicKey.PEM_HEADER_STRING}]},"Hex to Object Identifier":{description:"Converts a hexadecimal string into an object identifier (OID).",run:PublicKey.run_hex_to_object_identifier,input_type:"string",output_type:"string",args:[]},"Object Identifier to Hex":{description:"Converts an object identifier (OID) into a hexadecimal string.",run:PublicKey.run_object_identifier_to_hex,input_type:"string",output_type:"string",args:[]},"Parse ASN.1 hex string":{description:"Abstract Syntax Notation One (ASN.1) is a standard and notation that describes rules and structures for representing, encoding, transmitting, and decoding data in telecommunications and computer networking.<br><br>This operation parses arbitrary ASN.1 data and presents the resulting tree.",run:PublicKey.run_parse_asn1_hex_string,input_type:"string",output_type:"string",args:[{name:"Starting index",type:"number",value:0},{name:"Truncate octet strings longer than",type:"number",value:PublicKey.ASN1_TRUNCATE_LENGTH}]},"Detect File Type":{description:"Attempts to guess the MIME (Multipurpose Internet Mail Extensions) type of the data based on 'magic bytes'.<br><br>Currently supports the following file types: 7z, amr, avi, bmp, bz2, class, cr2, crx, dex, dmg, doc, elf, eot, epub, exe, flac, flv, gif, gz, ico, iso, jpg, jxr, m4a, m4v, mid, mkv, mov, mp3, mp4, mpg, ogg, otf, pdf, png, ppt, ps, psd, rar, rtf, sqlite, swf, tar, tar.z, tif, ttf, utf8, vmdk, wav, webm, webp, wmv, woff, woff2, xls, xz, zip.",run:FileType.run_detect,input_type:"byte_array",output_type:"string",args:[]},"Scan for Embedded Files":{description:"Scans the data for potential embedded files by looking for magic bytes at all offsets. This operation is prone to false positives.<br><br>WARNING: Files over about 100KB in size will take a VERY long time to process.",run:FileType.run_scan_for_embedded_files,input_type:"byte_array",output_type:"string",args:[{name:"Ignore common byte sequences",type:"boolean",value:FileType.IGNORE_COMMON_BYTE_SEQUENCES}]},"Expand alphabet range":{description:"Expand an alphabet range string into a list of the characters in that range.<br><br>e.g. <code>a-z</code> becomes <code>abcdefghijklmnopqrstuvwxyz</code>.",run:SeqUtils.run_expand_alph_range,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"binary_string",value:""}]},Diff:{description:"Compares two inputs (separated by the specified delimiter) and highlights the differences between them.",run:StrUtils.run_diff,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.DIFF_SAMPLE_DELIMITER},{name:"Diff by",type:"option",value:StrUtils.DIFF_BY},{name:"Show added",type:"boolean",value:!0},{name:"Show removed",type:"boolean",value:!0},{name:"Ignore whitespace (relevant for word and line)",type:"boolean",value:!1}]},"Parse UNIX file permissions":{description:"Given a UNIX/Linux file permission string in octal or textual format, this operation explains which permissions are granted to which user groups.<br><br>Input should be in either octal (e.g. <code>755</code>) or textual (e.g. <code>drwxr-xr-x</code>) format.",run:OS.run_parse_unix_perms,input_type:"string",output_type:"string",args:[]},"Swap endianness":{description:"Switches the data from big-endian to little-endian or vice-versa. Data can be read in as hexadecimal or raw bytes. It will be returned in the same format as it is entered.",run:Endian.run_swap_endianness,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Data format",type:"option",value:Endian.DATA_FORMAT},{name:"Word length (bytes)",type:"number",value:Endian.WORD_LENGTH},{name:"Pad incomplete words",type:"boolean",value:Endian.PAD_INCOMPLETE_WORDS}]},"Syntax highlighter":{description:"Adds syntax highlighting to a range of source code languages. Note that this will not indent the code. Use one of the 'Beautify' operations for that.",run:Code.run_syntax_highlight,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"html",args:[{name:"Language/File extension",type:"option",value:Code.LANGUAGES},{name:"Display line numbers",type:"boolean",value:Code.LINE_NUMS}]},"Parse escaped string":{description:"Replaces escaped characters with the bytes they represent.<br><br>e.g.<code>Hello\\nWorld</code> becomes <code>Hello<br>World</code>",run:StrUtils.run_parse_escaped_string,input_type:"string",output_type:"string",args:[]},"TCP/IP Checksum":{description:"Calculates the checksum for a TCP (Transport Control Protocol) or IP (Internet Protocol) header from an input of raw bytes.",run:Checksum.run_tcp_ip,input_type:"byte_array",output_type:"string",args:[]},"Parse colour code":{description:"Converts a colour code in a standard format to other standard formats and displays the colour itself.<br><br><strong>Example inputs</strong><ul><li><code>#d9edf7</code></li><li><code>rgba(217,237,247,1)</code></li><li><code>hsla(200,65%,91%,1)</code></li><li><code>cmyk(0.12, 0.04, 0.00, 0.03)</code></li></ul>",run:HTML.run_parse_colour_code,input_type:"string",output_type:"html",args:[]},"Generate UUID":{description:"Generates an RFC 4122 version 4 compliant Universally Unique Identifier (UUID), also known as a Globally Unique Identifier (GUID).<br><br>A version 4 UUID relies on random numbers, in this case generated using <code>window.crypto</code> if available and falling back to <code>Math.random</code> if not.",run:UUID.run_generate_v4,input_type:"string",output_type:"string",args:[]}};var ControlsWaiter=function(a,b){this.app=a,this.manager=b; +};ControlsWaiter.prototype.adjust_width=function(){var a=document.getElementById("controls"),b=document.getElementById("step"),c=document.getElementById("clr-breaks"),d=document.querySelector("#save img"),e=document.querySelector("#load img"),f=document.querySelector("#step img"),g=document.querySelector("#clr-recipe img"),h=document.querySelector("#clr-breaks img");a.clientWidth<470?b.childNodes[1].nodeValue=" Step":b.childNodes[1].nodeValue=" Step through",a.clientWidth<400?(d.style.display="none",e.style.display="none",f.style.display="none",g.style.display="none",h.style.display="none"):(d.style.display="inline",e.style.display="inline",f.style.display="inline",g.style.display="inline",h.style.display="inline"),a.clientWidth<330?c.childNodes[1].nodeValue=" Clear breaks":c.childNodes[1].nodeValue=" Clear breakpoints"},ControlsWaiter.prototype.set_auto_bake=function(a){var b=document.getElementById("auto-bake");b.checked!==a&&b.click()},ControlsWaiter.prototype.bake_click=function(){this.app.bake(),$("#output-text").selectRange(0)},ControlsWaiter.prototype.step_click=function(){this.app.bake(!0),$("#output-text").selectRange(0)},ControlsWaiter.prototype.auto_bake_change=function(){var a=document.getElementById("auto-bake-label"),b=document.getElementById("auto-bake");this.app.auto_bake_=b.checked,b.checked?(a.classList.remove("btn-default"),a.classList.add("btn-success")):(a.classList.remove("btn-success"),a.classList.add("btn-default"))},ControlsWaiter.prototype.clear_recipe_click=function(){this.manager.recipe.clear_recipe()},ControlsWaiter.prototype.clear_breaks_click=function(){for(var a=document.querySelectorAll("#rec_list li.operation .breakpoint"),b=0;b<a.length;b++)a[b].setAttribute("break","false"),a[b].classList.remove("breakpoint-selected")},ControlsWaiter.prototype.initialise_save_link=function(a){a=a||this.app.get_recipe_config();var b=document.getElementById("save-link-recipe-checkbox").checked,c=document.getElementById("save-link-input-checkbox").checked,d=document.getElementById("save-link"),e=this.generate_state_url(b,c,a);d.innerHTML=Utils.truncate(e,120),d.setAttribute("href",e)},ControlsWaiter.prototype.generate_state_url=function(a,b,c){c=c||this.app.get_recipe_config();var d=window.location.protocol+"//"+window.location.host+window.location.pathname,e=JSON.stringify(c),f=Utils.to_base64(this.app.get_input(),"A-Za-z0-9+/");return a=a&&c.length>0,b=b&&f.length>0&&f.length<8e3,a&&(d+="?recipe="+encodeURIComponent(e)),a&&b?d+="&input="+encodeURIComponent(f):b&&(d+="?input="+encodeURIComponent(f)),d},ControlsWaiter.prototype.save_text_change=function(){try{var a=JSON.parse(document.getElementById("save-text").value);this.initialise_save_link(a)}catch(a){}},ControlsWaiter.prototype.save_click=function(){var a=this.app.get_recipe_config(),b=JSON.stringify(a).replace(/},{/g,"},\n{");document.getElementById("save-text").value=b,this.initialise_save_link(a),$("#save-modal").modal()},ControlsWaiter.prototype.slr_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.sli_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.load_click=function(){this.populate_load_recipes_list(),$("#load-modal").modal()},ControlsWaiter.prototype.save_button_click=function(){var a=document.getElementById("save-name").value,b=document.getElementById("save-text").value;if(!a)return void this.app.alert("Please enter a recipe name","danger",2e3);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=localStorage.recipe_id||0;c.push({id:++d,name:a,recipe:b}),localStorage.saved_recipes=JSON.stringify(c),localStorage.recipe_id=d,this.app.alert('Recipe saved as "'+a+'".',"success",2e3)},ControlsWaiter.prototype.populate_load_recipes_list=function(){for(var a=document.getElementById("load-name"),b=a.options.length;b--;)a.remove(b);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];for(b=0;b<c.length;b++){var d=document.createElement("option");d.value=c[b].id,d.innerHTML=c[b].name,a.appendChild(d)}document.getElementById("load-text").value=c.length?c[0].recipe:""},ControlsWaiter.prototype.load_delete_click=function(){var a=document.getElementById("load-name").value,b=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];b=b.filter(function(b){return b.id!==a}),localStorage.saved_recipes=JSON.stringify(b),this.populate_load_recipes_list()},ControlsWaiter.prototype.load_name_change=function(a){var b=a.target,c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=parseInt(b.value,10),e=c.filter(function(a){return a.id===d})[0];document.getElementById("load-text").value=e.recipe},ControlsWaiter.prototype.load_button_click=function(){try{var a=JSON.parse(document.getElementById("load-text").value);this.app.set_recipe_config(a),$("#rec_list [data-toggle=popover]").popover()}catch(a){this.app.alert("Invalid recipe","danger",2e3)}};var HTMLApp=function(a,b,c,d){this.categories=a,this.operations=b,this.dfavourites=c,this.doptions=d,this.options=Utils.extend({},d),this.chef=new Chef,this.manager=new Manager(this),this.auto_bake_=!1,this.progress=0,this.ing_id=0,window.chef=this.chef};HTMLApp.prototype.setup=function(){document.dispatchEvent(this.manager.appstart),this.initialise_splitter(),this.load_local_storage(),this.populate_operations_list(),this.manager.setup(),this.reset_layout(),this.set_compile_message(),this.load_URI_params()},HTMLApp.prototype.handle_error=function(a){console.error(a);var b=a.display_str||a.toString();this.alert(b,"danger",this.options.error_timeout,!this.options.show_errors)},HTMLApp.prototype.bake=function(a){var b;try{b=this.chef.bake(this.get_input(),this.get_recipe_config(),this.options,this.progress,a)}catch(a){this.handle_error(a)}b&&(b.error&&this.handle_error(b.error),this.options=b.options,this.dish_str="html"===b.type?Utils.strip_html_tags(b.result,!0):b.result,this.progress=b.progress,this.manager.recipe.update_breakpoint_indicator(b.progress),this.manager.output.set(b.result,b.type,b.duration),b.duration>this.options.auto_bake_threshold&&this.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.alert("Baking took longer than "+this.options.auto_bake_threshold+"ms, Auto Bake has been disabled.","warning",5e3)))},HTMLApp.prototype.auto_bake=function(){this.auto_bake_&&this.bake()},HTMLApp.prototype.silent_bake=function(){var a=(new Date).getTime(),b=this.get_recipe_config();return this.auto_bake_&&this.chef.silent_bake(b),(new Date).getTime()-a},HTMLApp.prototype.get_input=function(){var a=this.manager.input.get();return sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),a},HTMLApp.prototype.set_input=function(a){sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),this.manager.input.set(a)},HTMLApp.prototype.populate_operations_list=function(){document.body.appendChild(document.getElementById("edit-favourites"));for(var a="",b=0;b<this.categories.length;b++){for(var c=this.categories[b],d=0===b,e=new HTMLCategory(c.name,d),f=0;f<c.ops.length;f++){var g=c.ops[f],h=new HTMLOperation(g,this.operations[g],this,this.manager);e.add_operation(h)}a+=e.to_html()}document.getElementById("categories").innerHTML=a;var i=document.querySelectorAll("#categories .op_list");for(b=0;b<i.length;b++)i[b].dispatchEvent(this.manager.oplistcreate);document.querySelector("#categories a").appendChild(document.getElementById("edit-favourites"))},HTMLApp.prototype.initialise_splitter=function(){Split(["#operations","#recipe","#IO"],{sizes:[20,30,50],minSize:[240,325,500],gutterSize:4,onDrag:this.manager.controls.adjust_width.bind(this.manager.controls)}),Split(["#input","#output"],{direction:"vertical",gutterSize:4}),this.reset_layout()},HTMLApp.prototype.load_local_storage=function(){var a;void 0!==localStorage.options&&(a=JSON.parse(localStorage.options)),this.manager.options.load(a),this.load_favourites()},HTMLApp.prototype.load_favourites=function(){var a=localStorage.favourites&&localStorage.favourites.length>2?JSON.parse(localStorage.favourites):this.dfavourites;a=this.valid_favourites(a),this.save_favourites(a);var b=this.categories.filter(function(a){return"Favourites"===a.name})[0];b?b.ops=a:this.categories.unshift({name:"Favourites",ops:a})},HTMLApp.prototype.valid_favourites=function(a){for(var b=[],c=0;c<a.length;c++)this.operations.hasOwnProperty(a[c])?b.push(a[c]):this.alert('The operation "'+Utils.escape_html(a[c])+'" is no longer available. It has been removed from your favourites.',"info");return b},HTMLApp.prototype.save_favourites=function(a){localStorage.setItem("favourites",JSON.stringify(this.valid_favourites(a)))},HTMLApp.prototype.reset_favourites=function(){this.save_favourites(this.dfavourites),this.load_favourites(),this.populate_operations_list(),this.manager.recipe.initialise_operation_drag_n_drop()},HTMLApp.prototype.add_favourite=function(a){var b=JSON.parse(localStorage.favourites);return b.indexOf(a)>=0?void this.alert("'"+a+"' is already in your favourites","info",2e3):(b.push(a),this.save_favourites(b),this.load_favourites(),this.populate_operations_list(),void this.manager.recipe.initialise_operation_drag_n_drop())},HTMLApp.prototype.load_URI_params=function(){this.query_string=function(a){if(""===a)return{};for(var b={},c=0;c<a.length;c++){var d=a[c].split("=");2!==d.length?b[a[c]]=!0:b[d[0]]=decodeURIComponent(d[1].replace(/\+/g," "))}return b}(window.location.search.substr(1).split("&"));var a=this.auto_bake_;if(this.auto_bake_=!1,this.query_string.recipe)try{var b=JSON.parse(this.query_string.recipe);this.set_recipe_config(b)}catch(a){}else if(this.query_string.op){this.manager.recipe.clear_recipe();try{this.manager.recipe.add_operation(this.query_string.op)}catch(a){var c=this.manager.ops.filter_operations(this.query_string.op,!1);c.length&&this.manager.recipe.add_operation(c[0].name);var d=document.getElementById("search");d.value=this.query_string.op,d.dispatchEvent(new Event("search"))}}if(this.query_string.input)try{var e=Utils.from_base64(this.query_string.input);this.set_input(e)}catch(a){}this.auto_bake_=a,this.auto_bake()},HTMLApp.prototype.next_ing_id=function(){return this.ing_id++},HTMLApp.prototype.get_recipe_config=function(){var a=this.manager.recipe.get_config();return sessionStorage.setItem("recipe_config",JSON.stringify(a)),a},HTMLApp.prototype.set_recipe_config=function(a){sessionStorage.setItem("recipe_config",JSON.stringify(a)),document.getElementById("rec_list").innerHTML=null;for(var b=0;b<a.length;b++){for(var c=this.manager.recipe.add_operation(a[b].op),d=c.querySelectorAll(".arg"),e=0;e<d.length;e++)"checkbox"===d[e].getAttribute("type")?d[e].checked=a[b].args[e]:d[e].classList.contains("toggle-string")?(d[e].value=a[b].args[e].string,d[e].previousSibling.children[0].innerHTML=Utils.escape_html(a[b].args[e].option)+" <span class='caret'></span>"):d[e].value=a[b].args[e];a[b].disabled&&c.querySelector(".disable-icon").click(),a[b].breakpoint&&c.querySelector(".breakpoint").click(),this.progress=0}},HTMLApp.prototype.reset_layout=function(){document.getElementById("operations").style.width="calc(20% - 2px)",document.getElementById("recipe").style.width="calc(30% - 4px)",document.getElementById("IO").style.width="calc(50% - 2px)",document.getElementById("input").style.height="calc(50% - 2px)",document.getElementById("output").style.height="calc(50% - 2px)",this.manager.controls.adjust_width()},HTMLApp.prototype.set_compile_message=function(){var a=new Date,b=Utils.fuzzy_time(a.getTime()-window.compile_time),c='<span style="font-weight: normal">Last build: '+b.substr(0,1).toUpperCase()+b.substr(1)+" ago";""!==window.compile_message&&(c+=" - "+window.compile_message),c+="</span>",document.getElementById("notice").innerHTML=c},HTMLApp.prototype.alert=function(a,b,c,d){var e=new Date;if(console.log("["+e.toLocaleString()+"] "+a),!d){b=b||"danger",c=c||0;var f=document.getElementById("alert"),g=document.getElementById("alert-content");f.classList.remove("alert-danger"),f.classList.remove("alert-warning"),f.classList.remove("alert-info"),f.classList.remove("alert-success"),f.classList.add("alert-"+b),"block"===f.style.display?g.innerHTML+="<br><br>["+e.toLocaleTimeString()+"] "+a:g.innerHTML="["+e.toLocaleTimeString()+"] "+a,$("#alert").stop(),f.style.display="block",f.style.opacity=1,c>0&&(clearTimeout(this.alert_timeout),this.alert_timeout=setTimeout(function(){$("#alert").slideUp(100)},c))}},HTMLApp.prototype.confirm=function(a,b,c,d){d=d||this,document.getElementById("confirm-title").innerHTML=a,document.getElementById("confirm-body").innerHTML=b,document.getElementById("confirm-modal").style.display="block",this.confirm_closed=!1,$("#confirm-modal").modal().one("show.bs.modal",function(a){this.confirm_closed=!1}.bind(this)).one("click","#confirm-yes",function(){this.confirm_closed=!0,c.bind(d)(!0),$("#confirm-modal").modal("hide")}.bind(this)).one("hide.bs.modal",function(a){this.confirm_closed||c.bind(d)(!1),this.confirm_closed=!0}.bind(this))},HTMLApp.prototype.alert_close_click=function(){document.getElementById("alert").style.display="none"},HTMLApp.prototype.state_change=function(a){this.auto_bake(),this.options.update_url&&(this.last_state_url=this.manager.controls.generate_state_url(!0,!0),window.history.replaceState({},"CyberChef",this.last_state_url))},HTMLApp.prototype.pop_state=function(a){window.location.href.split("#")[0]!==this.last_state_url&&this.load_URI_params()},HTMLApp.prototype.call_api=function(a,b,c,d,e){b=b||"POST",c=c||{},d=d||void 0,e=e||"application/json";var f=null,g=!1;return $.ajax({url:a,async:!1,type:b,data:c,dataType:d,contentType:e,success:function(a){g=!0,f=a},error:function(a){g=!1,f=a}}),{success:g,response:f}};var HTMLCategory=function(a,b){this.name=a,this.selected=b,this.op_list=[]};HTMLCategory.prototype.add_operation=function(a){this.op_list.push(a)},HTMLCategory.prototype.to_html=function(){for(var a="cat"+this.name.replace(/[\s\/-:_]/g,""),b="<div class='panel category'> <a class='category-title' data-toggle='collapse' data-parent='#categories' href='#"+a+"'> "+this.name+" </a> <div id='"+a+"' class='panel-collapse collapse "+(this.selected?" in":"")+"'><ul class='op_list'>",c=0;c<this.op_list.length;c++)b+=this.op_list[c].to_stub_html();return b+="</ul></div></div>"};var HTMLIngredient=function(a,b,c){this.app=b,this.manager=c,this.name=a.name,this.type=a.type,this.value=a.value,this.disabled=a.disabled||!1,this.disable_args=a.disable_args||!1,this.placeholder=a.placeholder||!1,this.target=a.target,this.toggle_values=a.toggle_values,this.id="ing-"+this.app.next_ing_id()};HTMLIngredient.prototype.to_html=function(){var a,b,c="boolean"===this.type||"number"===this.type||"option"===this.type||"short_string"===this.type||"binary_short_string"===this.type,d=c?"":"<div class='clearfix'> </div>";switch(d+="<div class='arg-group"+(c?" inline-args":"")+("text"===this.type?" arg-group-text":"")+"'><label class='arg-label' for='"+this.id+"'>"+this.name+"</label>",this.type){case"string":case"binary_string":case"byte_array":d+="<input type='text' id='"+this.id+"' class='arg arg-input' arg_name='"+this.name+"' value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"short_string":case"binary_short_string":d+="<input type='text' id='"+this.id+"'class='arg arg-input short-string' arg_name='"+this.name+"'value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"toggle_string":for(d+="<div class='input-group'><div class='input-group-btn'> <button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'"+(this.disabled?" disabled='disabled'":"")+">"+this.toggle_values[0]+" <span class='caret'></span></button><ul class='dropdown-menu'>",a=0;a<this.toggle_values.length;a++)d+="<li><a href='#'>"+this.toggle_values[a]+"</a></li>";d+="</ul></div><input type='text' class='arg arg-input toggle-string'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+"></div>";break;case"number":d+="<input type='number' id='"+this.id+"'class='arg arg-input' arg_name='"+this.name+"'value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"boolean":d+="<input type='checkbox' id='"+this.id+"'class='arg' arg_name='"+this.name+"'"+(this.value?" checked='checked' ":"")+(this.disabled?" disabled='disabled'":"")+">",this.disable_args&&this.manager.add_dynamic_listener("#"+this.id,"click",this.toggle_disable_args,this);break;case"option":for(d+="<select class='arg' id='"+this.id+"'arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+=(b=this.value[a].match(/\[([a-z0-9 -()^]+)\]/i))?"<optgroup label='"+b[1]+"'>":(b=this.value[a].match(/\[\/([a-z0-9 -()^]+)\]/i))?"</optgroup>":"<option>"+this.value[a]+"</option>";d+="</select>";break;case"populate_option":for(d+="<select class='arg' id='"+this.id+"'arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+=(b=this.value[a].name.match(/\[([a-z0-9 -()^]+)\]/i))?"<optgroup label='"+b[1]+"'>":(b=this.value[a].name.match(/\[\/([a-z0-9 -()^]+)\]/i))?"</optgroup>":"<option populate-value='"+this.value[a].value+"'>"+this.value[a].name+"</option>";d+="</select>",this.manager.add_dynamic_listener("#"+this.id,"change",this.populate_option_change,this);break;case"editable_option":for(d+="<div class='editable-option'>",d+="<select class='editable-option-select' id='sel-"+this.id+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+="<option value='"+this.value[a].value+"'>"+this.value[a].name+"</option>";d+="</select>",d+="<input class='arg arg-input editable-option-input' id='"+this.id+"'arg_name='"+this.name+"' value='"+this.value[0].value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">",d+="</div>",this.manager.add_dynamic_listener("#sel-"+this.id,"change",this.editable_option_change,this);break;case"text":d+="<textarea id='"+this.id+"' class='arg' arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">"+this.value+"</textarea>"}return d+="</div>"},HTMLIngredient.prototype.toggle_disable_args=function(a){for(var b,c=a.target,d=c.parentNode.parentNode,e=d.querySelectorAll(".arg-group"),f=0;f<this.disable_args.length;f++){b=e[this.disable_args[f]].querySelectorAll("input, select, button");for(var g=0;g<b.length;g++)b[g].getAttribute("disabled")?b[g].removeAttribute("disabled"):b[g].setAttribute("disabled","disabled")}this.manager.recipe.ing_change()},HTMLIngredient.prototype.populate_option_change=function(a){var b=a.target,c=b.parentNode.parentNode,d=c.querySelectorAll(".arg-group")[this.target].querySelector("input, select, textarea");d.value=b.childNodes[b.selectedIndex].getAttribute("populate-value"),this.manager.recipe.ing_change()},HTMLIngredient.prototype.editable_option_change=function(a){var b=a.target,c=b.nextSibling;c.value=b.childNodes[b.selectedIndex].value,this.manager.recipe.ing_change()};var HTMLOperation=function(a,b,c,d){this.app=c,this.manager=d,this.name=a,this.description=b.description,this.manual_bake=b.manual_bake||!1,this.config=b,this.ing_list=[];for(var e=0;e<b.args.length;e++){var f=new HTMLIngredient(b.args[e],this.app,this.manager);this.ing_list.push(f)}};HTMLOperation.INFO_ICON="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAByElEQVR4XqVTzWoaYRQ9KZJmoVaS1J1QiYTIuOgqi9lEugguQhYhdGs3hTyAi0CWJTvJIks30ZBNsimUtlqkVLoQCuJsphRriyFjabWtEyf/Rv3iWcwwymTlgQuH851z5hu43wRGkEwmXwCIA4hiGAUAmUQikQbhEHwyGCWVSglVVUW73RYmyKnxjB56ncJ6NpsVxHGrI/ZLuniVb3DIqQmCHnrNkgcggNeSJPlisRgyJR2b737j/TcDsQUPwv6H5NR4BnroZcb6Z16N2PvyX6yna9Z8qp6JQ0Uf0ughmGHWBSAuyzJqrQ7eqKewY/dzE363C71e39LoWQq5wUwul4uzIBoIBHD01RgyrkZ8eDbvwUWnj623v2DHx4qB51IAzLIAXq8XP/7W0bUVVJtXWIk8wvlN364TA+/1IDMLwmWK/Hq3axmhaBdoGLeklm73ElaBYRgIzkyifHIOO4QQJKM3oJcZq6CgaVp0OTyHw9K/kQI4FiyHfdC0n2CWe5ApFosIPZ7C2tNpXpcDOehGyD/FIbd0euhlhllzFxRzC3fydbG4XRYbB9/tQ41n9m1U7l3lyp9LkfygiZeZCoecmtMqj/+Yxn7Od3v0j50qCO3zAAAAAElFTkSuQmCC",HTMLOperation.REMOVE_ICON="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABwklEQVR42qRTPU8CQRB9K2CCMRJ6NTQajOUaqfxIbLCRghhjQixosLAgFNBQ3l8wsabxLxBJbCyVUBiMCVQEQkOEKBbCnefM3p4eohWXzM3uvHlv52b2hG3bmOWZw4yPn1/XQkCQ9wFxcgZZ0QLKpifpN8Z1n1L13griBBjHhYK0nMT4b+wom53ClAAFQacZJ/m8rNfrSOZy0vxJjPP6IJ2WzWYTO6mUwiwtILiJJSHUKVSWkchkZK1WQzQaxU2pVGUglkjIbreLUCiEx0qlStlFCpfPiPstYDtVKJH9ZFI2Gw1FGA6H6LTbCAaDeGu1FJl6UuYjpwTGzucokZW1NfnS66kyfT4fXns9RaZmlgNcuhZQU+jowLzuOK/HgwEW3E5ZlhLXVWKk11P3wNYNWw+HZdA0sUgx1zjGmD05nckx0ilGjBJdUq3fr7K5e8bGf43RdL7fOPSQb4lI8SLbrUfkUIuY32VTI1bJn5BqDnh4Dodt9ryPUDzyD7aquWoKQohl2i9sAbubwPkTcHkP3FHsg+yT+7sN7G0AF3Xg6sHB3onbdgWWKBDQg/BcTuVt51dQA/JrnIcyIu6rmPV3/hJgACPc0BMEYTg+AAAAAElFTkSuQmCC",HTMLOperation.prototype.to_stub_html=function(a){var b="<li class='operation'";return this.description&&(b+=" data-container='body' data-toggle='popover' data-placement='auto right' data-content=\""+this.description+"\" data-html='true' data-trigger='hover'"),b+=">"+this.name,a&&(b+="<img src='data:image/png;base64,"+HTMLOperation.REMOVE_ICON+"' class='op-icon remove-icon'>"),this.description&&(b+="<img src='data:image/png;base64,"+HTMLOperation.INFO_ICON+"' class='op-icon'>"),b+="</li>"},HTMLOperation.prototype.to_full_html=function(){for(var a="<div class='arg-title'>"+this.name+"</div>",b=0;b<this.ing_list.length;b++)a+=this.ing_list[b].to_html();return a+="<div class='recip-icons'> <div class='breakpoint' title='Set breakpoint' break='false'></div> <div class='disable-icon recip-icon' title='Disable operation' disabled='false'></div>",a+="</div> <div class='clearfix'> </div>"},HTMLOperation.prototype.highlight_search_string=function(a,b,c){b>=0&&(this.name=this.name.slice(0,b)+"<b><u>"+this.name.slice(b,b+a.length)+"</u></b>"+this.name.slice(b+a.length)),this.description&&c>=0&&(this.description=this.description.slice(0,c)+"<b><u>"+this.description.slice(c,c+a.length)+"</u></b>"+this.description.slice(c+a.length))};var HighlighterWaiter=function(a){this.app=a,this.mouse_button_down=!1,this.mouse_target=null};HighlighterWaiter.INPUT=0,HighlighterWaiter.OUTPUT=1,HighlighterWaiter.prototype._is_selection_backwards=function(){var a=!1,b=window.getSelection();if(!b.isCollapsed){var c=document.createRange();c.setStart(b.anchorNode,b.anchorOffset),c.setEnd(b.focusNode,b.focusOffset),a=c.collapsed,c.detach()}return a},HighlighterWaiter.prototype._get_output_html_offset=function(a,b){var c=window.getSelection(),d=document.createRange();return d.selectNodeContents(document.getElementById("output-html")),d.setEnd(a,b),c.removeAllRanges(),c.addRange(d),c.toString().length},HighlighterWaiter.prototype._get_output_html_selection_offsets=function(){var a,b=window.getSelection(),c=0,d=0,e=!1;return b.rangeCount&&(a=b.getRangeAt(b.rangeCount-1),e=this._is_selection_backwards(),c=this._get_output_html_offset(a.startContainer,a.startOffset),d=this._get_output_html_offset(a.endContainer,a.endOffset),b.removeAllRanges(),b.addRange(a),e&&(b.collapseToEnd(),b.extend(b.anchorNode,a.startOffset))),{start:c,end:d}},HighlighterWaiter.prototype.input_scroll=function(a){var b=a.target;document.getElementById("input-highlighter").scrollTop=b.scrollTop,document.getElementById("input-highlighter").scrollLeft=b.scrollLeft},HighlighterWaiter.prototype.output_scroll=function(a){var b=a.target;document.getElementById("output-highlighter").scrollTop=b.scrollTop,document.getElementById("output-highlighter").scrollLeft=b.scrollLeft},HighlighterWaiter.prototype.input_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.INPUT,this.remove_highlights();var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("input-selection-info").innerHTML=this.selection_info(c,d),this.highlight_output([{start:c,end:d}]))},HighlighterWaiter.prototype.output_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.OUTPUT,this.remove_highlights();var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("output-selection-info").innerHTML=this.selection_info(c,d),this.highlight_input([{start:c,end:d}]))},HighlighterWaiter.prototype.output_html_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.OUTPUT;var b=this._get_output_html_selection_offsets();0===b.start&&0===b.end||(document.getElementById("output-selection-info").innerHTML=this.selection_info(b.start,b.end))},HighlighterWaiter.prototype.input_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.output_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.output_html_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.input_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.INPUT){var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("input-selection-info").innerHTML=this.selection_info(c,d),this.highlight_output([{start:c,end:d}]))}},HighlighterWaiter.prototype.output_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.OUTPUT){var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("output-selection-info").innerHTML=this.selection_info(c,d),this.highlight_input([{start:c,end:d}]))}},HighlighterWaiter.prototype.output_html_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.OUTPUT){var b=this._get_output_html_selection_offsets();0===b.start&&0===b.end||(document.getElementById("output-selection-info").innerHTML=this.selection_info(b.start,b.end))}},HighlighterWaiter.prototype.selection_info=function(a,b){var c=b.toString().length;c=c<2?2:c;var d=Utils.pad(a.toString(),c," ").replace(/ /g," "),e=Utils.pad(b.toString(),c," ").replace(/ /g," "),f=Utils.pad((b-a).toString(),c," ").replace(/ /g," ");return"start: "+d+"<br>end: "+e+"<br>length: "+f},HighlighterWaiter.prototype.remove_highlights=function(){document.getElementById("input-highlighter").innerHTML="",document.getElementById("output-highlighter").innerHTML="",document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML=""},HighlighterWaiter.prototype.generate_highlight_list=function(){for(var a=this.app.get_recipe_config(),b=[],c=0;c<a.length;c++)if(!a[c].disabled){if(a[c].breakpoint)return!1;var d=this.app.operations[a[c].op];if(d.highlight===!1||void 0===d.highlight)return!1;b.push({f:d.highlight,b:d.highlight_reverse,args:a[c].args})}return b},HighlighterWaiter.prototype.highlight_output=function(a){var b=this.generate_highlight_list();if(!b||!this.app.auto_bake_)return!1;for(var c=0;c<b.length;c++)a=[a[0]],"function"==typeof b[c].f&&(a=b[c].f(a,b[c].args));document.getElementById("output-selection-info").innerHTML=this.selection_info(a[0].start,a[0].end),this.highlight(document.getElementById("output-text"),document.getElementById("output-highlighter"),a)},HighlighterWaiter.prototype.highlight_input=function(a){var b=this.generate_highlight_list();if(!b||!this.app.auto_bake_)return!1;for(var c=0;c<b.length;c++)a=[a[0]],"function"==typeof b[c].b&&(a=b[c].b(a,b[c].args));document.getElementById("input-selection-info").innerHTML=this.selection_info(a[0].start,a[0].end),this.highlight(document.getElementById("input-text"),document.getElementById("input-highlighter"),a)},HighlighterWaiter.prototype.highlight=function(a,b,c){if(!this.app.options.show_highlighter)return!1;if(!this.app.options.attempt_highlight)return!1;if(!this.app.dish_str||this.app.dish_str.indexOf("\r")>=0)return!1;var d="[start_highlight]",e=/\[start_highlight\]/g,f="[end_highlight]",g=/\[end_highlight\]/g,h=a.value;if(1===c.length){if(c[0].end<c[0].start)return;h=h.slice(0,c[0].start)+d+h.slice(c[0].start,c[0].end)+f+h.slice(c[0].end,h.length)}else{for(var i="",j=!0,k=0;k<h.length;k++){for(var l=1;l<c.length;l++)c[l].end<c[l].start||(c[l].start===k&&(i+=d,j=!1),c[l].end===k&&(i+=f,j=!0));i+=h[k]}j||(i+=f),h=i}var m="hl1";h=h.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\n/g," ").replace(e,'<span class="'+m+'">').replace(g,"</span>")+" ",b.style.width=a.clientWidth+"px",b.innerHTML=h,b.scrollTop=a.scrollTop,b.scrollLeft=a.scrollLeft};var InputWaiter=function(a,b){this.app=a,this.manager=b,this.bad_keys=[16,17,18,19,20,27,33,34,35,36,37,38,39,40,44,91,92,93,112,113,114,115,116,117,118,119,120,121,122,123,144,145]};InputWaiter.prototype.get=function(){return document.getElementById("input-text").value},InputWaiter.prototype.set=function(a){document.getElementById("input-text").value=a,window.dispatchEvent(this.manager.statechange)},InputWaiter.prototype.set_input_info=function(a,b){var c=a.toString().length;c=c<2?2:c;var d=Utils.pad(a.toString(),c," ").replace(/ /g," "),e=Utils.pad(b.toString(),c," ").replace(/ /g," ");document.getElementById("input-info").innerHTML="length: "+d+"<br>lines: "+e},InputWaiter.prototype.input_change=function(a){this.manager.highlighter.remove_highlights(),this.app.progress=0;var b=this.get(),c=b.count("\n")+1;this.set_input_info(b.length,c),this.bad_keys.indexOf(a.keyCode)<0&&window.dispatchEvent(this.manager.statechange)},InputWaiter.prototype.input_dragover=function(a){return"move"!==a.dataTransfer.effectAllowed&&(a.stopPropagation(),a.preventDefault(),void a.target.classList.add("dropping-file"))},InputWaiter.prototype.input_dragleave=function(a){a.stopPropagation(),a.preventDefault(),a.target.classList.remove("dropping-file")},InputWaiter.prototype.input_drop=function(a){if("move"===a.dataTransfer.effectAllowed)return!1;a.stopPropagation(),a.preventDefault();var b=a.target,c=a.dataTransfer.files[0],d=a.dataTransfer.getData("Text"),e=new FileReader,f="",g=0,h=20480,i=function(){f.length>1e5&&this.app.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.app.alert("Turned off Auto Bake as the input is large","warning",5e3)),this.set(f);var a=this.app.get_recipe_config();a[0]&&"From Hex"===a[0].op||(a.unshift({op:"From Hex",args:["Space"]}),this.app.set_recipe_config(a)),b.classList.remove("loading_file")}.bind(this),j=function(){if(g>=c.size)return void i();b.value="Processing... "+Math.round(g/c.size*100)+"%";var a=c.slice(g,g+h);e.readAsArrayBuffer(a)};e.onload=function(a){var b=new Uint8Array(e.result);f+=Utils.to_hex_fast(b),g+=h,j()},b.classList.remove("dropping-file"),c?(b.classList.add("loading_file"),j()):d&&this.set(d)},InputWaiter.prototype.clear_io_click=function(){this.manager.highlighter.remove_highlights(),document.getElementById("input-text").value="",document.getElementById("output-text").value="",document.getElementById("input-info").innerHTML="",document.getElementById("output-info").innerHTML="",document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML="",window.dispatchEvent(this.manager.statechange)};var Manager=function(a){this.app=a,this.appstart=new CustomEvent("appstart",{bubbles:!0}),this.operationadd=new CustomEvent("operationadd",{bubbles:!0}),this.operationremove=new CustomEvent("operationremove",{bubbles:!0}),this.oplistcreate=new CustomEvent("oplistcreate",{bubbles:!0}),this.statechange=new CustomEvent("statechange",{bubbles:!0}),this.window=new WindowWaiter(this.app),this.controls=new ControlsWaiter(this.app,this),this.recipe=new RecipeWaiter(this.app,this),this.ops=new OperationsWaiter(this.app,this),this.input=new InputWaiter(this.app,this), +this.output=new OutputWaiter(this.app,this),this.options=new OptionsWaiter(this.app),this.highlighter=new HighlighterWaiter(this.app),this.seasonal=new SeasonalWaiter(this.app,this),this.dynamic_handlers={},this.initialise_event_listeners()};Manager.prototype.setup=function(){this.recipe.initialise_operation_drag_n_drop(),this.controls.auto_bake_change(),this.seasonal.load()},Manager.prototype.initialise_event_listeners=function(){window.addEventListener("resize",this.window.window_resize.bind(this.window)),window.addEventListener("blur",this.window.window_blur.bind(this.window)),window.addEventListener("focus",this.window.window_focus.bind(this.window)),window.addEventListener("statechange",this.app.state_change.bind(this.app)),window.addEventListener("popstate",this.app.pop_state.bind(this.app)),document.getElementById("bake").addEventListener("click",this.controls.bake_click.bind(this.controls)),document.getElementById("auto-bake").addEventListener("change",this.controls.auto_bake_change.bind(this.controls)),document.getElementById("step").addEventListener("click",this.controls.step_click.bind(this.controls)),document.getElementById("clr-recipe").addEventListener("click",this.controls.clear_recipe_click.bind(this.controls)),document.getElementById("clr-breaks").addEventListener("click",this.controls.clear_breaks_click.bind(this.controls)),document.getElementById("save").addEventListener("click",this.controls.save_click.bind(this.controls)),document.getElementById("save-button").addEventListener("click",this.controls.save_button_click.bind(this.controls)),document.getElementById("save-link-recipe-checkbox").addEventListener("change",this.controls.slr_check_change.bind(this.controls)),document.getElementById("save-link-input-checkbox").addEventListener("change",this.controls.sli_check_change.bind(this.controls)),document.getElementById("load").addEventListener("click",this.controls.load_click.bind(this.controls)),document.getElementById("load-delete-button").addEventListener("click",this.controls.load_delete_click.bind(this.controls)),document.getElementById("load-name").addEventListener("change",this.controls.load_name_change.bind(this.controls)),document.getElementById("load-button").addEventListener("click",this.controls.load_button_click.bind(this.controls)),this.add_multi_event_listener("#save-text","keyup paste",this.controls.save_text_change,this.controls),this.add_multi_event_listener("#search","keyup paste search",this.ops.search_operations,this.ops),this.add_dynamic_listener(".op_list li.operation","dblclick",this.ops.operation_dblclick,this.ops),document.getElementById("edit-favourites").addEventListener("click",this.ops.edit_favourites_click.bind(this.ops)),document.getElementById("save-favourites").addEventListener("click",this.ops.save_favourites_click.bind(this.ops)),document.getElementById("reset-favourites").addEventListener("click",this.ops.reset_favourites_click.bind(this.ops)),this.add_dynamic_listener(".op_list .op-icon","mouseover",this.ops.op_icon_mouseover,this.ops),this.add_dynamic_listener(".op_list .op-icon","mouseleave",this.ops.op_icon_mouseleave,this.ops),this.add_dynamic_listener(".op_list","oplistcreate",this.ops.op_list_create,this.ops),this.add_dynamic_listener("li.operation","operationadd",this.recipe.op_add.bind(this.recipe)),this.add_dynamic_listener(".arg","keyup",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".arg","change",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".disable-icon","click",this.recipe.disable_click,this.recipe),this.add_dynamic_listener(".breakpoint","click",this.recipe.breakpoint_click,this.recipe),this.add_dynamic_listener("#rec_list li.operation","dblclick",this.recipe.operation_dblclick,this.recipe),this.add_dynamic_listener("#rec_list li.operation > div","dblclick",this.recipe.operation_child_dblclick,this.recipe),this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a","click",this.recipe.dropdown_toggle_click,this.recipe),this.add_dynamic_listener("#rec_list","operationremove",this.recipe.op_remove.bind(this.recipe)),this.add_multi_event_listener("#input-text","keyup paste",this.input.input_change,this.input),document.getElementById("reset-layout").addEventListener("click",this.app.reset_layout.bind(this.app)),document.getElementById("clr-io").addEventListener("click",this.input.clear_io_click.bind(this.input)),document.getElementById("input-text").addEventListener("dragover",this.input.input_dragover.bind(this.input)),document.getElementById("input-text").addEventListener("dragleave",this.input.input_dragleave.bind(this.input)),document.getElementById("input-text").addEventListener("drop",this.input.input_drop.bind(this.input)),document.getElementById("input-text").addEventListener("scroll",this.highlighter.input_scroll.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mouseup",this.highlighter.input_mouseup.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mousemove",this.highlighter.input_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#input-text","mousedown dblclick select",this.highlighter.input_mousedown,this.highlighter),document.getElementById("save-to-file").addEventListener("click",this.output.save_click.bind(this.output)),document.getElementById("switch").addEventListener("click",this.output.switch_click.bind(this.output)),document.getElementById("undo-switch").addEventListener("click",this.output.undo_switch_click.bind(this.output)),document.getElementById("output-text").addEventListener("scroll",this.highlighter.output_scroll.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mouseup",this.highlighter.output_mouseup.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mousemove",this.highlighter.output_mousemove.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mouseup",this.highlighter.output_html_mouseup.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mousemove",this.highlighter.output_html_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#output-text","mousedown dblclick select",this.highlighter.output_mousedown,this.highlighter),this.add_multi_event_listener("#output-html","mousedown dblclick select",this.highlighter.output_html_mousedown,this.highlighter),document.getElementById("options").addEventListener("click",this.options.options_click.bind(this.options)),document.getElementById("reset-options").addEventListener("click",this.options.reset_options_click.bind(this.options)),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox",this.options.switch_change.bind(this.options)),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox",this.options.set_word_wrap.bind(this.options)),this.add_dynamic_listener(".option-item input[type=number]","keyup",this.options.number_change,this.options),this.add_dynamic_listener(".option-item input[type=number]","change",this.options.number_change,this.options),this.add_dynamic_listener(".option-item select","change",this.options.select_change,this.options),document.getElementById("alert-close").addEventListener("click",this.app.alert_close_click.bind(this.app))},Manager.prototype.add_listeners=function(a,b,c,d){d=d||this,[].forEach.call(document.querySelectorAll(a),function(a){a.addEventListener(b,c.bind(d))})},Manager.prototype.add_multi_event_listener=function(a,b,c,d){for(var e=b.split(" "),f=0;f<e.length;f++)document.querySelector(a).addEventListener(e[f],c.bind(d))},Manager.prototype.add_multi_event_listeners=function(a,b,c,d){for(var e=b.split(" "),f=0;f<e.length;f++)this.add_listeners(a,e[f],c,d)},Manager.prototype.add_dynamic_listener=function(a,b,c,d){var e={selector:a,callback:c.bind(d||this)};this.dynamic_handlers.hasOwnProperty(b)?this.dynamic_handlers[b].push(e):(this.dynamic_handlers[b]=[e],document.addEventListener(b,this.dynamic_listener_handler.bind(this)))},Manager.prototype.dynamic_listener_handler=function(a){for(var b=this.dynamic_handlers[a.type],c=a.target.matches||a.target.webkitMatchesSelector||a.target.mozMatchesSelector||a.target.msMatchesSelector||a.target.oMatchesSelector,d=0;d<b.length;d++)c&&a.target[c.name](b[d].selector)&&b[d].callback(a)};var OperationsWaiter=function(a,b){this.app=a,this.manager=b,this.options={},this.remove_intent=!1};OperationsWaiter.prototype.search_operations=function(a){var b,c;if("search"===a.type&&(a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&(this.manager.recipe.add_operation(b[c].innerHTML),this.app.auto_bake()))),13===a.keyCode)a.preventDefault();else if(40===a.keyCode)a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&b[c].classList.remove("selected-op"),c===b.length-1&&(c=-1),b[c+1].classList.add("selected-op"));else if(38===a.keyCode)a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&b[c].classList.remove("selected-op"),0===c&&(c=b.length),b[c-1].classList.add("selected-op"));else{for(var d=document.getElementById("search-results"),e=a.target,f=e.value;d.firstChild;)$(d.firstChild).popover("destroy"),d.removeChild(d.firstChild);if($("#categories .in").collapse("hide"),f){for(var g=this.filter_operations(f,!0),h="",i=0;i<g.length;i++)h+=g[i].to_stub_html();d.innerHTML=h,d.dispatchEvent(this.manager.oplistcreate)}}},OperationsWaiter.prototype.filter_operations=function(a,b){var c=[],d=[];a=a.toLowerCase();for(var e in this.app.operations){var f=this.app.operations[e],g=e.toLowerCase().indexOf(a),h=f.description.toLowerCase().indexOf(a);if(g>=0||h>=0){var i=new HTMLOperation(e,this.app.operations[e],this.app,this.manager);b&&i.highlight_search_string(a,g,h),g<0?c.push(i):d.push(i)}}return d.concat(c)},OperationsWaiter.prototype.get_selected_op=function(a){for(var b=0;b<a.length;b++)if(a[b].classList.contains("selected-op"))return b;return-1},OperationsWaiter.prototype.op_list_create=function(a){this.manager.recipe.create_sortable_seed_list(a.target),$("[data-toggle=popover]").popover()},OperationsWaiter.prototype.operation_dblclick=function(a){var b=a.target;this.manager.recipe.add_operation(b.textContent),this.app.auto_bake()},OperationsWaiter.prototype.edit_favourites_click=function(a){a.preventDefault(),a.stopPropagation();for(var b=this.app.categories.filter(function(a){return"Favourites"===a.name})[0],c="",d=0;d<b.ops.length;d++){var e=b.ops[d],f=new HTMLOperation(e,this.app.operations[e],this.app,this.manager);c+=f.to_stub_html(!0)}var g=document.getElementById("edit-favourites-list");g.innerHTML=c,this.remove_intent=!1;var h=Sortable.create(g,{filter:".remove-icon",onFilter:function(a){var b=h.closest(a.item);b&&($(b).popover("destroy"),b.parentNode.removeChild(b))},onEnd:function(a){this.remove_intent&&a.item.remove()}.bind(this)});Sortable.utils.on(g,"dragleave",function(){this.remove_intent=!0}.bind(this)),Sortable.utils.on(g,"dragover",function(){this.remove_intent=!1}.bind(this)),$("#edit-favourites-list [data-toggle=popover]").popover(),$("#favourites-modal").modal()},OperationsWaiter.prototype.save_favourites_click=function(){for(var a=[],b=document.querySelectorAll("#edit-favourites-list li"),c=0;c<b.length;c++)a.push(b[c].textContent);this.app.save_favourites(a),this.app.load_favourites(),this.app.populate_operations_list(),this.manager.recipe.initialise_operation_drag_n_drop()},OperationsWaiter.prototype.reset_favourites_click=function(){this.app.reset_favourites()},OperationsWaiter.prototype.op_icon_mouseover=function(a){var b=a.target.parentNode;"popover"===a.target.getAttribute("data-toggle")&&$(b).popover("hide")},OperationsWaiter.prototype.op_icon_mouseleave=function(a){var b=a.target.parentNode,c=a.toElement||a.relatedElement;"popover"===a.target.getAttribute("data-toggle")&&c===b&&$(b).popover("show")};var OptionsWaiter=function(a){this.app=a};OptionsWaiter.prototype.load=function(a){$(".option-item input:checkbox").bootstrapSwitch({size:"small",animate:!1});for(var b in a)this.app.options[b]=a[b];for(var c=document.querySelectorAll("#options-body input[type=checkbox]"),d=0;d<c.length;d++)$(c[d]).bootstrapSwitch("state",this.app.options[c[d].getAttribute("option")]);var e=document.querySelectorAll("#options-body input[type=number]");for(d=0;d<e.length;d++)e[d].value=this.app.options[e[d].getAttribute("option")],e[d].dispatchEvent(new CustomEvent("change",{bubbles:!0}));var f=document.querySelectorAll("#options-body select");for(d=0;d<f.length;d++)f[d].value=this.app.options[f[d].getAttribute("option")],f[d].dispatchEvent(new CustomEvent("change",{bubbles:!0}))},OptionsWaiter.prototype.options_click=function(){$("#options-modal").modal()},OptionsWaiter.prototype.reset_options_click=function(){this.load(this.app.doptions)},OptionsWaiter.prototype.switch_change=function(a,b){var c=a.target,d=c.getAttribute("option");this.app.options[d]=b,localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.number_change=function(a){var b=a.target,c=b.getAttribute("option");this.app.options[c]=parseInt(b.value,10),localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.select_change=function(a){var b=a.target,c=b.getAttribute("option");this.app.options[c]=b.value,localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.set_word_wrap=function(){document.getElementById("input-text").classList.remove("word-wrap"),document.getElementById("output-text").classList.remove("word-wrap"),document.getElementById("output-html").classList.remove("word-wrap"),document.getElementById("input-highlighter").classList.remove("word-wrap"),document.getElementById("output-highlighter").classList.remove("word-wrap"),this.app.options.word_wrap||(document.getElementById("input-text").classList.add("word-wrap"),document.getElementById("output-text").classList.add("word-wrap"),document.getElementById("output-html").classList.add("word-wrap"),document.getElementById("input-highlighter").classList.add("word-wrap"),document.getElementById("output-highlighter").classList.add("word-wrap"))};var OutputWaiter=function(a,b){this.app=a,this.manager=b};OutputWaiter.prototype.get=function(){return document.getElementById("output-text").value},OutputWaiter.prototype.set=function(data_str,type,duration){var output_text=document.getElementById("output-text"),output_html=document.getElementById("output-html"),output_highlighter=document.getElementById("output-highlighter"),input_highlighter=document.getElementById("input-highlighter");if("html"===type){output_text.style.display="none",output_html.style.display="block",output_highlighter.display="none",input_highlighter.display="none",output_text.value="",output_html.innerHTML=data_str;for(var script_elements=output_html.querySelectorAll("script"),i=0;i<script_elements.length;i++)try{eval(script_elements[i].innerHTML)}catch(a){console.error(a)}}else output_text.style.display="block",output_html.style.display="none",output_highlighter.display="block",input_highlighter.display="block",output_text.value=Utils.printable(data_str,!0),output_html.innerHTML="";this.manager.highlighter.remove_highlights();var lines=data_str.count("\n")+1;this.set_output_info(data_str.length,lines,duration)},OutputWaiter.prototype.set_output_info=function(a,b,c){var d=a.toString().length;d=d<4?4:d;var e=Utils.pad(a.toString(),d," ").replace(/ /g," "),f=Utils.pad(b.toString(),d," ").replace(/ /g," "),g=Utils.pad(c.toString()+"ms",d," ").replace(/ /g," ");document.getElementById("output-info").innerHTML="time: "+g+"<br>length: "+e+"<br>lines: "+f,document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML=""},OutputWaiter.prototype.save_click=function(){var a=Utils.to_base64(this.app.dish_str),b=window.prompt("Please enter a filename:","download.dat");if(b){var c=document.createElement("a");c.setAttribute("href","data:application/octet-stream;base64;charset=utf-8,"+a),c.setAttribute("download",b),c.style.display="none",document.body.appendChild(c),c.click(),c.remove()}},OutputWaiter.prototype.switch_click=function(){this.switch_orig_data=this.manager.input.get(),document.getElementById("undo-switch").disabled=!1,this.app.set_input(this.app.dish_str)},OutputWaiter.prototype.undo_switch_click=function(){this.app.set_input(this.switch_orig_data),document.getElementById("undo-switch").disabled=!0};var RecipeWaiter=function(a,b){this.app=a,this.manager=b,this.remove_intent=!1};RecipeWaiter.prototype.initialise_operation_drag_n_drop=function(){var a=document.getElementById("rec_list");Sortable.create(a,{group:"recipe",sort:!0,animation:0,delay:0,filter:".arg-input,.arg",setData:function(a,b){a.setData("Text",b.querySelector(".arg-title").textContent)},onEnd:function(a){this.remove_intent&&(a.item.remove(),a.target.dispatchEvent(this.manager.operationremove))}.bind(this)}),Sortable.utils.on(a,"dragover",function(){this.remove_intent=!1}.bind(this)),Sortable.utils.on(a,"dragleave",function(){this.remove_intent=!0,this.app.progress=0}.bind(this)),Sortable.utils.on(a,"touchend",function(b){var c=b.changedTouches[0],d=document.elementFromPoint(c.clientX,c.clientY);this.remove_intent=!a.contains(d)}.bind(this)),document.querySelector("#categories a").addEventListener("dragover",this.fav_dragover.bind(this)),document.querySelector("#categories a").addEventListener("dragleave",this.fav_dragleave.bind(this)),document.querySelector("#categories a").addEventListener("drop",this.fav_drop.bind(this))},RecipeWaiter.prototype.create_sortable_seed_list=function(a){Sortable.create(a,{group:{name:"recipe",pull:"clone",put:!1},sort:!1,setData:function(a,b){a.setData("Text",b.textContent)},onStart:function(a){$(a.item).popover("destroy"),a.item.setAttribute("data-toggle","popover-disabled")},onEnd:this.op_sort_end.bind(this)})},RecipeWaiter.prototype.op_sort_end=function(a){return this.remove_intent?void("rec_list"===a.item.parentNode.id&&a.item.remove()):($(a.clone).popover(),$(a.clone).children("[data-toggle=popover]").popover(),void("rec_list"===a.item.parentNode.id&&(this.build_recipe_operation(a.item),a.item.dispatchEvent(this.manager.operationadd))))},RecipeWaiter.prototype.fav_dragover=function(a){return"move"===a.dataTransfer.effectAllowed&&(a.stopPropagation(),a.preventDefault(),void(a.target.className&&a.target.className.indexOf("category-title")>-1?a.target.classList.add("favourites-hover"):a.target.parentNode.className&&a.target.parentNode.className.indexOf("category-title")>-1?a.target.parentNode.classList.add("favourites-hover"):a.target.parentNode.parentNode.className&&a.target.parentNode.parentNode.className.indexOf("category-title")>-1&&a.target.parentNode.parentNode.classList.add("favourites-hover")))},RecipeWaiter.prototype.fav_dragleave=function(a){a.stopPropagation(),a.preventDefault(),document.querySelector("#categories a").classList.remove("favourites-hover")},RecipeWaiter.prototype.fav_drop=function(a){a.stopPropagation(),a.preventDefault(),a.target.classList.remove("favourites-hover");var b=a.dataTransfer.getData("Text");this.app.add_favourite(b)},RecipeWaiter.prototype.ing_change=function(){window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.disable_click=function(a){var b=a.target;"false"===b.getAttribute("disabled")?(b.setAttribute("disabled","true"),b.classList.add("disable-icon-selected"),b.parentNode.parentNode.classList.add("disabled")):(b.setAttribute("disabled","false"),b.classList.remove("disable-icon-selected"),b.parentNode.parentNode.classList.remove("disabled")),this.app.progress=0,window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.breakpoint_click=function(a){var b=a.target;"false"===b.getAttribute("break")?(b.setAttribute("break","true"),b.classList.add("breakpoint-selected")):(b.setAttribute("break","false"),b.classList.remove("breakpoint-selected")),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.operation_dblclick=function(a){a.target.remove(),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.operation_child_dblclick=function(a){a.target.parentNode.remove(),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.get_config=function(){for(var a,b,c,d,e,f=[],g=document.querySelectorAll("#rec_list li.operation"),h=0;h<g.length;h++){a=[],c=g[h].querySelector(".disable-icon"),d=g[h].querySelector(".breakpoint"),b=g[h].querySelectorAll(".arg");for(var i=0;i<b.length;i++)"checkbox"===b[i].getAttribute("type")?a[i]=b[i].checked:b[i].classList.contains("toggle-string")?a[i]={option:b[i].previousSibling.children[0].textContent.slice(0,-1),string:b[i].value}:a[i]=b[i].value;e={op:g[h].querySelector(".arg-title").textContent,args:a},c&&"true"===c.getAttribute("disabled")&&(e.disabled=!0),d&&"true"===d.getAttribute("break")&&(e.breakpoint=!0),f.push(e)}return f},RecipeWaiter.prototype.update_breakpoint_indicator=function(a){for(var b=document.querySelectorAll("#rec_list li.operation"),c=0;c<b.length;c++)c===a?b[c].classList.add("break"):b[c].classList.remove("break")},RecipeWaiter.prototype.build_recipe_operation=function(a){var b=a.textContent,c=new HTMLOperation(b,this.app.operations[b],this.app,this.manager);a.innerHTML=c.to_full_html(),this.app.operations[b].flow_control&&a.classList.add("flow-control-op"),c.manual_bake&&this.app.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.app.alert("Auto-Bake is disabled by default when using this operation.","info",5e3))},RecipeWaiter.prototype.add_operation=function(a){var b=document.createElement("li");return b.classList.add("operation"),b.innerHTML=a,this.build_recipe_operation(b),document.getElementById("rec_list").appendChild(b),b.dispatchEvent(this.manager.operationadd),b},RecipeWaiter.prototype.clear_recipe=function(){for(var a=document.getElementById("rec_list");a.firstChild;)a.removeChild(a.firstChild);a.dispatchEvent(this.manager.operationremove)},RecipeWaiter.prototype.dropdown_toggle_click=function(a){var b=a.target,c=b.parentNode.parentNode.previousSibling;c.innerHTML=b.textContent+" <span class='caret'></span>",this.ing_change()},RecipeWaiter.prototype.op_add=function(a){window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.op_remove=function(a){window.dispatchEvent(this.manager.statechange)};var SeasonalWaiter=function(a,b){this.app=a,this.manager=b};SeasonalWaiter.prototype.load=function(){var a=new Date;11===a.getMonth()&&a.getDate()>12&&(this.app.options.snow=!1,this.create_snow_option(),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox[option='snow']",this.let_it_snow.bind(this)),window.addEventListener("resize",this.let_it_snow.bind(this)),this.manager.add_listeners(".btn","click",this.shake_off_snow,this),25===a.getDate()&&this.let_it_snow()),this.kkeys=[],window.addEventListener("keydown",this.konami_code_listener.bind(this))},SeasonalWaiter.prototype.insert_spider_icons=function(){var a="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB3UlEQVQ4y2NgGJaAmYGBgVnf0oKJgYGBobWtXamqqoYTn2I4CI+LTzM2NTulpKbu+vPHz2dV5RWlluZmi3j5+KqFJSSEzpw8uQPdAEYYIzo5Kfjrl28rWFlZzjAzMYuEBQao3Lh+g+HGvbsMzExMDN++fWf4/PXLBzY2tqYNK1f2+4eHM2xcuRLigsT09Igf3384MTExbf767etBI319jU8fPsi+//jx/72HDxh5uLkZ7ty7y/Dz1687Avz8n2UUFR3Z2NjOySoqfmdhYGBg+PbtuwI7O8e5H79+8X379t357PnzYo+ePP7y6cuXc9++f69nYGRsvf/w4XdtLS2R799/bBUWFHr57sP7Jbs3b/ZkzswvUP3165fZ7z9//r988WIVAyPDr8tXr576+u3bpb9//7YwMjKeV1dV41NWVGoVEhDgPH761DJREeHaz1+/lqlpafUx6+jrRfz4+fPy+w8fTu/fsf3uw7t3L39+//4cv7DwGQYGhpdPbt9m4BcRFlNWVJC4fuvWASszs4C379792Ldt2xZBUdEdDP5hYSqQGIjDGa965uYKCalpZQwMDAxhMTG9DAwMDLaurhIkJY7A8IgGBgYGBgd3Dz2yUpeFo6O4rasrA9T24ZRxAAMTwMpgEJwLAAAAAElFTkSuQmCC",b="iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACYVBMVEUAAAAcJSU2Pz85QkM9RUWEhIWMjI2MkJEcJSU2Pz85QkM9RUWWlpc9RUVXXl4cJSU2Pz85QkM8REU9RUVRWFh6ens9RUVCSkpNVFRdY2McJSU5QkM7REQ9RUVGTk5KUlJQVldcY2Rla2uTk5WampscJSVUWltZX2BrcHF1e3scJSUjLCw9RUVASEhFTU1HTk9bYWJeZGRma2xudHV1eHiZmZocJSUyOjpJUFFQVldSWlpTWVpXXl5YXl5rb3B9fX6RkZIcJSUmLy8tNTU9RUVFTU1IT1BOVldRV1hTWlp0enocJSUfKChJUFBWXV1hZ2hnbGwcJSVETExLUlJLU1NNVVVPVlZYXl9cY2RiaGlobW5rcXFyd3h0eHgcJSUpMTFDS0tQV1dRV1hSWFlWXF1bYWJma2tobW5uc3SsrK0cJSVJUFBMVFROVlZVW1xZX2BdYmNhZ2hjaGhla2tqcHBscHE4Pz9KUlJRWVlSWVlXXF1aYGFbYWFfZWZlampqbW4cJSUgKSkiKysuNjY0PD01PT07QkNES0tHTk5JUFBMUlNMU1NOU1ROVVVPVVZRVlZRV1dSWVlWXFxXXV5aX2BbYWFbYWJcYmJcYmNcY2RdYmNgZmZhZmdkaWpkampkamtlamtla2tma2tma2xnbG1obW5pbG1pb3Bqb3Brb3BtcXJudHVvcHFvcXJvc3NwcXNwdXVxc3RzeXl1eXp2eXl3ent6e3x+gYKAhISBg4SKi4yLi4yWlpeampudnZ6fn6CkpaanqKiur6+vr7C4uLm6urq6u7u8vLy9vb3Av8DR0dL2b74UAAAAgHRSTlMAEBAQEBAQECAgICAgMDBAQEBAQEBAUFBQUGBgYGBgYGBgYGBgcHBwcHCAgICAgICAgICAgICPj4+Pj4+Pj4+Pj5+fn5+fn5+fn5+vr6+vr6+/v7+/v7+/v7+/v7+/z8/Pz8/Pz8/Pz8/P39/f39/f39/f39/f7+/v7+/v7+/v78x6RlYAAAGBSURBVDjLY2AYWUCSgUGAk4GBTdlUhQebvP7yjIgCPQbWzBMnjx5wwJSX37Rwfm1isqj9/iPHTuxYlyeMJi+yunfptBkZOw/uWj9h3vatcycu8eRGlldb3Vsts3ph/cFTh7fN3bCoe2Vf8+TZoQhTvBa6REozVC7cuPvQnmULJm1e2z+308eyJieEBSLPXbKQIUqQIczk+N6eNaumtnZMaWhaHM89m8XVCqJA02Y5w0xmga6yfVsamtrN4xoXNzS0JTHkK3CXy4EVFMumcxUy2LbENTVkZfEzMDAudtJyTmNwS2XQreAFyvOlK9louDNVaXurmjkGgnTMkWDgXswtNouFISEX6Awv+RihQi5OcYY4DtVARpCCFCMGhiJ1hjwFBpagEAaWEpFoC0WQOCOjFMRRwXYMDB4BDLJ+QLYsg7GBGjtasLnEMjCIrWBgyAZ7058FI9x1SoFEnTCDsCyIhynPILYYSFgbYpUDA5bpQBluXzxpI1yYAbd2sCMYRhwAAHB9ZPztbuMUAAAAAElFTkSuQmCC",c="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";document.querySelector("link[rel=icon]").setAttribute("href","data:image/png;base64,"+a),document.querySelector("#bake img").setAttribute("src","data:image/png;base64,"+b),document.querySelector(".about-img-left").setAttribute("src","data:image/png;base64,"+c)},SeasonalWaiter.prototype.insert_spider_text=function(){document.title=document.title.replace(/Cyber/g,"Spider"),SeasonalWaiter.tree_walk(document.body,function(a){3===a.nodeType&&(a.nodeValue=a.nodeValue.replace(/Cyber/g,"Spider"))},!0),SeasonalWaiter.tree_walk(document.getElementById("bake-group"),function(a){3===a.nodeType&&(a.nodeValue=a.nodeValue.replace(/Bake/g,"Spin"))},!0),document.querySelector("#recipe .title").innerHTML="Web"},SeasonalWaiter.prototype.create_snow_option=function(){var a=document.getElementById("options-body"),b=document.createElement("div");b.className="option-item",b.innerHTML="<input type='checkbox' option='snow' checked /> Let it snow",a.appendChild(b),this.manager.options.load()},SeasonalWaiter.prototype.let_it_snow=function(){if($(document).snowfall("clear"),this.app.options.snow){var a={},b=navigator.userAgent.match(/Firefox\/(\d\d?)/);a=b&&parseInt(b[1],10)<30?{flakeCount:10,flakeColor:"#fff",flakePosition:"absolute",minSize:1,maxSize:2,minSpeed:1,maxSpeed:5,round:!1,shadow:!1,collection:!1,collectionHeight:20,deviceorientation:!0}:{flakeCount:35,flakeColor:"#fff",flakePosition:"absolute",minSize:5,maxSize:8,minSpeed:1,maxSpeed:5,round:!0,shadow:!0,collection:".btn",collectionHeight:20,deviceorientation:!0},$(document).snowfall(a)}},SeasonalWaiter.prototype.shake_off_snow=function(a){for(var b=a.target,c=b.getBoundingClientRect(),d=document.querySelectorAll("canvas.snowfall-canvas"),e=null,f=function(){h.clearRect(0,0,e.width,e.height),$(this).fadeIn()},g=0;g<d.length;g++)if(e=d[g],e.style.left===c.left+"px"&&e.style.top===c.top-20+"px"){var h=e.getContext("2d");$(e).fadeOut("slow",f);break}},SeasonalWaiter.prototype.konami_code_listener=function(a){this.kkeys.push(a.keyCode);for(var b=[38,38,40,40,37,39,37,39,66,65],c=0;c<this.kkeys.length;c++){if(this.kkeys[c]!==b[c]){this.kkeys=[];break}c===b.length-1&&($("body").children().toggleClass("konami"),this.kkeys=[])}},SeasonalWaiter.tree_walk=function(){var a={SCRIPT:!0,IFRAME:!0,OBJECT:!0,EMBED:!0,STYLE:!0,LINK:!0,META:!0};return function(b,c,d){for(var e=b.firstChild;e&&e!==b;){if((d||1===e.nodeType)&&c(e)===!1)return!1;if(1!==e.nodeType||!e.firstChild||e.tagName&&a[e.tagName]){if(e.nextSibling)e=e.nextSibling;else for(;(e=e.parentNode)!==b;)if(e.nextSibling){e=e.nextSibling;break}}else e=e.firstChild}}}();var WindowWaiter=function(a){this.app=a};WindowWaiter.prototype.window_resize=function(){clearTimeout(this.reset_layout_timeout),this.reset_layout_timeout=setTimeout(this.app.reset_layout.bind(this.app),200)},WindowWaiter.prototype.window_blur=function(){this.window_blur_time=(new Date).getTime()},WindowWaiter.prototype.window_focus=function(){var a=(new Date).getTime()-this.window_blur_time;a>6e4&&this.app.silent_bake()};var main=function(){var a=["To Base64","From Base64","To Hex","From Hex","To Hexdump","From Hexdump","URL Decode","Regular expression","Entropy","Fork"],b={ +update_url:!0,show_highlighter:!0,treat_as_utf8:!0,word_wrap:!0,show_errors:!0,error_timeout:4e3,auto_bake_threshold:200,attempt_highlight:!0,snow:!1};document.removeEventListener("DOMContentLoaded",main,!1),window.app=new HTMLApp(Categories,OperationConfig,a,b),window.app.setup()};window.console=console||{log:function(){},error:function(){}},window.compile_time=moment.tz("Tue Dec 20 2016 18:47:37","ddd MMM D YYYY HH:mm:ss","UTC").valueOf(),window.compile_message="Merry Christmas! Have a look in the options panel for some festive flavour.",document.addEventListener("DOMContentLoaded",main,!1);</script></body></html> \ No newline at end of file diff --git a/build/prod/index.html b/build/prod/index.html index e322bae6..abd8bafb 100755 --- a/build/prod/index.html +++ b/build/prod/index.html @@ -18,4 +18,4 @@ See the License for the specific language governing permissions and limitations under the License. --> -<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>CyberChef</title><meta name="copyright" content="Crown Copyright 2016"><meta name="description" content="The Cyber Swiss Army Knife"><meta name="keywords" content="base64, hex, decode, encode, encrypt, decrypt, compress, decompress, regex, regular expressions, hash, crypt, hexadecimal, user agent, url, certificate, x.509, parser, JSON, gzip, md5, sha1, aes, des, blowfish, xor"><link rel="icon" type="image/png" href="data:image/x-icon;base64,AAABAAEAEA8AAAEAIAAkBAAAFgAAACgAAAAQAAAAHgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBwP5CQkE+Ojo5OiIiIS4aGhkt8fHxLe3t7S4GBgU6Hh4dWZWVlMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaWlrvS0tL/0dHR/9HR0f/Pz8/+qamp/6ysrP+srKz/rKys/3h4eJIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKioqix8fH/8bGxv/Gxsb/xcXF/pqamv+cnJz/nJyc/5ycnP9paWl/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCwyOjo6P/m5ub/5ubm/+Xl5f7Ly8v/zc3N/83Nzf/Ozs7/lZWVowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxscfn5+f/5ubm/+bm5v/k5OT+ysrK/8zMzP/MzMz/zc3N/5KSkqIAAAAAYWFhDwAAAAAEBAQA////AAAAAACqqqrI5+fn/+bm5v/m5ub/5OTk/srKyv/MzMz/zMzM/83Nzf+wsLDcnp6eo6urq8pjY2MbAAAAAAAAAACVlZWm4uLi/+bm5v/m5ub/5ubm/+Tk5P7Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP+8vLz7bGxsLQAAAACioqJ+6Ojo/+bm5v7l5eX/5ubm/+bm5v/l5eX+ysrK/8zMzP/MzMz/zMzM/8zMzP/MzMz/t7e33Y2NjVxFRUULx8fHwubm5v/m5ub/5ubm/+bm5v/m5ub+5eXl/8rKyv7MzMz/zMzM/8zMzP/MzMz/zMzM/svLy//Hx8f/WlpaDcnJycnm5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f7Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP/Dw8P3oKCgxQAAAAG1tbWZ5+fn/+Xl5f7m5ub/5ubm/+bm5v/k5OT+ysrK/8zMzP/MzMz/y8vL/szMzP/Nzc3/tbW15UNDQxgAAAAAAAAAD76+vuLo6Oj/5ubm/+bm5v/m5ub/5OTk/srKyv/MzMz/zMzM/8zMzP/BwcH9tra2+L29vflpaWkuR0dHAAAAAAAAAAAAiYmJZKurq4uXl5d909PT7eXl5f/MzMz/x8fH/6qqqty9vb3/g4ODlQAAABFra2tAAAAAAAAAAAAbGxsAAAAAAAAAAAAAAAAAAAAAAG9vbyOTk5N5j4+PnHl5eVZCQkIVkpKSJmNjYxEAAAAAAAAAAAAAAAD//wAA//8AAOAHAADgDwAA4AcAAOAHAADgAQAAwAEAAMABAACAAAAAgAAAAIABAADAAQAA9AcAAP9/AAA="><link href="styles.css" rel="stylesheet"></head><body><span id="edit-favourites" class="btn btn-default btn-sm"><img src="images/favourite-16x16.png"> Edit</span><div id="alert" class="alert alert-danger"><button type="button" class="close" id="alert-close">×</button> <span id="alert-content"></span></div><div id="content-wrapper"><div id="banner" class="green"><a href="cyberchef.htm" style="float:left;margin-left:10px;margin-right:80px" download>Download CyberChef<img src="images/download-24x24.png"></a><span id="notice"><script type="text/javascript">navigator.userAgent&&navigator.userAgent.match(/MSIE \d\d?\./)&&(document.write("Internet Explorer is not supported, please use Firefox or Chrome instead"),alert("Internet Explorer is not supported, please use Firefox or Chrome instead"))</script><noscript>JavaScript is not enabled. Good luck.</noscript></span><a href="#" id="support" class="banner-right" data-toggle="modal" data-target="#support-modal">About / Support<img src="images/help-22x22.png"></a><a href="#" id="options" class="banner-right">Options<img src="images/settings-22x22.png"></a></div><div id="wrapper"><div id="operations" class="split split-horizontal no-select"><div class="title no-select">Operations</div><input type="search" class="form-control" id="search" placeholder="Search..." autocomplete="off"><ul class="op_list" id="search-results"></ul><div class="panel-group no-select" id="categories"></div></div><div id="recipe" class="split split-horizontal no-select"><div class="title no-select">Recipe</div><ul id="rec_list" class="no-select"></ul><div id="controls" class="no-select"><div id="operational-controls"><div id="bake-group"><button type="button" class="btn btn-success btn-lg" id="bake"><img src="images/cook_male-32x32.png"> Bake!</button><label class="btn btn-success btn-lg" id="auto-bake-label"><input type="checkbox" checked="checked" id="auto-bake"><div>Auto Bake</div></label></div><div class="btn-group" style="padding-top:10px"><button type="button" class="btn btn-default" id="step"><img src="images/step-16x16.png"> Step through</button> <button type="button" class="btn btn-default" id="clr-breaks"><img src="images/erase-16x16.png"> Clear breakpoints</button></div></div><div class="btn-group-vertical" id="extra-controls"><button type="button" class="btn btn-default" id="save"><img src="images/save-16x16.png"> Save recipe</button> <button type="button" class="btn btn-default" id="load"><img src="images/open_yellow-16x16.png"> Load recipe</button> <button type="button" class="btn btn-default" id="clr-recipe"><img src="images/clean-16x16.png"> Clear recipe</button></div></div></div><div class="split split-horizontal" id="IO"><div id="input" class="split no-select"><div class="title no-select">Input<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="clr-io"><img src="images/recycle-16x16.png"> Clear I/O</button> <button type="button" class="btn btn-default btn-sm" id="reset-layout"><img src="images/layout-16x16.png"> Reset layout</button></div><div class="io-info" id="input-info"></div><div class="io-info" id="input-selection-info"></div></div><div class="textarea-wrapper no-select"><div id="input-highlighter" class="no-select"></div><textarea id="input-text"></textarea></div></div><div id="output" class="split"><div class="title no-select">Output<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="save-to-file"><img src="images/save_as-16x16.png"> Save to file</button> <button type="button" class="btn btn-default btn-sm" id="switch"><img src="images/switch-16x16.png"> Move output to input</button> <button type="button" class="btn btn-default btn-sm" id="undo-switch" disabled="disabled"><img src="images/undo-16x16.png"> Undo</button></div><div class="io-info" id="output-info"></div><div class="io-info" id="output-selection-info"></div></div><div class="textarea-wrapper"><div id="output-highlighter" class="no-select"></div><div id="output-html"></div><textarea id="output-text" readonly="readonly"></textarea></div></div></div></div></div><div class="modal" id="save-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/save-22x22.png"><h4 class="modal-title">Save recipe</h4></div><div class="modal-body"><div class="form-group"><label for="save-text">Save your recipe to local storage or copy the following string to load later</label><textarea class="form-control" id="save-text" rows="5"></textarea></div><div class="form-group"><label for="save-name">Recipe name</label><input type="text" class="form-control" id="save-name" placeholder="Recipe name"></div></div><div class="modal-footer" id="save-footer"><button type="button" class="btn btn-primary" id="save-button" data-dismiss="modal">Save</button> <button type="button" class="btn btn-default" data-dismiss="modal">Done</button></div><div class="modal-body"><div class="form-group" id="save-link-group"><label>Data link</label><div class="save-link-options"><input type="checkbox" id="save-link-recipe-checkbox" checked="checked"> Include recipe <input type="checkbox" id="save-link-input-checkbox" checked="checked"> Include input</div><a id="save-link" style="word-wrap:break-word"></a></div></div></div></div></div><div class="modal" id="load-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/open_yellow-24x24.png"><h4 class="modal-title">Load recipe</h4></div><div class="modal-body"><div class="form-group"><label for="load-name">Load your recipe from local storage or paste it into the box below</label><select class="form-control" id="load-name"></select></div><div class="form-group"><textarea class="form-control" id="load-text" rows="5"></textarea></div></div><div class="modal-footer"><button type="button" class="btn btn-primary" id="load-button" data-dismiss="modal">Load</button> <button type="button" class="btn btn-danger" id="load-delete-button">Delete</button> <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button></div></div></div></div><div class="modal" id="options-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/settings-22x22.png"><h4 class="modal-title">Options</h4></div><div class="modal-body" id="options-body"><p style="font-weight:700">Please note that these options will persist between sessions.</p><div class="option-item"><input type="checkbox" option="update_url" checked="checked"> Update the URL when the input or recipe changes</div><div class="option-item"><input type="checkbox" option="show_highlighter" checked="checked"> Highlight selected bytes in output and input (when possible)</div><div class="option-item"><input type="checkbox" option="treat_as_utf8" checked="checked"> Treat output as UTF-8 if possible</div><div class="option-item"><input type="checkbox" option="word_wrap" checked="checked"> Word wrap the input and output</div><div class="option-item"><input type="checkbox" option="show_errors" checked="checked"> Operation error reporting (recommended)</div><div class="option-item"><input type="number" option="error_timeout"> Operation error timeout in ms (0 for never)</div><div class="option-item"><input type="number" option="auto_bake_threshold"> Auto Bake threshold in ms</div></div><div class="modal-footer"><button type="button" class="btn btn-default" id="reset-options">Reset options to default</button> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div><div class="modal" id="favourites-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/favourite-24x24.png"><h4 class="modal-title">Edit Favourites</h4></div><div class="modal-body" id="options-body"><ul><li><span style="font-weight:700">To add:</span> drag the operation over the favourites category</li><li><span style="font-weight:700">To reorder:</span> drag up and down in the list below</li><li><span style="font-weight:700">To remove:</span> hit the red cross or drag out of the list below</li></ul><br><ul id="edit-favourites-list" class="op_list"></ul><div class="option-item"></div></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal" id="reset-favourites">Reset favourites to default</button> <button type="button" class="btn btn-success" data-dismiss="modal" id="save-favourites">Save</button> <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button></div></div></div></div><div class="modal" id="support-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/help-22x22.png"><h4 class="modal-title">CyberChef - The Cyber Swiss Army Knife</h4></div><div class="modal-body"><img class="about-img-left" src="images/cyberchef-128x128.png"><p class="subtext">Compile time: 14/12/2016 16:37:29 UTC</p><p>© Crown Copyright 2016.</p><p>Licenced under the Apache Licence, Version 2.0.</p><br><br><div><ul class="nav nav-tabs" role="tablist"><li role="presentation" class="active"><a href="#faqs" aria-controls="profile" role="tab" data-toggle="tab"><img src="images/help-16x16.png"> FAQs </a></li><li role="presentation"><a href="#stats" aria-controls="messages" role="tab" data-toggle="tab"><img src="images/stats-16x16.png"> Stats </a></li><li role="presentation"><a href="#about" aria-controls="messages" role="tab" data-toggle="tab"><img src="images/speech-16x16.png"> About </a></li></ul><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="faqs"><br><blockquote><a data-toggle="collapse" data-target="#faq-examples">What sort of things can I do with CyberChef?</a></blockquote><div class="collapse" id="faq-examples"><p>There are well over 100 operations in CyberChef allowing you to carry simple and complex tasks easily. Here are some examples:</p><ul><li><a href="?recipe=%5B%7B%22op%22%3A%22From%20Base64%22%2C%22args%22%3A%5B%22A-Za-z0-9%2B%2F%3D%22%2Ctrue%5D%7D%5D&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1">Decode a Base64-encoded string</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Translate%20DateTime%20Format%22%2C%22args%22%3A%5B%22Standard%20date%20and%20time%22%2C%22DD%2FMM%2FYYYY%20HH%3Amm%3Ass%22%2C%22UTC%22%2C%22dddd%20Do%20MMMM%20YYYY%20HH%3Amm%3Ass%20Z%20z%22%2C%22Australia%2FQueensland%22%5D%7D%5D&input=MTUvMDYvMjAxNSAyMDo0NTowMA">Convert a date and time to a different time zone</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Parse%20IPv6%20address%22%2C%22args%22%3A%5B%5D%7D%5D&input=MjAwMTowMDAwOjQxMzY6ZTM3ODo4MDAwOjYzYmY6M2ZmZjpmZGQy">Parse a Teredo IPv6 address</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22From%20Hexdump%22%2C%22args%22%3A%5B%5D%7D%2C%7B%22op%22%3A%22Gunzip%22%2C%22args%22%3A%5B%5D%7D%5D&input=MDAwMDAwMDAgIDFmIDhiIDA4IDAwIDEyIGJjIGYzIDU3IDAwIGZmIDBkIGM3IGMxIDA5IDAwIDIwICB8Li4uLi6881cu%2Fy7HwS4uIHwKMDAwMDAwMTAgIDA4IDA1IGQwIDU1IGZlIDA0IDJkIGQzIDA0IDFmIGNhIDhjIDQ0IDIxIDViIGZmICB8Li7QVf4uLdMuLsouRCFb%2F3wKMDAwMDAwMjAgIDYwIGM3IGQ3IDAzIDE2IGJlIDQwIDFmIDc4IDRhIDNmIDA5IDg5IDBiIDlhIDdkICB8YMfXLi6%2BQC54Sj8uLi4ufXwKMDAwMDAwMzAgIDRlIGM4IDRlIDZkIDA1IDFlIDAxIDhiIDRjIDI0IDAwIDAwIDAwICAgICAgICAgICB8TshObS4uLi5MJC4uLnw">Convert data from a hexdump, then decompress</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Fork%22%2C%22args%22%3A%5B%22%5C%5Cn%22%2C%22%5C%5Cn%22%5D%7D%2C%7B%22op%22%3A%22From%20UNIX%20Timestamp%22%2C%22args%22%3A%5B%22Seconds%20(s)%22%5D%7D%5D&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA">Display multiple timestamps as full dates</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Fork%22%2C%22args%22%3A%5B%22%5C%5Cn%22%2C%22%5C%5Cn%22%5D%7D%2C%7B%22op%22%3A%22Conditional%20Jump%22%2C%22args%22%3A%5B%221%22%2C%222%22%2C%2210%22%5D%7D%2C%7B%22op%22%3A%22To%20Hex%22%2C%22args%22%3A%5B%22Space%22%5D%7D%2C%7B%22op%22%3A%22Return%22%2C%22args%22%3A%5B%5D%7D%2C%7B%22op%22%3A%22To%20Base64%22%2C%22args%22%3A%5B%22A-Za-z0-9%2B%2F%3D%22%5D%7D%5D&input=U29tZSBkYXRhIHdpdGggYSAxIGluIGl0ClNvbWUgZGF0YSB3aXRoIGEgMiBpbiBpdA">Carry out different operations on data of different types</a></li></ul></div><blockquote><a data-toggle="collapse" data-target="#faq-load-files">Can I load input directly from files?</a></blockquote><div class="collapse" id="faq-load-files"><p>Yes! Just drag your file over the input box and drop it. The contents of the file will be converted into hexadecimal and the 'From Hex' operation will be added to the beginning of the recipe (if it's not already there). This is so that special characters like carriage returns aren't removed by your browser.</p><p>Please note that loading large files is likely to cause a crash. There's not a lot that can be done about this - browsers just aren't very good at handling and displaying large amounts of data.</p></div><blockquote><a data-toggle="collapse" data-target="#faq-fork">How do I run operation X over multiple inputs at once?</a></blockquote><div class="collapse" id="faq-fork"><p>Maybe you have 10 timestamps that you want to parse or 16 encoded strings that all have the same key.</p><p>The 'Fork' operation (found in the 'Flow control' category) splits up the input line by line and runs all subsequent operations on each line separately. Each output is then displayed on a separate line. These delimiters can be changed, so if your inputs are separated by commas, you can change the split delimiter to a comma instead.</p><p><a href='?recipe=%5B%7B"op"%3A"Fork"%2C"args"%3A%5B"%5C%5Cn"%2C"%5C%5Cn"%5D%7D%2C%7B"op"%3A"From%20UNIX%20Timestamp"%2C"args"%3A%5B"Seconds%20(s)"%5D%7D%5D&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA%3D%3D'>Click here</a> for an example.</p></div></div><div role="tabpanel" class="tab-pane" id="stats"><br><p>If you're a nerd like me, you might find statistics really fun! Here's some about the CyberChef code base:</p><br><pre>203 source files<br>104410 lines<br>4.0M size<br><br>136 JavaScript source files<br>95314 lines<br>3.5M size<br><br>78 third party JavaScript source files<br>76377 lines<br>2.7M size<br><br>58 first party JavaScript source files<br>18937 lines<br>728K size<br><br>3.2M uncompressed JavaScript size<br> compressed JavaScript size<br><br>15 categories<br>155 operations<br></pre></div><div role="tabpanel" class="tab-pane" id="about" style="padding:20px"><h4>What</h4><p>A simple, intuitive web app for analysing and decoding data without having to deal with complex tools or programming languages. CyberChef encourages both technical and non-technical people to explore data formats, encryption and compression.</p><h4>Why</h4><p>Digital data comes in all shapes, sizes and formats in the modern world – CyberChef helps to make sense of this data all on one easy-to-use platform.</p><h4>How</h4><p>The interface is designed with simplicity at its heart. Complex techniques are now as trivial as drag-and-drop. Simple functions can be combined to build up a "recipe", potentially resulting in complex analysis, which can be shared with other users and used with their input.</p><p>For those comfortable writing code, CyberChef is a quick and efficient way to prototype solutions to a problem which can then be scripted once proven to work.</p><h4>Who</h4><p>It is expected that CyberChef will be useful for cybersecurity and antivirus companies. It should also appeal to the academic world and any individuals or companies involved in the analysis of digital data, be that software developers, analysts, mathematicians or casual puzzle solvers.</p><h4>Aim</h4><p>It is hoped that by releasing CyberChef through <a href="https://github.com/gchq/cyberchef">GitHub</a>, contributions can be added which can be rolled out into future versions of the tool.</p><br><p>There are around 150 useful operations in CyberChef for anyone working on anything vaguely Internet-related, whether you just want to convert a timestamp to a different format, decompress gzipped data, create a SHA3 hash, or parse an X.509 certificate to find out who issued it.</p><p>It’s the Cyber Swiss Army Knife.</p></div></div></div></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div><div class="modal" id="confirm-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><h4 class="modal-title" id="confirm-title"></h4></div><div class="modal-body" id="confirm-body"></div><div class="modal-footer"><button type="button" class="btn btn-success" id="confirm-yes"><img src="images/thumb_up-16x16.png"> Yes</button> <button type="button" class="btn btn-danger" id="confirm-no" data-dismiss="modal"><img src="images/thumb_down-16x16.png"> No</button></div></div></div></div><script type="application/javascript" src="scripts.js"></script></body></html> \ No newline at end of file +<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>CyberChef</title><meta name="copyright" content="Crown Copyright 2016"><meta name="description" content="The Cyber Swiss Army Knife"><meta name="keywords" content="base64, hex, decode, encode, encrypt, decrypt, compress, decompress, regex, regular expressions, hash, crypt, hexadecimal, user agent, url, certificate, x.509, parser, JSON, gzip, md5, sha1, aes, des, blowfish, xor"><link rel="icon" type="image/png" href="data:image/x-icon;base64,AAABAAEAEA8AAAEAIAAkBAAAFgAAACgAAAAQAAAAHgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBwP5CQkE+Ojo5OiIiIS4aGhkt8fHxLe3t7S4GBgU6Hh4dWZWVlMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaWlrvS0tL/0dHR/9HR0f/Pz8/+qamp/6ysrP+srKz/rKys/3h4eJIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKioqix8fH/8bGxv/Gxsb/xcXF/pqamv+cnJz/nJyc/5ycnP9paWl/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCwyOjo6P/m5ub/5ubm/+Xl5f7Ly8v/zc3N/83Nzf/Ozs7/lZWVowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxscfn5+f/5ubm/+bm5v/k5OT+ysrK/8zMzP/MzMz/zc3N/5KSkqIAAAAAYWFhDwAAAAAEBAQA////AAAAAACqqqrI5+fn/+bm5v/m5ub/5OTk/srKyv/MzMz/zMzM/83Nzf+wsLDcnp6eo6urq8pjY2MbAAAAAAAAAACVlZWm4uLi/+bm5v/m5ub/5ubm/+Tk5P7Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP+8vLz7bGxsLQAAAACioqJ+6Ojo/+bm5v7l5eX/5ubm/+bm5v/l5eX+ysrK/8zMzP/MzMz/zMzM/8zMzP/MzMz/t7e33Y2NjVxFRUULx8fHwubm5v/m5ub/5ubm/+bm5v/m5ub+5eXl/8rKyv7MzMz/zMzM/8zMzP/MzMz/zMzM/svLy//Hx8f/WlpaDcnJycnm5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f7Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP/Dw8P3oKCgxQAAAAG1tbWZ5+fn/+Xl5f7m5ub/5ubm/+bm5v/k5OT+ysrK/8zMzP/MzMz/y8vL/szMzP/Nzc3/tbW15UNDQxgAAAAAAAAAD76+vuLo6Oj/5ubm/+bm5v/m5ub/5OTk/srKyv/MzMz/zMzM/8zMzP/BwcH9tra2+L29vflpaWkuR0dHAAAAAAAAAAAAiYmJZKurq4uXl5d909PT7eXl5f/MzMz/x8fH/6qqqty9vb3/g4ODlQAAABFra2tAAAAAAAAAAAAbGxsAAAAAAAAAAAAAAAAAAAAAAG9vbyOTk5N5j4+PnHl5eVZCQkIVkpKSJmNjYxEAAAAAAAAAAAAAAAD//wAA//8AAOAHAADgDwAA4AcAAOAHAADgAQAAwAEAAMABAACAAAAAgAAAAIABAADAAQAA9AcAAP9/AAA="><link href="styles.css" rel="stylesheet"></head><body><span id="edit-favourites" class="btn btn-default btn-sm"><img src="images/favourite-16x16.png"> Edit</span><div id="alert" class="alert alert-danger"><button type="button" class="close" id="alert-close">×</button> <span id="alert-content"></span></div><div id="content-wrapper"><div id="banner" class="green"><a href="cyberchef.htm" style="float:left;margin-left:10px;margin-right:80px" download>Download CyberChef<img src="images/download-24x24.png"></a><span id="notice"><script type="text/javascript">navigator.userAgent&&navigator.userAgent.match(/MSIE \d\d?\./)&&(document.write("Internet Explorer is not supported, please use Firefox or Chrome instead"),alert("Internet Explorer is not supported, please use Firefox or Chrome instead"))</script><noscript>JavaScript is not enabled. Good luck.</noscript></span><a href="#" id="support" class="banner-right" data-toggle="modal" data-target="#support-modal">About / Support<img src="images/help-22x22.png"></a><a href="#" id="options" class="banner-right">Options<img src="images/settings-22x22.png"></a></div><div id="wrapper"><div id="operations" class="split split-horizontal no-select"><div class="title no-select">Operations</div><input type="search" class="form-control" id="search" placeholder="Search..." autocomplete="off"><ul class="op_list" id="search-results"></ul><div class="panel-group no-select" id="categories"></div></div><div id="recipe" class="split split-horizontal no-select"><div class="title no-select">Recipe</div><ul id="rec_list" class="no-select"></ul><div id="controls" class="no-select"><div id="operational-controls"><div id="bake-group"><button type="button" class="btn btn-success btn-lg" id="bake"><img src="images/cook_male-32x32.png"> Bake!</button><label class="btn btn-success btn-lg" id="auto-bake-label"><input type="checkbox" checked="checked" id="auto-bake"><div>Auto Bake</div></label></div><div class="btn-group" style="padding-top:10px"><button type="button" class="btn btn-default" id="step"><img src="images/step-16x16.png"> Step through</button> <button type="button" class="btn btn-default" id="clr-breaks"><img src="images/erase-16x16.png"> Clear breakpoints</button></div></div><div class="btn-group-vertical" id="extra-controls"><button type="button" class="btn btn-default" id="save"><img src="images/save-16x16.png"> Save recipe</button> <button type="button" class="btn btn-default" id="load"><img src="images/open_yellow-16x16.png"> Load recipe</button> <button type="button" class="btn btn-default" id="clr-recipe"><img src="images/clean-16x16.png"> Clear recipe</button></div></div></div><div class="split split-horizontal" id="IO"><div id="input" class="split no-select"><div class="title no-select">Input<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="clr-io"><img src="images/recycle-16x16.png"> Clear I/O</button> <button type="button" class="btn btn-default btn-sm" id="reset-layout"><img src="images/layout-16x16.png"> Reset layout</button></div><div class="io-info" id="input-info"></div><div class="io-info" id="input-selection-info"></div></div><div class="textarea-wrapper no-select"><div id="input-highlighter" class="no-select"></div><textarea id="input-text"></textarea></div></div><div id="output" class="split"><div class="title no-select">Output<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="save-to-file"><img src="images/save_as-16x16.png"> Save to file</button> <button type="button" class="btn btn-default btn-sm" id="switch"><img src="images/switch-16x16.png"> Move output to input</button> <button type="button" class="btn btn-default btn-sm" id="undo-switch" disabled="disabled"><img src="images/undo-16x16.png"> Undo</button></div><div class="io-info" id="output-info"></div><div class="io-info" id="output-selection-info"></div></div><div class="textarea-wrapper"><div id="output-highlighter" class="no-select"></div><div id="output-html"></div><textarea id="output-text" readonly="readonly"></textarea></div></div></div></div></div><div class="modal" id="save-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/save-22x22.png"><h4 class="modal-title">Save recipe</h4></div><div class="modal-body"><div class="form-group"><label for="save-text">Save your recipe to local storage or copy the following string to load later</label><textarea class="form-control" id="save-text" rows="5"></textarea></div><div class="form-group"><label for="save-name">Recipe name</label><input type="text" class="form-control" id="save-name" placeholder="Recipe name"></div></div><div class="modal-footer" id="save-footer"><button type="button" class="btn btn-primary" id="save-button" data-dismiss="modal">Save</button> <button type="button" class="btn btn-default" data-dismiss="modal">Done</button></div><div class="modal-body"><div class="form-group" id="save-link-group"><label>Data link</label><div class="save-link-options"><input type="checkbox" id="save-link-recipe-checkbox" checked="checked"> Include recipe <input type="checkbox" id="save-link-input-checkbox" checked="checked"> Include input</div><a id="save-link" style="word-wrap:break-word"></a></div></div></div></div></div><div class="modal" id="load-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/open_yellow-24x24.png"><h4 class="modal-title">Load recipe</h4></div><div class="modal-body"><div class="form-group"><label for="load-name">Load your recipe from local storage or paste it into the box below</label><select class="form-control" id="load-name"></select></div><div class="form-group"><textarea class="form-control" id="load-text" rows="5"></textarea></div></div><div class="modal-footer"><button type="button" class="btn btn-primary" id="load-button" data-dismiss="modal">Load</button> <button type="button" class="btn btn-danger" id="load-delete-button">Delete</button> <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button></div></div></div></div><div class="modal" id="options-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/settings-22x22.png"><h4 class="modal-title">Options</h4></div><div class="modal-body" id="options-body"><p style="font-weight:700">Please note that these options will persist between sessions.</p><div class="option-item"><input type="checkbox" option="update_url" checked="checked"> Update the URL when the input or recipe changes</div><div class="option-item"><input type="checkbox" option="show_highlighter" checked="checked"> Highlight selected bytes in output and input (when possible)</div><div class="option-item"><input type="checkbox" option="treat_as_utf8" checked="checked"> Treat output as UTF-8 if possible</div><div class="option-item"><input type="checkbox" option="word_wrap" checked="checked"> Word wrap the input and output</div><div class="option-item"><input type="checkbox" option="show_errors" checked="checked"> Operation error reporting (recommended)</div><div class="option-item"><input type="number" option="error_timeout"> Operation error timeout in ms (0 for never)</div><div class="option-item"><input type="number" option="auto_bake_threshold"> Auto Bake threshold in ms</div></div><div class="modal-footer"><button type="button" class="btn btn-default" id="reset-options">Reset options to default</button> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div><div class="modal" id="favourites-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/favourite-24x24.png"><h4 class="modal-title">Edit Favourites</h4></div><div class="modal-body" id="options-body"><ul><li><span style="font-weight:700">To add:</span> drag the operation over the favourites category</li><li><span style="font-weight:700">To reorder:</span> drag up and down in the list below</li><li><span style="font-weight:700">To remove:</span> hit the red cross or drag out of the list below</li></ul><br><ul id="edit-favourites-list" class="op_list"></ul><div class="option-item"></div></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal" id="reset-favourites">Reset favourites to default</button> <button type="button" class="btn btn-success" data-dismiss="modal" id="save-favourites">Save</button> <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button></div></div></div></div><div class="modal" id="support-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><img class="pull-right" src="images/help-22x22.png"><h4 class="modal-title">CyberChef - The Cyber Swiss Army Knife</h4></div><div class="modal-body"><img class="about-img-left" src="images/cyberchef-128x128.png"><p class="subtext">Compile time: 20/12/2016 18:47:37 UTC</p><p>© Crown Copyright 2016.</p><p>Licenced under the Apache Licence, Version 2.0.</p><br><br><div><ul class="nav nav-tabs" role="tablist"><li role="presentation" class="active"><a href="#faqs" aria-controls="profile" role="tab" data-toggle="tab"><img src="images/help-16x16.png"> FAQs </a></li><li role="presentation"><a href="#stats" aria-controls="messages" role="tab" data-toggle="tab"><img src="images/stats-16x16.png"> Stats </a></li><li role="presentation"><a href="#about" aria-controls="messages" role="tab" data-toggle="tab"><img src="images/speech-16x16.png"> About </a></li></ul><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="faqs"><br><blockquote><a data-toggle="collapse" data-target="#faq-examples">What sort of things can I do with CyberChef?</a></blockquote><div class="collapse" id="faq-examples"><p>There are well over 100 operations in CyberChef allowing you to carry simple and complex tasks easily. Here are some examples:</p><ul><li><a href="?recipe=%5B%7B%22op%22%3A%22From%20Base64%22%2C%22args%22%3A%5B%22A-Za-z0-9%2B%2F%3D%22%2Ctrue%5D%7D%5D&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1">Decode a Base64-encoded string</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Translate%20DateTime%20Format%22%2C%22args%22%3A%5B%22Standard%20date%20and%20time%22%2C%22DD%2FMM%2FYYYY%20HH%3Amm%3Ass%22%2C%22UTC%22%2C%22dddd%20Do%20MMMM%20YYYY%20HH%3Amm%3Ass%20Z%20z%22%2C%22Australia%2FQueensland%22%5D%7D%5D&input=MTUvMDYvMjAxNSAyMDo0NTowMA">Convert a date and time to a different time zone</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Parse%20IPv6%20address%22%2C%22args%22%3A%5B%5D%7D%5D&input=MjAwMTowMDAwOjQxMzY6ZTM3ODo4MDAwOjYzYmY6M2ZmZjpmZGQy">Parse a Teredo IPv6 address</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22From%20Hexdump%22%2C%22args%22%3A%5B%5D%7D%2C%7B%22op%22%3A%22Gunzip%22%2C%22args%22%3A%5B%5D%7D%5D&input=MDAwMDAwMDAgIDFmIDhiIDA4IDAwIDEyIGJjIGYzIDU3IDAwIGZmIDBkIGM3IGMxIDA5IDAwIDIwICB8Li4uLi6881cu%2Fy7HwS4uIHwKMDAwMDAwMTAgIDA4IDA1IGQwIDU1IGZlIDA0IDJkIGQzIDA0IDFmIGNhIDhjIDQ0IDIxIDViIGZmICB8Li7QVf4uLdMuLsouRCFb%2F3wKMDAwMDAwMjAgIDYwIGM3IGQ3IDAzIDE2IGJlIDQwIDFmIDc4IDRhIDNmIDA5IDg5IDBiIDlhIDdkICB8YMfXLi6%2BQC54Sj8uLi4ufXwKMDAwMDAwMzAgIDRlIGM4IDRlIDZkIDA1IDFlIDAxIDhiIDRjIDI0IDAwIDAwIDAwICAgICAgICAgICB8TshObS4uLi5MJC4uLnw">Convert data from a hexdump, then decompress</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Fork%22%2C%22args%22%3A%5B%22%5C%5Cn%22%2C%22%5C%5Cn%22%5D%7D%2C%7B%22op%22%3A%22From%20UNIX%20Timestamp%22%2C%22args%22%3A%5B%22Seconds%20(s)%22%5D%7D%5D&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA">Display multiple timestamps as full dates</a></li><li><a href="?recipe=%5B%7B%22op%22%3A%22Fork%22%2C%22args%22%3A%5B%22%5C%5Cn%22%2C%22%5C%5Cn%22%5D%7D%2C%7B%22op%22%3A%22Conditional%20Jump%22%2C%22args%22%3A%5B%221%22%2C%222%22%2C%2210%22%5D%7D%2C%7B%22op%22%3A%22To%20Hex%22%2C%22args%22%3A%5B%22Space%22%5D%7D%2C%7B%22op%22%3A%22Return%22%2C%22args%22%3A%5B%5D%7D%2C%7B%22op%22%3A%22To%20Base64%22%2C%22args%22%3A%5B%22A-Za-z0-9%2B%2F%3D%22%5D%7D%5D&input=U29tZSBkYXRhIHdpdGggYSAxIGluIGl0ClNvbWUgZGF0YSB3aXRoIGEgMiBpbiBpdA">Carry out different operations on data of different types</a></li></ul></div><blockquote><a data-toggle="collapse" data-target="#faq-load-files">Can I load input directly from files?</a></blockquote><div class="collapse" id="faq-load-files"><p>Yes! Just drag your file over the input box and drop it. The contents of the file will be converted into hexadecimal and the 'From Hex' operation will be added to the beginning of the recipe (if it's not already there). This is so that special characters like carriage returns aren't removed by your browser.</p><p>Please note that loading large files is likely to cause a crash. There's not a lot that can be done about this - browsers just aren't very good at handling and displaying large amounts of data.</p></div><blockquote><a data-toggle="collapse" data-target="#faq-fork">How do I run operation X over multiple inputs at once?</a></blockquote><div class="collapse" id="faq-fork"><p>Maybe you have 10 timestamps that you want to parse or 16 encoded strings that all have the same key.</p><p>The 'Fork' operation (found in the 'Flow control' category) splits up the input line by line and runs all subsequent operations on each line separately. Each output is then displayed on a separate line. These delimiters can be changed, so if your inputs are separated by commas, you can change the split delimiter to a comma instead.</p><p><a href='?recipe=%5B%7B"op"%3A"Fork"%2C"args"%3A%5B"%5C%5Cn"%2C"%5C%5Cn"%5D%7D%2C%7B"op"%3A"From%20UNIX%20Timestamp"%2C"args"%3A%5B"Seconds%20(s)"%5D%7D%5D&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA%3D%3D'>Click here</a> for an example.</p></div></div><div role="tabpanel" class="tab-pane" id="stats"><br><p>If you're a nerd like me, you might find statistics really fun! Here's some about the CyberChef code base:</p><br><pre>203 source files<br>104466 lines<br>4.0M size<br><br>136 JavaScript source files<br>95316 lines<br>3.4M size<br><br>78 third party JavaScript source files<br>76377 lines<br>2.7M size<br><br>58 first party JavaScript source files<br>18939 lines<br>724K size<br><br>3.2M uncompressed JavaScript size<br>1.7M compressed JavaScript size<br><br>15 categories<br>155 operations<br></pre></div><div role="tabpanel" class="tab-pane" id="about" style="padding:20px"><h4>What</h4><p>A simple, intuitive web app for analysing and decoding data without having to deal with complex tools or programming languages. CyberChef encourages both technical and non-technical people to explore data formats, encryption and compression.</p><h4>Why</h4><p>Digital data comes in all shapes, sizes and formats in the modern world – CyberChef helps to make sense of this data all on one easy-to-use platform.</p><h4>How</h4><p>The interface is designed with simplicity at its heart. Complex techniques are now as trivial as drag-and-drop. Simple functions can be combined to build up a "recipe", potentially resulting in complex analysis, which can be shared with other users and used with their input.</p><p>For those comfortable writing code, CyberChef is a quick and efficient way to prototype solutions to a problem which can then be scripted once proven to work.</p><h4>Who</h4><p>It is expected that CyberChef will be useful for cybersecurity and antivirus companies. It should also appeal to the academic world and any individuals or companies involved in the analysis of digital data, be that software developers, analysts, mathematicians or casual puzzle solvers.</p><h4>Aim</h4><p>It is hoped that by releasing CyberChef through <a href="https://github.com/gchq/cyberchef">GitHub</a>, contributions can be added which can be rolled out into future versions of the tool.</p><br><p>There are around 150 useful operations in CyberChef for anyone working on anything vaguely Internet-related, whether you just want to convert a timestamp to a different format, decompress gzipped data, create a SHA3 hash, or parse an X.509 certificate to find out who issued it.</p><p>It’s the Cyber Swiss Army Knife.</p></div></div></div></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div><div class="modal" id="confirm-modal" tabindex="-1" role="dialog"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><h4 class="modal-title" id="confirm-title"></h4></div><div class="modal-body" id="confirm-body"></div><div class="modal-footer"><button type="button" class="btn btn-success" id="confirm-yes"><img src="images/thumb_up-16x16.png"> Yes</button> <button type="button" class="btn btn-danger" id="confirm-no" data-dismiss="modal"><img src="images/thumb_down-16x16.png"> No</button></div></div></div></div><script type="application/javascript" src="scripts.js"></script></body></html> \ No newline at end of file diff --git a/build/prod/scripts.js b/build/prod/scripts.js index fb0e6441..5ce0d6ba 100755 --- a/build/prod/scripts.js +++ b/build/prod/scripts.js @@ -255,14 +255,23 @@ function(){function a(a){var b=" ";if(isNaN(parseInt(a)))b=a;else switch(a){c @author RubaXa <trash@rubaxa.org> @license MIT */ -function(a){"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=s({},b),a[M]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);W(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=!b.forceFallback&&Q,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),U.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){w&&w.state!==a&&(h(w,"display",a?"none":""),!a&&w.state&&x.insertBefore(w,t),w.state=a)}function c(a,b,c){if(a){c=c||O;do if(">*"===b&&a.parentNode===c||q(a,b))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(L," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(L," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return O.defaultView&&O.defaultView.getComputedStyle?c=O.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;e<f;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=O.createEvent("Event"),i=(a||b[M]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=w,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[M],j=i.options.onMove;return g=O.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){S=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a,b){var c=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&q(a,b)&&c++;return c}function q(a,b){if(a){b=b.split(".");var c=b.shift().toUpperCase(),d=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");return!(""!==c&&a.nodeName.toUpperCase()!=c||b.length&&((" "+a.className+" ").match(d)||[]).length!=b.length)}return!1}function r(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function s(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}if("undefined"==typeof window||"undefined"==typeof window.document)return function(){throw new Error("Sortable.js requires a window with a document")};var t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K={},L=/\s+/g,M="Sortable"+(new Date).getTime(),N=window,O=N.document,P=N.parseInt,Q=!!("draggable"in O.createElement("div")),R=function(a){return a=O.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),S=!1,T=Math.abs,U=([].slice,[]),V=r(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(A!==c&&(z=b.scroll,A=c,z===!0)){z=c;do if(z.offsetWidth<z.scrollWidth||z.offsetHeight<z.scrollHeight)break;while(z=z.parentNode)}z&&(d=z,e=z.getBoundingClientRect(),f=(T(e.right-j)<=h)-(T(e.left-j)<=h),g=(T(e.bottom-k)<=h)-(T(e.top-k)<=h)),f||g||(f=(l-j<=h)-(j<=h),g=(m-k<=h)-(k<=h),(f||g)&&(d=N)),K.vx===f&&K.vy===g&&K.el===d||(K.el=d,K.vx=f,K.vy=g,clearInterval(K.pid),d&&(K.pid=setInterval(function(){d===N?N.scrollTo(N.pageXOffset+f*i,N.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),W=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,k=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=c(h,e.draggable,d))){if(E=p(h,e.draggable),"function"==typeof k){if(k.call(this,a,h,this))return j(b,i,"filter",h,d,E),void a.preventDefault()}else if(k&&(k=k.split(",").some(function(a){if(a=c(i,a.trim(),d))return j(b,a,"filter",h,d,E),!0})))return;e.handle&&!c(i,e.handle,d)||this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,f=this,h=f.el,j=f.options,k=h.ownerDocument;c&&!t&&c.parentNode===h&&(H=a,x=h,t=c,u=t.parentNode,y=t.nextSibling,G=j.group,d=function(){f._disableDelayedDrag(),t.draggable=!0,g(t,f.options.chosenClass,!0),f._triggerDragStart(b)},j.ignore.split(",").forEach(function(a){i(t,a.trim(),l)}),e(k,"mouseup",f._onDrop),e(k,"touchend",f._onDrop),e(k,"touchcancel",f._onDrop),j.delay?(e(k,"mouseup",f._disableDelayedDrag),e(k,"touchend",f._disableDelayedDrag),e(k,"touchcancel",f._disableDelayedDrag),e(k,"mousemove",f._disableDelayedDrag),e(k,"touchmove",f._disableDelayedDrag),f._dragStartTimer=setTimeout(d,j.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),f(a,"mouseup",this._disableDelayedDrag),f(a,"touchend",this._disableDelayedDrag),f(a,"touchcancel",this._disableDelayedDrag),f(a,"mousemove",this._disableDelayedDrag),f(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(H={target:t,clientX:a.clientX,clientY:a.clientY},this._onDragStart(H,"touch")):this.nativeDraggable?(e(t,"dragend",this),e(x,"dragstart",this._onDragStart)):this._onDragStart(H,!0);try{O.selection?O.selection.empty():window.getSelection().removeAllRanges()}catch(a){}},_dragStarted:function(){x&&t&&(g(t,this.options.ghostClass,!0),a.active=this,j(this,x,"start",t,x,E))},_emulateDragOver:function(){if(I){if(this._lastX===I.clientX&&this._lastY===I.clientY)return;this._lastX=I.clientX,this._lastY=I.clientY,R||h(v,"display","none");var a=O.elementFromPoint(I.clientX,I.clientY),b=a,c=" "+this.options.group.name,d=U.length;if(b)do{if(b[M]&&b[M].options.groups.indexOf(c)>-1){for(;d--;)U[d]({clientX:I.clientX,clientY:I.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);R||h(v,"display","")}},_onTouchMove:function(b){if(H){a.active||this._dragStarted(),this._appendGhost();var c=b.touches?b.touches[0]:b,d=c.clientX-H.clientX,e=c.clientY-H.clientY,f=b.touches?"translate3d("+d+"px,"+e+"px,0)":"translate("+d+"px,"+e+"px)";J=!0,I=c,h(v,"webkitTransform",f),h(v,"mozTransform",f),h(v,"msTransform",f),h(v,"transform",f),b.preventDefault()}},_appendGhost:function(){if(!v){var a,b=t.getBoundingClientRect(),c=h(t),d=this.options;v=t.cloneNode(!0),g(v,d.ghostClass,!1),g(v,d.fallbackClass,!0),h(v,"top",b.top-P(c.marginTop,10)),h(v,"left",b.left-P(c.marginLeft,10)),h(v,"width",b.width),h(v,"height",b.height),h(v,"opacity","0.8"),h(v,"position","fixed"),h(v,"zIndex","100000"),h(v,"pointerEvents","none"),d.fallbackOnBody&&O.body.appendChild(v)||x.appendChild(v),a=v.getBoundingClientRect(),h(v,"width",2*b.width-a.width),h(v,"height",2*b.height-a.height)}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;this._offUpEvents(),"clone"==G.pull&&(w=t.cloneNode(!0),h(w,"display","none"),x.insertBefore(w,t)),b?("touch"===b?(e(O,"touchmove",this._onTouchMove),e(O,"touchend",this._onDrop),e(O,"touchcancel",this._onDrop)):(e(O,"mousemove",this._onTouchMove),e(O,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,t)),e(O,"drop",this),setTimeout(this._dragStarted,0))},_onDragOver:function(a){var d,e,f,g=this.el,i=this.options,j=i.group,l=j.put,o=G===j,p=i.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!i.dragoverBubble&&a.stopPropagation()),J=!0,G&&!i.disabled&&(o?p||(f=!x.contains(t)):G.pull&&l&&(G.name===j.name||l.indexOf&&~l.indexOf(G.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(V(a,i,this.el),S)return;if(d=c(a.target,i.draggable,g),e=t.getBoundingClientRect(),f)return b(!0),void(w||y?x.insertBefore(t,w||y):p||x.appendChild(t));if(0===g.children.length||g.children[0]===v||g===a.target&&(d=n(g,a))){if(d){if(d.animated)return;r=d.getBoundingClientRect()}b(o),k(x,g,t,e,d,r)!==!1&&(t.contains(g)||(g.appendChild(t),u=g),this._animate(e,t),d&&this._animate(r,d))}else if(d&&!d.animated&&d!==t&&void 0!==d.parentNode[M]){B!==d&&(B=d,C=h(d),D=h(d.parentNode));var q,r=d.getBoundingClientRect(),s=r.right-r.left,z=r.bottom-r.top,A=/left|right|inline/.test(C.cssFloat+C.display)||"flex"==D.display&&0===D["flex-direction"].indexOf("row"),E=d.offsetWidth>t.offsetWidth,F=d.offsetHeight>t.offsetHeight,H=(A?(a.clientX-r.left)/s:(a.clientY-r.top)/z)>.5,I=d.nextElementSibling,K=k(x,g,t,e,d,r);if(K!==!1){if(S=!0,setTimeout(m,30),b(o),1===K||K===-1)q=1===K;else if(A){var L=t.offsetTop,N=d.offsetTop;q=L===N?d.previousElementSibling===t&&!E||H&&E:N>L}else q=I!==t&&!F||H&&F;t.contains(g)||(q&&!I?g.appendChild(t):d.parentNode.insertBefore(t,q?I:d)),u=t.parentNode,this._animate(e,t),this._animate(r,d)}}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();h(b,"transition","none"),h(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,h(b,"transition","all "+c+"ms"),h(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){h(b,"transition",""),h(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;f(O,"touchmove",this._onTouchMove),f(a,"mouseup",this._onDrop),f(a,"touchend",this._onDrop),f(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(K.pid),clearTimeout(this._dragStartTimer),f(O,"mousemove",this._onTouchMove),this.nativeDraggable&&(f(O,"drop",this),f(c,"dragstart",this._onDragStart)),this._offUpEvents(),b&&(J&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation()),v&&v.parentNode.removeChild(v),t&&(this.nativeDraggable&&f(t,"dragend",this),l(t),g(t,this.options.ghostClass,!1),g(t,this.options.chosenClass,!1),x!==u?(F=p(t,d.draggable),F>=0&&(j(null,u,"sort",t,x,E,F),j(this,x,"sort",t,x,E,F),j(null,u,"add",t,x,E,F),j(this,x,"remove",t,x,E,F))):(w&&w.parentNode.removeChild(w),t.nextSibling!==y&&(F=p(t,d.draggable),F>=0&&(j(this,x,"update",t,x,E,F),j(this,x,"sort",t,x,E,F)))),a.active&&(null!==F&&F!==-1||(F=E),j(this,x,"end",t,x,E,F),this.save()))),this._nulling()},_nulling:function(){x=t=u=v=y=w=z=A=H=I=J=F=B=C=G=a.active=null},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?t&&(this._onDragOver(a),d(a)):"drop"!==b&&"dragend"!==b||this._onDrop(a)},toArray:function(){for(var a,b=[],d=this.el.children,e=0,f=d.length,g=this.options;e<f;e++)a=d[e],c(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||o(a));return b},sort:function(a){var b={},d=this.el;this.toArray().forEach(function(a,e){var f=d.children[e];c(f,this.options.draggable,d)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(d.removeChild(b[a]),d.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return c(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:(c[a]=b,void("group"===a&&W(c)))},destroy:function(){var a=this.el;a[M]=null,f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),this.nativeDraggable&&(f(a,"dragover",this),f(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),U.splice(U.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:e,off:f,css:h,find:i,is:function(a,b){return!!c(a,b,a)},extend:s,throttle:r,closest:c,toggleClass:g,index:p},a.create=function(b,c){return new a(b,c)},a.version="1.4.2",a}),function(a){"object"==typeof exports?module.exports=a(window.jQuery):"function"==typeof define&&define.amd?define(["jquery"],a):window.jQuery&&!window.jQuery.fn.colorpicker&&a(window.jQuery)}(function(a){var b=function(b,c){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,c&&a.extend(this.colors,c),b&&(void 0!==b.toLowerCase?(b+="",this.setColor(b)):void 0!==b.h&&(this.value=b))};b.prototype={constructor:b,colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",transparent:"transparent"},_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:""===a?0:void 0!==a.toLowerCase?(a.match(/^\./)&&(a="0"+a),Math.ceil(100*parseFloat(a))/100):1},isTransparent:function(a){return!!a&&(a=a.toLowerCase().trim(),"transparent"===a||a.match(/#?00000000/)||a.match(/(rgba|hsla)\(0,0,0,0?\.?0\)/))},rgbaIsTransparent:function(a){return 0===a.r&&0===a.g&&0===a.b&&0===a.a},setColor:function(a){a=a.toLowerCase().trim(),a&&(this.isTransparent(a)?this.value={h:0,s:0,b:0,a:0}:this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1})},stringToHSB:function(b){b=b.toLowerCase();var c;"undefined"!=typeof this.colors[b]&&(b=this.colors[b],c="alias");var d=this,e=!1;return a.each(this.stringParsers,function(a,f){var g=f.re.exec(b),h=g&&f.parse.apply(d,[g]),i=c||f.format||"rgba";return!h||(e=i.match(/hsla?/)?d.RGBtoHSB.apply(d,d.HSLtoRGB.apply(d,h)):d.RGBtoHSB.apply(d,h),d.origFormat=i,!1)}),e},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=Math.round(parseInt(100*(1-a),10)/100*100)/100},toRGB:function(a,b,c,d){a||(a=this.value.h,b=this.value.s,c=this.value.b),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d||this.value.a}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return this.rgbaIsTransparent(e)?"transparent":"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&f<=1?f:2-f,f/=2,g>1&&(g=1),{h:isNaN(e)?0:e,s:isNaN(g)?0:g,l:isNaN(f)?0:f,a:isNaN(d)?0:d}},toAlias:function(a,b,c,d){var e=this.toHex(a,b,c,d);for(var f in this.colors)if(this.colors[f]===e)return f;return!1},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return c<0?c+=1:c>1&&(c-=1),6*c<1?a+(b-a)*c*6:2*c<1?b:3*c<2?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){b<0&&(b=0);var e;e=c<=.5?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){a=a||"rgba";var b=!1;switch(a){case"rgb":return b=this.toRGB(),this.rgbaIsTransparent(b)?"transparent":"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":return b=this.toRGB(),"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":return b=this.toHSL(),"hsl("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%)";case"hsla":return b=this.toHSL(),"hsla("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%,"+b.a+")";case"hex":return this.toHex();case"alias":return this.toAlias()||this.toHex();default:return b}},stringParsers:[{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}}],colorNameToHex:function(a){return"undefined"!=typeof this.colors[a.toLowerCase()]&&this.colors[a.toLowerCase()]}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div><div class="colorpicker-selectors"></div></div>',align:"right",customClass:null,colorSelectors:null},d=function(d,e){if(this.element=a(d).addClass("colorpicker-element"),this.options=a.extend(!0,{},c,this.element.data(),e),this.component=this.options.component,this.component=this.component!==!1&&this.element.find(this.component),this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1&&a(this.container),this.input=this.element.is("input")?this.element:!!this.options.input&&this.element.find(this.options.input),this.input&&0===this.input.length&&(this.input=!1),this.color=new b(this.options.color!==!1?this.options.color:this.getValue(),this.options.colorSelectors),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.options.color!==!1&&(this.updateInput(this.color),this.updateData(this.color)),this.picker=a(this.options.template),this.options.customClass&&this.picker.addClass(this.options.customClass),this.options.inline?this.picker.addClass("colorpicker-inline colorpicker-visible"):this.picker.addClass("colorpicker-hidden"),this.options.horizontal&&this.picker.addClass("colorpicker-horizontal"),"rgba"!==this.format&&"hsla"!==this.format&&this.options.format!==!1||this.picker.addClass("colorpicker-with-alpha"),"right"===this.options.align&&this.picker.addClass("colorpicker-right"),this.options.inline===!0&&this.picker.addClass("colorpicker-no-arrow"),this.options.colorSelectors){var f=this;a.each(this.options.colorSelectors,function(b,c){var d=a("<i />").css("background-color",c).data("class",b);d.click(function(){f.setValue(a(this).css("background-color"))}),f.picker.find(".colorpicker-selectors").append(d)}),this.picker.find(".colorpicker-selectors").show()}this.picker.on("mousedown.colorpicker touchstart.colorpicker",a.proxy(this.mousedown,this)),this.picker.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.input.on({"change.colorpicker":a.proxy(this.change,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.input!==!1&&this.component!==!1&&"color"===this.input.attr("type")&&this.input.on({"click.colorpicker":a.proxy(this.show,this),"focus.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker","color").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.trigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1||this.options.container)return!1;var a=this.container&&this.container[0]!==document.body?"position":"offset",b=this.component||this.element,c=b[a]();"right"===this.options.align&&(c.left-=this.picker.outerWidth()-b.outerWidth()),this.picker.css({top:c.top+b.outerHeight(),left:c.left})},show:function(b){return!this.isDisabled()&&(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!b||this.hasInput()&&"color"!==this.input.attr("type")||b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),!this.component&&this.input||this.options.inline!==!1||a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),void this.element.trigger({type:"showPicker",color:this.color}))},hide:function(){this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(document).off({"mousedown.colorpicker":this.hide}),this.update(),this.element.trigger({type:"hidePicker",color:this.color})},updateData:function(a){return a=a||this.color.toString(this.format),this.element.data("color",a),a},updateInput:function(a){if(a=a||this.color.toString(this.format),this.input!==!1){if(this.options.colorSelectors){var c=new b(a,this.options.colorSelectors),d=c.toAlias();"undefined"!=typeof this.options.colorSelectors[d]&&(a=d)}this.input.prop("value",a)}return a},updatePicker:function(a){void 0!==a&&(this.color=new b(a,this.options.colorSelectors));var c=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,d=this.picker.find("i");if(0!==d.length)return this.options.horizontal===!1?(c=this.options.sliders,d.eq(1).css("top",c.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",c.alpha.maxTop*(1-this.color.value.a))):(c=this.options.slidersHorz,d.eq(1).css("left",c.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",c.alpha.maxLeft*(1-this.color.value.a))),d.eq(0).css({top:c.saturation.maxTop-this.color.value.b*c.saturation.maxTop,left:this.color.value.s*c.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(this.color.value.h,1,1,1)),this.picker.find(".colorpicker-alpha").css("backgroundColor",this.color.toHex()),this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor",this.color.toString(this.format)),a},updateComponent:function(a){if(a=a||this.color.toString(this.format),this.component!==!1){var b=this.component.find("i").eq(0);b.length>0?b.css({backgroundColor:a}):this.component.css({backgroundColor:a})}return a},update:function(a){var b;return this.getValue(!1)===!1&&a!==!0||(b=this.updateComponent(),this.updateInput(b),this.updateData(b),this.updatePicker()),b},setValue:function(a){this.color=new b(a,this.options.colorSelectors),this.update(!0),this.element.trigger({type:"changeColor",color:this.color,value:a})},getValue:function(a){a=void 0===a?"#000000":a;var b;return b=this.hasInput()?this.input.val():this.element.data("color"),void 0!==b&&""!==b&&null!==b||(b=a),b},hasInput:function(){return this.input!==!1},isDisabled:function(){return!!this.hasInput()&&this.input.prop("disabled")===!0},disable:function(){return!!this.hasInput()&&(this.input.prop("disabled",!0),this.element.trigger({type:"disable",color:this.color,value:this.getValue()}),!0)},enable:function(){return!!this.hasInput()&&(this.input.prop("disabled",!1),this.element.trigger({type:"enable",color:this.color,value:this.getValue()}),!0)},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){!b.pageX&&!b.pageY&&b.originalEvent&&b.originalEvent.touches&&(b.pageX=b.originalEvent.touches[0].pageX,b.pageY=b.originalEvent.touches[0].pageY),b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"touchmove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this),"touchend.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){!a.pageX&&!a.pageY&&a.originalEvent&&a.originalEvent.touches&&(a.pageX=a.originalEvent.touches[0].pageX,a.pageY=a.originalEvent.touches[0].pageY),a.stopPropagation(),a.preventDefault();var b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/this.currentSlider.maxLeft),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/this.currentSlider.maxTop),"setAlpha"===this.currentSlider.callTop&&this.options.format===!1&&(1!==this.color.value.a?(this.format="rgba",this.color.origFormat="rgba"):(this.format="hex",this.color.origFormat="hex")),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return b.stopPropagation(),b.preventDefault(),a(document).off({"mousemove.colorpicker":this.mousemove,"touchmove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup,"touchend.colorpicker":this.mouseup}),!1},change:function(a){this.keyup(a)},keyup:function(a){38===a.keyCode?(this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0)):40===a.keyCode?(this.color.value.a>0&&(this.color.value.a=Math.round(100*(this.color.value.a-.01))/100),this.update(!0)):(this.color=new b(this.input.val(),this.options.colorSelectors),this.color.origFormat&&this.options.format===!1&&(this.format=this.color.origFormat),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())),this.element.trigger({type:"changeColor",color:this.color,value:this.input.val()})}},a.colorpicker=d,a.fn.colorpicker=function(b){var c=Array.prototype.slice.call(arguments,1),e=1===this.length,f=null,g=this.each(function(){var e=a(this),g=e.data("colorpicker"),h="object"==typeof b?b:{};g||(g=new d(this,h),e.data("colorpicker",g)),"string"==typeof b?a.isFunction(g[b])?f=g[b].apply(g,c):(c.length&&(g[b]=c[0]),f=g[b]):f=e});return e?f:g},a.fn.colorpicker.constructor=d});var CanvasComponents={draw_line:function(a,b,c,d,e){a.beginPath(),a.moveTo(b,c),a.lineTo(d,e),a.closePath(),a.stroke()},draw_bar_chart:function(a,b,c,d,e,f,g){g=g||15,(!e||e>Math.round(a.width/50))&&(e=Math.round(a.width/50)),(!f||f>Math.round(a.width/50))&&(f=Math.round(a.height/50));var h=a.getContext("2d"),i=.08*a.width,j=.03*a.width,k=.08*a.height,l=.15*a.height,m=a.height-k-l,n=a.width-i-j,o=k+m,p=k;h.font=g+"px Arial",h.lineWidth="1.0",h.strokeStyle="#444",CanvasComponents.draw_line(h,i,o,n+i,o),CanvasComponents.draw_line(h,i,o,i,p);var q=.003*n,r=(n-q*b.length)/b.length,s=i+q,t=Math.max.apply(Math,b); -h.fillStyle="green";for(var u=0;u<b.length;u++){var v=b[u]/t*m;h.fillRect(s,o-v,r,v),s+=r+q}if(h.fillStyle="black",h.textAlign="center",s=i+q,e>=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r<d.length;r++)n=k/c*d[r].min+f,o=h+j+.1*i,p=n,q=h+j+.3*i,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].max+f,p=n,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].min+f,o=h+j+.3*i,p=k/c*d[r].max+f,q=o,CanvasComponents.draw_line(e,n,o,p,q),d[r].max>=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.length<b?Utils.pad_left(c.slice(d,c.length)+a,b,c):a},pad_right:function(a,b,c){return c=c||" ",a.length<b?Utils.pad_right(a+c.slice(0,b-a.length),b,c):a},pad:function(a,b,c){return Utils.pad_left(a,b,c)},truncate:function(a,b,c){return c=c||"...",a.length>b&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g,d=/[\x09-\x10\x0D\u2028\u2029]/g;return a=a.replace(c,"."),b||(a=a.replace(d,".")),a},parse_escaped_chars:function(a){return a.replace(/(\\)?\\([nrtbf]|x[\da-f]{2})/g,function(a,b,c){if("\\"===b)return"\\"+c;switch(c[0]){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"f":return"\f";case"x":return Utils.chr(parseInt(c.substr(1),16))}})},expand_alph_range:function(a){for(var b=[],c=0;c<a.length;c++)if(c<a.length-2&&"-"===a[c+1]&&"\\"!==a[c]){for(var d=Utils.ord(a[c]),e=Utils.ord(a[c+2]),f=d;f<=e;f++)b.push(Utils.chr(f));c+=2}else c<a.length-2&&"\\"===a[c]&&"-"===a[c+1]?(b.push("-"),c++):b.push(a[c]);return b},hex_to_byte_array:function(a){if(!a)return[];a=a.replace(/\s+/g,"");for(var b=[],c=0;c<a.length;c+=2)b.push(parseInt(a.substr(c,2),16));return b},byte_array_to_hex:function(a){if(!a)return"";for(var b="",c=0;c<a.length;c++)b+=Utils.hex(a[c])+" ";return b.slice(0,b.length-1)},str_to_byte_array:function(a){for(var b,c=new Array(a.length),d=a.length;d--;)if(b=a.charCodeAt(d),c[d]=b,b>255)return Utils.str_to_utf8_byte_array(a);return c},str_to_utf8_byte_array:function(a){var b=CryptoJS.enc.Utf8.parse(a),c=Utils.word_array_to_byte_array(b);return a.length!==b.sigBytes&&(window.app.options.attempt_highlight=!1),c},str_to_charcode:function(a){for(var b=new Array(a.length),c=a.length;c--;)b[c]=a.charCodeAt(c);return b},byte_array_to_utf8:function(a){try{for(var b=[],c=0;c<a.length;c++)b[c>>>2]|=a[c]<<24-c%4*8;var d=new CryptoJS.lib.WordArray.init(b,a.length),e=CryptoJS.enc.Utf8.stringify(d);return e.length!==d.sigBytes&&(window.app.options.attempt_highlight=!1),e}catch(b){return Utils.byte_array_to_chars(a)}},byte_array_to_chars:function(a){if(!a)return"";for(var b="",c=0;c<a.length;)b+=String.fromCharCode(a[c++]);return b},word_array_to_byte_array:function(a){if(a.sigBytes<=0)return[];for(var b=a.words,c=[],d=0;d<a.sigBytes;d++)c.push(b[d>>>2]>>>24-d%4*8&255);return c},UNIC_WIN1251_MAP:{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,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,1027:129,8225:135,1046:198,8222:132,1047:199,1168:165,1048:200,1113:154,1049:201,1045:197,1050:202,1028:170,160:160,1040:192,1051:203,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,1053:205,176:176,177:177,1114:156,181:181,182:182,183:183,8221:148,187:187,1029:189,1056:208,1057:209,1058:210,8364:136,1112:188,1115:158,1059:211,1060:212,1030:178,1061:213,1062:214,1063:215,1116:157,1064:216,1065:217,1031:175,1066:218,1067:219,1068:220,1069:221,1070:222,1032:163,8226:149,1071:223,1072:224,8482:153,1073:225,8240:137,1118:162,1074:226,1110:179,8230:133,1075:227,1033:138,1076:228,1077:229,8211:150,1078:230,1119:159,1079:231,1042:194,1080:232,1034:140,1025:168,1081:233,1082:234,8212:151,1083:235,1169:180,1084:236,1052:204,1085:237,1035:142,1086:238,1087:239,1088:240,1089:241,1090:242,1036:141,1041:193,1091:243,1092:244,8224:134,1093:245,8470:185,1094:246,1054:206,1095:247,1096:248,8249:139,1097:249,1098:250,1044:196,1099:251,1111:191,1055:207,1100:252,1038:161,8220:147,1101:253,8250:155,1102:254,8216:145,1103:255,1043:195,1105:184,1039:143,1026:128,1106:144,8218:130,1107:131,8217:146,1108:186,1109:190},WIN1251_UNIC_MAP:{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,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,160:160,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,176:176,177:177,181:181,182:182,183:183,187:187,168:1025,128:1026,129:1027,170:1028,189:1029,178:1030,175:1031,163:1032,138:1033,140:1034,142:1035,141:1036,161:1038,143:1039,192:1040,193:1041,194:1042,195:1043,196:1044,197:1045,198:1046,199:1047,200:1048,201:1049,202:1050,203:1051,204:1052,205:1053,206:1054,207:1055,208:1056,209:1057,210:1058,211:1059,212:1060,213:1061,214:1062,215:1063,216:1064,217:1065,218:1066,219:1067,220:1068,221:1069,222:1070,223:1071,224:1072,225:1073,226:1074,227:1075,228:1076,229:1077,230:1078,231:1079,232:1080,233:1081,234:1082,235:1083,236:1084,237:1085,238:1086,239:1087,240:1088,241:1089,242:1090,243:1091,244:1092,245:1093,246:1094,247:1095,248:1096,249:1097,250:1098,251:1099,252:1100,253:1101,254:1102,255:1103,184:1105,144:1106,131:1107,186:1108,190:1109,179:1110,191:1111,188:1112,154:1113,156:1114,158:1115,157:1116,162:1118,159:1119,165:1168,180:1169,150:8211,151:8212,145:8216,146:8217,130:8218,147:8220,148:8221,132:8222,134:8224,135:8225,149:8226,133:8230,137:8240,139:8249,155:8250,136:8364,185:8470,153:8482},unicode_to_win1251:function(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(!(d in Utils.UNIC_WIN1251_MAP))throw"Character '"+a.charAt(c)+"' isn't supported by Windows-1251";b.push(String.fromCharCode(Utils.UNIC_WIN1251_MAP[d]))}return b.join("")},win1251_to_unicode:function(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(!(d in Utils.WIN1251_UNIC_MAP))throw"Character '"+a.charAt(c)+"' isn't supported by Windows-1251";b.push(String.fromCharCode(Utils.WIN1251_UNIC_MAP[d]))}return b.join("")},to_base64:function(a,b){if(!a)return"";"string"==typeof a&&(a=Utils.str_to_byte_array(a)),b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";for(var c,d,e,f,g,h,i,j="",k=0;k<a.length;)c=a[k++],d=a[k++],e=a[k++],f=c>>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,isNaN(d)?h=i=64:isNaN(e)&&(i=64),j+=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);return j},from_base64:function(a,b,c,d){if(c=c||"string",!a)return"string"===c?"":[];b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",void 0===d&&(d=!0);var e,f,g,h,i,j,k,l=[],m=0;if(d){var n=new RegExp("[^"+b.replace(/[\[\]\\\-^$]/g,"\\$&")+"]","g");a=a.replace(n,"")}for(;m<a.length;)h=b.indexOf(a.charAt(m++)),i=b.indexOf(a.charAt(m++)||"="),j=b.indexOf(a.charAt(m++)||"="),k=b.indexOf(a.charAt(m++)||"="),i=i===-1?64:i,j=j===-1?64:j,k=k===-1?64:k,e=h<<2|i>>4,f=(15&i)<<4|j>>2,g=(3&j)<<6|k,l.push(e),64!==j&&l.push(f),64!==k&&l.push(g);return"string"===c?Utils.byte_array_to_utf8(l):l},to_hex:function(a,b,c){if(!a)return"";b="string"==typeof b?b:" ",c=c||2;for(var d="",e=0;e<a.length;e++)d+=Utils.pad(a[e].toString(16),c)+b;return"0x"===b&&(d="0x"+d),"\\x"===b&&(d="\\x"+d),b.length?d.slice(0,-b.length):d},to_hex_fast:function(a){if(!a)return"";for(var b=[],c=0;c<a.length;c++)b.push((a[c]>>>4).toString(16)),b.push((15&a[c]).toString(16));return b.join("")},from_hex:function(a,b,c){if(b=b||(a.indexOf(" ")>=0?"Space":"None"),c=c||2,"None"!==b){var d=Utils.regex_rep[b];a=a.replace(d,"")}for(var e=[],f=0;f<a.length;f+=c)e.push(parseInt(a.substr(f,c),16));return e},parse_csv:function(a){for(var b,c=!1,d=!1,e="",f=[],g=[],h=0;h<a.length;h++)b=a[h],c?(e+=b,c=!1):"\\"===b?(e+=b,c=!0):'"'!==b||d?'"'===b&&d?d=!1:","!==b||d?"\n"!==b&&"\r"!==b||d?e+=b:(f.push(e),e="",g.push(f),f=[]):(f.push(e),e=""):d=!0;return f.length&&(f.push(e),g.push(f)),g},strip_html_tags:function(a,b){return b&&(a=a.replace(/<(script|style)[^>]*>.*<\/(script|style)>/gim,"")),a.replace(/<[^>\n]+>/g,"")},escape_html:function(a){return a.replace(/</g,"<").replace(/'/g,"'").replace(/"/g,""").replace(/&/g,"&")},fuzzy_time:function(a){return moment.duration(a,"milliseconds").humanize()},extend:function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a},char_rep:{Space:" ",Comma:",","Semi-colon":";",Colon:":","Line feed":"\n",CRLF:"\r\n","0x":"0x","\\x":"\\x","Nothing (separate chars)":"",None:""},regex_rep:{Space:/\s+/g,Comma:/,/g,"Semi-colon":/;/g,Colon:/:/g,"Line feed":/\n/g,CRLF:/\r\n/g,"0x":/0x/g,"\\x":/\\x/g},format:{Hex:CryptoJS.enc.Hex,Base64:CryptoJS.enc.Base64,UTF8:CryptoJS.enc.Utf8,UTF16:CryptoJS.enc.Utf16,UTF16LE:CryptoJS.enc.Utf16LE,UTF16BE:CryptoJS.enc.Utf16BE,Latin1:CryptoJS.enc.Latin1}};$.fn.selectRange=function(a,b){return b||(b=a),this.each(function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(a,b);else if(this.createTextRange){var c=this.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}})},Array.prototype.unique=function(){for(var a={},b=[],c=0,d=this.length;c<d;c++)a.hasOwnProperty(this[c])||(b.push(this[c]),a[this[c]]=1);return b},Array.prototype.max=function(){return Math.max.apply(null,this)},Array.prototype.min=function(){return Math.min.apply(null,this)},Array.prototype.sum=function(){return this.reduce(function(a,b){return a+b},0)},Array.prototype.equals=function(a){if(!a)return!1;var b=this.length;if(b!==a.length)return!1;for(;b--;)if(this[b]!==a[b])return!1;return!0},String.prototype.count=function(a){return this.split(a).length-1},CryptoJS.enc.Hex.parse=function(a){a=a.replace(/\s/g,"");for(var b=a.length,c=[],d=0;d<b;d+=2)c[d>>>3]|=parseInt(a.substr(d,2),16)<<24-d%8*4;return new CryptoJS.lib.WordArray.init(c,b/2)};var Base={DEFAULT_RADIX:36,run_to:function(a,b){if(!a)throw"Error: Input must be a number";var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return a.toString(c)},run_from:function(a,b){var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return parseInt(a.replace(/\s/g,""),c)}},Base64={ALPHABET:"A-Za-z0-9+/=",ALPHABET_OPTIONS:[{name:"Standard: A-Za-z0-9+/=",value:"A-Za-z0-9+/="},{name:"URL safe: A-Za-z0-9-_",value:"A-Za-z0-9-_"},{name:"Filename safe: A-Za-z0-9+-=",value:"A-Za-z0-9+\\-="},{name:"itoa64: ./0-9A-Za-z=",value:"./0-9A-Za-z="},{name:"XML: A-Za-z0-9_.",value:"A-Za-z0-9_."},{name:"y64: A-Za-z0-9._-",value:"A-Za-z0-9._-"},{name:"z64: 0-9a-zA-Z+/=",value:"0-9a-zA-Z+/="},{name:"Radix-64: 0-9A-Za-z+/=",value:"0-9A-Za-z+/="},{name:"Uuencoding: [space]-_",value:" -_"},{name:"Xxencoding: +-0-9A-Za-z",value:"+\\-0-9A-Za-z"},{name:"BinHex: !-,-0-689@A-NP-VX-Z[`a-fh-mp-r",value:"!-,-0-689@A-NP-VX-Z[`a-fh-mp-r"},{name:"ROT13: N-ZA-Mn-za-m0-9+/=",value:"N-ZA-Mn-za-m0-9+/="}],run_to:function(a,b){var c=b[0]||Base64.ALPHABET;return Utils.to_base64(a,c)},REMOVE_NON_ALPH_CHARS:!0,run_from:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1];return Utils.from_base64(a,c,"byte_array",d)},BASE32_ALPHABET:"A-Z2-7=",run_to_32:function(a,b){if(!a)return"";for(var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q="",r=0;r<a.length;)c=a[r++],d=a[r++],e=a[r++],f=a[r++],g=a[r++],h=c>>3,i=(7&c)<<2|d>>6,j=d>>1&31,k=(1&d)<<4|e>>4,l=(15&e)<<1|f>>7,m=f>>2&63,n=(3&f)<<3|g>>5,o=31&g,isNaN(d)?j=k=l=m=n=o=32:isNaN(e)?l=m=n=o=32:isNaN(f)?m=n=o=32:isNaN(g)&&(o=32),q+=p.charAt(h)+p.charAt(i)+p.charAt(j)+p.charAt(k)+p.charAt(l)+p.charAt(m)+p.charAt(n)+p.charAt(o);return q},run_from_32:function(a,b){if(!a)return[];var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q=b[0],r=[],s=0;if(q){var t=new RegExp("[^"+p.replace(/[\]\\\-^]/g,"\\$&")+"]","g");a=a.replace(t,"")}for(;s<a.length;)h=p.indexOf(a.charAt(s++)),i=p.indexOf(a.charAt(s++)||"="),j=p.indexOf(a.charAt(s++)||"="),k=p.indexOf(a.charAt(s++)||"="),l=p.indexOf(a.charAt(s++)||"="),m=p.indexOf(a.charAt(s++)||"="),n=p.indexOf(a.charAt(s++)||"="),o=p.indexOf(a.charAt(s++)||"="),c=h<<3|i>>2,d=(3&i)<<6|j<<1|k>>4,e=(15&k)<<4|l>>1,f=(1&l)<<7|m<<2|n>>3,g=(7&n)<<5|o,r.push(c),(i&!0||32!==j)&&r.push(d),(k&!0||32!==l)&&r.push(e),(l&!0||32!==m)&&r.push(f),(n&!0||32!==o)&&r.push(g);return r},SHOW_IN_BINARY:!1,OFFSETS_SHOW_VARIABLE:!0,run_offsets:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1],e=Utils.to_base64(a,c),f=Utils.to_base64([0].concat(a),c),g=Utils.to_base64([0,0].concat(a),c),h=e.indexOf("="),i=f.indexOf("="),j=g.indexOf("="),k="<script type='application/javascript'>$('[data-toggle=\"tooltip\"]').tooltip()<\/script>",l="",m="";return a.length<1?"Please enter a string.":(h%4===2?(l=e.slice(0,-3),e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c).slice(0,-2))+"'>"+l+"</span><span class='hlgreen'>"+e.substr(e.length-3,1)+"</span><span class='hlred'>"+e.substr(e.length-2)+"</span>"):h%4===3?(l=e.slice(0,-2),e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c).slice(0,-1))+"'>"+l+"</span><span class='hlgreen'>"+e.substr(e.length-2,1)+"</span><span class='hlred'>"+e.substr(e.length-1)+"</span>"):(l=e,e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c))+"'>"+l+"</span>"),d||(e=l),m="<span class='hlred'>"+f.substr(0,1)+"</span><span class='hlgreen'>"+f.substr(1,1)+"</span>",f=f.substr(2),i%4===2?(l=f.slice(0,-3),f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1,-2))+"'>"+l+"</span><span class='hlgreen'>"+f.substr(f.length-3,1)+"</span><span class='hlred'>"+f.substr(f.length-2)+"</span>"):i%4===3?(l=f.slice(0,-2),f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1,-1))+"'>"+l+"</span><span class='hlgreen'>"+f.substr(f.length-2,1)+"</span><span class='hlred'>"+f.substr(f.length-1)+"</span>"):(l=f,f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1))+"'>"+l+"</span>"),d||(f=l),m="<span class='hlred'>"+g.substr(0,2)+"</span><span class='hlgreen'>"+g.substr(2,1)+"</span>",g=g.substr(3),j%4===2?(l=g.slice(0,-3),g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2,-2))+"'>"+l+"</span><span class='hlgreen'>"+g.substr(g.length-3,1)+"</span><span class='hlred'>"+g.substr(g.length-2)+"</span>"):j%4===3?(l=g.slice(0,-2),g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2,-2))+"'>"+l+"</span><span class='hlgreen'>"+g.substr(g.length-2,1)+"</span><span class='hlred'>"+g.substr(g.length-1)+"</span>"):(l=g,g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2))+"'>"+l+"</span>"),d||(g=l),d?"Characters highlighted in <span class='hlgreen'>green</span> could change if the input is surrounded by more data.\nCharacters highlighted in <span class='hlred'>red</span> are for padding purposes only.\nUnhighlighted characters are <span data-toggle='tooltip' data-placement='top' title='Tooltip on left'>static</span>.\nHover over the static sections to see what they decode to on their own.\n\nOffset 0: "+e+"\nOffset 1: "+f+"\nOffset 2: "+g+k:e+"\n"+f+"\n"+g)},highlight_to:function(a,b){return a[0].start=Math.floor(a[0].start/3*4),a[0].end=Math.ceil(a[0].end/3*4),a},highlight_from:function(a,b){return a[0].start=Math.ceil(a[0].start/4*3),a[0].end=Math.floor(a[0].end/4*3),a}},BitwiseOp={_bit_op:function(a,b,c,d,e){b&&b.length||(b=[0]);for(var f=[],g=null,h=null,i=null,j=0;j<a.length;j++)if(h=b[j%b.length],i=a[j],g=!d||0!==i&&i!==h?c(i,h):i,f.push(g),"Standard"!==e&&(!d||0!==i&&i!==h))switch(e){case"Input differential":b[j%b.length]=g;break;case"Output differential":b[j%b.length]=i}return f},XOR_PRESERVE_NULLS:!1,XOR_SCHEME:["Standard","Input differential","Output differential"],KEY_FORMAT:["Hex","Base64","UTF8","UTF16","UTF16LE","UTF16BE","Latin1"],run_xor:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||""),d=b[1],e=b[2];return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._xor,e,d)},XOR_BRUTE_KEY_LENGTH:["1","2"],XOR_BRUTE_SAMPLE_LENGTH:100,XOR_BRUTE_SAMPLE_OFFSET:0,XOR_BRUTE_PRINT_KEY:!0,XOR_BRUTE_OUTPUT_HEX:!1,run_xor_brute:function(a,b){var c,d,e,f=parseInt(b[0],10),g=b[1],h=b[2],i=b[3],j=b[4],k=b[5],l=b[6],m=b[7],n="";a=a.slice(h,h+g),""!==k&&(c=new RegExp(k,"im"));for(var o=1,p=Math.pow(256,f);o<p;o++)d=BitwiseOp._bit_op(a,Utils.hex_to_byte_array(o.toString(16)),BitwiseOp._xor,i,j),e=Utils.byte_array_to_utf8(d),""!==k&&e.search(c)===-1||(l&&(n+="Key = "+Utils.hex(o,2*f)+": "),n+=m?Utils.byte_array_to_hex(d)+"\n":Utils.printable(e,!1)+"\n",l&&(n+="\n"));return n},run_not:function(a,b){return BitwiseOp._bit_op(a,null,BitwiseOp._not)},run_and:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._and)},run_or:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._or)},run_add:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._add)},run_sub:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._sub)},_xor:function(a,b){return a^b},_not:function(a,b){return 255&~a},_and:function(a,b){return a&b},_or:function(a,b){return a|b},_add:function(a,b){return(a+b)%256},_sub:function(a,b){var c=a-b;return c<0?256+c:c}},ByteRepr={DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF"],HEX_DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF","0x","\\x","None"],BIN_DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF","None"],run_to_hex:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return Utils.to_hex(a,c,2)},run_from_hex:function(a,b){var c=b[0]||"Space";return Utils.from_hex(a,c,2)},CHARCODE_BASE:16,run_to_charcode:function(a,b){var c,d=Utils.char_rep[b[0]||"Space"],e=b[1],f="",g=2;if(e<2||e>36)throw"Error: Base argument must be between 2 and 36";for(var h=0;h<a.length;h++)c=Utils.ord(a[h]),16===e?(g=c<256?2:c<65536?4:c<16777216?6:c<4294967296?8:2,g>2&&(app.options.attempt_highlight=!1),f+=Utils.hex(c,g)+d):(app.options.attempt_highlight=!1,f+=c.toString(e)+d);return f.slice(0,-d.length)},run_from_charcode:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d=b[1],e=a.split(c),f=0;if(d<2||d>36)throw"Error: Base argument must be between 2 and 36";if(16!==d&&(app.options.attempt_highlight=!1),1===e.length&&a.length>17)for(e=[],f=0;f<a.length;f+=2)e.push(a.slice(f,f+2));var g="";for(f=0;f<e.length;f++)g+=Utils.chr(parseInt(e[f],d));return Utils.str_to_byte_array(g)},highlight_to:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d="\r\n"===c?1:c.length;return a[0].start=a[0].start*(2+d),a[0].end=a[0].end*(2+d)-d,"0x"!==c&&"\\x"!==c||(a[0].start+=2,a[0].end+=2),a},highlight_from:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d="\r\n"===c?1:c.length,e=d+2;return"0x"!==c&&"\\x"!==c||(a[0].start>1?a[0].start-=2:a[0].start=0,a[0].end>1?a[0].end-=2:a[0].end=0),a[0].start=0===a[0].start?0:Math.round(a[0].start/e),a[0].end=0===a[0].end?0:Math.ceil(a[0].end/e),a},run_to_decimal:function(a,b){var c=Utils.char_rep[b[0]];return a.join(c)},run_from_decimal:function(a,b){var c=Utils.char_rep[b[0]],d=a.split(c),e=[];""===d[d.length-1]&&(d=d.slice(0,d.length-1));for(var f=0;f<d.length;f++)e[f]=parseInt(d[f],10);return e},run_to_binary:function(a,b){for(var c=Utils.char_rep[b[0]||"Space"],d="",e=8,f=0;f<a.length;f++)d+=Utils.pad(a[f].toString(2),e)+c;return c.length?d.slice(0,-c.length):d},run_from_binary:function(a,b){if("None"!==b[0]){var c=Utils.regex_rep[b[0]||"Space"];a=a.replace(c,"")}for(var d=[],e=8,f=0;f<a.length;f+=e)d.push(parseInt(a.substr(f,e),2));return d},highlight_to_binary:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return a[0].start=a[0].start*(8+c.length),a[0].end=a[0].end*(8+c.length)-c.length,a},highlight_from_binary:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return a[0].start=0===a[0].start?0:Math.floor(a[0].start/(8+c.length)),a[0].end=0===a[0].end?0:Math.ceil(a[0].end/(8+c.length)),a},HEX_CONTENT_CONVERT_WHICH:["Only special chars","Only special chars including spaces","All chars"],HEX_CONTENT_SPACES_BETWEEN_BYTES:!1,run_to_hex_content:function(a,b){var c=b[0],d=b[1];if("All chars"===c){var e="|"+Utils.to_hex(a)+"|";return d||(e=e.replace(/ /g,"")),e}for(var f,g="",h=!1,i="Only special chars including spaces"===c,j=0;j<a.length;j++)f=a[j],32===f&&i||f<48&&32!==f||f>57&&f<65||f>90&&f<97||f>122?(h?d&&(g+=" "):(g+="|",h=!0),g+=Utils.to_hex([f])):(h&&(g+="|",h=!1),g+=Utils.chr(a[j]));return h&&(g+="|"),g},run_from_hex_content:function(a,b){for(var c,d=/\|([a-f\d ]{2,})\|/gi,e=[],f=0;c=d.exec(a);){for(;f<c.index;)e.push(Utils.ord(a[f++]));var g=Utils.from_hex(c[1]);if(g)for(var h=0;h<g.length;)e.push(g[h++]);else for(;f<d.lastIndex;)e.push(Utils.ord(a[f++]));f=d.lastIndex}for(;f<a.length;)e.push(Utils.ord(a[f++]));return e}},CharEnc={IO_FORMAT:["UTF8","UTF16","UTF16LE","UTF16BE","Latin1","Windows-1251","Hex","Base64"],run:function(a,b){var c=b[0],d=b[1];return"Windows-1251"===c?(a=Utils.win1251_to_unicode(a),a=CryptoJS.enc.Utf8.parse(a)):a=Utils.format[c].parse(a),"Windows-1251"===d?(a=CryptoJS.enc.Utf8.stringify(a),Utils.unicode_to_win1251(a)):Utils.format[d].stringify(a)}},Checksum={run_fletcher16:function(a,b){for(var c=0,d=0,e=0;e<a.length;e++)c=(c+a[e])%255,d=(d+c)%255;return Utils.hex((d<<8|c)>>>0,4)},run_adler32:function(a,b){for(var c=65521,d=1,e=0,f=0;f<a.length;f++)d+=a[f],e+=d;return d%=c,e%=c,Utils.hex((e<<16|d)>>>0,8)},run_crc32:function(a,b){for(var c=window.crc_table||(window.crc_table=Checksum._gen_crc_table()),d=-1,e=0;e<a.length;e++)d=d>>>8^c[255&(d^a[e])];return Utils.hex((d^-1)>>>0)},run_tcp_ip:function(a,b){for(var c=0,d=0;d<a.length;d++)c+=d%2===0?a[d]<<8:a[d];return c=(c>>16)+(65535&c),Utils.hex(65535-c)},_gen_crc_table:function(){for(var a,b=[],c=0;c<256;c++){a=c;for(var d=0;d<8;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}},Cipher={IO_FORMAT1:["Hex","Base64","UTF8","UTF16","UTF16LE","UTF16BE","Latin1"],IO_FORMAT2:["UTF8","UTF16","UTF16LE","UTF16BE","Latin1","Hex","Base64"],IO_FORMAT3:["Hex","Base64","UTF16","UTF16LE","UTF16BE","Latin1"],IO_FORMAT4:["Latin1","UTF8","UTF16","UTF16LE","UTF16BE","Hex","Base64"],MODES:["CBC","CFB","CTR","OFB","ECB"],PADDING:["Pkcs7","Iso97971","AnsiX923","Iso10126","ZeroPadding","NoPadding"],RESULT_TYPE:["Show all","Ciphertext","Key","IV","Salt"],_enc:function(a,b,c){var d=Utils.format[c[0].option].parse(c[0].string||""),e=Utils.format[c[1].option].parse(c[1].string||""),f=Utils.format[c[2].option].parse(c[2].string||""),g=CryptoJS.mode[c[3]],h=CryptoJS.pad[c[4]],i=c[5].toLowerCase(),j=c[6];0===e.sigBytes&&(d=d.toString(CryptoJS.enc.Latin1));var k=a.encrypt(b,d,{salt:f.sigBytes>0&&f,iv:e.sigBytes>0?e:null,mode:g,padding:h}),l="";return"show all"===i?(l+="Key: "+k.key.toString(Utils.format[j]),l+="\nIV: "+k.iv.toString(Utils.format[j]),k.salt&&(l+="\nSalt: "+k.salt.toString(Utils.format[j])),l+="\n\nCiphertext: "+k.ciphertext.toString(Utils.format[j])):l=k[i].toString(Utils.format[j]),l},_dec:function(a,b,c){var d=Utils.format[c[0].option].parse(c[0].string||""),e=Utils.format[c[1].option].parse(c[1].string||""),f=Utils.format[c[2].option].parse(c[2].string||""),g=CryptoJS.mode[c[3]],h=CryptoJS.pad[c[4]],i=c[5],j=c[6];if(!b.length)return"No input";var k=Utils.format[i].parse(b);0===e.sigBytes&&(d=d.toString(CryptoJS.enc.Latin1));var l,m=a.decrypt({ciphertext:k,salt:f.sigBytes>0&&f},d,{iv:e.sigBytes>0?e:null,mode:g,padding:h});try{l=m.toString(Utils.format[j])}catch(a){l="Decrypt error: "+a.message}return l},run_aes_enc:function(a,b){return Cipher._enc(CryptoJS.AES,a,b)},run_aes_dec:function(a,b){return Cipher._dec(CryptoJS.AES,a,b)},run_des_enc:function(a,b){return Cipher._enc(CryptoJS.DES,a,b)},run_des_dec:function(a,b){return Cipher._dec(CryptoJS.DES,a,b)},run_triple_des_enc:function(a,b){return Cipher._enc(CryptoJS.TripleDES,a,b)},run_triple_des_dec:function(a,b){return Cipher._dec(CryptoJS.TripleDES,a,b)},run_rabbit_enc:function(a,b){return Cipher._enc(CryptoJS.Rabbit,a,b)},run_rabbit_dec:function(a,b){return Cipher._dec(CryptoJS.Rabbit,a,b)},BLOWFISH_MODES:["ECB","CBC","PCBC","CFB","OFB","CTR"],BLOWFISH_OUTPUT_TYPES:["Base64","Hex","String","Raw"],run_blowfish_enc:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string).toString(Utils.format.Latin1),d=b[1],e=b[2];if(0===c.length)return"Enter a key";var f=blowfish.encrypt(a,c,{outputType:1,cipherMode:Cipher.BLOWFISH_MODES.indexOf(d)}),g=CryptoJS.enc.Hex.parse(f);return g.toString(Utils.format[e])},run_blowfish_dec:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string).toString(Utils.format.Latin1),d=b[1],e=b[2];return 0===c.length?"Enter a key":(a=Utils.format[e].parse(a),blowfish.decrypt(a.toString(CryptoJS.enc.Base64),c,{outputType:0,cipherMode:Cipher.BLOWFISH_MODES.indexOf(d)}))},KDF_KEY_SIZE:256,KDF_ITERATIONS:1,run_pbkdf2:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.PBKDF2(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g]); -},run_evpkdf:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.EvpKDF(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_rc4:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=CryptoJS.RC4.encrypt(c,d);return e.ciphertext.toString(Utils.format[b[2]])},RC4DROP_BYTES:768,run_rc4drop:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=b[3],f=CryptoJS.RC4Drop.encrypt(c,d,{drop:e});return f.ciphertext.toString(Utils.format[b[2]])},run_vigenere_enc:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(c+d)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(c+d)%26].toUpperCase()):(h+=a[j],i++);return h},run_vigenere_dec:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(d-c+f.length)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(d+f.length-c)%26].toUpperCase()):(h+=a[j],i++);return h}};CryptoJS.kdf.OpenSSL.execute=function(a,b,c,d){void 0!==d&&null!==d||(d=CryptoJS.lib.WordArray.random(8));var e=CryptoJS.algo.EvpKDF.create({keySize:b+c}).compute(a,d),f=CryptoJS.lib.WordArray.create(e.words.slice(b),4*c);return e.sigBytes=4*b,CryptoJS.lib.CipherParams.create({key:e,iv:f,salt:d})};var Code={LANGUAGES:["default-code","default-markup","bash","bsh","c","cc","coffee","cpp","cs","csh","cv","cxx","cyc","htm","html","in.tag","java","javascript","js","json","m","mxml","perl","pl","pm","py","python","rb","rc","rs","ruby","rust","sh","uq.val","xhtml","xml","xsl"],LINE_NUMS:!1,run_syntax_highlight:function(a,b){var c=b[0],d=b[1];return"<code class='prettyprint'>"+prettyPrintOne(Utils.escape_html(a),c,d)+"</code>"},BEAUTIFY_INDENT:"\\t",run_xml_beautify:function(a,b){var c=b[0];return vkbeautify.xml(a,c)},run_json_beautify:function(a,b){var c=b[0];return a?vkbeautify.json(a,c):""},run_css_beautify:function(a,b){var c=b[0];return vkbeautify.css(a,c)},run_sql_beautify:function(a,b){var c=b[0];return vkbeautify.sql(a,c)},PRESERVE_COMMENTS:!1,run_xml_minify:function(a,b){var c=b[0];return vkbeautify.xmlmin(a,c)},run_json_minify:function(a,b){return a?vkbeautify.jsonmin(a):""},run_css_minify:function(a,b){var c=b[0];return vkbeautify.cssmin(a,c)},run_sql_minify:function(a,b){return vkbeautify.sqlmin(a)},run_generic_beautify:function(a,b){function c(a,b,c){return g[c]=b[0],a.substring(0,b.index)+"###preserved_token"+c+"###"+a.substring(b.index+b[0].length)}for(var d,e=a,f=0,g=[],h=/'([^'\\]|\\.)*'/g;d=h.exec(e);)e=c(e,d,f++),h.lastIndex=d.index;for(var i=/"([^"\\]|\\.)*"/g;d=i.exec(e);)e=c(e,d,f++),i.lastIndex=d.index;for(var j=/\/\/[^\n\r]*/g;d=j.exec(e);)e=c(e,d,f++),j.lastIndex=d.index;for(var k=/\/\*[\s\S]*?\*\//gm;d=k.exec(e);)e=c(e,d,f++),k.lastIndex=d.index;for(var l=/(^|\n)#[^\n\r#]+/g;d=l.exec(e);)e=c(e,d,f++),l.lastIndex=d.index;for(var m=/\/.*?[^\\]\/[gim]{0,3}/gi;d=m.exec(e);)e=c(e,d,f++),m.lastIndex=d.index;e=e.replace(/;/g,";\n"),e=e.replace(/{/g,"{\n"),e=e.replace(/}/g,"\n}\n"),e=e.replace(/\r/g,""),e=e.replace(/^\s+/g,""),e=e.replace(/\n\s+/g,"\n"),e=e.replace(/\s*$/g,""),e=e.replace(/\n{/g,"{");for(var n=0,o=0;n<e.length;){switch(e[n]){case"{":o++;break;case"\n":if(n+1>=e.length)break;"}"===e[n+1]&&o--;var p=o>=0?Array(4*o+1).join(" "):"";e=e.substring(0,n+1)+p+e.substring(n+1),o>0&&(n+=4*o)}n++}e=e.replace(/\s*([!<>=+-\/*]?)=\s*/g," $1= "),e=e.replace(/\s*<([=]?)\s*/g," <$1 "),e=e.replace(/\s*>([=]?)\s*/g," >$1 "),e=e.replace(/([^+])\+([^+=])/g,"$1 + $2"),e=e.replace(/([^-])-([^-=])/g,"$1 - $2"),e=e.replace(/([^*])\*([^*=])/g,"$1 * $2"),e=e.replace(/([^\/])\/([^\/=])/g,"$1 / $2"),e=e.replace(/\s*,\s*/g,", "),e=e.replace(/\s*{/g," {"),e=e.replace(/}\n/g,"}\n\n"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim,"$1 ($2)\n $3"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim,"$1 ($2) $3"),e=e.replace(/else\s*\n([^{])/gim,"else\n $1"),e=e.replace(/else\s+([^{])/gim,"else $1"),e=e.replace(/\s+;/g,";"),e=e.replace(/\{\s+\}/g,"{}"),e=e.replace(/\[\s+\]/g,"[]"),e=e.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi,"} $1");for(var q=/###preserved_token(\d+)###/g;d=q.exec(e);){var r=parseInt(d[1],10);e=e.substring(0,d.index)+g[r]+e.substring(d.index+d[0].length),q.lastIndex=d.index}return e}},Compress={COMPRESSION_TYPE:["Dynamic Huffman Coding","Fixed Huffman Coding","None (Store)"],INFLATE_BUFFER_TYPE:["Adaptive","Block"],COMPRESSION_METHOD:["Deflate","None (Store)"],OS:["MSDOS","Unix","Macintosh"],RAW_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.RawDeflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.RawDeflate.CompressionType.DYNAMIC,"None (Store)":Zlib.RawDeflate.CompressionType.NONE},run_raw_deflate:function(a,b){var c=new Zlib.RawDeflate(a,{compressionType:Compress.RAW_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},INFLATE_INDEX:0,INFLATE_BUFFER_SIZE:0,INFLATE_RESIZE:!1,INFLATE_VERIFY:!1,RAW_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.RawInflate.BufferType.ADAPTIVE,Block:Zlib.RawInflate.BufferType.BLOCK},run_raw_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.RawInflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.RAW_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]}),d=Array.prototype.slice.call(c.decompress());if(d.length>158&&93===d[0]&&93===d[5]){for(var e=!1,f=0;f<155;f+=5)93!==d[f]&&(e=!0);if(!e)throw"Error: Unable to inflate data"}return d},ZLIB_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.Deflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.Deflate.CompressionType.DYNAMIC,"None (Store)":Zlib.Deflate.CompressionType.NONE},run_zlib_deflate:function(a,b){var c=new Zlib.Deflate(a,{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},ZLIB_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.Inflate.BufferType.ADAPTIVE,Block:Zlib.Inflate.BufferType.BLOCK},run_zlib_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.Inflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.ZLIB_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]});return Array.prototype.slice.call(c.decompress())},GZIP_CHECKSUM:!1,run_gzip:function(a,b){var c=b[1],d=b[2],e={deflateOptions:{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[0]]},flags:{fhcrc:b[3]}};c.length&&(e.flags.fname=!0,e.filename=c),d.length&&(e.flags.fcommenct=!0,e.comment=d);var f=new Zlib.Gzip(a,e);return Array.prototype.slice.call(f.compress())},run_gunzip:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.Gunzip(a);return Array.prototype.slice.call(c.decompress())},PKZIP_FILENAME:"file.txt",ZIP_COMPRESSION_METHOD_LOOKUP:{Deflate:Zlib.Zip.CompressionMethod.DEFLATE,"None (Store)":Zlib.Zip.CompressionMethod.STORE},ZIP_OS_LOOKUP:{MSDOS:Zlib.Zip.OperatingSystem.MSDOS,Unix:Zlib.Zip.OperatingSystem.UNIX,Macintosh:Zlib.Zip.OperatingSystem.MACINTOSH},run_pkzip:function(a,b){var c=Utils.str_to_byte_array(b[2]),d={filename:Utils.str_to_byte_array(b[0]),comment:Utils.str_to_byte_array(b[1]),compressionMethod:Compress.ZIP_COMPRESSION_METHOD_LOOKUP[b[3]],os:Compress.ZIP_OS_LOOKUP[b[4]],deflateOption:{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[5]]}},e=new Zlib.Zip;return c.length&&e.setPassword(c),e.addFile(a,d),Array.prototype.slice.call(e.compress())},PKUNZIP_VERIFY:!1,run_pkunzip:function(a,b){var c={password:Utils.str_to_byte_array(b[0]),verify:b[1]},d="",e=new Zlib.Unzip(a,c),f=e.getFilenames(),g="<div style='padding: 5px;'>"+f.length+" file(s) found</div>\n";g+="<div class='panel-group' id='zip-accordion' role='tablist' aria-multiselectable='true'>",window.uzip=e;for(var h=0;h<f.length;h++)d=Utils.byte_array_to_utf8(e.decompress(f[h])),g+="<div class='panel panel-default'><div class='panel-heading' role='tab' id='heading"+h+"'><h4 class='panel-title'><a class='collapsed' role='button' data-toggle='collapse' data-parent='#zip-accordion' href='#collapse"+h+"' aria-expanded='true' aria-controls='collapse"+h+"'>"+f[h]+"<span class='pull-right'>"+d.length.toLocaleString()+" bytes</span></a></h4></div><div id='collapse"+h+"' class='panel-collapse collapse' role='tabpanel' aria-labelledby='heading"+h+"'><div class='panel-body'>"+Utils.escape_html(d)+"</div></div></div>";return g+"</div>"},run_bzip2_decompress:function(a,b){var c,d=new Uint8Array(a),e="";return c=bzip2.array(d),e=bzip2.simple(c)}},Convert={DISTANCE_UNITS:["[Metric]","Nanometres (nm)","Micrometres (\xb5m)","Millimetres (mm)","Centimetres (cm)","Metres (m)","Kilometers (km)","[/Metric]","[Imperial]","Thou (th)","Inches (in)","Feet (ft)","Yards (yd)","Chains (ch)","Furlongs (fur)","Miles (mi)","Leagues (lea)","[/Imperial]","[Maritime]","Fathoms (ftm)","Cables","Nautical miles","[/Maritime]","[Comparisons]","Cars (4m)","Buses (8.4m)","American football fields (91m)","Football pitches (105m)","[/Comparisons]","[Astronomical]","Earth-to-Moons","Earth's equators","Astronomical units (au)","Light-years (ly)","Parsecs (pc)","[/Astronomical]"],DISTANCE_FACTOR:{"Nanometres (nm)":1e-9,"Micrometres (\xb5m)":1e-6,"Millimetres (mm)":.001,"Centimetres (cm)":.01,"Metres (m)":1,"Kilometers (km)":1e3,"Thou (th)":254e-7,"Inches (in)":.0254,"Feet (ft)":.3048,"Yards (yd)":.9144,"Chains (ch)":20.1168,"Furlongs (fur)":201.168,"Miles (mi)":1609.344,"Leagues (lea)":4828.032,"Fathoms (ftm)":1.853184,Cables:185.3184,"Nautical miles":1853.184,"Cars (4m)":4,"Buses (8.4m)":8.4,"American football fields (91m)":91,"Football pitches (105m)":105,"Earth-to-Moons":38e7,"Earth's equators":40075016.686,"Astronomical units (au)":149597870700,"Light-years (ly)":9460730472580800,"Parsecs (pc)":30856776e9},run_distance:function(a,b){var c=b[0],d=b[1];return a*=Convert.DISTANCE_FACTOR[c],a/Convert.DISTANCE_FACTOR[d]},DATA_UNITS:["Bits (b)","Nibbles","Octets","Bytes (B)","[Binary bits (2^n)]","Kibibits (Kib)","Mebibits (Mib)","Gibibits (Gib)","Tebibits (Tib)","Pebibits (Pib)","Exbibits (Eib)","Zebibits (Zib)","Yobibits (Yib)","[/Binary bits (2^n)]","[Decimal bits (10^n)]","Decabits","Hectobits","Kilobits (kb)","Megabits (Mb)","Gigabits (Gb)","Terabits (Tb)","Petabits (Pb)","Exabits (Eb)","Zettabits (Zb)","Yottabits (Yb)","[/Decimal bits (10^n)]","[Binary bytes (8 x 2^n)]","Kibibytes (KiB)","Mebibytes (MiB)","Gibibytes (GiB)","Tebibytes (TiB)","Pebibytes (PiB)","Exbibytes (EiB)","Zebibytes (ZiB)","Yobibytes (YiB)","[/Binary bytes (8 x 2^n)]","[Decimal bytes (8 x 10^n)]","Kilobytes (KB)","Megabytes (MB)","Gigabytes (GB)","Terabytes (TB)","Petabytes (PB)","Exabytes (EB)","Zettabytes (ZB)","Yottabytes (YB)","[/Decimal bytes (8 x 10^n)]"],DATA_FACTOR:{"Bits (b)":1,Nibbles:4,Octets:8,"Bytes (B)":8,"Kibibits (Kib)":1024,"Mebibits (Mib)":1048576,"Gibibits (Gib)":1073741824,"Tebibits (Tib)":1099511627776,"Pebibits (Pib)":0x4000000000000,"Exbibits (Eib)":0x1000000000000000,"Zebibits (Zib)":0x400000000000000000,"Yobibits (Yib)":1.2089258196146292e24,Decabits:10,Hectobits:100,"Kilobits (Kb)":1e3,"Megabits (Mb)":1e6,"Gigabits (Gb)":1e9,"Terabits (Tb)":1e12,"Petabits (Pb)":1e15,"Exabits (Eb)":1e18,"Zettabits (Zb)":1e21,"Yottabits (Yb)":1e24,"Kibibytes (KiB)":8192,"Mebibytes (MiB)":8388608,"Gibibytes (GiB)":8589934592,"Tebibytes (TiB)":8796093022208,"Pebibytes (PiB)":9007199254740992,"Exbibytes (EiB)":0x8000000000000000,"Zebibytes (ZiB)":9.44473296573929e21,"Yobibytes (YiB)":9.671406556917033e24,"Kilobytes (KB)":8e3,"Megabytes (MB)":8e6,"Gigabytes (GB)":8e9,"Terabytes (TB)":8e12,"Petabytes (PB)":8e15,"Exabytes (EB)":8e18,"Zettabytes (ZB)":8e21,"Yottabytes (YB)":8e24},run_data_size:function(a,b){var c=b[0],d=b[1];return a*=Convert.DATA_FACTOR[c],a/Convert.DATA_FACTOR[d]},AREA_UNITS:["[Metric]","Square metre (sq m)","Square kilometre (sq km)","Centiare (ca)","Deciare (da)","Are (a)","Decare (daa)","Hectare (ha)","[/Metric]","[Imperial]","Square inch (sq in)","Square foot (sq ft)","Square yard (sq yd)","Square mile (sq mi)","Perch (sq per)","Rood (ro)","International acre (ac)","[/Imperial]","[US customary units]","US survey acre (ac)","US survey square mile (sq mi)","US survey township","[/US customary units]","[Nuclear physics]","Yoctobarn (yb)","Zeptobarn (zb)","Attobarn (ab)","Femtobarn (fb)","Picobarn (pb)","Nanobarn (nb)","Microbarn (\u03bcb)","Millibarn (mb)","Barn (b)","Kilobarn (kb)","Megabarn (Mb)","Outhouse","Shed","Planck area","[/Nuclear physics]","[Comparisons]","Washington D.C.","Isle of Wight","Wales","Texas","[/Comparisons]"],AREA_FACTOR:{"Square metre (sq m)":1,"Square kilometre (sq km)":1e6,"Centiare (ca)":1,"Deciare (da)":10,"Are (a)":100,"Decare (daa)":1e3,"Hectare (ha)":1e4,"Square inch (sq in)":64516e-8,"Square foot (sq ft)":.09290304,"Square yard (sq yd)":.83612736,"Square mile (sq mi)":2589988.110336,"Perch (sq per)":42.21,"Rood (ro)":1011,"International acre (ac)":4046.8564224,"US survey acre (ac)":4046.87261,"US survey square mile (sq mi)":2589998.470305239,"US survey township":93239944.9309886,"Yoctobarn (yb)":1e-52,"Zeptobarn (zb)":1e-49,"Attobarn (ab)":1e-46,"Femtobarn (fb)":1e-43,"Picobarn (pb)":1e-40,"Nanobarn (nb)":1e-37,"Microbarn (\u03bcb)":1e-34,"Millibarn (mb)":1e-31,"Barn (b)":1e-28,"Kilobarn (kb)":1e-25,"Megabarn (Mb)":1e-22,"Planck area":2.6e-70,Shed:1e-52,Outhouse:1e-34,"Washington D.C.":176119191.502848,"Isle of Wight":38e7,Wales:20779e6,Texas:696241e6},run_area:function(a,b){var c=b[0],d=b[1];return a*=Convert.AREA_FACTOR[c],a/Convert.AREA_FACTOR[d]},MASS_UNITS:["[Metric]","Yoctogram (yg)","Zeptogram (zg)","Attogram (ag)","Femtogram (fg)","Picogram (pg)","Nanogram (ng)","Microgram (\u03bcg)","Milligram (mg)","Centigram (cg)","Decigram (dg)","Gram (g)","Decagram (dag)","Hectogram (hg)","Kilogram (kg)","Megagram (Mg)","Tonne (t)","Gigagram (Gg)","Teragram (Tg)","Petagram (Pg)","Exagram (Eg)","Zettagram (Zg)","Yottagram (Yg)","[/Metric]","[Imperial Avoirdupois]","Grain (gr)","Dram (dr)","Ounce (oz)","Pound (lb)","Nail","Stone (st)","Quarter (gr)","Tod","US hundredweight (cwt)","Imperial hundredweight (cwt)","US ton (t)","Imperial ton (t)","[/Imperial Avoirdupois]","[Imperial Troy]","Grain (gr)","Pennyweight (dwt)","Troy dram (dr t)","Troy ounce (oz t)","Troy pound (lb t)","Mark","[/Imperial Troy]","[Archaic]","Wey","Wool wey","Suffolk wey","Wool sack","Coal sack","Load","Last","Flax or feather last","Gunpowder last","Picul","Rice last","[/Archaic]","[Comparisons]","Big Ben (14 tonnes)","Blue whale (180 tonnes)","International Space Station (417 tonnes)","Space Shuttle (2,041 tonnes)","RMS Titanic (52,000 tonnes)","Great Pyramid of Giza (6,000,000 tonnes)","Earth's oceans (1.4 yottagrams)","[/Comparisons]","[Astronomical]","A teaspoon of neutron star (5,500 million tonnes)","Lunar mass (ML)","Earth mass (M\u2295)","Jupiter mass (MJ)","Solar mass (M\u2609)","Sagittarius A* (7.5 x 10^36 kgs-ish)","Milky Way galaxy (1.2 x 10^42 kgs)","The observable universe (1.45 x 10^53 kgs)","[/Astronomical]"],MASS_FACTOR:{"Yoctogram (yg)":1e-24,"Zeptogram (zg)":1e-21,"Attogram (ag)":1e-18,"Femtogram (fg)":1e-15,"Picogram (pg)":1e-12,"Nanogram (ng)":1e-9,"Microgram (\u03bcg)":1e-6,"Milligram (mg)":.001,"Centigram (cg)":.01,"Decigram (dg)":.1,"Gram (g)":1,"Decagram (dag)":10,"Hectogram (hg)":100,"Kilogram (kg)":1e3,"Megagram (Mg)":1e6,"Tonne (t)":1e6,"Gigagram (Gg)":1e9,"Teragram (Tg)":1e12,"Petagram (Pg)":1e15,"Exagram (Eg)":1e18,"Zettagram (Zg)":1e21,"Yottagram (Yg)":1e24,"Grain (gr)":.06479891,"Dram (dr)":1.7718451953125,"Ounce (oz)":28.349523125,"Pound (lb)":453.59237,Nail:3175.14659,"Stone (st)":6350.29318,"Quarter (gr)":12700.58636,Tod:12700.58636,"US hundredweight (cwt)":45359.237,"Imperial hundredweight (cwt)":50802.34544,"US ton (t)":907184.74,"Imperial ton (t)":1016046.9088,"Pennyweight (dwt)":1.55517384,"Troy dram (dr t)":3.8879346,"Troy ounce (oz t)":31.1034768,"Troy pound (lb t)":373.2417216,Mark:248.8278144,Wey:76500,"Wool wey":101700,"Suffolk wey":161500,"Wool sack":153e3,"Coal sack":50802.34544,Load:918e3,Last:1836e3,"Flax or feather last":77e4,"Gunpowder last":109e4,Picul:60478.982,"Rice last":12e5,"Big Ben (14 tonnes)":14e6,"Blue whale (180 tonnes)":18e7,"International Space Station (417 tonnes)":417e6,"Space Shuttle (2,041 tonnes)":2041e6,"RMS Titanic (52,000 tonnes)":52e9,"Great Pyramid of Giza (6,000,000 tonnes)":6e12,"Earth's oceans (1.4 yottagrams)":1.4e24,"A teaspoon of neutron star (5,500 million tonnes)":55e14,"Lunar mass (ML)":7.342e25,"Earth mass (M\u2295)":5.97219e27,"Jupiter mass (MJ)":1.8981411476999997e30,"Solar mass (M\u2609)":1.98855e33,"Sagittarius A* (7.5 x 10^36 kgs-ish)":7.5e39,"Milky Way galaxy (1.2 x 10^42 kgs)":1.2e45,"The observable universe (1.45 x 10^53 kgs)":1.45e56},run_mass:function(a,b){var c=b[0],d=b[1];return a*=Convert.MASS_FACTOR[c],a/Convert.MASS_FACTOR[d]},SPEED_UNITS:["[Metric]","Metres per second (m/s)","Kilometres per hour (km/h)","[/Metric]","[Imperial]","Miles per hour (mph)","Knots (kn)","[/Imperial]","[Comparisons]","Human hair growth rate","Bamboo growth rate","World's fastest snail","Usain Bolt's top speed","Jet airliner cruising speed","Concorde","SR-71 Blackbird","Space Shuttle","International Space Station","[/Comparisons]","[Scientific]","Sound in standard atmosphere","Sound in water","Lunar escape velocity","Earth escape velocity","Earth's solar orbit","Solar system's Milky Way orbit","Milky Way relative to the cosmic microwave background","Solar escape velocity","Neutron star escape velocity (0.3c)","Light in a diamond (0.4136c)","Signal in an optical fibre (0.667c)","Light (c)","[/Scientific]"],SPEED_FACTOR:{"Metres per second (m/s)":1,"Kilometres per hour (km/h)":.2778,"Miles per hour (mph)":.44704,"Knots (kn)":.5144,"Human hair growth rate":4.8e-9,"Bamboo growth rate":14e-6,"World's fastest snail":.00275,"Usain Bolt's top speed":12.42,"Jet airliner cruising speed":250,Concorde:603,"SR-71 Blackbird":981,"Space Shuttle":1400,"International Space Station":7700,"Sound in standard atmosphere":340.3,"Sound in water":1500,"Lunar escape velocity":2375,"Earth escape velocity":11200,"Earth's solar orbit":29800,"Solar system's Milky Way orbit":2e5,"Milky Way relative to the cosmic microwave background":552e3,"Solar escape velocity":617700,"Neutron star escape velocity (0.3c)":1e8,"Light in a diamond (0.4136c)":124e6,"Signal in an optical fibre (0.667c)":2e8,"Light (c)":299792458},run_speed:function(a,b){var c=b[0],d=b[1];return a*=Convert.SPEED_FACTOR[c],a/Convert.SPEED_FACTOR[d]}},DateTime={UNITS:["Seconds (s)","Milliseconds (ms)","Microseconds (\u03bcs)","Nanoseconds (ns)"],run_from_unix_timestamp:function(a,b){var c,d=b[0];if(a=parseFloat(a),"Seconds (s)"===d)return c=moment.unix(a),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss")+" UTC";if("Milliseconds (ms)"===d)return c=moment(a),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";if("Microseconds (\u03bcs)"===d)return c=moment(a/1e3),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";if("Nanoseconds (ns)"===d)return c=moment(a/1e6),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";throw"Unrecognised unit"},run_to_unix_timestamp:function(a,b){var c=b[0],d=moment(a);if("Seconds (s)"===c)return d.unix();if("Milliseconds (ms)"===c)return d.valueOf();if("Microseconds (\u03bcs)"===c)return 1e3*d.valueOf();if("Nanoseconds (ns)"===c)return 1e6*d.valueOf();throw"Unrecognised unit"},DATETIME_FORMATS:[{name:"Standard date and time",value:"DD/MM/YYYY HH:mm:ss"},{name:"American-style date and time",value:"MM/DD/YYYY HH:mm:ss"},{name:"International date and time",value:"YYYY-MM-DD HH:mm:ss"},{name:"Verbose date and time",value:"dddd Do MMMM YYYY HH:mm:ss Z z"},{name:"UNIX timestamp (seconds)",value:"X"},{name:"UNIX timestamp offset (milliseconds)",value:"x"},{name:"Automatic",value:""}],INPUT_FORMAT_STRING:"DD/MM/YYYY HH:mm:ss",OUTPUT_FORMAT_STRING:"dddd Do MMMM YYYY HH:mm:ss Z z",TIMEZONES:["UTC"].concat(moment.tz.names()),run_translate_format:function(a,b){var c,d=b[1],e=b[2],f=b[3],g=b[4];try{if(c=moment.tz(a,d,e),!c||"Invalid date"===c.format())throw Error}catch(a){return"Invalid format.\n\n"+DateTime.FORMAT_EXAMPLES}return c.tz(g).format(f)},run_parse:function(a,b){var c,d=b[1],e=b[2],f="";try{if(c=moment.tz(a,d,e),!c||"Invalid date"===c.format())throw Error}catch(a){return"Invalid format.\n\n"+DateTime.FORMAT_EXAMPLES}return f+="Date: "+c.format("dddd Do MMMM YYYY")+"\nTime: "+c.format("HH:mm:ss")+"\nPeriod: "+c.format("A")+"\nTimezone: "+c.format("z")+"\nUTC offset: "+c.format("ZZ")+"\n\nDaylight Saving Time: "+c.isDST()+"\nLeap year: "+c.isLeapYear()+"\nDays in this month: "+c.daysInMonth()+"\n\nDay of year: "+c.dayOfYear()+"\nWeek number: "+c.weekYear()+"\nQuarter: "+c.quarter()},FORMAT_EXAMPLES:"Format string tokens:\n\n<table class='table table-striped table-hover table-condensed table-bordered' style='font-family: sans-serif'> <thead> <tr> <th>Category</th> <th>Token</th> <th>Output</th> </tr> </thead> <tbody> <tr> <td><b>Month</b></td> <td>M</td> <td>1 2 ... 11 12</td> </tr> <tr> <td></td> <td>Mo</td> <td>1st 2nd ... 11th 12th</td> </tr> <tr> <td></td> <td>MM</td> <td>01 02 ... 11 12</td> </tr> <tr> <td></td> <td>MMM</td> <td>Jan Feb ... Nov Dec</td> </tr> <tr> <td></td> <td>MMMM</td> <td>January February ... November December</td> </tr> <tr> <td><b>Quarter</b></td> <td>Q</td> <td>1 2 3 4</td> </tr> <tr> <td><b>Day of Month</b></td> <td>D</td> <td>1 2 ... 30 31</td> </tr> <tr> <td></td> <td>Do</td> <td>1st 2nd ... 30th 31st</td> </tr> <tr> <td></td> <td>DD</td> <td>01 02 ... 30 31</td> </tr> <tr> <td><b>Day of Year</b></td> <td>DDD</td> <td>1 2 ... 364 365</td> </tr> <tr> <td></td> <td>DDDo</td> <td>1st 2nd ... 364th 365th</td> </tr> <tr> <td></td> <td>DDDD</td> <td>001 002 ... 364 365</td> </tr> <tr> <td><b>Day of Week</b></td> <td>d</td> <td>0 1 ... 5 6</td> </tr> <tr> <td></td> <td>do</td> <td>0th 1st ... 5th 6th</td> </tr> <tr> <td></td> <td>dd</td> <td>Su Mo ... Fr Sa</td> </tr> <tr> <td></td> <td>ddd</td> <td>Sun Mon ... Fri Sat</td> </tr> <tr> <td></td> <td>dddd</td> <td>Sunday Monday ... Friday Saturday</td> </tr> <tr> <td><b>Day of Week (Locale)</b></td> <td>e</td> <td>0 1 ... 5 6</td> </tr> <tr> <td><b>Day of Week (ISO)</b></td> <td>E</td> <td>1 2 ... 6 7</td> </tr> <tr> <td><b>Week of Year</b></td> <td>w</td> <td>1 2 ... 52 53</td> </tr> <tr> <td></td> <td>wo</td> <td>1st 2nd ... 52nd 53rd</td> </tr> <tr> <td></td> <td>ww</td> <td>01 02 ... 52 53</td> </tr> <tr> <td><b>Week of Year (ISO)</b></td> <td>W</td> <td>1 2 ... 52 53</td> </tr> <tr> <td></td> <td>Wo</td> <td>1st 2nd ... 52nd 53rd</td> </tr> <tr> <td></td> <td>WW</td> <td>01 02 ... 52 53</td> </tr> <tr> <td><b>Year</b></td> <td>YY</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>YYYY</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>Week Year</b></td> <td>gg</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>gggg</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>Week Year (ISO)</b></td> <td>GG</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>GGGG</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>AM/PM</b></td> <td>A</td> <td>AM PM</td> </tr> <tr> <td></td> <td>a</td> <td>am pm</td> </tr> <tr> <td><b>Hour</b></td> <td>H</td> <td>0 1 ... 22 23</td> </tr> <tr> <td></td> <td>HH</td> <td>00 01 ... 22 23</td> </tr> <tr> <td></td> <td>h</td> <td>1 2 ... 11 12</td> </tr> <tr> <td></td> <td>hh</td> <td>01 02 ... 11 12</td> </tr> <tr> <td><b>Minute</b></td> <td>m</td> <td>0 1 ... 58 59</td> </tr> <tr> <td></td> <td>mm</td> <td>00 01 ... 58 59</td> </tr> <tr> <td><b>Second</b></td> <td>s</td> <td>0 1 ... 58 59</td> </tr> <tr> <td></td> <td>ss</td> <td>00 01 ... 58 59</td> </tr> <tr> <td><b>Fractional Second</b></td> <td>S</td> <td>0 1 ... 8 9</td> </tr> <tr> <td></td> <td>SS</td> <td>00 01 ... 98 99</td> </tr> <tr> <td></td> <td>SSS</td> <td>000 001 ... 998 999</td> </tr> <tr> <td></td> <td>SSSS ... SSSSSSSSS</td> <td>000[0..] 001[0..] ... 998[0..] 999[0..]</td> </tr> <tr> <td><b>Timezone</b></td> <td>z or zz</td> <td>EST CST ... MST PST</td> </tr> <tr> <td></td> <td>Z</td> <td>-07:00 -06:00 ... +06:00 +07:00</td> </tr> <tr> <td></td> <td>ZZ</td> <td>-0700 -0600 ... +0600 +0700</td> </tr> <tr> <td><b>Unix Timestamp</b></td> <td>X</td> <td>1360013296</td> </tr> <tr> <td><b>Unix Millisecond Timestamp</b></td> <td>x</td> <td>1360013296123</td> </tr> </tbody></table>"},Endian={DATA_FORMAT:["Hex","Raw"],WORD_LENGTH:4,PAD_INCOMPLETE_WORDS:!0,run_swap_endianness:function(a,b){var c=b[0],d=b[1],e=b[2],f=[],g=[],h=[],i=0,j=0;if(d<=0)return"Word length must be greater than 0";switch(c){case"Hex":f=Utils.from_hex(a);break;case"Raw":f=Utils.str_to_byte_array(a);break;default:f=a}for(i=0;i<f.length;i+=d){var k=f.slice(i,i+d);if(e&&k.length<d)for(j=k.length;j<d;j++)k.push(0);h.push(k)}for(i=0;i<h.length;i++)for(j=h[i].length;j--;)g.push(h[i][j]);switch(c){case"Hex":return Utils.to_hex(g);case"Raw":return Utils.byte_array_to_utf8(g);default:return g}}},Entropy={CHUNK_SIZE:1e3,run_entropy:function(a,b){var c=b[0],d="",e=Entropy._calc_entropy(a);d+="Shannon entropy: "+e+"\n<br><canvas id='chart-area'></canvas><br>\n- 0 represents no randomness (i.e. all the bytes in the data have the same value) whereas 8, the maximum, represents a completely random string.\n- Standard English text usually falls somewhere between 3.5 and 5.\n- Properly encrypted or compressed data of a reasonable length should have an entropy of over 7.5.\n\nThe following results show the entropy of chunks of the input data. Chunks with particularly high entropy could suggest encrypted or compressed sections.\n\n<br><script> var canvas = document.getElementById('chart-area'), parent_rect = canvas.parentNode.getBoundingClientRect(), entropy = "+e+", height = parent_rect.height * 0.25; canvas.width = parent_rect.width * 0.95; canvas.height = height > 150 ? 150 : height; CanvasComponents.draw_scale_bar(canvas, entropy, 8, [ { label: 'English text', min: 3.5, max: 5 },{ label: 'Encrypted/compressed', min: 7.5, max: 8 } ]); <\/script>";var f=0;if(0!==c)for(var g=0;g<a.length;g+=c)f=Entropy._calc_entropy(a.slice(g,g+c)),d+="Bytes "+g+" to "+(g+c)+": "+f+"\n";else d+="Chunk size cannot be 0.";return d},FREQ_ZEROS:!1,run_freq_distrib:function(a,b){if(!a.length)return"No data";for(var c=new Array(256),d=new Array(256),e=a.length,f=b[0],g=0;g<256;g++)c[g]=0;for(g=0;g<e;g++)c[a[g]]++;var h=0;for(g=0;g<256;g++)c[g]>0&&h++,d[g]=c[g]/e*100;var i="<canvas id='chart-area'></canvas><br>Total data length: "+e+"\nNumber of bytes represented: "+h+"\nNumber of bytes not represented: "+(256-h)+"\n\nByte Percentage\n<script> var canvas = document.getElementById('chart-area'), parent_rect = canvas.parentNode.getBoundingClientRect(), scores = "+JSON.stringify(d)+"; canvas.width = parent_rect.width * 0.95; canvas.height = parent_rect.height * 0.9; CanvasComponents.draw_bar_chart(canvas, scores, 'Byte', 'Frequency %', 16, 6); <\/script>";for(g=0;g<256;g++)(c[g]||f)&&(i+=" "+Utils.hex(g,2)+" ("+Utils.pad_right(d[g].toFixed(2).replace(".00","")+"%)",8)+Array(Math.ceil(d[g])+1).join("|")+"\n");return i},_calc_entropy:function(a){for(var b=[],c=a.unique(),d=Utils.byte_array_to_chars(a),e=0;e<c.length;e++)b.push(d.count(Utils.chr(c[e]))/a.length);var f,g=0;for(e=0;e<b.length;e++)f=b[e],g+=f*Math.log(f)/Math.log(2);return-g}},Extract={_search:function(a,b,c,d){for(var e,f="",g=0;e=b.exec(a);)c&&c.test(e[0])||(g++,f+=e[0]+"\n");return d&&(f="Total found: "+g+"\n\n"+f),f},MIN_STRING_LEN:3,DISPLAY_TOTAL:!1,run_strings:function(a,b){var c=b[0]||Extract.MIN_STRING_LEN,d=b[1],e="[A-Z\\d/\\-:.,_$%'\"()<>= !\\[\\]{}@]",f=new RegExp(e+"{"+c+",}","ig");return Extract._search(a,f,null,d)},INCLUDE_IPV4:!0,INCLUDE_IPV6:!1,REMOVE_LOCAL:!1,run_ip:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g="(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?",h="((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|(?![\\dA-F])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})",i="";if(c&&d?i=g+"|"+h:c?i=g:d&&(i=h),i){var j=new RegExp(i,"ig");if(e){var k="10\\..+",l="192\\.168\\..+",m="172\\.(?:1[6-9]|2\\d|3[01])\\..+",n="127\\..+",o=new RegExp("^(?:"+k+"|"+l+"|"+m+"|"+n+")");return Extract._search(a,j,o,f)}return Extract._search(a,j,null,f)}return""},run_email:function(a,b){var c=b[0],d=/\w[-.\w]*@[-\w]+(?:\.[-\w]+)*\.[A-Z]{2,4}/gi;return Extract._search(a,d,null,c)},run_mac:function(a,b){var c=b[0],d=/[A-F\d]{2}(?:[:-][A-F\d]{2}){5}/gi;return Extract._search(a,d,null,c)},run_urls:function(a,b){var c=b[0],d="[A-Z]+://",e="[-\\w]+(?:\\.\\w[-\\w]*)+",f=":\\d+",g="/[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]*";g+="(?:[.!,?]+[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]+)*";var h=new RegExp(d+e+"(?:"+f+")?(?:"+g+")?","ig");return Extract._search(a,h,null,c)},run_domains:function(a,b){var c=b[0],d="https?://",e="[-\\w\\.]+",f="\\.(?:com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+",g=new RegExp("(?:"+d+")?"+e+f,"ig");return Extract._search(a,g,null,c)},INCLUDE_WIN_PATH:!0,INCLUDE_UNIX_PATH:!0,run_file_paths:function(a,b){var c=b[0],d=b[1],e=b[2],f="[A-Z]:\\\\",g="[A-Z\\d][A-Z\\d\\- '_\\(\\)]{0,61}",h="[A-Z\\d]{1,6}",i=f+"(?:"+g+"\\\\?)*"+g+"(?:\\."+h+")?",j="(?:/[A-Z\\d.][A-Z\\d\\-.]{0,61})+",k="";if(c&&d?k=i+"|"+j:c?k=i:d&&(k=j),k){var l=new RegExp(k,"ig");return Extract._search(a,l,null,e)}return""},run_dates:function(a,b){var c=b[0],d="(?:19|20)\\d\\d[- /.](?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])",e="(?:0[1-9]|[12][0-9]|3[01])[- /.](?:0[1-9]|1[012])[- /.](?:19|20)\\d\\d",f="(?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])[- /.](?:19|20)\\d\\d",g=new RegExp(d+"|"+e+"|"+f,"ig");return Extract._search(a,g,null,c)},run_all_idents:function(a,b){var c="";return c+="IP addresses\n", -c+=Extract.run_ip(a,[!0,!0,!1]),c+="\nEmail addresses\n",c+=Extract.run_email(a,[]),c+="\nMAC addresses\n",c+=Extract.run_mac(a,[]),c+="\nURLs\n",c+=Extract.run_urls(a,[]),c+="\nDomain names\n",c+=Extract.run_domains(a,[]),c+="\nFile paths\n",c+=Extract.run_file_paths(a,[!0,!0]),c+="\nDates\n",c+=Extract.run_dates(a,[])}},FileType={run_detect:function(a,b){var c=FileType._magic_type(a);if(c){var d="File extension: "+c.ext+"\nMIME type: "+c.mime;return c.desc&&c.desc.length&&(d+="\nDescription: "+c.desc),d}return"Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?"},IGNORE_COMMON_BYTE_SEQUENCES:!0,run_scan_for_embedded_files:function(a,b){for(var c,d="Scanning data for 'magic bytes' which may indicate embedded files. The following results may be false positives and should not be treat as reliable. Any suffiently long file is likely to contain these magic bytes coincidentally.\n",e=b[0],f=["ico","ttf",""],g=0,h=0,i=0;i<a.length;i++)if(c=FileType._magic_type(a.slice(i))){if(e&&f.indexOf(c.ext)>-1){h++;continue}g++,d+="\nOffset "+i+" (0x"+Utils.hex(i)+"):\n File extension: "+c.ext+"\n MIME type: "+c.mime+"\n",c.desc&&c.desc.length&&(d+=" Description: "+c.desc+"\n")}return 0===g&&(d+="\nNo embedded files were found."),h>0&&(d+="\n\n"+h,d+=1===h?" file type was detected that has a common byte sequence. This is likely to be a false positive.":" file types were detected that have common byte sequences. These are likely to be false positives.",d+=" Run this operation with the 'Ignore common byte sequences' option unchecked to see details."),d},_magic_type:function(a){return a&&a.length>1?255===a[0]&&216===a[1]&&255===a[2]?{ext:"jpg",mime:"image/jpeg"}:137===a[0]&&80===a[1]&&78===a[2]&&71===a[3]?{ext:"png",mime:"image/png"}:71===a[0]&&73===a[1]&&70===a[2]?{ext:"gif",mime:"image/gif"}:87===a[8]&&69===a[9]&&66===a[10]&&80===a[11]?{ext:"webp",mime:"image/webp"}:(73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3])&&67===a[8]&&82===a[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3]?{ext:"tif",mime:"image/tiff"}:66===a[0]&&77===a[1]?{ext:"bmp",mime:"image/bmp"}:73===a[0]&&73===a[1]&&188===a[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===a[0]&&66===a[1]&&80===a[2]&&83===a[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===a[0]&&75===a[1]&&3===a[2]&&4===a[3]&&109===a[30]&&105===a[31]&&109===a[32]&&101===a[33]&&116===a[34]&&121===a[35]&&112===a[36]&&101===a[37]&&97===a[38]&&112===a[39]&&112===a[40]&&108===a[41]&&105===a[42]&&99===a[43]&&97===a[44]&&116===a[45]&&105===a[46]&&111===a[47]&&110===a[48]&&47===a[49]&&101===a[50]&&112===a[51]&&117===a[52]&&98===a[53]&&43===a[54]&&122===a[55]&&105===a[56]&&112===a[57]?{ext:"epub",mime:"application/epub+zip"}:80!==a[0]||75!==a[1]||3!==a[2]&&5!==a[2]&&7!==a[2]||4!==a[3]&&6!==a[3]&&8!==a[3]?117===a[257]&&115===a[258]&&116===a[259]&&97===a[260]&&114===a[261]?{ext:"tar",mime:"application/x-tar"}:82!==a[0]||97!==a[1]||114!==a[2]||33!==a[3]||26!==a[4]||7!==a[5]||0!==a[6]&&1!==a[6]?31===a[0]&&139===a[1]&&8===a[2]?{ext:"gz",mime:"application/gzip"}:66===a[0]&&90===a[1]&&104===a[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===a[0]&&122===a[1]&&188===a[2]&&175===a[3]&&39===a[4]&&28===a[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===a[0]&&1===a[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===a[0]&&0===a[1]&&0===a[2]&&(24===a[3]||32===a[3])&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]||51===a[0]&&103===a[1]&&112===a[2]&&53===a[3]||0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&109===a[8]&&112===a[9]&&52===a[10]&&50===a[11]&&109===a[16]&&112===a[17]&&52===a[18]&&49===a[19]&&109===a[20]&&112===a[21]&&52===a[22]&&50===a[23]&&105===a[24]&&115===a[25]&&111===a[26]&&109===a[27]?{ext:"mp4",mime:"video/mp4"}:0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&86===a[10]?{ext:"m4v",mime:"video/x-m4v"}:77===a[0]&&84===a[1]&&104===a[2]&&100===a[3]?{ext:"mid",mime:"audio/midi"}:109===a[31]&&97===a[32]&&116===a[33]&&114===a[34]&&111===a[35]&&115===a[36]&&107===a[37]&&97===a[38]?{ext:"mkv",mime:"video/x-matroska"}:26===a[0]&&69===a[1]&&223===a[2]&&163===a[3]?{ext:"webm",mime:"video/webm"}:0===a[0]&&0===a[1]&&0===a[2]&&20===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]?{ext:"mov",mime:"video/quicktime"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&65===a[8]&&86===a[9]&&73===a[10]?{ext:"avi",mime:"video/x-msvideo"}:48===a[0]&&38===a[1]&&178===a[2]&&117===a[3]&&142===a[4]&&102===a[5]&&207===a[6]&&17===a[7]&&166===a[8]&&217===a[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===a[0]&&0===a[1]&&1===a[2]&&"b"===a[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===a[0]&&68===a[1]&&51===a[2]||255===a[0]&&251===a[1]?{ext:"mp3",mime:"audio/mpeg"}:102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&65===a[10]||77===a[0]&&52===a[1]&&65===a[2]&&32===a[3]?{ext:"m4a",mime:"audio/m4a"}:79===a[0]&&103===a[1]&&103===a[2]&&83===a[3]?{ext:"ogg",mime:"audio/ogg"}:102===a[0]&&76===a[1]&&97===a[2]&&67===a[3]?{ext:"flac",mime:"audio/x-flac"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&87===a[8]&&65===a[9]&&86===a[10]&&69===a[11]?{ext:"wav",mime:"audio/x-wav"}:35===a[0]&&33===a[1]&&65===a[2]&&77===a[3]&&82===a[4]&&10===a[5]?{ext:"amr",mime:"audio/amr"}:37===a[0]&&80===a[1]&&68===a[2]&&70===a[3]?{ext:"pdf",mime:"application/pdf"}:77===a[0]&&90===a[1]?{ext:"exe",mime:"application/x-msdownload"}:67!==a[0]&&70!==a[0]||87!==a[1]||83!==a[2]?123===a[0]&&92===a[1]&&114===a[2]&&116===a[3]&&102===a[4]?{ext:"rtf",mime:"application/rtf"}:119===a[0]&&79===a[1]&&70===a[2]&&70===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff",mime:"application/font-woff"}:119===a[0]&&79===a[1]&&70===a[2]&&50===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff2",mime:"application/font-woff"}:76===a[34]&&80===a[35]&&(2===a[8]&&0===a[9]&&1===a[10]||1===a[8]&&0===a[9]&&0===a[10]||2===a[8]&&0===a[9]&&2===a[10])?{ext:"eot",mime:"application/octet-stream"}:0===a[0]&&1===a[1]&&0===a[2]&&0===a[3]&&0===a[4]?{ext:"ttf",mime:"application/font-sfnt"}:79===a[0]&&84===a[1]&&84===a[2]&&79===a[3]&&0===a[4]?{ext:"otf",mime:"application/font-sfnt"}:0===a[0]&&0===a[1]&&1===a[2]&&0===a[3]?{ext:"ico",mime:"image/x-icon"}:70===a[0]&&76===a[1]&&86===a[2]&&1===a[3]?{ext:"flv",mime:"video/x-flv"}:37===a[0]&&33===a[1]?{ext:"ps",mime:"application/postscript"}:253===a[0]&&55===a[1]&&122===a[2]&&88===a[3]&&90===a[4]&&0===a[5]?{ext:"xz",mime:"application/x-xz"}:83===a[0]&&81===a[1]&&76===a[2]&&105===a[3]?{ext:"sqlite",mime:"application/x-sqlite3"}:31===a[0]&&157===a[1]||31===a[0]&&160===a[1]?{ext:"z, tar.z",mime:"application/x-gtar"}:127===a[0]&&69===a[1]&&76===a[2]&&70===a[3]?{ext:"none, axf, bin, elf, o, prx, puff, so",mime:"application/x-executable",desc:"Executable and Linkable Format file. No standard file extension."}:202===a[0]&&254===a[1]&&186===a[2]&&190===a[3]?{ext:"class",mime:"application/java-vm"}:239===a[0]&&187===a[1]&&191===a[2]?{ext:"txt",mime:"text/plain",desc:"UTF-8 encoded Unicode byte order mark detected, commonly but not exclusively seen in text files."}:255===a[0]&&254===a[1]&&0===a[2]&&0===a[3]?{ext:"",mime:"",desc:"Little-endian UTF-32 encoded Unicode byte order mark detected."}:255===a[0]&&254===a[1]?{ext:"",mime:"",desc:"Little-endian UTF-16 encoded Unicode byte order mark detected."}:67===a[32769]&&68===a[32770]&&48===a[32771]&&48===a[32772]&&49===a[32773]||67===a[34817]&&68===a[34818]&&48===a[34819]&&48===a[34820]&&49===a[34821]||67===a[36865]&&68===a[36866]&&48===a[36867]&&48===a[36868]&&49===a[36869]?{ext:"iso",mime:"application/octet-stream",desc:"ISO 9660 CD/DVD image file"}:208===a[0]&&207===a[1]&&17===a[2]&&224===a[3]&&161===a[4]&&177===a[5]&&26===a[6]&&225===a[7]?{ext:"doc, xls, ppt",mime:"application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint",desc:"Microsoft Office documents"}:100===a[0]&&101===a[1]&&120===a[2]&&10===a[3]&&48===a[4]&&51===a[5]&&53===a[6]&&0===a[7]?{ext:"dex",mime:"application/octet-stream",desc:"Dalvik Executable (Android)"}:75===a[0]&&68===a[1]&&77===a[2]?{ext:"vmdk",mime:"application/vmdk, application/x-virtualbox-vmdk"}:67===a[0]&&114===a[1]&&50===a[2]&&52===a[3]?{ext:"crx",mime:"application/crx",desc:"Google Chrome extension or packaged app"}:null:{ext:"swf",mime:"application/x-shockwave-flash"}:{ext:"rar",mime:"application/x-rar-compressed"}:{ext:"zip",mime:"application/zip"}:null}},HTML={CONVERT_ALL:!1,CONVERT_OPTIONS:["Named entities where possible","Numeric entities","Hex entities"],run_to_entity:function(a,b){for(var c=b[0],d="Numeric entities"===b[1],e="Hex entities"===b[1],f=Utils.str_to_charcode(a),g="",h=0;h<f.length;h++)g+=c&&d?"&#"+f[h]+";":c&&e?"&#x"+Utils.hex(f[h])+";":c?HTML._byte_to_entity[f[h]]||"&#"+f[h]+";":d?f[h]>255||HTML._byte_to_entity.hasOwnProperty(f[h])?"&#"+f[h]+";":Utils.chr(f[h]):e?f[h]>255||HTML._byte_to_entity.hasOwnProperty(f[h])?"&#x"+Utils.hex(f[h])+";":Utils.chr(f[h]):HTML._byte_to_entity[f[h]]||(f[h]>255?"&#"+f[h]+";":Utils.chr(f[h]));return g},run_from_entity:function(a,b){for(var c,d=/&(#?x?[a-zA-Z0-9]{1,8});/g,e="",f=0;c=d.exec(a);){for(;f<c.index;)e+=a[f++];var g=HTML._entity_to_byte[c[1]];if(g)e+=Utils.chr(g);else if(!g&&"#"===c[1][0]&&c[1].length>1&&/^#\d{1,5}$/.test(c[1])){var h=c[1].slice(1,c[1].length);e+=Utils.chr(parseInt(h,10))}else if(!g&&"#"===c[1][0]&&c[1].length>3&&/^#x[\dA-F]{2,8}$/i.test(c[1])){var i=c[1].slice(2,c[1].length);e+=Utils.chr(parseInt(i,16))}else for(;f<d.lastIndex;)e+=a[f++];f=d.lastIndex}for(;f<a.length;)e+=a[f++];return e},REMOVE_INDENTATION:!0,REMOVE_LINE_BREAKS:!0,run_strip_tags:function(a,b){var c=b[0],d=b[1];return a=Utils.strip_html_tags(a),c&&(a=a.replace(/\n[ \f\t]+/g,"\n")),d&&(a=a.replace(/^\s*\n/,"").replace(/(\n\s*){2,}/g,"\n")),a},run_parse_colour_code:function(a,b){var c=null,d=0,e=0,f=0,g=1;if(c=a.match(/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i))d=parseInt(c[1],16),e=parseInt(c[2],16),f=parseInt(c[3],16);else if(c=a.match(/rgba?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)(?:,\s?(\d(?:\.\d+)?))?\)/i))d=parseFloat(c[1]),e=parseFloat(c[2]),f=parseFloat(c[3]),g=c[4]?parseFloat(c[4]):1;else if(c=a.match(/hsla?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)%,\s?(\d{1,3}(?:\.\d+)?)%(?:,\s?(\d(?:\.\d+)?))?\)/i)){var h=parseFloat(c[1])/360,i=parseFloat(c[2])/100,j=parseFloat(c[3])/100,k=HTML._hsl_to_rgb(h,i,j);d=k[0],e=k[1],f=k[2],g=c[4]?parseFloat(c[4]):1}else if(c=a.match(/cmyk\((\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?)\)/i)){var l=parseFloat(c[1]),m=parseFloat(c[2]),n=parseFloat(c[3]),o=parseFloat(c[4]);d=Math.round(255*(1-l)*(1-o)),e=Math.round(255*(1-m)*(1-o)),f=Math.round(255*(1-n)*(1-o))}var p=HTML._rgb_to_hsl(d,e,f),q=Math.round(360*p[0]),r=Math.round(100*p[1]),s=Math.round(100*p[2]),t=1-Math.max(d/255,e/255,f/255),u=(1-d/255-t)/(1-t),c=(1-e/255-t)/(1-t),v=(1-f/255-t)/(1-t);u=isNaN(u)?"0":u.toFixed(2),c=isNaN(c)?"0":c.toFixed(2),v=isNaN(v)?"0":v.toFixed(2),t=t.toFixed(2);var w="#"+Utils.pad_left(Math.round(d).toString(16),2)+Utils.pad_left(Math.round(e).toString(16),2)+Utils.pad_left(Math.round(f).toString(16),2),x="rgb("+d+", "+e+", "+f+")",y="rgba("+d+", "+e+", "+f+", "+g+")",z="hsl("+q+", "+r+"%, "+s+"%)",A="hsla("+q+", "+r+"%, "+s+"%, "+g+")",B="cmyk("+u+", "+c+", "+v+", "+t+")";return"<div id='colorpicker' style='display: inline-block'></div>Hex: "+w+"\nRGB: "+x+"\nRGBA: "+y+"\nHSL: "+z+"\nHSLA: "+A+"\nCMYK: "+B+"<script> $('#colorpicker').colorpicker({ format: 'rgba', color: '"+y+"', container: true, inline: true, }).on('changeColor', function(e) { var color = e.color.toRGB(); document.getElementById('input-text').value = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + color.a + ')'; window.app.auto_bake(); }); <\/script>"},_hsl_to_rgb:function(a,b,c){var d,e,f;if(0===b)d=e=f=c;else{var g=function(a,b,c){return c<0&&(c+=1),c>1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},h=c<.5?c*(1+b):c+b-c*b,i=2*c-h;d=g(i,h,a+1/3),e=g(i,h,a),f=g(i,h,a-1/3)}return[Math.round(255*d),Math.round(255*e),Math.round(255*f)]},_rgb_to_hsl:function(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f===g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(b<c?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return[d,e,h]},_byte_to_entity:{34:""",38:"&",39:"'",60:"<",62:">",160:" ",161:"¡",162:"¢",163:"£",164:"¤",165:"¥",166:"¦",167:"§",168:"¨",169:"©",170:"ª",171:"«",172:"¬",173:"­",174:"®",175:"¯",176:"°",177:"±",178:"²",179:"³",180:"´",181:"µ",182:"¶",183:"·",184:"¸",185:"¹",186:"º",187:"»",188:"¼",189:"½",190:"¾",191:"¿",192:"À",193:"Á",194:"Â",195:"Ã",196:"Ä",197:"Å",198:"Æ",199:"Ç",200:"È",201:"É",202:"Ê",203:"Ë",204:"Ì",205:"Í",206:"Î",207:"Ï",208:"Ð",209:"Ñ",210:"Ò",211:"Ó",212:"Ô",213:"Õ",214:"Ö",215:"×",216:"Ø",217:"Ù",218:"Ú",219:"Û",220:"Ü",221:"Ý",222:"Þ",223:"ß",224:"à",225:"á",226:"â",227:"ã",228:"ä",229:"å",230:"æ",231:"ç",232:"è",233:"é",234:"ê",235:"ë",236:"ì",237:"í",238:"î",239:"ï",240:"ð",241:"ñ",242:"ò",243:"ó",244:"ô",245:"õ",246:"ö",247:"÷",248:"ø",249:"ù",250:"ú",251:"û",252:"ü",253:"ý",254:"þ",255:"ÿ",338:"Œ",339:"œ",352:"Š",353:"š",376:"Ÿ",402:"ƒ",710:"ˆ",732:"˜",913:"Α",914:"Β",915:"Γ",916:"Δ",917:"Ε",918:"Ζ",919:"Η",920:"Θ",921:"Ι",922:"Κ",923:"Λ",924:"Μ",925:"Ν",926:"Ξ",927:"Ο",928:"Π",929:"Ρ",931:"Σ",932:"Τ",933:"Υ",934:"Φ",935:"Χ",936:"Ψ",937:"Ω",945:"α",946:"β",947:"γ",948:"δ",949:"ε",950:"ζ",951:"η",952:"θ",953:"ι",954:"κ",955:"λ",956:"μ",957:"ν",958:"ξ",959:"ο",960:"π",961:"ρ",962:"ς",963:"σ",964:"τ",965:"υ",966:"φ",967:"χ",968:"ψ",969:"ω",977:"ϑ",978:"ϒ",982:"ϖ",8194:" ",8195:" ",8201:" ",8204:"‌",8205:"‍",8206:"‎",8207:"‏",8211:"–",8212:"—",8216:"‘",8217:"’",8218:"‚",8220:"“",8221:"”",8222:"„",8224:"†",8225:"‡",8226:"•",8230:"…",8240:"‰",8242:"′",8243:"″",8249:"‹",8250:"›",8254:"‾",8260:"⁄",8364:"€",8465:"ℑ",8472:"℘",8476:"ℜ",8482:"™",8501:"ℵ",8592:"←",8593:"↑",8594:"→",8595:"↓",8596:"↔",8629:"↵",8656:"⇐",8657:"⇑",8658:"⇒",8659:"⇓",8660:"⇔",8704:"∀",8706:"∂",8707:"∃",8709:"∅",8711:"∇",8712:"∈",8713:"∉",8715:"∋",8719:"∏",8721:"∑",8722:"−",8727:"∗",8730:"√",8733:"∝",8734:"∞",8736:"∠",8743:"∧",8744:"∨",8745:"∩",8746:"∪",8747:"∫",8756:"∴",8764:"∼",8773:"≅",8776:"≈",8800:"≠",8801:"≡",8804:"≤",8805:"≥",8834:"⊂",8835:"⊃",8836:"⊄",8838:"⊆",8839:"⊇",8853:"⊕",8855:"⊗",8869:"⊥",8901:"⋅",8942:"⋮",8968:"⌈",8969:"⌉",8970:"⌊",8971:"⌋",9001:"⟨",9002:"⟩",9674:"◊",9824:"♠",9827:"♣",9829:"♥",9830:"♦"},_entity_to_byte:{quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,vellip:8942,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830}},HTTP={run_strip_headers:function(a,b){var c=a.indexOf("\r\n\r\n")+(c<0)?a.indexOf("\n\n")+2:c+4;return c<2?a:a.slice(c,a.length)},run_parse_user_agent:function(a,b){var c=UAS_parser.parse(a);return"Type: "+c.type+"\nFamily: "+c.uaFamily+"\nName: "+c.uaName+"\nURL: "+c.uaUrl+"\nCompany: "+c.uaCompany+"\nCompany URL: "+c.uaCompanyUrl+"\n\nOS Family: "+c.osFamily+"\nOS Name: "+c.osName+"\nOS URL: "+c.osUrl+"\nOS Company: "+c.osCompany+"\nOS Company URL: "+c.osCompanyUrl+"\nDevice Type: "+c.deviceType+"\n"}},Hash={run_md5:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.MD5(a).toString(CryptoJS.enc.Hex)},run_sha1:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA1(a).toString(CryptoJS.enc.Hex)},run_sha224:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA224(a).toString(CryptoJS.enc.Hex)},run_sha256:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA256(a).toString(CryptoJS.enc.Hex)},run_sha384:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA384(a).toString(CryptoJS.enc.Hex)},run_sha512:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA512(a).toString(CryptoJS.enc.Hex)},SHA3_LENGTH:["512","384","256","224"],run_sha3:function(a,b){a=CryptoJS.enc.Latin1.parse(a);var c=b[0],d={outputLength:parseInt(c,10)};return CryptoJS.SHA3(a,d).toString(CryptoJS.enc.Hex)},run_ripemd160:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.RIPEMD160(a).toString(CryptoJS.enc.Hex)},HMAC_FUNCTIONS:["MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160"],run_hmac:function(a,b){var c=b[1];a=CryptoJS.enc.Latin1.parse(a);var d={MD5:CryptoJS.HmacMD5(a,b[0]),SHA1:CryptoJS.HmacSHA1(a,b[0]),SHA224:CryptoJS.HmacSHA224(a,b[0]),SHA256:CryptoJS.HmacSHA256(a,b[0]),SHA384:CryptoJS.HmacSHA384(a,b[0]),SHA512:CryptoJS.HmacSHA512(a,b[0]),SHA3:CryptoJS.HmacSHA3(a,b[0]),"RIPEMD-160":CryptoJS.HmacRIPEMD160(a,b[0])};return d[c].toString(CryptoJS.enc.Hex)},run_all:function(a,b){var c=Utils.str_to_byte_array(a),d="MD5: "+Hash.run_md5(a,[])+"\nSHA1: "+Hash.run_sha1(a,[])+"\nSHA2 224: "+Hash.run_sha224(a,[])+"\nSHA2 256: "+Hash.run_sha256(a,[])+"\nSHA2 384: "+Hash.run_sha384(a,[])+"\nSHA2 512: "+Hash.run_sha512(a,[])+"\nSHA3 224: "+Hash.run_sha3(a,["224"])+"\nSHA3 256: "+Hash.run_sha3(a,["256"])+"\nSHA3 384: "+Hash.run_sha3(a,["384"])+"\nSHA3 512: "+Hash.run_sha3(a,["512"])+"\nRIPEMD-160: "+Hash.run_ripemd160(a,[])+"\n\nChecksums:\nFletcher-16: "+Checksum.run_fletcher16(c,[])+"\nAdler-32: "+Checksum.run_adler32(c,[])+"\nCRC-32: "+Checksum.run_crc32(c,[]);return d},run_analyse:function(a,b){a=a.replace(/\s/g,"");var c="",d=a.length/2,e=8*d,f=[];if(!/^[a-f0-9]+$/i.test(a))return"Invalid hash";switch(c+="Hash length: "+a.length+"\nByte length: "+d+"\nBit length: "+e+"\n\nBased on the length, this hash could have been generated by one of the following hashing functions:\n",e){case 4:f=["Fletcher-4","Luhn algorithm","Verhoeff algorithm"];break;case 8:f=["Fletcher-8"];break;case 16:f=["BSD checksum","CRC-16","SYSV checksum","Fletcher-16"];break;case 32:f=["CRC-32","Fletcher-32","Adler-32"];break;case 64:f=["CRC-64","RIPEMD-64","SipHash"];break;case 128:f=["MD5","MD4","MD2","HAVAL-128","RIPEMD-128","Snefru","Tiger-128"];break;case 160:f=["SHA-1","SHA-0","FSB-160","HAS-160","HAVAL-160","RIPEMD-160","Tiger-160"];break;case 192:f=["Tiger","HAVAL-192"];break;case 224:f=["SHA-224","SHA3-224","ECOH-224","FSB-224","HAVAL-224"];break;case 256:f=["SHA-256","SHA3-256","BLAKE-256","ECOH-256","FSB-256","GOST","Gr\xf8stl-256","HAVAL-256","PANAMA","RIPEMD-256","Snefru"];break;case 320:f=["RIPEMD-320"];break;case 384:f=["SHA-384","SHA3-384","ECOH-384","FSB-384"];break;case 512:f=["SHA-512","SHA3-512","BLAKE-512","ECOH-512","FSB-512","Gr\xf8stl-512","JH","MD6","Spectral Hash","SWIFFT","Whirlpool"];break;case 1024:f=["Fowler-Noll-Vo"];break;default:f=["Unknown"]}return c+f.join("\n")}},Hexdump={WIDTH:16,UPPER_CASE:!1,INCLUDE_FINAL_LENGTH:!1,run_to:function(a,b){for(var c=b[0]||Hexdump.WIDTH,d=b[1],e=b[2],f="",g=2,h=0;h<a.length;h+=c){for(var i=a.slice(h,h+c),j="",k=0;k<i.length;k++)j+=Utils.hex(i[k],g)+" ";var l=Utils.hex(h,8);d&&(j=j.toUpperCase(),l=l.toUpperCase()),f+=l+" "+Utils.pad_right(j,c*(g+1))+" |"+Utils.pad_right(Utils.printable(Utils.byte_array_to_chars(i)),i.length)+"|\n",e&&h+i.length===a.length&&(f+=Utils.hex(h+i.length,8)+"\n")}return f.slice(0,-1)},run_from:function(a,b){for(var c,d,e=[],f=/^\s*(?:[\dA-F]{4,16}:?)?\s*((?:[\dA-F]{2}\s){1,8}(?:\s|[\dA-F]{2}-)(?:[\dA-F]{2}\s){1,8}|(?:[\dA-F]{2}\s|[\dA-F]{4}\s)+)/gim;c=f.exec(a);){d=Utils.from_hex(c[1].replace(/-/g," "));for(var g=0;g<d.length;g++)e.push(d[g])}var h=a.indexOf("\n"),i=(h-13)/4;return Math.floor(i)===i&&a.indexOf("\r")===-1&&e.indexOf(13)===-1||(app.options.attempt_highlight=!1),e},highlight_to:function(a,b){var c=b[0]||16,d=14+4*c,e=Math.floor(a[0].start/c),f=a[0].start%c,g=0,h=0;a[0].start=e*d+10+3*f,e=Math.floor(a[0].end/c),f=a[0].end%c,0===f&&(e--,f=c),a[0].end=e*d+10+3*f-1;var i=Math.floor(a[0].start/d),j=Math.floor(a[0].end/d);if(i===j)a.push(a[0]);else for(g=a[0].start,h=(i+1)*d-c-5,a.push({start:g,end:h});h<a[0].end;)i++,g=i*d+10,h=(i+1)*d-c-5,h>a[0].end&&(h=a[0].end),a.push({start:g,end:h});var k=a.length,l=0;g=0,h=0;for(var m=1;m<k;m++)l=Math.floor(a[m].start/d),g=(a[m].start-l*d-10)/3+(d-c-2)+l*d,h=(a[m].end+1-l*d-10)/3+(d-c-2)+l*d,a.push({start:g,end:h});return a},highlight_from:function(a,b){var c=b[0]||16,d=14+4*c,e=Math.floor(a[0].start/d),f=a[0].start%d;return f<10?a[0].start=e*c:f>10+3*c?a[0].start=(e+1)*c:a[0].start=e*c+Math.floor((f-10)/3),e=Math.floor(a[0].end/d),f=a[0].end%d,f<10?a[0].end=e*c:f>10+3*c?a[0].end=(e+1)*c:a[0].end=e*c+Math.ceil((f-10)/3),a}},IP={INCLUDE_NETWORK_INFO:!0,ENUMERATE_ADDRESSES:!0,ALLOW_LARGE_LIST:!1,run_parse_ip_range:function(a,b){var c,d=b[0],e=b[1],f=b[2],g=/^\s*((?:\d{1,3}\.){3}\d{1,3})\/(\d\d?)\s*$/,h=/^\s*((?:\d{1,3}\.){3}\d{1,3})\s*-\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/,i=/^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\/(\d\d?\d?)\s*$/i,j=/^\s*(((?=.*::)(?!.*::[^-]+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*-\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\17)::|:\b|(?![\dA-F])))|(?!\16\17)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i;return(c=g.exec(a))?IP._ipv4_cidr_range(c,d,e,f):(c=h.exec(a))?IP._ipv4_hyphenated_range(c,d,e,f):(c=i.exec(a))?IP._ipv6_cidr_range(c,d):(c=j.exec(a))?IP._ipv6_hyphenated_range(c,d):"Invalid input.\n\nEnter either a CIDR range (e.g. 10.0.0.0/24) or a hyphenated range (e.g. 10.0.0.0 - 10.0.1.0). IPv6 also supported."},IPv4_REGEX:/^\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/,IPv6_REGEX:/^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i,run_parse_ipv6:function(a,b){var c,d="";if(!(c=IP.IPv6_REGEX.exec(a)))return"Invalid IPv6 address";var e=IP._str_to_ipv6(c[1]),f=IP._ipv6_to_str(e),g=IP._ipv6_to_str(e,!0);if(d+="Longhand: "+f+"\nShorthand: "+g+"\n","::"===g)d+="\nUnspecified address corresponding to 0.0.0.0/32 in IPv4.",d+="\nUnspecified address range: ::/128";else if("::1"===g)d+="\nLoopback address to the local host corresponding to 127.0.0.1/8 in IPv4.",d+="\nLoopback addresses range: ::1/128";else if(0===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&65535===e[5])d+="\nIPv4-mapped IPv6 address detected. IPv6 clients will be handled natively by default, and IPv4 clients appear as IPv6 clients at their IPv4-mapped IPv6 address.",d+="\nMapped IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\nIPv4-mapped IPv6 addresses range: ::ffff:0:0/96";else if(0===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&65535===e[4]&&0===e[5])d+="\nIPv4-translated address detected. Used by Stateless IP/ICMP Translation (SIIT). See RFCs 6145 and 6052 for more details.",d+="\nTranslated IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\nIPv4-translated addresses range: ::ffff:0:0:0/96";else if(256===e[0])d+="\nDiscard prefix detected. This is used when forwarding traffic to a sinkhole router to mitigate the effects of a denial-of-service attack. See RFC 6666 for more details.",d+="\nDiscard range: 100::/64";else if(100===e[0]&&65435===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&0===e[5])d+="\n'Well-Known' prefix for IPv4/IPv6 translation detected. See RFC 6052 for more details.",d+="\nTranslated IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\n'Well-Known prefix range: 64:ff9b::/96";else if(8193===e[0]&&0===e[1]){d+="\nTeredo tunneling IPv6 address detected\n";var h=(e[2]<<16)+e[3],i=65535&~e[5],j=~((e[6]<<16)+e[7]),k=e[4]>>>15&1,l=e[4]>>>14&1,m=e[4]>>>10&15,n=e[4]>>>8&3,o=255&e[4];d+="\nServer IPv4 address: "+IP._ipv4_to_str(h)+"\nClient IPv4 address: "+IP._ipv4_to_str(j)+"\nClient UDP port: "+i+"\nFlags:\n\tCone: "+k,d+=k?" (Client is behind a cone NAT)":" (Client is not behind a cone NAT)",d+="\n\tR: "+l,l&&(d+=" Error: This flag should be set to 0. See RFC 5991 and RFC 4380."),d+="\n\tRandom1: "+Utils.bin(m,4)+"\n\tUG: "+Utils.bin(n,2),n&&(d+=" Error: This flag should be set to 00. See RFC 4380."),d+="\n\tRandom2: "+Utils.bin(o,8),d+=!l&&!n&&m&&o?"\n\nThis is a valid Teredo address which complies with RFC 4380 and RFC 5991.":l||n?"\n\nThis is an invalid Teredo address.":"\n\nThis is a valid Teredo address which complies with RFC 4380, however it does not comply with RFC 5991 (Teredo Security Updates) as there are no randomised bits in the flag field.",d+="\n\nTeredo prefix range: 2001::/32"}else if(8193===e[0]&&2===e[1]&&0===e[2])d+="\nAssigned to the Benchmarking Methodology Working Group (BMWG) for benchmarking IPv6. Corresponds to 198.18.0.0/15 for benchmarking IPv4. See RFC 5180 for more details.",d+="\nBMWG range: 2001:2::/48";else if(8193===e[0]&&e[1]>=16&&e[1]<=31)d+="\nDeprecated, previously ORCHIDv1 (Overlay Routable Cryptographic Hash Identifiers).\nORCHIDv1 range: 2001:10::/28\nORCHIDv2 now uses 2001:20::/28.";else if(8193===e[0]&&e[1]>=32&&e[1]<=47)d+="\nORCHIDv2 (Overlay Routable Cryptographic Hash Identifiers).\nThese are non-routed IPv6 addresses used for Cryptographic Hash Identifiers.",d+="\nORCHIDv2 range: 2001:20::/28";else if(8193===e[0]&&3512===e[1])d+="\nThis is a documentation IPv6 address. This range should be used whenever an example IPv6 address is given or to model networking scenarios. Corresponds to 192.0.2.0/24, 198.51.100.0/24, and 203.0.113.0/24 in IPv4.",d+="\nDocumentation range: 2001:db8::/32";else if(8194===e[0]){d+="\n6to4 transition IPv6 address detected. See RFC 3056 for more details.\n6to4 prefix range: 2002::/16";var p=IP._ipv4_to_str((e[1]<<16)+e[2]),q=e[3],r=e[4].toString(16)+e[5].toString(16)+e[6].toString(16)+e[7].toString(16),s=new BigInteger(r,16);d+="\n\nEncapsulated IPv4 address: "+p+"\nSLA ID: "+q+"\nInterface ID (base 16): "+r+"\nInterface ID (base 10): "+s.toString()}else e[0]>=64512&&e[0]<=65023?(d+="\nThis is a unique local address comparable to the IPv4 private addresses 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. See RFC 4193 for more details.",d+="\nUnique local addresses range: fc00::/7"):e[0]>=65152&&e[0]<=65215?(d+="\nThis is a link-local address comparable to the auto-configuration addresses 169.254.0.0/16 in IPv4.",d+="\nLink-local addresses range: fe80::/10"):e[0]>=65280&&(d+="\nThis is a reserved multicast address.",d+="\nMulticast addresses range: ff00::/8");return d},IP_FORMAT_LIST:["Dotted Decimal","Decimal","Hex"],run_change_ip_format:function(a,b){for(var c=b[0],d=b[1],e=a.split("\n"),f="",g=0,h=0;h<e.length;h++)if(""!==e[h]){var i=[];if(c!==d){switch(c){case"Dotted Decimal":var j=e[h].split(".");for(g=0;g<j.length;g++)i.push(parseInt(j[g],10));break;case"Decimal":var k=e[h].toString();i.push(k>>24&255),i.push(k>>16&255),i.push(k>>8&255),i.push(255&k);break;case"Hex":i=Utils.hex_to_byte_array(e[h]);break;default:throw"Unsupported input IP format"}switch(d){case"Dotted Decimal":var l="";for(g=0;g<i.length;g++)l+=i[g]+".";f+=l.slice(0,l.length-1)+"\n";break;case"Decimal":var m=(i[0]<<24|i[1]<<16|i[2]<<8|i[3])>>>0;f+=m.toString()+"\n";break;case"Hex":var n="";for(g=0;g<i.length;g++)n+=Utils.hex(i[g]);f+=n+"\n";break;default:throw"Unsupported output IP format"}}else f+=e[h]+"\n"}return f.slice(0,f.length-1)},DELIM_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon"],GROUP_CIDR:24,GROUP_ONLY_SUBNET:!1,run_group_ips:function(a,b){var c=Utils.char_rep[b[0]],d=b[1],e=b[2],f=d<32?~(4294967295>>>d):4294967295,g=IP._gen_ipv6_mask(d),h=a.split(c),i={},j={},k=null,l="",m=null,n=null,o="";if(d<0||d>127)return"CIDR must be less than 32 for IPv4 or 128 for IPv6";for(var p=0;p<h.length;p++)if(k=IP.IPv4_REGEX.exec(h[p]))m=IP._str_to_ipv4(k[1])>>>0,n=m&f,i.hasOwnProperty(n)?i[n].push(m):i[n]=[m];else if(k=IP.IPv6_REGEX.exec(h[p])){m=IP._str_to_ipv6(k[1]),n=[],o="";for(var q=0;q<8;q++)n.push(m[q]&g[q]);o=IP._ipv6_to_str(n,!0), -j.hasOwnProperty(o)?j[o].push(m):j[o]=[m]}for(n in i)if(i[n]=i[n].sort(),l+=IP._ipv4_to_str(n)+"/"+d+"\n",!e){for(p=0;p<i[n].length;p++)l+=" "+IP._ipv4_to_str(i[n][p])+"\n";l+="\n"}for(o in j)if(l+=o+"/"+d+"\n",!e){for(p=0;p<j[o].length;p++)l+=" "+IP._ipv6_to_str(j[o][p],!0)+"\n";l+="\n"}return l},_LARGE_RANGE_ERROR:'The specified range contains more than 65,536 addresses. Running this query could crash your browser. If you want to run it, select the "Allow large queries" option. You are advised to turn off "Auto Bake" whilst editing large ranges.',_ipv4_cidr_range:function(a,b,c,d){var e="",f=IP._str_to_ipv4(a[1]),g=parseInt(a[2],10);if(g<0||g>31)return"IPv4 CIDR must be less than 32";var h=~(4294967295>>>g),i=f&h,j=i|~h;return b&&(e+="Network: "+IP._ipv4_to_str(f)+"\n",e+="CIDR: "+g+"\n",e+="Mask: "+IP._ipv4_to_str(h)+"\n",e+="Range: "+IP._ipv4_to_str(i)+" - "+IP._ipv4_to_str(j)+"\n",e+="Total addresses in range: "+((j-i>>>0)+1)+"\n\n"),c&&(e+=g>=16||d?IP._generate_ipv4_range(i,j).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_cidr_range:function(a,b){var c="",d=IP._str_to_ipv6(a[1]),e=parseInt(a[a.length-1],10);if(e<0||e>127)return"IPv6 CIDR must be less than 128";for(var f=IP._gen_ipv6_mask(e),g=new Array(8),h=new Array(8),i="",j=new Array(128),k=0;k<8;k++)if(g[k]=d[k]&f[k],h[k]=g[k]|65535&~f[k],i=(h[k]-g[k]).toString(2),"0"!==i)for(var l=0;l<i.length;l++)j[16*k+16-(i.length-l)]=i[l];return b&&(c+="Network: "+IP._ipv6_to_str(d)+"\n",c+="Shorthand: "+IP._ipv6_to_str(d,!0)+"\n",c+="CIDR: "+e+"\n",c+="Mask: "+IP._ipv6_to_str(f)+"\n",c+="Range: "+IP._ipv6_to_str(g)+" - "+IP._ipv6_to_str(h)+"\n",c+="Total addresses in range: "+(parseInt(j.join(""),2)+1)+"\n\n"),c},_gen_ipv6_mask:function(a){for(var b,c=new Array(8),d=0;d<8;d++)a>16*(d+1)?c[d]=65535:(b=a-16*d,b<0&&(b=0),c[d]=~(65535>>>b|4294901760));return c},_ipv4_hyphenated_range:function(a,b,c,d){for(var e="",f=IP._str_to_ipv4(a[1]),g=IP._str_to_ipv4(a[2]),h=f^g,i=32,j=0;0!==h;)h>>=1,i--,j=j<<1|1;j=~j>>>0;var k=f&j,l=k&j,m=l|~j;return b&&(e+="Minimum subnet required to hold this range:\n",e+="\tNetwork: "+IP._ipv4_to_str(k)+"\n",e+="\tCIDR: "+i+"\n",e+="\tMask: "+IP._ipv4_to_str(j)+"\n",e+="\tSubnet range: "+IP._ipv4_to_str(l)+" - "+IP._ipv4_to_str(m)+"\n",e+="\tTotal addresses in subnet: "+((m-l>>>0)+1)+"\n\n",e+="Range: "+IP._ipv4_to_str(f)+" - "+IP._ipv4_to_str(g)+"\n",e+="Total addresses in range: "+((g-f>>>0)+1)+"\n\n"),c&&(e+=g-f>>>0<=65536||d?IP._generate_ipv4_range(f,g).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_hyphenated_range:function(a,b){for(var c="",d=IP._str_to_ipv6(a[1]),e=IP._str_to_ipv6(a[14]),f="",g=new Array(128),h=0;h<128;h++)g[h]="0";for(h=0;h<8;h++)if(f=(e[h]-d[h]).toString(2),"0"!==f)for(var i=0;i<f.length;i++)g[16*h+16-(f.length-i)]=f[i];return b&&(c+="Range: "+IP._ipv6_to_str(d)+" - "+IP._ipv6_to_str(e)+"\n",c+="Shorthand range: "+IP._ipv6_to_str(d,!0)+" - "+IP._ipv6_to_str(e,!0)+"\n",c+="Total addresses in range: "+(parseInt(g.join(""),2)+1)+"\n\n"),c},_str_to_ipv4:function(a){function b(a){if(4!==a.length)throw"More than 4 blocks.";for(var b=[],c=0;c<4;c++)if(b[c]=parseInt(a[c],10),b[c]<0||b[c]>255)throw"Block out of range.";return b}var c=a.split("."),d=b(c),e=0;return e+=d[0]<<24,e+=d[1]<<16,e+=d[2]<<8,e+=d[3]},_ipv4_to_str:function(a){var b=a>>24&255,c=a>>16&255,d=a>>8&255,e=255&a;return b+"."+c+"."+d+"."+e},_str_to_ipv6:function(a){function b(a){if(a.length<3||a.length>8)throw"Badly formatted IPv6 address.";for(var b=[],c=0;c<a.length;c++)if(b[c]=parseInt(a[c],16),b[c]<0||b[c]>65535)throw"Block out of range.";return b}for(var c=a.split(":"),d=b(c),e=0,f=new Array(8),g=0;g<8;g++)isNaN(d[e])?(f[g]=0,g===8-d.slice(e).length&&e++):(f[g]=d[e],e++);return f},_ipv6_to_str:function(a,b){var c="",d=0;if(b){var e=-1,f=-1,g=0,h=-1;for(d=0;d<8;d++)0===a[d]&&h===d-1?h=d:0===a[d]&&(g=d,h=d),h>=0&&h-g>f-e&&(e=g,f=h);for(d=0;d<8;d++)d!==e?c+=Utils.hex(a[d],1)+":":(c+=":",d=f,7===f&&(c+=":"));":"===c[0]&&(c=":"+c)}else for(d=0;d<8;d++)c+=Utils.hex(a[d],4)+":";return c.slice(0,c.length-1)},_generate_ipv4_range:function(a,b){var c=[];if(b>=a)for(;a<=b;a++)c.push(IP._ipv4_to_str(a));else c[0]="Second IP address smaller than first.";return c}},JS={PARSE_LOC:!1,PARSE_RANGE:!1,PARSE_TOKENS:!1,PARSE_COMMENT:!1,PARSE_TOLERANT:!1,run_parse:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h={},i={loc:c,range:d,tokens:e,comment:f,tolerant:g};return h=esprima.parse(a,i),JSON.stringify(h,null,2)},BEAUTIFY_INDENT:"\\t",BEAUTIFY_QUOTES:["Auto","Single","Double"],BEAUTIFY_SEMICOLONS:!0,BEAUTIFY_COMMENT:!0,run_beautify:function(a,b){var c,d=b[0]||JS.BEAUTIFY_INDENT,e=b[1].toLowerCase(),f=b[2],g=b[3],h="";try{c=esprima.parse(a,{range:!0,tokens:!0,comment:!0});var i={format:{indent:{style:d},quotes:e,semicolons:f},comment:g};i.comment&&(c=escodegen.attachComments(c,c.comments,c.tokens)),h=escodegen.generate(c,i)}catch(a){throw"Unable to parse JavaScript.<br>"+a.message}return h},run_minify:function(a,b){var c="",d=esprima.parse(a),e=esmangle.optimize(d,null),f=esmangle.mangle(e);return c=escodegen.generate(f,{format:{renumber:!0,hexadecimal:!0,escapeless:!0,compact:!0,semicolons:!1,parentheses:!1}})}},MAC={OUTPUT_CASE:["Both","Upper only","Lower only"],NO_DELIM:!0,DASH_DELIM:!0,COLON_DELIM:!0,CISCO_STYLE:!1,run_format:function(a,b){if(!a)return"";var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=[],i=a.toLowerCase().split(/[,\s\r\n]+/);return i.forEach(function(a){var b=a.replace(/[:.-]+/g,""),i=b.replace(/(.{2}(?=.))/g,"$1-"),j=b.replace(/(.{2}(?=.))/g,"$1:"),k=b.replace(/(.{4}(?=.))/g,"$1.");"Lower only"===c?(d&&h.push(b),e&&h.push(i),f&&h.push(j),g&&h.push(k)):"Upper only"===c?(d&&h.push(b.toUpperCase()),e&&h.push(i.toUpperCase()),f&&h.push(j.toUpperCase()),g&&h.push(k.toUpperCase())):(d&&h.push(b,b.toUpperCase()),e&&h.push(i,i.toUpperCase()),f&&h.push(j,j.toUpperCase()),g&&h.push(k,k.toUpperCase())),h.push("")}),h.join("\n")}},Numberwang={run:function(a,b){if(!a)return"Let's play Wangernumb!";var c=a.match(/\d+/);return c?c[0]+"! That's Numberwang!":"Sorry, that's not Numberwang. Let's rotate the board!"}},OS={run_parse_unix_perms:function(a,b){var c={d:!1,sl:!1,np:!1,s:!1,cd:!1,bd:!1,dr:!1,sb:!1,su:!1,sg:!1,ru:!1,wu:!1,eu:!1,rg:!1,wg:!1,eg:!1,ro:!1,wo:!1,eo:!1},d=0,e=0,f=0,g=0,h="",i=null,j=null;if(0===a.search(/\s*[0-7]{1,4}\s*/i))i=a.match(/\s*([0-7]{1,4})\s*/i)[1],4===i.length?(d=parseInt(i[0],8),e=parseInt(i[1],8),f=parseInt(i[2],8),g=parseInt(i[3],8)):(i.length>0&&(e=parseInt(i[0],8)),i.length>1&&(f=parseInt(i[1],8)),i.length>2&&(g=parseInt(i[2],8))),c.su=d>>2&1,c.sg=d>>1&1,c.sb=1&d,c.ru=e>>2&1,c.wu=e>>1&1,c.eu=1&e,c.rg=f>>2&1,c.wg=f>>1&1,c.eg=1&f,c.ro=g>>2&1,c.wo=g>>1&1,c.eo=1&g;else{if(0!==a.search(/\s*[dlpcbDrwxsStT-]{1,10}\s*/))return"Invalid input format.\nPlease enter the permissions in either octal (e.g. 755) or textual (e.g. drwxr-xr-x) format.";switch(j=a.match(/\s*([dlpcbDrwxsStT-]{1,10})\s*/)[1],j[0]){case"d":c.d=!0;break;case"l":c.sl=!0;break;case"p":c.np=!0;break;case"s":c.s=!0;break;case"c":c.cd=!0;break;case"b":c.bd=!0;break;case"D":c.dr=!0}if(j.length>1&&(c.ru="r"===j[1]),j.length>2&&(c.wu="w"===j[2]),j.length>3)switch(j[3]){case"x":c.eu=!0;break;case"s":c.eu=!0,c.su=!0;break;case"S":c.su=!0}if(j.length>4&&(c.rg="r"===j[4]),j.length>5&&(c.wg="w"===j[5]),j.length>6)switch(j[6]){case"x":c.eg=!0;break;case"s":c.eg=!0,c.sg=!0;break;case"S":c.sg=!0}if(j.length>7&&(c.ro="r"===j[7]),j.length>8&&(c.wo="w"===j[8]),j.length>9)switch(j[9]){case"x":c.eo=!0;break;case"t":c.eo=!0,c.sb=!0;break;case"T":c.sb=!0}}return h+="Textual representation: "+OS._perms_to_str(c),h+="\nOctal representation: "+OS._perms_to_octal(c),j&&(h+="\nFile type: "+OS._ft_from_perms(c)),c.su&&(h+="\nThe setuid flag is set"),c.sg&&(h+="\nThe setgid flag is set"),c.sb&&(h+="\nThe sticky bit is set"),h+="\n\n +---------+-------+-------+-------+\n | | User | Group | Other |\n +---------+-------+-------+-------+\n | Read | "+(c.ru?"X":" ")+" | "+(c.rg?"X":" ")+" | "+(c.ro?"X":" ")+" |\n +---------+-------+-------+-------+\n | Write | "+(c.wu?"X":" ")+" | "+(c.wg?"X":" ")+" | "+(c.wo?"X":" ")+" |\n +---------+-------+-------+-------+\n | Execute | "+(c.eu?"X":" ")+" | "+(c.eg?"X":" ")+" | "+(c.eo?"X":" ")+" |\n +---------+-------+-------+-------+\n"},_perms_to_str:function(a){var b="",c="-";return a.d&&(c="d"),a.sl&&(c="l"),a.np&&(c="p"),a.s&&(c="s"),a.cd&&(c="c"),a.bd&&(c="b"),a.dr&&(c="D"),b=c,b+=a.ru?"r":"-",b+=a.wu?"w":"-",b+=a.eu&&a.su?"s":a.su?"S":a.eu?"x":"-",b+=a.rg?"r":"-",b+=a.wg?"w":"-",b+=a.eg&&a.sg?"s":a.sg?"S":a.eg?"x":"-",b+=a.ro?"r":"-",b+=a.wo?"w":"-",b+=a.eo&&a.sb?"t":a.sb?"T":a.eo?"x":"-"},_perms_to_octal:function(a){var b=0,c=0,d=0,e=0;return a.su&&(b+=4),a.sg&&(b+=2),a.sb&&(b+=1),a.ru&&(c+=4),a.wu&&(c+=2),a.eu&&(c+=1),a.rg&&(d+=4),a.wg&&(d+=2),a.eg&&(d+=1),a.ro&&(e+=4),a.wo&&(e+=2),a.eo&&(e+=1),b.toString()+c.toString()+d.toString()+e.toString()},_ft_from_perms:function(a){return a.d?"Directory":a.sl?"Symbolic link":a.np?"Named pipe":a.s?"Socket":a.cd?"Character device":a.bd?"Block device":a.dr?"Door":"Regular file"}},PublicKey={X509_INPUT_FORMAT:["PEM","DER Hex","Base64","Raw"],run_parse_x509:function(a,b){var c=new X509,d=b[0];if(!a.length)return"No input";switch(d){case"DER Hex":a=a.replace(/\s/g,""),c.hex=a,c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(a,"CERTIFICATE");break;case"PEM":c.hex=X509.pemToHex(a),c.pem=a;break;case"Base64":c.hex=Utils.to_hex(Utils.from_base64(a,null,"byte_array"),""),c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(c.hex,"CERTIFICATE");break;case"Raw":c.hex=Utils.to_hex(Utils.str_to_byte_array(a),""),c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(c.hex,"CERTIFICATE");break;default:throw"Undefined input format"}var e=ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,0,0]),f=c.getSerialNumberHex(),g=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,2,0]))),h=c.getIssuerString(),i=c.getNotBefore(),j=c.getNotAfter(),k=c.getSubjectString(),l=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,6,0,0]))),m=X509.getPublicKeyFromCertPEM(c.pem),n=[],o="",p=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[1,0]))),q=ASN1HEX.getDecendantHexVByNthList(c.hex,0,[2]).substr(2),r="",s=ASN1HEX.dump(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,7]));"EC"===m.type?(n.push({key:"Curve Name",value:m.curveName}),n.push({key:"Length",value:(new BigInteger(m.pubKeyHex,16).bitLength()-3)/2+" bits"}),n.push({key:"pub",value:PublicKey._format_byte_str(m.pubKeyHex,16,18)})):"DSA"===m.type?(n.push({key:"pub",value:PublicKey._format_byte_str(m.y.toString(16),16,18)}),n.push({key:"P",value:PublicKey._format_byte_str(m.p.toString(16),16,18)}),n.push({key:"Q",value:PublicKey._format_byte_str(m.q.toString(16),16,18)}),n.push({key:"G",value:PublicKey._format_byte_str(m.g.toString(16),16,18)})):m.e?(n.push({key:"Length",value:m.n.bitLength()+" bits"}),n.push({key:"Modulus",value:PublicKey._format_byte_str(m.n.toString(16),16,18)}),n.push({key:"Exponent",value:m.e+" (0x"+m.e.toString(16)+")"})):n.push({key:"Error",value:"Unknown Public Key type"}),r=0===ASN1HEX.dump(q).indexOf("SEQUENCE")?" r: "+PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(q,0,[0]),16,18)+"\n s: "+PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(q,0,[1]),16,18)+"\n":" Signature: "+PublicKey._format_byte_str(q,16,18)+"\n";for(var t=0;t<n.length;t++)o+=" "+n[t].key+":"+Utils.pad_left(n[t].value+"\n",18-(n[t].key.length+3)+n[t].value.length+1," ");var u=PublicKey._format_dn_str(h,2),v=PublicKey._format_date(i),w=PublicKey._format_date(j),x=PublicKey._format_dn_str(k,2),y="Version: "+(parseInt(e,16)+1)+" (0x"+e+")\nSerial number: "+new BigInteger(f,16).toString()+" (0x"+f+")\nAlgorithm ID: "+g+"\nValidity\n Not Before: "+v+" (dd-mm-yy hh:mm:ss) ("+i+")\n Not After: "+w+" (dd-mm-yy hh:mm:ss) ("+j+")\nIssuer\n"+u+"Subject\n"+x+"Public Key\n Algorithm: "+l+"\n"+o+"Certificate Signature\n Algorithm: "+p+"\n"+r+"\nExtensions (parsed ASN.1)\n"+s;return y},run_pem_to_hex:function(a,b){return a.indexOf("-----BEGIN")<0&&(a="-----BEGIN CERTIFICATE-----"+a),a.indexOf("-----END")<0&&(a+="-----END CERTIFICATE-----"),KEYUTIL.getHexFromPEM(a)},PEM_HEADER_STRING:"CERTIFICATE",run_hex_to_pem:function(a,b){return KJUR.asn1.ASN1Util.getPEMStringFromHex(a.replace(/\s/g,""),b[0])},run_hex_to_object_identifier:function(a,b){return KJUR.asn1.ASN1Util.oidHexToInt(a.replace(/\s/g,""))},run_object_identifier_to_hex:function(a,b){return KJUR.asn1.ASN1Util.oidIntToHex(a)},ASN1_TRUNCATE_LENGTH:32,run_parse_asn1_hex_string:function(a,b){var c=b[1],d=b[0];return ASN1HEX.dump(a.replace(/\s/g,""),{ommit_long_octet:c},d)},_format_dn_str:function(a,b){for(var c,d,e,f="",g=a.split(",/|"),h=0,i=0;i<g.length;i++)g[i].length&&(c=g[i].split("=")[0],h=c.length>h?c.length:h);for(i=0;i<g.length;i++)g[i].length&&(c=g[i].split("=")[0],d=g[i].split("=")[1],e=Utils.pad_right(c,h)+" = "+d+"\n",f+=Utils.pad_left(e,b+e.length," "));return f},_format_byte_str:function(a,b,c){a=Utils.to_hex(Utils.from_hex(a),":"),b=3*b;for(var d="",e=0;e<a.length;e+=b){var f=a.slice(e,e+b)+"\n";d+=0===e?f:Utils.pad_left(f,c+f.length," ")}return d.slice(0,d.length-1)},_format_date:function(a){return a[4]+a[5]+"/"+a[2]+a[3]+"/"+a[0]+a[1]+" "+a[6]+a[7]+":"+a[8]+a[9]+":"+a[10]+a[11]}};X509.hex2dn=function(a){for(var b="",c=ASN1HEX.getPosArrayOfChildren_AtObj(a,0),d=0;d<c.length;d++){var e=ASN1HEX.getHexOfTLV_AtObj(a,c[d]);b=b+",/|"+X509.hex2rdn(e)}return b},X509.DN_ATTRHEX={"0603550403":"commonName","0603550404":"surname","0603550406":"countryName","0603550407":"localityName","0603550408":"stateOrProvinceName","0603550409":"streetAddress","060355040a":"organizationName","060355040b":"organizationalUnitName","060355040c":"title","0603550414":"telephoneNumber","060355042a":"givenName","06032b06010505070201":"id_certificatePolicies","06036086480186f8420101":"netscape-cert-type","06036086480186f8420102":"netscape-base-url","06036086480186f8420103":"netscape-revocation-url","06036086480186f8420104":"netscape-ca-revocation-url","06036086480186f8420107":"netscape-cert-renewal-url","06036086480186f8420108":"netscape-ca-policy-url","06036086480186f842010c":"netscape-ssl-server-name","06036086480186f842010d":"netscape-comment","0603604c010201":"A1","0603604c010203":"A3","0603604c01020110":"Certification Practice Statement pointer","0603604c010301":"Dados do cert parte 1","0603604c010305":"Dados do cert parte 2","0603604c010306":"Dados do cert parte 3","06030992268993f22c640119":"domainComponent","06032a24a0f2a07d01010a":"Signet pilot","06032a24a0f2a07d01010b":"Signet intraNet","06032a24a0f2a07d010102":"Signet personal","06032a24a0f2a07d010114":"Signet securityPolicy","06032a24a0f2a07d010103":"Signet business","06032a24a0f2a07d010104":"Signet legal","06032a24a497a35301640101":"Certificates Australia policyIdentifier","06032a85702201":"seis-cp","06032a8570220101":"SEIS certificatePolicy-s10","06032a85702202":"SEIS pe","06032a85702203":"SEIS at","06032a8570220301":"SEIS at-personalIdentifier","06032a8648ce380201":"holdinstruction-none","06032a8648ce380202":"holdinstruction-callissuer","06032a8648ce380203":"holdinstruction-reject","06032a8648ce380401":"dsa","06032a8648ce380403":"dsaWithSha1","06032a8648ce3d01":"fieldType","06032a8648ce3d0101":"prime-field","06032a8648ce3d0102":"characteristic-two-field","06032a8648ce3d010201":"ecPublicKey","06032a8648ce3d010203":"characteristic-two-basis","06032a8648ce3d01020301":"onBasis","06032a8648ce3d01020302":"tpBasis","06032a8648ce3d01020303":"ppBasis","06032a8648ce3d02":"publicKeyType","06032a8648ce3d0201":"ecPublicKey","06032a8648ce3e0201":"dhPublicNumber","06032a864886f67d07":"nsn","06032a864886f67d0741":"nsn-ce","06032a864886f67d074100":"entrustVersInfo","06032a864886f67d0742":"nsn-alg","06032a864886f67d07420a":"cast5CBC","06032a864886f67d07420b":"cast5MAC","06032a864886f67d07420c":"pbeWithMD5AndCAST5-CBC","06032a864886f67d07420d":"passwordBasedMac","06032a864886f67d074203":"cast3CBC","06032a864886f67d0743":"nsn-oc","06032a864886f67d074300":"entrustUser","06032a864886f67d0744":"nsn-at","06032a864886f67d074400":"entrustCAInfo","06032a864886f67d07440a":"attributeCertificate","06032a864886f70d0101":"pkcs-1","06032a864886f70d010101":"rsaEncryption","06032a864886f70d010102":"md2withRSAEncryption","06032a864886f70d010103":"md4withRSAEncryption","06032a864886f70d010104":"md5withRSAEncryption","06032a864886f70d010105":"sha1withRSAEncryption","06032a864886f70d010106":"rsaOAEPEncryptionSET","06032a864886f70d010910020b":"SMIMEEncryptionKeyPreference","06032a864886f70d010c":"pkcs-12","06032a864886f70d010c01":"pkcs-12-PbeIds","06032a864886f70d010c0101":"pbeWithSHAAnd128BitRC4","06032a864886f70d010c0102":"pbeWithSHAAnd40BitRC4","06032a864886f70d010c0103":"pbeWithSHAAnd3-KeyTripleDES-CBC","06032a864886f70d010c0104":"pbeWithSHAAnd2-KeyTripleDES-CBC","06032a864886f70d010c0105":"pbeWithSHAAnd128BitRC2-CBC","06032a864886f70d010c0106":"pbeWithSHAAnd40BitRC2-CBC","06032a864886f70d010c0a":"pkcs-12Version1","06032a864886f70d010c0a01":"pkcs-12BadIds","06032a864886f70d010c0a0101":"pkcs-12-keyBag","06032a864886f70d010c0a0102":"pkcs-12-pkcs-8ShroudedKeyBag","06032a864886f70d010c0a0103":"pkcs-12-certBag","06032a864886f70d010c0a0104":"pkcs-12-crlBag","06032a864886f70d010c0a0105":"pkcs-12-secretBag","06032a864886f70d010c0a0106":"pkcs-12-safeContentsBag","06032a864886f70d010c02":"pkcs-12-ESPVKID","06032a864886f70d010c0201":"pkcs-12-PKCS8KeyShrouding","06032a864886f70d010c03":"pkcs-12-BagIds","06032a864886f70d010c0301":"pkcs-12-keyBagId","06032a864886f70d010c0302":"pkcs-12-certAndCRLBagId","06032a864886f70d010c0303":"pkcs-12-secretBagId","06032a864886f70d010c0304":"pkcs-12-safeContentsId","06032a864886f70d010c0305":"pkcs-12-pkcs-8ShroudedKeyBagId","06032a864886f70d010c04":"pkcs-12-CertBagID","06032a864886f70d010c0401":"pkcs-12-X509CertCRLBagID","06032a864886f70d010c0402":"pkcs-12-SDSICertBagID","06032a864886f70d010c05":"pkcs-12-OID","06032a864886f70d010c0501":"pkcs-12-PBEID","06032a864886f70d010c050101":"pkcs-12-PBEWithSha1And128BitRC4","06032a864886f70d010c050102":"pkcs-12-PBEWithSha1And40BitRC4","06032a864886f70d010c050103":"pkcs-12-PBEWithSha1AndTripleDESCBC","06032a864886f70d010c050104":"pkcs-12-PBEWithSha1And128BitRC2CBC","06032a864886f70d010c050105":"pkcs-12-PBEWithSha1And40BitRC2CBC","06032a864886f70d010c050106":"pkcs-12-PBEWithSha1AndRC4","06032a864886f70d010c050107":"pkcs-12-PBEWithSha1AndRC2CBC","06032a864886f70d010c0502":"pkcs-12-EnvelopingID","06032a864886f70d010c050201":"pkcs-12-RSAEncryptionWith128BitRC4","06032a864886f70d010c050202":"pkcs-12-RSAEncryptionWith40BitRC4","06032a864886f70d010c050203":"pkcs-12-RSAEncryptionWithTripleDES","06032a864886f70d010c0503":"pkcs-12-SignatureID","06032a864886f70d010c050301":"pkcs-12-RSASignatureWithSHA1Digest","06032a864886f70d0103":"pkcs-3","06032a864886f70d010301":"dhKeyAgreement","06032a864886f70d0105":"pkcs-5","06032a864886f70d010501":"pbeWithMD2AndDES-CBC","06032a864886f70d01050a":"pbeWithSHAAndDES-CBC","06032a864886f70d010503":"pbeWithMD5AndDES-CBC","06032a864886f70d010504":"pbeWithMD2AndRC2-CBC","06032a864886f70d010506":"pbeWithMD5AndRC2-CBC","06032a864886f70d010509":"pbeWithMD5AndXOR","06032a864886f70d0107":"pkcs-7","06032a864886f70d010701":"data","06032a864886f70d010702":"signedData","06032a864886f70d010703":"envelopedData","06032a864886f70d010704":"signedAndEnvelopedData","06032a864886f70d010705":"digestData","06032a864886f70d010706":"encryptedData","06032a864886f70d010707":"dataWithAttributes","06032a864886f70d010708":"encryptedPrivateKeyInfo","06032a864886f70d0109":"pkcs-9","06032a864886f70d010901":"emailAddress","06032a864886f70d01090a":"issuerAndSerialNumber","06032a864886f70d01090b":"passwordCheck","06032a864886f70d01090c":"publicKey","06032a864886f70d01090d":"signingDescription","06032a864886f70d01090e":"extensionReq","06032a864886f70d01090f":"sMIMECapabilities","06032a864886f70d01090f01":"preferSignedData","06032a864886f70d01090f02":"canNotDecryptAny","06032a864886f70d01090f03":"receiptRequest","06032a864886f70d01090f04":"receipt","06032a864886f70d01090f05":"contentHints","06032a864886f70d01090f06":"mlExpansionHistory","06032a864886f70d010910":"id-sMIME","06032a864886f70d01091000":"id-mod","06032a864886f70d0109100001":"id-mod-cms","06032a864886f70d0109100002":"id-mod-ess","06032a864886f70d01091001":"id-ct","06032a864886f70d0109100101":"id-ct-receipt","06032a864886f70d01091002":"id-aa","06032a864886f70d0109100201":"id-aa-receiptRequest","06032a864886f70d0109100202":"id-aa-securityLabel","06032a864886f70d0109100203":"id-aa-mlExpandHistory","06032a864886f70d0109100204":"id-aa-contentHint","06032a864886f70d010902":"unstructuredName","06032a864886f70d010914":"friendlyName","06032a864886f70d010915":"localKeyID","06032a864886f70d010916":"certTypes","06032a864886f70d01091601":"x509Certificate","06032a864886f70d01091602":"sdsiCertificate","06032a864886f70d010917":"crlTypes","06032a864886f70d01091701":"x509Crl","06032a864886f70d010903":"contentType","06032a864886f70d010904":"messageDigest","06032a864886f70d010905":"signingTime","06032a864886f70d010906":"countersignature","06032a864886f70d010907":"challengePassword","06032a864886f70d010908":"unstructuredAddress","06032a864886f70d010909":"extendedCertificateAttributes","06032a864886f70d02":"digestAlgorithm","06032a864886f70d0202":"md2","06032a864886f70d0204":"md4","06032a864886f70d0205":"md5","06032a864886f70d03":"encryptionAlgorithm","06032a864886f70d030a":"desCDMF","06032a864886f70d0302":"rc2CBC","06032a864886f70d0303":"rc2ECB","06032a864886f70d0304":"rc4","06032a864886f70d0305":"rc4WithMAC","06032a864886f70d0306":"DESX-CBC","06032a864886f70d0307":"DES-EDE3-CBC","06032a864886f70d0308":"RC5CBC","06032a864886f70d0309":"RC5-CBCPad","06032a864886f7140403":"microsoftExcel","06032a864886f7140404":"titledWithOID","06032a864886f7140405":"microsoftPowerPoint","06032b81051086480954":"x9-84","06032b8105108648095400":"x9-84-Module","06032b810510864809540001":"x9-84-Biometrics","06032b810510864809540002":"x9-84-CMS","06032b810510864809540003":"x9-84-Identifiers","06032b8105108648095401":"biometric","06032b810510864809540100":"id-unknown-Type","06032b810510864809540101":"id-body-Odor","06032b81051086480954010a":"id-palm","06032b81051086480954010b":"id-retina","06032b81051086480954010c":"id-signature","06032b81051086480954010d":"id-speech-Pattern","06032b81051086480954010e":"id-thermal-Image","06032b81051086480954010f":"id-vein-Pattern","06032b810510864809540110":"id-thermal-Face-Image","06032b810510864809540111":"id-thermal-Hand-Image","06032b810510864809540112":"id-lip-Movement","06032b810510864809540113":"id-gait","06032b810510864809540102":"id-dna","06032b810510864809540103":"id-ear-Shape","06032b810510864809540104":"id-facial-Features","06032b810510864809540105":"id-finger-Image","06032b810510864809540106":"id-finger-Geometry","06032b810510864809540107":"id-hand-Geometry","06032b810510864809540108":"id-iris-Features","06032b810510864809540109":"id-keystroke-Dynamics","06032b8105108648095402":"processing-algorithm","06032b8105108648095403":"matching-method","06032b8105108648095404":"format-Owner","06032b810510864809540400":"cbeff-Owner","06032b810510864809540401":"ibia-Owner","06032b81051086480954040101":"id-ibia-SAFLINK","06032b8105108648095404010a":"id-ibia-SecuGen","06032b8105108648095404010b":"id-ibia-PreciseBiometric","06032b8105108648095404010c":"id-ibia-Identix","06032b8105108648095404010d":"id-ibia-DERMALOG","06032b8105108648095404010e":"id-ibia-LOGICO","06032b8105108648095404010f":"id-ibia-NIST","06032b81051086480954040110":"id-ibia-A3Vision","06032b81051086480954040111":"id-ibia-NEC","06032b81051086480954040112":"id-ibia-STMicroelectronics","06032b81051086480954040102":"id-ibia-Bioscrypt","06032b81051086480954040103":"id-ibia-Visionics","06032b81051086480954040104":"id-ibia-InfineonTechnologiesAG","06032b81051086480954040105":"id-ibia-IridianTechnologies","06032b81051086480954040106":"id-ibia-Veridicom","06032b81051086480954040107":"id-ibia-CyberSIGN","06032b81051086480954040108":"id-ibia-eCryp.","06032b81051086480954040109":"id-ibia-FingerprintCardsAB","06032b810510864809540402":"x9-Owner","06032b0e021a05":"sha","06032b0e03020101":"rsa","06032b0e03020a":"desMAC","06032b0e03020b":"rsaSignature","06032b0e03020c":"dsa","06032b0e03020d":"dsaWithSHA","06032b0e03020e":"mdc2WithRSASignature","06032b0e03020f":"shaWithRSASignature","06032b0e030210":"dhWithCommonModulus","06032b0e030211":"desEDE","06032b0e030212":"sha","06032b0e030213":"mdc-2","06032b0e030202":"md4WitRSA","06032b0e03020201":"sqmod-N","06032b0e030214":"dsaCommon","06032b0e030215":"dsaCommonWithSHA","06032b0e030216":"rsaKeyTransport","06032b0e030217":"keyed-hash-seal","06032b0e030218":"md2WithRSASignature","06032b0e030219":"md5WithRSASignature","06032b0e03021a":"sha1","06032b0e03021b":"dsaWithSHA1","06032b0e03021c":"dsaWithCommonSHA1","06032b0e03021d":"sha-1WithRSAEncryption","06032b0e030203":"md5WithRSA","06032b0e03020301":"sqmod-NwithRSA","06032b0e030204":"md4WithRSAEncryption","06032b0e030206":"desECB","06032b0e030207":"desCBC","06032b0e030208":"desOFB","06032b0e030209":"desCFB","06032b0e030301":"simple-strong-auth-mechanism","06032b0e07020101":"ElGamal","06032b0e07020301":"md2WithRSA","06032b0e07020302":"md2WithElGamal","06032b2403":"algorithm","06032b240301":"encryptionAlgorithm","06032b24030101":"des","06032b240301010101":"desECBPad","06032b24030101010101":"desECBPadISO","06032b240301010201":"desCBCPad","06032b24030101020101":"desCBCPadISO","06032b24030102":"idea","06032b2403010201":"ideaECB","06032b240301020101":"ideaECBPad","06032b24030102010101":"ideaECBPadISO","06032b2403010202":"ideaCBC","06032b240301020201":"ideaCBCPad","06032b24030102020101":"ideaCBCPadISO","06032b2403010203":"ideaOFB","06032b2403010204":"ideaCFB","06032b24030103":"des-3","06032b240301030101":"des-3ECBPad","06032b24030103010101":"des-3ECBPadISO","06032b240301030201":"des-3CBCPad","06032b24030103020101":"des-3CBCPadISO","06032b240302":"hashAlgorithm","06032b24030201":"ripemd160","06032b24030202":"ripemd128","06032b24030203":"ripemd256","06032b24030204":"mdc2singleLength","06032b24030205":"mdc2doubleLength","06032b240303":"signatureAlgorithm","06032b24030301":"rsa","06032b2403030101":"rsaMitSHA-1","06032b2403030102":"rsaMitRIPEMD160","06032b24030302":"ellipticCurve","06032b240304":"signatureScheme","06032b24030401":"iso9796-1","06032b2403040201":"iso9796-2","06032b2403040202":"iso9796-2rsa","06032b2404":"attribute","06032b2405":"policy","06032b2406":"api","06032b240601":"manufacturerSpecific","06032b240602":"functionalitySpecific","06032b2407":"api","06032b240701":"keyAgreement","06032b240702":"keyTransport","06032b06010401927c0a0101":"UNINETT policyIdentifier","06032b0601040195180a":"ICE-TEL policyIdentifier","06032b0601040197552001":"cryptlibEnvelope","06032b0601040197552002":"cryptlibPrivateKey","060a2b060104018237":"Microsoft OID","060a2b0601040182370a":"Crypto 2.0","060a2b0601040182370a01":"certTrustList","060a2b0601040182370a0101":"szOID_SORTED_CTL","060a2b0601040182370a0a":"Microsoft CMC OIDs","060a2b0601040182370a0a01":"szOID_CMC_ADD_ATTRIBUTES","060a2b0601040182370a0b":"Microsoft certificate property OIDs","060a2b0601040182370a0b01":"szOID_CERT_PROP_ID_PREFIX","060a2b0601040182370a0c":"CryptUI","060a2b0601040182370a0c01":"szOID_ANY_APPLICATION_POLICY","060a2b0601040182370a02":"nextUpdateLocation","060a2b0601040182370a0301":"certTrustListSigning","060a2b0601040182370a030a":"szOID_KP_QUALIFIED_SUBORDINATION","060a2b0601040182370a030b":"szOID_KP_KEY_RECOVERY","060a2b0601040182370a030c":"szOID_KP_DOCUMENT_SIGNING","060a2b0601040182370a0302":"timeStampSigning","060a2b0601040182370a0303":"serverGatedCrypto","060a2b0601040182370a030301":"szOID_SERIALIZED","060a2b0601040182370a0304":"encryptedFileSystem","060a2b0601040182370a030401":"szOID_EFS_RECOVERY","060a2b0601040182370a0305":"szOID_WHQL_CRYPTO","060a2b0601040182370a0306":"szOID_NT5_CRYPTO","060a2b0601040182370a0307":"szOID_OEM_WHQL_CRYPTO","060a2b0601040182370a0308":"szOID_EMBEDDED_NT_CRYPTO","060a2b0601040182370a0309":"szOID_ROOT_LIST_SIGNER","060a2b0601040182370a0401":"yesnoTrustAttr","060a2b0601040182370a0501":"szOID_DRM","060a2b0601040182370a0502":"szOID_DRM_INDIVIDUALIZATION","060a2b0601040182370a0601":"szOID_LICENSES","060a2b0601040182370a0602":"szOID_LICENSE_SERVER","060a2b0601040182370a07":"szOID_MICROSOFT_RDN_PREFIX","060a2b0601040182370a0701":"szOID_KEYID_RDN","060a2b0601040182370a0801":"szOID_REMOVE_CERTIFICATE","060a2b0601040182370a0901":"szOID_CROSS_CERT_DIST_POINTS","060a2b0601040182370c":"Catalog","060a2b0601040182370c0101":"szOID_CATALOG_LIST","060a2b0601040182370c0102":"szOID_CATALOG_LIST_MEMBER","060a2b0601040182370c0201":"CAT_NAMEVALUE_OBJID","060a2b0601040182370c0202":"CAT_MEMBERINFO_OBJID","060a2b0601040182370d":"Microsoft PKCS10 OIDs","060a2b0601040182370d01":"szOID_RENEWAL_CERTIFICATE","060a2b0601040182370d0201":"szOID_ENROLLMENT_NAME_VALUE_PAIR","060a2b0601040182370d0202":"szOID_ENROLLMENT_CSP_PROVIDER","060a2b0601040182370d0203":"OS Version","060a2b0601040182370f":"Microsoft Java","060a2b06010401823710":"Microsoft Outlook/Exchange","060a2b0601040182371004":"Outlook Express","060a2b06010401823711":"Microsoft PKCS12 attributes","060a2b0601040182371101":"szOID_LOCAL_MACHINE_KEYSET","060a2b06010401823712":"Microsoft Hydra","060a2b06010401823713":"Microsoft ISPU Test","060a2b06010401823702":"Authenticode","060a2b06010401823702010a":"spcAgencyInfo","060a2b06010401823702010b":"spcStatementType","060a2b06010401823702010c":"spcSpOpusInfo","060a2b06010401823702010e":"certExtensions","060a2b06010401823702010f":"spcPelmageData","060a2b060104018237020112":"SPC_RAW_FILE_DATA_OBJID","060a2b060104018237020113":"SPC_STRUCTURED_STORAGE_DATA_OBJID","060a2b060104018237020114":"spcLink","060a2b060104018237020115":"individualCodeSigning","060a2b060104018237020116":"commercialCodeSigning","060a2b060104018237020119":"spcLink","060a2b06010401823702011a":"spcMinimalCriteriaInfo","060a2b06010401823702011b":"spcFinancialCriteriaInfo","060a2b06010401823702011c":"spcLink","060a2b06010401823702011d":"SPC_HASH_INFO_OBJID","060a2b06010401823702011e":"SPC_SIPINFO_OBJID","060a2b060104018237020104":"spcIndirectDataContext","060a2b0601040182370202":"CTL for Software Publishers Trusted CAs","060a2b060104018237020201":"szOID_TRUSTED_CODESIGNING_CA_LIST","060a2b060104018237020202":"szOID_TRUSTED_CLIENT_AUTH_CA_LIST","060a2b060104018237020203":"szOID_TRUSTED_SERVER_AUTH_CA_LIST","060a2b06010401823714":"Microsoft Enrollment Infrastructure","060a2b0601040182371401":"szOID_AUTO_ENROLL_CTL_USAGE","060a2b0601040182371402":"szOID_ENROLL_CERTTYPE_EXTENSION","060a2b060104018237140201":"szOID_ENROLLMENT_AGENT","060a2b060104018237140202":"szOID_KP_SMARTCARD_LOGON","060a2b060104018237140203":"szOID_NT_PRINCIPAL_NAME","060a2b0601040182371403":"szOID_CERT_MANIFOLD","06092b06010401823715":"Microsoft CertSrv Infrastructure","06092b0601040182371501":"szOID_CERTSRV_CA_VERSION","06092b0601040182371514":"Client Information","060a2b06010401823719":"Microsoft Directory Service","060a2b0601040182371901":"szOID_NTDS_REPLICATION","060a2b06010401823703":"Time Stamping","060a2b060104018237030201":"SPC_TIME_STAMP_REQUEST_OBJID","060a2b0601040182371e":"IIS","060a2b0601040182371f":"Windows updates and service packs","060a2b0601040182371f01":"szOID_PRODUCT_UPDATE","060a2b06010401823704":"Permissions","060a2b06010401823728":"Fonts","060a2b06010401823729":"Microsoft Licensing and Registration","060a2b0601040182372a":"Microsoft Corporate PKI (ITG)","060a2b06010401823758":"CAPICOM","060a2b0601040182375801":"szOID_CAPICOM_VERSION","060a2b0601040182375802":"szOID_CAPICOM_ATTRIBUTE","060a2b060104018237580201":"szOID_CAPICOM_DOCUMENT_NAME","060a2b060104018237580202":"szOID_CAPICOM_DOCUMENT_DESCRIPTION","060a2b0601040182375803":"szOID_CAPICOM_ENCRYPTED_DATA","060a2b060104018237580301":"szOID_CAPICOM_ENCRYPTED_CONTENT","06032b0601050507":"pkix", -"06032b060105050701":"privateExtension","06032b06010505070101":"authorityInfoAccess","06032b06010505070c02":"CMC Data","06032b060105050702":"policyQualifierIds","06032b06010505070202":"unotice","06032b060105050703":"keyPurpose","06032b06010505070301":"serverAuth","06032b06010505070302":"clientAuth","06032b06010505070303":"codeSigning","06032b06010505070304":"emailProtection","06032b06010505070305":"ipsecEndSystem","06032b06010505070306":"ipsecTunnel","06032b06010505070307":"ipsecUser","06032b06010505070308":"timeStamping","06032b060105050704":"cmpInformationTypes","06032b06010505070401":"caProtEncCert","06032b06010505070402":"signKeyPairTypes","06032b06010505070403":"encKeyPairTypes","06032b06010505070404":"preferredSymmAlg","06032b06010505070405":"caKeyUpdateInfo","06032b06010505070406":"currentCRL","06032b06010505073001":"ocsp","06032b06010505073002":"caIssuers","06032b06010505080101":"HMAC-MD5","06032b06010505080102":"HMAC-SHA","060360864801650201010a":"mosaicKeyManagementAlgorithm","060360864801650201010b":"sdnsKMandSigAlgorithm","060360864801650201010c":"mosaicKMandSigAlgorithm","060360864801650201010d":"SuiteASignatureAlgorithm","060360864801650201010e":"SuiteAConfidentialityAlgorithm","060360864801650201010f":"SuiteAIntegrityAlgorithm","06036086480186f84201":"cert-extension","06036086480186f842010a":"EntityLogo","06036086480186f842010b":"UserPicture","06036086480186f8420109":"HomePage-url","06036086480186f84202":"data-type","06036086480186f8420201":"GIF","06036086480186f8420202":"JPEG","06036086480186f8420203":"URL","06036086480186f8420204":"HTML","06036086480186f8420205":"netscape-cert-sequence","06036086480186f8420206":"netscape-cert-url","06036086480186f84203":"directory","06036086480186f8420401":"serverGatedCrypto","06036086480186f845010603":"Unknown Verisign extension","06036086480186f845010606":"Unknown Verisign extension","06036086480186f84501070101":"Verisign certificatePolicy","06036086480186f8450107010101":"Unknown Verisign policy qualifier","06036086480186f8450107010102":"Unknown Verisign policy qualifier","0603678105":"TCPA","060367810501":"tcpa_specVersion","060367810502":"tcpa_attribute","06036781050201":"tcpa_at_tpmManufacturer","0603678105020a":"tcpa_at_securityQualities","0603678105020b":"tcpa_at_tpmProtectionProfile","0603678105020c":"tcpa_at_tpmSecurityTarget","0603678105020d":"tcpa_at_foundationProtectionProfile","0603678105020e":"tcpa_at_foundationSecurityTarget","0603678105020f":"tcpa_at_tpmIdLabel","06036781050202":"tcpa_at_tpmModel","06036781050203":"tcpa_at_tpmVersion","06036781050204":"tcpa_at_platformManufacturer","06036781050205":"tcpa_at_platformModel","06036781050206":"tcpa_at_platformVersion","06036781050207":"tcpa_at_componentManufacturer","06036781050208":"tcpa_at_componentModel","06036781050209":"tcpa_at_componentVersion","060367810503":"tcpa_protocol","06036781050301":"tcpa_prtt_tpmIdProtocol","0603672a00":"contentType","0603672a0000":"PANData","0603672a0001":"PANToken","0603672a0002":"PANOnly","0603672a01":"msgExt","0603672a0a":"national","0603672a0a8140":"Japan","0603672a02":"field","0603672a0200":"fullName","0603672a0201":"givenName","0603672a020a":"amount","0603672a0202":"familyName","0603672a0203":"birthFamilyName","0603672a0204":"placeName","0603672a0205":"identificationNumber","0603672a0206":"month","0603672a0207":"date","0603672a02070b":"accountNumber","0603672a02070c":"passPhrase","0603672a0208":"address","0603672a0209":"telephone","0603672a03":"attribute","0603672a0300":"cert","0603672a030000":"rootKeyThumb","0603672a030001":"additionalPolicy","0603672a04":"algorithm","0603672a05":"policy","0603672a0500":"root","0603672a06":"module","0603672a07":"certExt","0603672a0700":"hashedRootKey","0603672a0701":"certificateType","0603672a0702":"merchantData","0603672a0703":"cardCertRequired","0603672a0704":"tunneling","0603672a0705":"setExtensions","0603672a0706":"setQualifier","0603672a08":"brand","0603672a0801":"IATA-ATA","0603672a081e":"Diners","0603672a0822":"AmericanExpress","0603672a0804":"VISA","0603672a0805":"MasterCard","0603672a08ae7b":"Novus","0603672a09":"vendor","0603672a0900":"GlobeSet","0603672a0901":"IBM","0603672a090a":"Griffin","0603672a090b":"Certicom","0603672a090c":"OSS","0603672a090d":"TenthMountain","0603672a090e":"Antares","0603672a090f":"ECC","0603672a0910":"Maithean","0603672a0911":"Netscape","0603672a0912":"Verisign","0603672a0913":"BlueMoney","0603672a0902":"CyberCash","0603672a0914":"Lacerte","0603672a0915":"Fujitsu","0603672a0916":"eLab","0603672a0917":"Entrust","0603672a0918":"VIAnet","0603672a0919":"III","0603672a091a":"OpenMarket","0603672a091b":"Lexem","0603672a091c":"Intertrader","0603672a091d":"Persimmon","0603672a0903":"Terisa","0603672a091e":"NABLE","0603672a091f":"espace-net","0603672a0920":"Hitachi","0603672a0921":"Microsoft","0603672a0922":"NEC","0603672a0923":"Mitsubishi","0603672a0924":"NCR","0603672a0925":"e-COMM","0603672a0926":"Gemplus","0603672a0904":"RSADSI","0603672a0905":"VeriFone","0603672a0906":"TrinTech","0603672a0907":"BankGate","0603672a0908":"GTE","0603672a0909":"CompuSource","0603551d01":"authorityKeyIdentifier","0603551d0a":"basicConstraints","0603551d0b":"nameConstraints","0603551d0c":"policyConstraints","0603551d0d":"basicConstraints","0603551d0e":"subjectKeyIdentifier","0603551d0f":"keyUsage","0603551d10":"privateKeyUsagePeriod","0603551d11":"subjectAltName","0603551d12":"issuerAltName","0603551d13":"basicConstraints","0603551d02":"keyAttributes","0603551d14":"cRLNumber","0603551d15":"cRLReason","0603551d16":"expirationDate","0603551d17":"instructionCode","0603551d18":"invalidityDate","0603551d1a":"issuingDistributionPoint","0603551d1b":"deltaCRLIndicator","0603551d1c":"issuingDistributionPoint","0603551d1d":"certificateIssuer","0603551d03":"certificatePolicies","0603551d1e":"nameConstraints","0603551d1f":"cRLDistributionPoints","0603551d20":"certificatePolicies","0603551d21":"policyMappings","0603551d22":"policyConstraints","0603551d23":"authorityKeyIdentifier","0603551d24":"policyConstraints","0603551d25":"extKeyUsage","0603551d04":"keyUsageRestriction","0603551d05":"policyMapping","0603551d06":"subtreesConstraint","0603551d07":"subjectAltName","0603551d08":"issuerAltName","0603551d09":"subjectDirectoryAttributes","0603550400":"objectClass","0603550401":"aliasObjectName","060355040d":"description","060355040e":"searchGuide","060355040f":"businessCategory","0603550410":"postalAddress","0603550411":"postalCode","0603550412":"postOfficeBox","0603550413":"physicalDeliveryOfficeName","0603550402":"knowledgeInformation","0603550415":"telexNumber","0603550416":"teletexTerminalIdentifier","0603550417":"facsimileTelephoneNumber","0603550418":"x121Address","0603550419":"internationalISDNNumber","060355041a":"registeredAddress","060355041b":"destinationIndicator","060355041c":"preferredDeliveryMehtod","060355041d":"presentationAddress","060355041e":"supportedApplicationContext","060355041f":"member","0603550420":"owner","0603550421":"roleOccupant","0603550422":"seeAlso","0603550423":"userPassword","0603550424":"userCertificate","0603550425":"caCertificate","0603550426":"authorityRevocationList","0603550427":"certificateRevocationList","0603550428":"crossCertificatePair","0603550429":"givenName","0603550405":"serialNumber","0603550434":"supportedAlgorithms","0603550435":"deltaRevocationList","060355043a":"crossCertificatePair","06035508":"X.500-Algorithms","0603550801":"X.500-Alg-Encryption","060355080101":"rsa","0603604c0101":"DPC"};var Punycode={IDN:!1,run_to_ascii:function(a,b){var c=b[0];return c?punycode.ToASCII(a):punycode.encode(a)},run_to_unicode:function(a,b){var c=b[0];return c?punycode.ToUnicode(a):punycode.decode(a)}},QuotedPrintable={run_to:function(a,b){var c=QuotedPrintable.mimeEncode(a);return c=c.replace(/\r?\n|\r/g,function(){return"\r\n"}).replace(/[\t ]+$/gm,function(a){return a.replace(/ /g,"=20").replace(/\t/g,"=09")}),QuotedPrintable._addSoftLinebreaks(c,"qp")},run_from:function(a,b){var c=a.replace(/\=(?:\r?\n|$)/g,"");return QuotedPrintable.mimeDecode(c)},mimeDecode:function(a){for(var b,c,d=(a.match(/\=[\da-fA-F]{2}/g)||[]).length,e=a.length-2*d,f=new Array(e),g=0,h=0,i=a.length;h<i;h++)b=a.charAt(h),"="===b&&(c=a.substr(h+1,2))&&/[\da-fA-F]{2}/.test(c)?(f[g++]=parseInt(c,16),h+=2):f[g++]=b.charCodeAt(0);return f},mimeEncode:function(a){for(var b=[[9],[10],[13],[32],[33],[35,60],[62],[64,94],[96,126]],c="",d=0,e=a.length;d<e;d++)c+=this._checkRanges(a[d],b)?String.fromCharCode(a[d]):"="+(a[d]<16?"0":"")+a[d].toString(16).toUpperCase();return c},_checkRanges:function(a,b){for(var c=b.length-1;c>=0;c--)if(b[c].length){if(1===b[c].length&&a===b[c][0])return!0;if(2===b[c].length&&a>=b[c][0]&&a<=b[c][1])return!0}return!1},_addSoftLinebreaks:function(a,b){var c=76;return b=(b||"base64").toString().toLowerCase().trim(),"qp"===b?this._addQPSoftLinebreaks(a,c):this._addBase64SoftLinebreaks(a,c)},_addBase64SoftLinebreaks:function(a,b){return a=(a||"").toString().trim(),a.replace(new RegExp(".{"+b+"}","g"),"$&\r\n").trim()},_addQPSoftLinebreaks:function(a,b){for(var c,d,e,f=0,g=a.length,h=Math.floor(b/3),i="";f<g;)if(e=a.substr(f,b),c=e.match(/\r\n/))e=e.substr(0,c.index+c[0].length),i+=e,f+=e.length;else if("\n"!==e.substr(-1))if(c=e.substr(-h).match(/\n.*?$/))e=e.substr(0,e.length-(c[0].length-1)),i+=e,f+=e.length;else{if(e.length>b-h&&(c=e.substr(-h).match(/[ \t\.,!\?][^ \t\.,!\?]*$/)))e=e.substr(0,e.length-(c[0].length-1));else if("\r"===e.substr(-1))e=e.substr(0,e.length-1);else if(e.match(/\=[\da-f]{0,2}$/i))for((c=e.match(/\=[\da-f]{0,1}$/i))&&(e=e.substr(0,e.length-c[0].length));e.length>3&&e.length<g-f&&!e.match(/^(?:=[\da-f]{2}){1,4}$/i)&&(c=e.match(/\=[\da-f]{2}$/gi))&&(d=parseInt(c[0].substr(1,2),16),!(d<128))&&(e=e.substr(0,e.length-3),!(d>=192)););f+e.length<g&&"\n"!==e.substr(-1)?(76===e.length&&e.match(/\=[\da-f]{2}$/i)?e=e.substr(0,e.length-3):76===e.length&&(e=e.substr(0,e.length-1)),f+=e.length,e+="=\r\n"):f+=e.length,i+=e}else i+=e,f+=e.length;return i}},Rotate={ROTATE_AMOUNT:1,ROTATE_WHOLE:!1,_rot:function(a,b,c){for(var d=[],e=0;e<a.length;e++){for(var f=a[e],g=0;g<b;g++)f=c(f);d.push(f)}return d},run_rotr:function(a,b){return b[1]?Rotate._rotr_whole(a,b[0]):Rotate._rot(a,b[0],Rotate._rotr)},run_rotl:function(a,b){return b[1]?Rotate._rotl_whole(a,b[0]):Rotate._rot(a,b[0],Rotate._rotl)},ROT13_AMOUNT:13,ROT13_LOWERCASE:!0,ROT13_UPPERCASE:!0,run_rot13:function(a,b){var c,d=b[2],e=a,f=b[0],g=b[1];if(d){d<0&&(d=26-Math.abs(d)%26);for(var h=0;h<a.length;h++)c=a[h],g&&c>=65&&c<=90?(c=(c-65+d)%26,e[h]=c+65):f&&c>=97&&c<=122&&(c=(c-97+d)%26,e[h]=c+97)}return e},ROT47_AMOUNT:47,run_rot47:function(a,b){var c,d=b[0],e=a;if(d){d<0&&(d=94-Math.abs(d)%94);for(var f=0;f<a.length;f++)c=a[f],c>=33&&c<=126&&(c=(c-33+d)%94,e[f]=c+33)}return e},_rotr:function(a){var b=(1&a)<<7;return a>>1|b},_rotl:function(a){var b=a>>7&1;return 255&(a<<1|b)},_rotr_whole:function(a,b){var c,d=0,e=[];b%=8;for(var f=0;f<a.length;f++){var g=a[f]>>>0;c=g>>b|d,d=(g&Math.pow(2,b)-1)<<8-b,e.push(c)}return e[0]|=d,e},_rotl_whole:function(a,b){var c,d=0,e=[];b%=8;for(var f=a.length-1;f>=0;f--){var g=a[f];c=255&(g<<b|d),d=g>>8-b&Math.pow(2,b)-1,e[f]=c}return e[a.length-1]=e[a.length-1]|d,e}},SeqUtils={DELIMITER_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon","Colon","Nothing (separate chars)"],SORT_REVERSE:!1,SORT_ORDER:["Alphabetical (case sensitive)","Alphabetical (case insensitive)","IP address"],run_sort:function(a,b){var c=Utils.char_rep[b[0]],d=b[1],e=b[2],f=a.split(c);return"Alphabetical (case sensitive)"===e?f=f.sort():"Alphabetical (case insensitive)"===e?f=f.sort(SeqUtils._case_insensitive_sort):"IP address"===e&&(f=f.sort(SeqUtils._ip_sort)),d&&f.reverse(),f.join(c)},run_unique:function(a,b){var c=Utils.char_rep[b[0]];return a.split(c).unique().join(c)},SEARCH_TYPE:["Regex","Extended (\\n, \\t, \\x...)","Simple string"],run_count:function(a,b){var c=b[0].string,d=b[0].option;if("Regex"!==d||!c)return c?(0===d.indexOf("Extended")&&(c=Utils.parse_escaped_chars(c)),a.count(c)):0;try{var e=new RegExp(c,"gi"),f=a.match(e);return f.length}catch(a){return 0}},REVERSE_BY:["Character","Line"],run_reverse:function(a,b){if("Line"===b[0]){for(var c=[],d=[],e=[],f=0;f<a.length;f++)10===a[f]?(c.push(d),d=[]):d.push(a[f]);for(c.push(d),c.reverse(),f=0;f<c.length;f++)e=e.concat(c[f]),e.push(10);return e.slice(0,a.length)}return a.reverse()},run_add_line_numbers:function(a,b){for(var c=a.split("\n"),d="",e=c.length.toString().length,f=0;f<c.length;f++)d+=Utils.pad((f+1).toString(),e," ")+" "+c[f]+"\n";return d.slice(0,d.length-1)},run_remove_line_numbers:function(a,b){return a.replace(/^[ \t]{0,5}\d+[\s:|\-,.)\]]/gm,"")},run_expand_alph_range:function(a,b){return Utils.expand_alph_range(a).join(b[0])},_case_insensitive_sort:function(a,b){return a.toLowerCase().localeCompare(b.toLowerCase())},_ip_sort:function(a,b){var c=a.split("."),d=b.split(".");return c=16777216*c[0]+65536*c[1]+256*c[2]+1*c[3],d=16777216*d[0]+65536*d[1]+256*d[2]+1*d[3],isNaN(c)&&!isNaN(d)?1:!isNaN(c)&&isNaN(d)?-1:isNaN(c)&&isNaN(d)?a.localeCompare(b):c-d}},StrUtils={REGEX_PRE_POPULATE:[{name:"User defined",value:""},{name:"IPv4 address",value:"(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?"},{name:"IPv6 address",value:"((?=.*::)(?!.*::.+::)(::)?([\\dA-Fa-f]{1,4}:(:|\\b)|){5}|([\\dA-Fa-f]{1,4}:){6})((([\\dA-Fa-f]{1,4}((?!\\3)::|:\\b|(?![\\dA-Fa-f])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})"},{name:"Email address",value:"(\\w[-.\\w]*)@([-\\w]+(?:\\.[-\\w]+)*)\\.([A-Za-z]{2,4})"},{name:"URL",value:'([A-Za-z]+://)([-\\w]+(?:\\.\\w[-\\w]*)+)(:\\d+)?(/[^.!,?;"\\x27<>()\\[\\]{}\\s\\x7F-\\xFF]*(?:[.!,?]+[^.!,?;"\\x27<>()\\[\\]{}\\s\\x7F-\\xFF]+)*)?'},{name:"Domain",value:"(?:(https?):\\/\\/)?([-\\w.]+)\\.(com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+"},{name:"Windows file path",value:"([A-Za-z]):\\\\((?:[A-Za-z\\d][A-Za-z\\d\\- \\x27_\\(\\)]{0,61}\\\\?)*[A-Za-z\\d][A-Za-z\\d\\- \\x27_\\(\\)]{0,61})(\\.[A-Za-z\\d]{1,6})?"},{name:"UNIX file path",value:"(?:/[A-Za-z\\d.][A-Za-z\\d\\-.]{0,61})+"},{name:"MAC address",value:"[A-Fa-f\\d]{2}(?:[:-][A-Fa-f\\d]{2}){5}"},{name:"Date (yyyy-mm-dd)",value:"((?:19|20)\\d\\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])"},{name:"Date (dd/mm/yyyy)",value:"(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.]((?:19|20)\\d\\d)"},{name:"Date (mm/dd/yyyy)",value:"(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]((?:19|20)\\d\\d)"},{name:"Strings",value:'[A-Za-z\\d/\\-:.,_$%\\x27"()<>= !\\[\\]{}@]{4,}'}],REGEX_CASE_INSENSITIVE:!0,REGEX_MULTILINE_MATCHING:!0,OUTPUT_FORMAT:["Highlight matches","List matches","List capture groups","List matches with capture groups"],DISPLAY_TOTAL:!1,run_regex:function(a,b){var c=b[1],d=b[2],e=b[3],f=b[4],g=b[5],h="g";if(d&&(h+="i"),e&&(h+="m"),!c||"^"===c||"$"===c)return Utils.escape_html(a);try{var i=new RegExp(c,h);switch(g){case"Highlight matches":return StrUtils._regex_highlight(a,i,f);case"List matches":return Utils.escape_html(StrUtils._regex_list(a,i,f,!0,!1));case"List capture groups":return Utils.escape_html(StrUtils._regex_list(a,i,f,!1,!0));case"List matches with capture groups":return Utils.escape_html(StrUtils._regex_list(a,i,f,!0,!0));default:return"Error: Invalid output format"}}catch(a){return"Invalid regex. Details: "+a.message}},CASE_SCOPE:["All","Word","Sentence","Paragraph"],run_upper:function(a,b){var c=b[0];switch(c){case"Word":return a.replace(/(\b\w)/gi,function(a){return a.toUpperCase()});case"Sentence":return a.replace(/(?:\.|^)\s*(\b\w)/gi,function(a){return a.toUpperCase()});case"Paragraph":return a.replace(/(?:\n|^)\s*(\b\w)/gi,function(a){return a.toUpperCase()});case"All":default:return a.toUpperCase()}},run_lower:function(a,b){return a.toLowerCase()},SEARCH_TYPE:["Regex","Extended (\\n, \\t, \\x...)","Simple string"],FIND_REPLACE_GLOBAL:!0,FIND_REPLACE_CASE:!1,FIND_REPLACE_MULTILINE:!0,run_find_replace:function(a,b){var c=b[0].string,d=b[0].option,e=b[1],f=b[2],g=b[3],h=b[4],i="";return f&&(i+="g"),g&&(i+="i"),h&&(i+="m"),"Regex"===d?c=new RegExp(c,i):0===d.indexOf("Extended")&&(c=Utils.parse_escaped_chars(c)),a.replace(c,e,i)},SPLIT_DELIM:",",DELIMITER_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon","Colon","Nothing (separate chars)"],run_split:function(a,b){var c=b[0]||StrUtils.SPLIT_DELIM,d=Utils.char_rep[b[1]],e=a.split(c);return e.join(d)},DIFF_SAMPLE_DELIMITER:"\\n\\n",DIFF_BY:["Character","Word","Line","Sentence","CSS","JSON"],run_diff:function(a,b){var c,d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=a.split(d),j="";if(!i||2!==i.length)return"Incorrect number of samples, perhaps you need to modify the sample delimiter or add more samples?";switch(e){case"Character":c=JsDiff.diffChars(i[0],i[1]);break;case"Word":c=h?JsDiff.diffWords(i[0],i[1]):JsDiff.diffWordsWithSpace(i[0],i[1]);break;case"Line":c=h?JsDiff.diffTrimmedLines(i[0],i[1]):JsDiff.diffLines(i[0],i[1]);break;case"Sentence":c=JsDiff.diffSentences(i[0],i[1]);break;case"CSS":c=JsDiff.diffCss(i[0],i[1]);break;case"JSON":c=JsDiff.diffJson(i[0],i[1]);break;default:return"Invalid 'Diff by' option."}for(var k=0;k<c.length;k++)c[k].added?f&&(j+="<span class='hlgreen'>"+Utils.escape_html(c[k].value)+"</span>"):c[k].removed?g&&(j+="<span class='hlred'>"+Utils.escape_html(c[k].value)+"</span>"):j+=Utils.escape_html(c[k].value);return j},OFF_CHK_SAMPLE_DELIMITER:"\\n\\n",run_offset_checker:function(a,b){var c,d=b[0],e=a.split(d),f=[],g=0,h=0,i=!1,j=!1;if(!e||e.length<2)return"Not enough samples, perhaps you need to modify the sample delimiter or add more data?";for(h=0;h<e.length;h++)f[h]="";for(g=0;g<e[0].length;g++){for(c=e[0][g],i=!1,h=1;h<e.length;h++){if(e[h][g]!==c){i=!1;break}i=!0}for(h=0;h<e.length;h++)e[h].length<=g?(j&&(f[h]+="</span>"),h===e.length-1&&(j=!1)):(i&&!j?(f[h]+="<span class='hlgreen'>"+Utils.escape_html(e[h][g]),e[h].length===g+1&&(f[h]+="</span>"),h===e.length-1&&(j=!0)):!i&&j?(f[h]+="</span>"+Utils.escape_html(e[h][g]),h===e.length-1&&(j=!1)):(f[h]+=Utils.escape_html(e[h][g]),j&&e[h].length===g+1&&(f[h]+="</span>",e[h].length-1!==g&&(j=!1))),e[0].length-1===g&&(j&&(f[h]+="</span>"),f[h]+=Utils.escape_html(e[h].substring(g+1))))}return f.join(d)},run_parse_escaped_string:function(a,b){return Utils.parse_escaped_chars(a)},_regex_highlight:function(a,b,c){for(var d,e="",f=1,g=0,h=0;d=b.exec(a);)e+=Utils.escape_html(a.slice(g,d.index)),e+="<span class='hl"+f+"'>"+Utils.escape_html(d[0])+"</span>",f=1===f?2:1,g=b.lastIndex,h++;return e+=Utils.escape_html(a.slice(g,a.length)),c&&(e="Total found: "+h+"\n\n"+e),e},_regex_list:function(a,b,c,d,e){for(var f,g="",h=0;f=b.exec(a);)if(h++,d&&(g+=f[0]+"\n"),e)for(var i=1;i<f.length;i++)d&&(g+=" Group "+i+": "),g+=f[i]+"\n";return c&&(g="Total found: "+h+"\n\n"+g),g}},Tidy={REMOVE_SPACES:!0,REMOVE_CARIAGE_RETURNS:!0,REMOVE_LINE_FEEDS:!0,REMOVE_TABS:!0,REMOVE_FORM_FEEDS:!0,REMOVE_FULL_STOPS:!1,run_remove_whitespace:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=a;return c&&(i=i.replace(/ /g,"")),d&&(i=i.replace(/\r/g,"")),e&&(i=i.replace(/\n/g,"")),f&&(i=i.replace(/\t/g,"")),g&&(i=i.replace(/\f/g,"")),h&&(i=i.replace(/\./g,"")),i},run_remove_nulls:function(a,b){for(var c=[],d=0;d<a.length;d++)0!==a[d]&&c.push(a[d]);return c},APPLY_TO_EACH_LINE:!1,DROP_START:0,DROP_LENGTH:5,run_drop_bytes:function(a,b){var c=b[0],d=b[1],e=b[2];if(c<0||d<0)throw"Error: Invalid value";if(!e)return a.slice(0,c).concat(a.slice(c+d,a.length));for(var f=[],g=[],h=0;h<a.length;h++)10===a[h]?(f.push(g),g=[]):g.push(a[h]);f.push(g);var i=[];for(h=0;h<f.length;h++)i=i.concat(f[h].slice(0,c).concat(f[h].slice(c+d,f[h].length))),i.push(10);return i.slice(0,i.length-1)},TAKE_START:0,TAKE_LENGTH:5,run_take_bytes:function(a,b){var c=b[0],d=b[1],e=b[2];if(c<0||d<0)throw"Error: Invalid value";if(!e)return a.slice(c,c+d);for(var f=[],g=[],h=0;h<a.length;h++)10===a[h]?(f.push(g),g=[]):g.push(a[h]);f.push(g);var i=[];for(h=0;h<f.length;h++)i=i.concat(f[h].slice(c,c+d)),i.push(10);return i.slice(0,i.length-1)},PAD_POSITION:["Start","End"],PAD_LENGTH:5,PAD_CHAR:" ",run_pad:function(a,b){var c=b[0],d=b[1],e=b[2],f=a.split("\n"),g="",h=0;if("Start"===c)for(h=0;h<f.length;h++)g+=Utils.pad_left(f[h],f[h].length+d,e)+"\n";else if("End"===c)for(h=0;h<f.length;h++)g+=Utils.pad_right(f[h],f[h].length+d,e)+"\n";return g.slice(0,g.length-1)}},URL_={ENCODE_ALL:!1,run_to:function(a,b){var c=b[0];return c?URL_._encode_all_chars(a):encodeURI(a)},run_from:function(a,b){var c=a.replace(/\+/g,"%20");try{return decodeURIComponent(c)}catch(a){return unescape(c)}},run_parse:function(a,b){var c=document.createElement("a");if(c.href="http://example.com/",c.href=a,c.protocol){var d="";if(c.hostname!==window.location.hostname&&(d="Protocol:\t"+c.protocol+"\n",c.hostname&&(d+="Hostname:\t"+c.hostname+"\n"),c.port&&(d+="Port:\t\t"+c.port+"\n")),c.pathname){var e=c.pathname;0===e.indexOf(window.location.pathname)&&(e=e.replace(window.location.pathname,"")),e&&(d+="Path name:\t"+e+"\n")}if(c.hash&&(d+="Hash:\t\t"+c.hash+"\n"),c.search){d+="Arguments:\n";for(var f=c.search.slice(1,c.search.length).split("&"),g=[],h=0,i=0;i<f.length;i++)g.push(f[i].split("=")),h=g[i][0].length>h?g[i][0].length:h;for(i=0;i<g.length;i++)d+="\t"+Utils.pad_right(g[i][0],h),d+=g[i].length>1&&g[i][1].length?" = "+g[i][1]+"\n":"\n"}return d}return"Invalid URI"},_encode_all_chars:function(a){return encodeURIComponent(a).replace(/!/g,"%21").replace(/#/g,"%23").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/\-/g,"%2D").replace(/\./g,"%2E").replace(/_/g,"%5F").replace(/~/g,"%7E")}},UUID={run_generate_v4:function(a,b){if("undefined"!=typeof window.crypto&&"undefined"!=typeof window.crypto.getRandomValues){var c=new Uint32Array(4),d=0;return window.crypto.getRandomValues(c),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=c[d>>3]>>d%8*4&15,e="x"===a?b:3&b|8;return d++,e.toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})}},Unicode={PREFIXES:["\\u","%u","U+"],run_unescape:function(a,b){for(var c,d=Unicode._prefix_to_regex[b[0]],e=new RegExp(d+"([a-f\\d]{4,6})","ig"),f="",g=0;c=e.exec(a);)f+=a.slice(g,c.index),g=c.index,f+=Utils.chr(parseInt(c[1],16)),g=e.lastIndex;return f+=a.slice(g,a.length)},_prefix_to_regex:{"\\u":"\\\\u","%u":"%u","U+":"U\\+"}},Chef=function(){this.dish=new Dish};Chef.prototype.bake=function(a,b,c,d,e){var f=(new Date).getTime(),g=new Recipe(b),h=g.contains_flow_control(),i=!1;c.hasOwnProperty("attempt_highlight")&&(c.attempt_highlight=!0),h&&(c.attempt_highlight=!1),d>=b.length&&(d=0),e&&(g.set_breakpoint(d,!1),g.set_breakpoint(d+1,!0)),d>0&&h&&(g.remove_breaks_up_to(d),d=0),0===d&&this.dish.set(a,Dish.STRING);try{d=g.execute(this.dish,d)}catch(a){i=a,d=a.progress}return{result:this.dish.type===Dish.HTML?this.dish.get(Dish.HTML):this.dish.get(Dish.STRING),type:Dish.enum_lookup(this.dish.type),progress:d,options:c,duration:(new Date).getTime()-f,error:i}},Chef.prototype.silent_bake=function(a){var b=(new Date).getTime(),c=new Recipe(a),d=new Dish("",Dish.STRING);try{c.execute(d)}catch(a){}return(new Date).getTime()-b};var Dish=function(a,b){this.value=a||"string"==typeof a?a:null,this.type=b||Dish.BYTE_ARRAY};Dish.BYTE_ARRAY=0,Dish.STRING=1,Dish.NUMBER=2,Dish.HTML=3,Dish.type_enum=function(a){switch(a){case"byte_array":case"Byte array":return Dish.BYTE_ARRAY;case"string":case"String":return Dish.STRING;case"number":case"Number":return Dish.NUMBER;case"html":case"HTML":return Dish.HTML;default:throw"Invalid data type string. No matching enum."}},Dish.enum_lookup=function(a){switch(a){case Dish.BYTE_ARRAY:return"byte_array";case Dish.STRING:return"string";case Dish.NUMBER:return"number";case Dish.HTML:return"html";default:throw"Invalid data type enum. No matching type."}},Dish.prototype.set=function(a,b){if(this.value=a,this.type=b,!this.valid()){var c=Utils.truncate(JSON.stringify(this.value),13);throw"Data is not a valid "+Dish.enum_lookup(b)+": "+c}},Dish.prototype.get=function(a){return this.type!==a&&this.translate(a),this.value},Dish.prototype.translate=function(a){switch(this.type){case Dish.STRING:this.value=this.value?Utils.str_to_byte_array(this.value):[],this.type=Dish.BYTE_ARRAY;break;case Dish.NUMBER:this.value="number"==typeof this.value?Utils.str_to_byte_array(this.value.toString()):[],this.type=Dish.BYTE_ARRAY;break;case Dish.HTML:this.value=this.value?Utils.str_to_byte_array(Utils.strip_html_tags(this.value,!0)):[],this.type=Dish.BYTE_ARRAY}switch(a){case Dish.STRING:case Dish.HTML:this.value=this.value?Utils.byte_array_to_utf8(this.value):"",this.type=Dish.STRING;break;case Dish.NUMBER:this.value=this.value?parseFloat(Utils.byte_array_to_utf8(this.value)):0,this.type=Dish.NUMBER}},Dish.prototype.valid=function(){switch(this.type){case Dish.BYTE_ARRAY:if(!(this.value instanceof Array))return!1;for(var a=0;a<this.value.length;a++)if("number"!=typeof this.value[a]||this.value[a]<0||this.value[a]>255)return!1;return!0;case Dish.STRING:case Dish.HTML:return"string"==typeof this.value;case Dish.NUMBER:return"number"==typeof this.value;default:return!1}};const FlowControl={FORK_DELIM:"\\n",MERGE_DELIM:"\\n",run_fork:function(a){var b=a.op_list,c=b[a.progress].input_type,d=b[a.progress].output_type,e=a.dish.get(c),f=b[a.progress].get_ing_values(),g=f[0],h=f[1],i=[],j=[];e&&(j=e.split(g));for(var k=a.progress+1;k<b.length&&("Merge"!==b[k].name||b[k].is_disabled());k++)i.push(b[k]);var l,m=new Recipe,n="";for(m.add_operations(i),k=0;k<j.length;k++){var o=new Dish(j[k],c);l=m.execute(o,0),n+=o.get(d)+h}return a.dish.set(n,d),a.progress+=l,a},run_merge:function(a){return a},JUMP_NUM:0,MAX_JUMPS:10,run_jump:function(a){var b=a.op_list[a.progress].get_ing_values(),c=b[0],d=b[1];if(a.num_jumps>=d)throw"Reached maximum jumps, sorry!";return a.progress+=c,a.num_jumps++,a},run_cond_jump:function(a){var b=a.op_list[a.progress].get_ing_values(),c=a.dish,d=b[0],e=b[1],f=b[2];if(a.num_jumps>=f)throw"Reached maximum jumps, sorry!";return""!==d&&c.get(Dish.STRING).search(d)>-1&&(a.progress+=e,a.num_jumps++),a},run_return:function(a){return a.progress=a.op_list.length,a}};var Ingredient=function(a){this.name="",this.type="",this.value=null,a&&this._parse_config(a)};Ingredient.prototype._parse_config=function(a){this.name=a.name,this.type=a.type},Ingredient.prototype.get_config=function(){return this.value},Ingredient.prototype.set_value=function(a){this.value=Ingredient.prepare(a,this.type)},Ingredient.prepare=function(a,b){switch(b){case"binary_string":case"binary_short_string":case"editable_option":return Utils.parse_escaped_chars(a);case"byte_array":return"string"==typeof a?(a=a.replace(/\s+/g,""),Utils.hex_to_byte_array(a)):a;case"number":var c=parseFloat(a);if(isNaN(c)){var d=Utils.truncate(a.toString(),10);throw"Invalid ingredient value. Not a number: "+d}return c;default:return a}};var Operation=function(a,b){this.name=a,this.description="",this.input_type=-1,this.output_type=-1,this.run=null,this.highlight=null,this.highlight_reverse=null,this.breakpoint=!1,this.disabled=!1,this.ing_list=[],b&&this._parse_config(b)};Operation.prototype._parse_config=function(a){this.description=a.description,this.input_type=Dish.type_enum(a.input_type),this.output_type=Dish.type_enum(a.output_type),this.run=a.run,this.highlight=a.highlight,this.highlight_reverse=a.highlight_reverse,this.flow_control=a.flow_control;for(var b=0;b<a.args.length;b++){var c=a.args[b],d=new Ingredient(c);this.add_ingredient(d)}},Operation.prototype.get_config=function(){for(var a=[],b=0;b<this.ing_list.length;b++)a.push(this.ing_list[b].get_config());var c={op:this.name,args:a};return c},Operation.prototype.add_ingredient=function(a){this.ing_list.push(a)},Operation.prototype.set_ing_values=function(a){for(var b=0;b<a.length;b++)this.ing_list[b].set_value(a[b])},Operation.prototype.get_ing_values=function(){for(var a=[],b=0;b<this.ing_list.length;b++)a.push(this.ing_list[b].value);return a},Operation.prototype.set_breakpoint=function(a){this.breakpoint=!!a},Operation.prototype.is_breakpoint=function(){return this.breakpoint},Operation.prototype.set_disabled=function(a){this.disabled=!!a},Operation.prototype.is_disabled=function(){return this.disabled},Operation.prototype.is_flow_control=function(){return this.flow_control};var Recipe=function(a){this.op_list=[],a&&this._parse_config(a)};Recipe.prototype._parse_config=function(a){for(var b=0;b<a.length;b++){var c=a[b].op,d=OperationConfig[c],e=new Operation(c,d);e.set_ing_values(a[b].args),e.set_breakpoint(a[b].breakpoint),e.set_disabled(a[b].disabled),this.add_operation(e)}},Recipe.prototype.get_config=function(){for(var a=[],b=0;b<this.op_list.length;b++)a.push(this.op_list[b].get_config());return a},Recipe.prototype.add_operation=function(a){this.op_list.push(a)},Recipe.prototype.add_operations=function(a){this.op_list=this.op_list.concat(a)},Recipe.prototype.set_breakpoint=function(a,b){try{this.op_list[a].set_breakpoint(b)}catch(a){}},Recipe.prototype.remove_breaks_up_to=function(a){for(var b=0;b<a;b++)this.op_list[b].set_breakpoint(!1)},Recipe.prototype.contains_flow_control=function(){for(var a=0;a<this.op_list.length;a++)if(this.op_list[a].is_flow_control())return!0;return!1},Recipe.prototype.last_op_index=function(a){for(var b,c=a+1||0;c<this.op_list.length;c++){if(b=this.op_list[c],b.is_disabled())return c-1;if(b.is_breakpoint())return c-1}return c-1},Recipe.prototype.execute=function(a,b){b=b||0;for(var c,d,e,f=0,g=b;g<this.op_list.length;g++)if(c=this.op_list[g],!c.is_disabled()){if(c.is_breakpoint())return g;try{if(d=a.get(c.input_type),c.is_flow_control()){var h={progress:g,dish:a,op_list:this.op_list,num_jumps:f};h=c.run(h),g=h.progress,f=h.num_jumps}else e=c.run(d,c.get_ing_values()),a.set(e,c.output_type)}catch(a){var i="string"==typeof a?{message:a}:a;throw i.progress=g,i.display_str=c.name+" - ",i.fileName?i.display_str+=i.name+" in "+i.fileName+" on line "+i.lineNumber+".<br><br>Message: "+i.message:i.display_str+=i.message,i}}return this.op_list.length},Recipe.prototype.to_string=function(){return JSON.stringify(this.get_config())},Recipe.prototype.from_string=function(a){var b=JSON.parse(a);this._parse_config(b)};const Categories=[{name:"Favourites",ops:[]},{name:"Data format",ops:["To Hexdump","From Hexdump","To Hex","From Hex","To Charcode","From Charcode","To Decimal","From Decimal","To Binary","From Binary","To Base64","From Base64","Show Base64 offsets","To Base32","From Base32","To Base","From Base","To HTML Entity","From HTML Entity","URL Encode","URL Decode","Unescape Unicode Characters","To Quoted Printable","From Quoted Printable","To Punycode","From Punycode","To Hex Content","From Hex Content","PEM to Hex","Hex to PEM","Parse ASN.1 hex string","Change IP format","Text encoding","Swap endianness"]},{name:"Encryption / Encoding",ops:["AES Encrypt","AES Decrypt","Blowfish Encrypt","Blowfish Decrypt","DES Encrypt","DES Decrypt","Triple DES Encrypt","Triple DES Decrypt","Rabbit Encrypt","Rabbit Decrypt","RC4","RC4 Drop","ROT13","ROT47","XOR","XOR Brute Force","Vigen\xe8re Encode","Vigen\xe8re Decode","Derive PBKDF2 key","Derive EVP key"]},{name:"Public Key",ops:["Parse X.509 certificate","Parse ASN.1 hex string","PEM to Hex","Hex to PEM","Hex to Object Identifier","Object Identifier to Hex"]},{name:"Logical operations",ops:["XOR","XOR Brute Force","OR","NOT","AND","ADD","SUB","Rotate left","Rotate right","ROT13"]},{name:"Networking",ops:["Strip HTTP headers","Parse User Agent","Parse IP range","Parse IPv6 address","Parse URI","URL Encode","URL Decode","Format MAC addresses","Change IP format","Group IP addresses"]},{name:"Language",ops:["Text encoding","Unescape Unicode Characters"]},{name:"Utils",ops:["Diff","Remove whitespace","Remove null bytes","To Upper case","To Lower case","Add line numbers","Remove line numbers","Reverse","Sort","Unique","Split","Count occurrences","Expand alphabet range","Parse escaped string","Drop bytes","Take bytes","Pad lines","Find / Replace","Regular expression","Offset checker","Convert distance","Convert area","Convert mass","Convert speed","Convert data units","Parse UNIX file permissions","Swap endianness","Parse colour code"] -},{name:"Date / Time",ops:["Parse DateTime","Translate DateTime Format","From UNIX Timestamp","To UNIX Timestamp","Extract dates"]},{name:"Extractors",ops:["Strings","Extract IP addresses","Extract email addresses","Extract MAC addresses","Extract URLs","Extract domains","Extract file paths","Extract dates","Regular expression"]},{name:"Compression",ops:["Raw Deflate","Raw Inflate","Zlib Deflate","Zlib Inflate","Gzip","Gunzip","Zip","Unzip","Bzip2 Decompress"]},{name:"Hashing",ops:["Analyse hash","Generate all hashes","MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160","HMAC","Fletcher-16 Checksum","Adler-32 Checksum","CRC-32 Checksum","TCP/IP Checksum"]},{name:"Code tidy",ops:["Syntax highlighter","Generic Code Beautify","JavaScript Parser","JavaScript Beautify","JavaScript Minify","JSON Beautify","JSON Minify","XML Beautify","XML Minify","SQL Beautify","SQL Minify","CSS Beautify","CSS Minify","Strip HTML tags","Diff"]},{name:"Other",ops:["Entropy","Frequency distribution","Detect File Type","Scan for Embedded Files","Generate UUID","Numberwang"]},{name:"Flow control",ops:["Fork","Merge","Jump","Conditional Jump","Return"]}],OperationConfig={Fork:{description:"Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",run:FlowControl.run_fork,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Split delimiter",type:"binary_short_string",value:FlowControl.FORK_DELIM},{name:"Merge delimiter",type:"binary_short_string",value:FlowControl.MERGE_DELIM}]},Merge:{description:"Consolidate all branches back into a single trunk. The opposite of Fork.",run:FlowControl.run_merge,input_type:"string",output_type:"string",flow_control:!0,args:[]},Jump:{description:"Jump forwards or backwards over the specified number of operations.",run:FlowControl.run_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Number of operations to jump over",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},"Conditional Jump":{description:"Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression.",run:FlowControl.run_cond_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Match (regex)",type:"string",value:""},{name:"Number of operations to jump over if match found",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},Return:{description:"End execution of operations at this point in the recipe.",run:FlowControl.run_return,input_type:"string",output_type:"string",flow_control:!0,args:[]},"From Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>",run:Base64.run_from,highlight:Base64.highlight_from,highlight_reverse:Base64.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>",run:Base64.run_to,highlight:Base64.highlight_to,highlight_reverse:Base64.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS}]},"From Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_from_32,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_to_32,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET}]},"Show Base64 offsets":{description:"When a string is within a block of data and the whole block is Base64'd, the string itself could be represented in Base64 in three distinct ways depending on its offset within the block.<br><br>This operation shows all possible offsets for a given string so that each possible encoding can be considered.",run:Base64.run_offsets,input_type:"byte_array",output_type:"html",args:[{name:"Alphabet",type:"binary_string",value:Base64.ALPHABET},{name:"Show variable chars and padding",type:"boolean",value:Base64.OFFSETS_SHOW_VARIABLE}]},XOR:{description:"XOR the input with the given key.<br>e.g. <code>fe023da5</code><br><br><strong>Options</strong><br><u>Null preserving:</u> If the current byte is 0x00 or the same as the key, skip it.<br><br><u>Scheme:</u><ul><li>Standard - key is unchanged after each round</li><li>Input differential - key is set to the value of the previous unprocessed byte</li><li>Output differential - key is set to the value of the previous processed byte</li></ul>",run:BitwiseOp.run_xor,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT},{name:"Scheme",type:"option",value:BitwiseOp.XOR_SCHEME},{name:"Null preserving",type:"boolean",value:BitwiseOp.XOR_PRESERVE_NULLS}]},"XOR Brute Force":{description:"Enumerate all possible XOR solutions. Current maximum key length is 2 due to browser performance.<br><br>Optionally enter a regex string that you expect to find in the plaintext to filter results (crib).",run:BitwiseOp.run_xor_brute,input_type:"byte_array",output_type:"string",args:[{name:"Key length",type:"option",value:BitwiseOp.XOR_BRUTE_KEY_LENGTH},{name:"Length of sample",type:"number",value:BitwiseOp.XOR_BRUTE_SAMPLE_LENGTH},{name:"Offset of sample",type:"number",value:BitwiseOp.XOR_BRUTE_SAMPLE_OFFSET},{name:"Null preserving",type:"boolean",value:BitwiseOp.XOR_PRESERVE_NULLS},{name:"Differential",type:"boolean",value:BitwiseOp.XOR_DIFFERENTIAL},{name:"Crib (known plaintext string)",type:"binary_string",value:""},{name:"Print key",type:"boolean",value:BitwiseOp.XOR_BRUTE_PRINT_KEY},{name:"Output as hex",type:"boolean",value:BitwiseOp.XOR_BRUTE_OUTPUT_HEX}]},NOT:{description:"Returns the inverse of each byte.",run:BitwiseOp.run_not,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[]},AND:{description:"AND the input with the given key.<br>e.g. <code>fe023da5</code>",run:BitwiseOp.run_and,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},OR:{description:"OR the input with the given key.<br>e.g. <code>fe023da5</code>",run:BitwiseOp.run_or,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},ADD:{description:"ADD the input with the given key (e.g. <code>fe023da5</code>), MOD 255",run:BitwiseOp.run_add,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},SUB:{description:"SUB the input with the given key (e.g. <code>fe023da5</code>), MOD 255",run:BitwiseOp.run_sub,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},"From Hex":{description:"Converts a hexadecimal byte string back into a its raw value.<br><br>e.g. <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code> becomes the UTF-8 encoded string <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code>",run:ByteRepr.run_from_hex,highlight:ByteRepr.highlight_from,highlight_reverse:ByteRepr.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.HEX_DELIM_OPTIONS}]},"To Hex":{description:"Converts the input string to hexadecimal bytes separated by the specified delimiter.<br><br>e.g. The UTF-8 encoded string <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code> becomes <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code>",run:ByteRepr.run_to_hex,highlight:ByteRepr.highlight_to,highlight_reverse:ByteRepr.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.HEX_DELIM_OPTIONS}]},"From Charcode":{description:"Converts unicode character codes back into text.<br><br>e.g. <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code> becomes <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code>",run:ByteRepr.run_from_charcode,highlight:ByteRepr.highlight_from,highlight_reverse:ByteRepr.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS},{name:"Base",type:"number",value:ByteRepr.CHARCODE_BASE}]},"To Charcode":{description:"Converts text to its unicode character code equivalent.<br><br>e.g. <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code> becomes <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code>",run:ByteRepr.run_to_charcode,highlight:ByteRepr.highlight_to,highlight_reverse:ByteRepr.highlight_from,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS},{name:"Base",type:"number",value:ByteRepr.CHARCODE_BASE}]},"From Binary":{description:"Converts a binary string back into its raw form.<br><br>e.g. <code>01001000 01101001</code> becomes <code>Hi</code>",run:ByteRepr.run_from_binary,highlight:ByteRepr.highlight_from_binary,highlight_reverse:ByteRepr.highlight_to_binary,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.BIN_DELIM_OPTIONS}]},"To Binary":{description:"Displays the input data as a binary string.<br><br>e.g. <code>Hi</code> becomes <code>01001000 01101001</code>",run:ByteRepr.run_to_binary,highlight:ByteRepr.highlight_to_binary,highlight_reverse:ByteRepr.highlight_from_binary,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.BIN_DELIM_OPTIONS}]},"From Decimal":{description:"Converts the data from an ordinal integer array back into its raw form.<br><br>e.g. <code>72 101 108 108 111</code> becomes <code>Hello</code>",run:ByteRepr.run_from_decimal,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS}]},"To Decimal":{description:"Converts the input data to an ordinal integer array.<br><br>e.g. <code>Hello</code> becomes <code>72 101 108 108 111</code>",run:ByteRepr.run_to_decimal,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS}]},"From Hexdump":{description:"Attempts to convert a hexdump back into raw data. This operation supports many different hexdump variations, but probably not all. Make sure you verify that the data it gives you is correct before continuing analysis.",run:Hexdump.run_from,highlight:Hexdump.highlight_from,highlight_reverse:Hexdump.highlight_to,input_type:"string",output_type:"byte_array",args:[]},"To Hexdump":{description:"Creates a hexdump of the input data, displaying both the hexademinal values of each byte and an ASCII representation alongside.",run:Hexdump.run_to,highlight:Hexdump.highlight_to,highlight_reverse:Hexdump.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Width",type:"number",value:Hexdump.WIDTH},{name:"Upper case hex",type:"boolean",value:Hexdump.UPPER_CASE},{name:"Include final length",type:"boolean",value:Hexdump.INCLUDE_FINAL_LENGTH}]},"From Base":{description:"Converts a number to decimal from a given numerical base.",run:Base.run_from,input_type:"string",output_type:"number",args:[{name:"Radix",type:"number",value:Base.DEFAULT_RADIX}]},"To Base":{description:"Converts a decimal number to a given numerical base.",run:Base.run_to,input_type:"number",output_type:"string",args:[{name:"Radix",type:"number",value:Base.DEFAULT_RADIX}]},"From HTML Entity":{description:"Converts HTML entities back to characters<br><br>e.g. <code>&<span>amp;</span></code> becomes <code>&</code>",run:HTML.run_from_entity,input_type:"string",output_type:"string",args:[]},"To HTML Entity":{description:"Converts characters to HTML entities<br><br>e.g. <code>&</code> becomes <code>&<span>amp;</span></code>",run:HTML.run_to_entity,input_type:"string",output_type:"string",args:[{name:"Convert all characters",type:"boolean",value:HTML.CONVERT_ALL},{name:"Convert to",type:"option",value:HTML.CONVERT_OPTIONS}]},"Strip HTML tags":{description:"Removes all HTML tags from the input.",run:HTML.run_strip_tags,input_type:"string",output_type:"string",args:[{name:"Remove indentation",type:"boolean",value:HTML.REMOVE_INDENTATION},{name:"Remove excess line breaks",type:"boolean",value:HTML.REMOVE_LINE_BREAKS}]},"URL Decode":{description:"Converts URI/URL percent-encoded characters back to their raw values.<br><br>e.g. <code>%3d</code> becomes <code>=</code>",run:URL_.run_from,input_type:"string",output_type:"string",args:[]},"URL Encode":{description:"Encodes problematic characters into percent-encoding, a format supported by URIs/URLs.<br><br>e.g. <code>=</code> becomes <code>%3d</code>",run:URL_.run_to,input_type:"string",output_type:"string",args:[{name:"Encode all special chars",type:"boolean",value:URL_.ENCODE_ALL}]},"Parse URI":{description:"Pretty prints complicated Uniform Resource Identifier (URI) strings for ease of reading. Particularly useful for Uniform Resource Locators (URLs) with a lot of arguments.",run:URL_.run_parse,input_type:"string",output_type:"string",args:[]},"Unescape Unicode Characters":{description:"Converts unicode-escaped character notation back into raw characters.<br><br>Supports the prefixes:<ul><li><code>\\u</code></li><li><code>%u</code></li><li><code>U+</code></li></ul>e.g. <code>\\u03c3\\u03bf\\u03c5</code> becomes <code>\u03c3\u03bf\u03c5</code>",run:Unicode.run_unescape,input_type:"string",output_type:"string",args:[{name:"Prefix",type:"option",value:Unicode.PREFIXES}]},"From Quoted Printable":{description:"Converts QP-encoded text back to standard text.",run:QuotedPrintable.run_from,input_type:"string",output_type:"byte_array",args:[]},"To Quoted Printable":{description:"Quoted-Printable, or QP encoding, is an encoding using printable ASCII characters (alphanumeric and the equals sign '=') to transmit 8-bit data over a 7-bit data path or, generally, over a medium which is not 8-bit clean. It is defined as a MIME content transfer encoding for use in e-mail.<br><br>QP works by using the equals sign '=' as an escape character. It also limits line length to 76, as some software has limits on line length.",run:QuotedPrintable.run_to,input_type:"byte_array",output_type:"string",args:[]},"From Punycode":{description:"Punycode is a way to represent Unicode with the limited character subset of ASCII supported by the Domain Name System.<br><br>e.g. <code>mnchen-3ya</code> decodes to <code>m\xfcnchen</code>",run:Punycode.run_to_unicode,input_type:"string",output_type:"string",args:[{name:"Internationalised domain name",type:"boolean",value:Punycode.IDN}]},"To Punycode":{description:"Punycode is a way to represent Unicode with the limited character subset of ASCII supported by the Domain Name System.<br><br>e.g. <code>m\xfcnchen</code> encodes to <code>mnchen-3ya</code>",run:Punycode.run_to_ascii,input_type:"string",output_type:"string",args:[{name:"Internationalised domain name",type:"boolean",value:Punycode.IDN}]},"From Hex Content":{description:"Translates hexadecimal bytes in text back to raw bytes.<br><br>e.g. <code>foo|3d|bar</code> becomes <code>foo=bar</code>.",run:ByteRepr.run_from_hex_content,input_type:"string",output_type:"byte_array",args:[]},"To Hex Content":{description:"Converts special characters in a string to hexadecimal.<br><br>e.g. <code>foo=bar</code> becomes <code>foo|3d|bar</code>.",run:ByteRepr.run_to_hex_content,input_type:"byte_array",output_type:"string",args:[{name:"Convert",type:"option",value:ByteRepr.HEX_CONTENT_CONVERT_WHICH},{name:"Print spaces between bytes",type:"boolean",value:ByteRepr.HEX_CONTENT_SPACES_BETWEEN_BYTES}]},"Change IP format":{description:"Convert an IP address from one format to another, e.g. <code>172.20.23.54</code> to <code>ac141736</code>",run:IP.run_change_ip_format,input_type:"string",output_type:"string",args:[{name:"Input format",type:"option",value:IP.IP_FORMAT_LIST},{name:"Output format",type:"option",value:IP.IP_FORMAT_LIST}]},"Parse IP range":{description:"Given a CIDR range (e.g. <code>10.0.0.0/24</code>) or a hyphenated range (e.g. <code>10.0.0.0 - 10.0.1.0</code>), this operation provides network information and enumerates all IP addresses in the range.<br><br>IPv6 is supported but will not be enumerated.",run:IP.run_parse_ip_range,input_type:"string",output_type:"string",args:[{name:"Include network info",type:"boolean",value:IP.INCLUDE_NETWORK_INFO},{name:"Enumerate IP addresses",type:"boolean",value:IP.ENUMERATE_ADDRESSES},{name:"Allow large queries",type:"boolean",value:IP.ALLOW_LARGE_LIST}]},"Group IP addresses":{description:"Groups a list of IP addresses into subnets. Supports both IPv4 and IPv6 addresses.",run:IP.run_group_ips,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:IP.DELIM_OPTIONS},{name:"Subnet (CIDR)",type:"number",value:IP.GROUP_CIDR},{name:"Only show the subnets",type:"boolean",value:IP.GROUP_ONLY_SUBNET}]},"Parse IPv6 address":{description:"Displays the longhand and shorthand versions of a valid IPv6 address.<br><br>Recognises all reserved ranges and parses encapsulated or tunnelled addresses including Teredo and 6to4.",run:IP.run_parse_ipv6,input_type:"string",output_type:"string",args:[]},"Text encoding":{description:"Translates the data between different character encodings.<br><br>Supported charsets are:<ul><li>UTF8</li><li>UTF16</li><li>UTF16LE (little-endian)</li><li>UTF16BE (big-endian)</li><li>Hex</li><li>Base64</li><li>Latin1 (ISO-8859-1)</li><li>Windows-1251</li></ul>",run:CharEnc.run,input_type:"string",output_type:"string",args:[{name:"Input type",type:"option",value:CharEnc.IO_FORMAT},{name:"Output type",type:"option",value:CharEnc.IO_FORMAT}]},"AES Decrypt":{description:"To successfully decrypt AES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 16 bytes of encrypted material.",run:Cipher.run_aes_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"AES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Advanced Encryption Standard (AES) is a U.S. Federal Information Processing Standard (FIPS). It was selected after a 5-year process where 15 competing designs were evaluated.<br><br>AES-128, AES-192, and AES-256 are supported. The variant will be chosen based on the size of the key passed in. If a passphrase is used, a 256-bit key will be generated.",run:Cipher.run_aes_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"DES Decrypt":{description:"To successfully decrypt DES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_des_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"DES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>DES is a previously dominant algorithm for encryption, and was published as an official U.S. Federal Information Processing Standard (FIPS). It is now considered to be insecure due to its small key size.",run:Cipher.run_des_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"Triple DES Decrypt":{description:"To successfully decrypt Triple DES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_triple_des_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"Triple DES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Triple DES applies DES three times to each block to increase key size.",run:Cipher.run_triple_des_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"Blowfish Decrypt":{description:"Blowfish is a symmetric-key block cipher designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. AES now receives more attention.",run:Cipher.run_blowfish_dec,input_type:"string",output_type:"string",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Mode",type:"option",value:Cipher.BLOWFISH_MODES},{name:"Input format",type:"option",value:Cipher.IO_FORMAT3}]},"Blowfish Encrypt":{description:"Blowfish is a symmetric-key block cipher designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. AES now receives more attention.",run:Cipher.run_blowfish_enc,input_type:"string",output_type:"string",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Mode",type:"option",value:Cipher.BLOWFISH_MODES},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Rabbit Decrypt":{description:"To successfully decrypt Rabbit, you need either:<ul><li>The passphrase</li><li>Or the key and IV (This is currently broken. You need the key and salt at the moment.)</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_rabbit_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"Rabbit Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Rabbit is a high-performance stream cipher and a finalist in the eSTREAM Portfolio. It is one of the four designs selected after a 3 1/2 year process where 22 designs were evaluated.",run:Cipher.run_rabbit_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},RC4:{description:"RC4 is a widely-used stream cipher. It is used in popular protocols such as SSL and WEP. Although remarkable for its simplicity and speed, the algorithm's history doesn't inspire confidence in its security.",run:Cipher.run_rc4,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Passphrase",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Input format",type:"option",value:Cipher.IO_FORMAT4},{name:"Output format",type:"option",value:Cipher.IO_FORMAT4}]},"RC4 Drop":{description:"It was discovered that the first few bytes of the RC4 keystream are strongly non-random and leak information about the key. We can defend against this attack by discarding the initial portion of the keystream. This modified algorithm is traditionally called RC4-drop.",run:Cipher.run_rc4drop,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Passphrase",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Input format",type:"option",value:Cipher.IO_FORMAT4},{name:"Output format",type:"option",value:Cipher.IO_FORMAT4},{name:"Number of bytes to drop",type:"number",value:Cipher.RC4DROP_BYTES}]},"Derive PBKDF2 key":{description:"PBKDF2 is a password-based key derivation function. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.<br><br>A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.<br><br>Enter your passphrase as the input and then set the relevant options to generate a key.",run:Cipher.run_pbkdf2,input_type:"string",output_type:"string",args:[{name:"Key size",type:"number",value:Cipher.KDF_KEY_SIZE},{name:"Iterations",type:"number",value:Cipher.KDF_ITERATIONS},{name:"Salt (hex)",type:"string",value:""},{name:"Input format",type:"option",value:Cipher.IO_FORMAT2},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Derive EVP key":{description:"EVP is a password-based key derivation function used extensively in OpenSSL. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.<br><br>A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.<br><br>Enter your passphrase as the input and then set the relevant options to generate a key.",run:Cipher.run_evpkdf,input_type:"string",output_type:"string",args:[{name:"Key size",type:"number",value:Cipher.KDF_KEY_SIZE},{name:"Iterations",type:"number",value:Cipher.KDF_ITERATIONS},{name:"Salt (hex)",type:"string",value:""},{name:"Input format",type:"option",value:Cipher.IO_FORMAT2},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Vigen\xe8re Encode":{description:"The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",run:Cipher.run_vigenere_enc,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Key",type:"string",value:""}]},"Vigen\xe8re Decode":{description:"The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",run:Cipher.run_vigenere_dec,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Key",type:"string",value:""}]},"Rotate right":{description:"Rotates each byte to the right by the number of bits specified. Currently only supports 8-bit values.",run:Rotate.run_rotr,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Number of bits",type:"number",value:Rotate.ROTATE_AMOUNT},{name:"Rotate as a whole",type:"boolean",value:Rotate.ROTATE_WHOLE}]},"Rotate left":{description:"Rotates each byte to the left by the number of bits specified. Currently only supports 8-bit values.",run:Rotate.run_rotl,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Number of bits",type:"number",value:Rotate.ROTATE_AMOUNT},{name:"Rotate as a whole",type:"boolean",value:Rotate.ROTATE_WHOLE}]},ROT13:{description:"A simple caesar substitution cipher which rotates alphabet characters by the specified amount (default 13).",run:Rotate.run_rot13,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Rotate lower case chars",type:"boolean",value:Rotate.ROT13_LOWERCASE},{name:"Rotate upper case chars",type:"boolean",value:Rotate.ROT13_UPPERCASE},{name:"Amount",type:"number",value:Rotate.ROT13_AMOUNT -}]},ROT47:{description:"A slightly more complex variation of a caesar cipher, which includes ASCII characters from 33 '!' to 126 '~'. Default rotation: 47.",run:Rotate.run_rot47,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Amount",type:"number",value:Rotate.ROT47_AMOUNT}]},"Strip HTTP headers":{description:"Removes HTTP headers from a request or response by looking for the first instance of a double newline.",run:HTTP.run_strip_headers,input_type:"string",output_type:"string",args:[]},"Parse User Agent":{description:"Attempts to identify and categorise information contained in a user-agent string.",run:HTTP.run_parse_user_agent,input_type:"string",output_type:"string",args:[]},"Format MAC addresses":{description:"Displays given MAC addresses in multiple different formats.<br><br>Expects addresses in a list separated by newlines, spaces or commas.<br><br>WARNING: There are no validity checks.",run:MAC.run_format,input_type:"string",output_type:"string",args:[{name:"Output case",type:"option",value:MAC.OUTPUT_CASE},{name:"No delimiter",type:"boolean",value:MAC.NO_DELIM},{name:"Dash delimiter",type:"boolean",value:MAC.DASH_DELIM},{name:"Colon delimiter",type:"boolean",value:MAC.COLON_DELIM},{name:"Cisco style",type:"boolean",value:MAC.CISCO_STYLE}]},"Offset checker":{description:"Compares multiple inputs (separated by the specified delimiter) and highlights matching characters which appear at the same position in all samples.",run:StrUtils.run_offset_checker,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.OFF_CHK_SAMPLE_DELIMITER}]},"Remove whitespace":{description:"Optionally removes all spaces, carriage returns, line feeds, tabs and form feeds from the input data.<br><br>This operation also supports the removal of full stops which are sometimes used to represent non-printable bytes in ASCII output.",run:Tidy.run_remove_whitespace,input_type:"string",output_type:"string",args:[{name:"Spaces",type:"boolean",value:Tidy.REMOVE_SPACES},{name:"Carriage returns (\\r)",type:"boolean",value:Tidy.REMOVE_CARIAGE_RETURNS},{name:"Line feeds (\\n)",type:"boolean",value:Tidy.REMOVE_LINE_FEEDS},{name:"Tabs",type:"boolean",value:Tidy.REMOVE_TABS},{name:"Form feeds (\\f)",type:"boolean",value:Tidy.REMOVE_FORM_FEEDS},{name:"Full stops",type:"boolean",value:Tidy.REMOVE_FULL_STOPS}]},"Remove null bytes":{description:"Removes all null bytes (<code>0x00</code>) from the input.",run:Tidy.run_remove_nulls,input_type:"byte_array",output_type:"byte_array",args:[]},"Drop bytes":{description:"Cuts the specified number of bytes out of the data.",run:Tidy.run_drop_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.DROP_START},{name:"Length",type:"number",value:Tidy.DROP_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Take bytes":{description:"Takes a slice of the specified number of bytes from the data.",run:Tidy.run_take_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.TAKE_START},{name:"Length",type:"number",value:Tidy.TAKE_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Pad lines":{description:"Add the specified number of the specified character to the beginning or end of each line",run:Tidy.run_pad,input_type:"string",output_type:"string",args:[{name:"Position",type:"option",value:Tidy.PAD_POSITION},{name:"Length",type:"number",value:Tidy.PAD_LENGTH},{name:"Character",type:"binary_short_string",value:Tidy.PAD_CHAR}]},Reverse:{description:"Reverses the input string.",run:SeqUtils.run_reverse,input_type:"byte_array",output_type:"byte_array",args:[{name:"By",type:"option",value:SeqUtils.REVERSE_BY}]},Sort:{description:"Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only.",run:SeqUtils.run_sort,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS},{name:"Reverse",type:"boolean",value:SeqUtils.SORT_REVERSE},{name:"Order",type:"option",value:SeqUtils.SORT_ORDER}]},Unique:{description:"Removes duplicate strings from the input.",run:SeqUtils.run_unique,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS}]},"Count occurrences":{description:"Counts the number of times the provided string occurs in the input.",run:SeqUtils.run_count,input_type:"string",output_type:"number",args:[{name:"Search string",type:"toggle_string",value:"",toggle_values:SeqUtils.SEARCH_TYPE}]},"Add line numbers":{description:"Adds line numbers to the output.",run:SeqUtils.run_add_line_numbers,input_type:"string",output_type:"string",args:[]},"Remove line numbers":{description:"Removes line numbers from the output if they can be trivially detected.",run:SeqUtils.run_remove_line_numbers,input_type:"string",output_type:"string",args:[]},"Find / Replace":{description:"Replaces all occurrences of the first string with the second.<br><br>The three match options are only relevant to regex search strings.",run:StrUtils.run_find_replace,manual_bake:!0,input_type:"string",output_type:"string",args:[{name:"Find",type:"toggle_string",value:"",toggle_values:StrUtils.SEARCH_TYPE},{name:"Replace",type:"binary_string",value:""},{name:"Global match",type:"boolean",value:StrUtils.FIND_REPLACE_GLOBAL},{name:"Case insensitive",type:"boolean",value:StrUtils.FIND_REPLACE_CASE},{name:"Multiline matching",type:"boolean",value:StrUtils.FIND_REPLACE_MULTILINE}]},"To Upper case":{description:"Converts the input string to upper case, optionally limiting scope to only the first character in each word, sentence or paragraph.",run:StrUtils.run_upper,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Scope",type:"option",value:StrUtils.CASE_SCOPE}]},"To Lower case":{description:"Converts every character in the input to lower case.",run:StrUtils.run_lower,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[]},Split:{description:"Splits a string into sections around a given delimiter.",run:StrUtils.run_split,input_type:"string",output_type:"string",args:[{name:"Split delimiter",type:"binary_short_string",value:StrUtils.SPLIT_DELIM},{name:"Join delimiter",type:"option",value:StrUtils.DELIMITER_OPTIONS}]},Strings:{description:"Extracts all strings from the input.",run:Extract.run_strings,input_type:"string",output_type:"string",args:[{name:"Minimum length",type:"number",value:Extract.MIN_STRING_LEN},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract IP addresses":{description:"Extracts all IPv4 and IPv6 addresses.<br><br>Warning: Given a string <code>710.65.0.456</code>, this will match <code>10.65.0.45</code> so always check the original input!",run:Extract.run_ip,input_type:"string",output_type:"string",args:[{name:"IPv4",type:"boolean",value:Extract.INCLUDE_IPV4},{name:"IPv6",type:"boolean",value:Extract.INCLUDE_IPV6},{name:"Remove local IPv4 addresses",type:"boolean",value:Extract.REMOVE_LOCAL},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract email addresses":{description:"Extracts all email addresses from the input.",run:Extract.run_email,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract MAC addresses":{description:"Extracts all Media Access Control (MAC) addresses from the input.",run:Extract.run_mac,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract URLs":{description:"Extracts Uniform Resource Locators (URLs) from the input. The protocol (http, ftp etc.) is required otherwise there will be far too many false positives.",run:Extract.run_urls,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract domains":{description:"Extracts domain names with common Top-Level Domains (TLDs).<br>Note that this will not include paths. Use <strong>Extract URLs</strong> to find entire URLs.",run:Extract.run_domains,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract file paths":{description:"Extracts anything that looks like a Windows or UNIX file path.<br><br>Note that if UNIX is selected, there will likely be a lot of false positives.",run:Extract.run_file_paths,input_type:"string",output_type:"string",args:[{name:"Windows",type:"boolean",value:Extract.INCLUDE_WIN_PATH},{name:"UNIX",type:"boolean",value:Extract.INCLUDE_UNIX_PATH},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract dates":{description:"Extracts dates in the following formats<ul><li><code>yyyy-mm-dd</code></li><li><code>dd/mm/yyyy</code></li><li><code>mm/dd/yyyy</code></li></ul>Dividers can be any of /, -, . or space",run:Extract.run_dates,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Regular expression":{description:"Define your own regular expression to search the input data with, optionally choosing from a list of pre-defined patterns.",run:StrUtils.run_regex,manual_bake:!0,input_type:"string",output_type:"html",args:[{name:"Built in regexes",type:"populate_option",value:StrUtils.REGEX_PRE_POPULATE,target:1},{name:"Regex",type:"text",value:""},{name:"Case insensitive",type:"boolean",value:StrUtils.REGEX_CASE_INSENSITIVE},{name:"Multiline matching",type:"boolean",value:StrUtils.REGEX_MULTILINE_MATCHING},{name:"Display total",type:"boolean",value:StrUtils.DISPLAY_TOTAL},{name:"Output format",type:"option",value:StrUtils.OUTPUT_FORMAT}]},"From UNIX Timestamp":{description:"Converts a UNIX timestamp to a datetime string.<br><br>e.g. <code>978346800</code> becomes <code>Mon 1 January 2001 11:00:00 UTC</code>",run:DateTime.run_from_unix_timestamp,input_type:"number",output_type:"string",args:[{name:"Units",type:"option",value:DateTime.UNITS}]},"To UNIX Timestamp":{description:"Parses a datetime string and returns the corresponding UNIX timestamp.<br><br>e.g. <code>Mon 1 January 2001 11:00:00 UTC</code> becomes <code>978346800</code>",run:DateTime.run_to_unix_timestamp,input_type:"string",output_type:"number",args:[{name:"Units",type:"option",value:DateTime.UNITS}]},"Translate DateTime Format":{description:"Parses a datetime string in one format and re-writes it in another.<br><br>Run with no input to see the relevant format string examples.",run:DateTime.run_translate_format,input_type:"string",output_type:"html",args:[{name:"Built in formats",type:"populate_option",value:DateTime.DATETIME_FORMATS,target:1},{name:"Input format string",type:"binary_string",value:DateTime.INPUT_FORMAT_STRING},{name:"Input timezone",type:"option",value:DateTime.TIMEZONES},{name:"Output format string",type:"binary_string",value:DateTime.OUTPUT_FORMAT_STRING},{name:"Output timezone",type:"option",value:DateTime.TIMEZONES}]},"Parse DateTime":{description:"Parses a DateTime string in your specified format and displays it in whichever timezone you choose with the following information:<ul><li>Date</li><li>Time</li><li>Period (AM/PM)</li><li>Timezone</li><li>UTC offset</li><li>Daylight Saving Time</li><li>Leap year</li><li>Days in this month</li><li>Day of year</li><li>Week number</li><li>Quarter</li></ul>Run with no input to see format string examples if required.",run:DateTime.run_parse,input_type:"string",output_type:"html",args:[{name:"Built in formats",type:"populate_option",value:DateTime.DATETIME_FORMATS,target:1},{name:"Input format string",type:"binary_string",value:DateTime.INPUT_FORMAT_STRING},{name:"Input timezone",type:"option",value:DateTime.TIMEZONES}]},"Convert distance":{description:"Converts a unit of distance to another format.",run:Convert.run_distance,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.DISTANCE_UNITS},{name:"Output units",type:"option",value:Convert.DISTANCE_UNITS}]},"Convert area":{description:"Converts a unit of area to another format.",run:Convert.run_area,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.AREA_UNITS},{name:"Output units",type:"option",value:Convert.AREA_UNITS}]},"Convert mass":{description:"Converts a unit of mass to another format.",run:Convert.run_mass,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.MASS_UNITS},{name:"Output units",type:"option",value:Convert.MASS_UNITS}]},"Convert speed":{description:"Converts a unit of speed to another format.",run:Convert.run_speed,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.SPEED_UNITS},{name:"Output units",type:"option",value:Convert.SPEED_UNITS}]},"Convert data units":{description:"Converts a unit of data to another format.",run:Convert.run_data_size,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.DATA_UNITS},{name:"Output units",type:"option",value:Convert.DATA_UNITS}]},"Raw Deflate":{description:"Compresses data using the deflate algorithm with no headers.",run:Compress.run_raw_deflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},"Raw Inflate":{description:"Decompresses data which has been compressed using the deflate algorithm with no headers.",run:Compress.run_raw_inflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start index",type:"number",value:Compress.INFLATE_INDEX},{name:"Initial output buffer size",type:"number",value:Compress.INFLATE_BUFFER_SIZE},{name:"Buffer expansion type",type:"option",value:Compress.INFLATE_BUFFER_TYPE},{name:"Resize buffer after decompression",type:"boolean",value:Compress.INFLATE_RESIZE},{name:"Verify result",type:"boolean",value:Compress.INFLATE_VERIFY}]},"Zlib Deflate":{description:"Compresses data using the deflate algorithm adding zlib headers.",run:Compress.run_zlib_deflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},"Zlib Inflate":{description:"Decompresses data which has been compressed using the deflate algorithm with zlib headers.",run:Compress.run_zlib_inflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start index",type:"number",value:Compress.INFLATE_INDEX},{name:"Initial output buffer size",type:"number",value:Compress.INFLATE_BUFFER_SIZE},{name:"Buffer expansion type",type:"option",value:Compress.INFLATE_BUFFER_TYPE},{name:"Resize buffer after decompression",type:"boolean",value:Compress.INFLATE_RESIZE},{name:"Verify result",type:"boolean",value:Compress.INFLATE_VERIFY}]},Gzip:{description:"Compresses data using the deflate algorithm with gzip headers.",run:Compress.run_gzip,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE},{name:"Filename (optional)",type:"string",value:""},{name:"Comment (optional)",type:"string",value:""},{name:"Include file checksum",type:"boolean",value:Compress.GZIP_CHECKSUM}]},Gunzip:{description:"Decompresses data which has been compressed using the deflate algorithm with gzip headers.",run:Compress.run_gunzip,input_type:"byte_array",output_type:"byte_array",args:[]},Zip:{description:"Compresses data using the PKZIP algorithm with the given filename.<br><br>No support for multiple files at this time.",run:Compress.run_pkzip,input_type:"byte_array",output_type:"byte_array",args:[{name:"Filename",type:"string",value:Compress.PKZIP_FILENAME},{name:"Comment",type:"string",value:""},{name:"Password",type:"binary_string",value:""},{name:"Compression method",type:"option",value:Compress.COMPRESSION_METHOD},{name:"Operating system",type:"option",value:Compress.OS},{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},Unzip:{description:"Decompresses data using the PKZIP algorithm and displays it per file, with support for passwords.",run:Compress.run_pkunzip,input_type:"byte_array",output_type:"html",args:[{name:"Password",type:"binary_string",value:""},{name:"Verify result",type:"boolean",value:Compress.PKUNZIP_VERIFY}]},"Bzip2 Decompress":{description:"Decompresses data using the Bzip2 algorithm.",run:Compress.run_bzip2_decompress,input_type:"byte_array",output_type:"string",args:[]},"Generic Code Beautify":{description:"Attempts to pretty print C-style languages such as C, C++, C#, Java, PHP, JavaScript etc.<br><br>This will not do a perfect job, and the resulting code may not work any more. This operation is designed purely to make obfuscated or minified code more easy to read and understand.<br><br>Things which will not work properly:<ul><li>For loop formatting</li><li>Do-While loop formatting</li><li>Switch/Case indentation</li><li>Certain bit shift operators</li></ul>",run:Code.run_generic_beautify,input_type:"string",output_type:"string",args:[]},"JavaScript Parser":{description:"Returns an Abstract Syntax Tree for valid JavaScript code.",run:JS.run_parse,input_type:"string",output_type:"string",args:[{name:"Location info",type:"boolean",value:JS.PARSE_LOC},{name:"Range info",type:"boolean",value:JS.PARSE_RANGE},{name:"Include tokens array",type:"boolean",value:JS.PARSE_TOKENS},{name:"Include comments array",type:"boolean",value:JS.PARSE_COMMENT},{name:"Report errors and try to continue",type:"boolean",value:JS.PARSE_TOLERANT}]},"JavaScript Beautify":{description:"Parses and pretty prints valid JavaScript code. Also works with JavaScript Object Notation (JSON).",run:JS.run_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:JS.BEAUTIFY_INDENT},{name:"Quotes",type:"option",value:JS.BEAUTIFY_QUOTES},{name:"Semicolons before closing braces",type:"boolean",value:JS.BEAUTIFY_SEMICOLONS},{name:"Include comments",type:"boolean",value:JS.BEAUTIFY_COMMENT}]},"JavaScript Minify":{description:"Compresses JavaScript code.",run:JS.run_minify,input_type:"string",output_type:"string",args:[]},"XML Beautify":{description:"Indents and prettifies eXtensible Markup Language (XML) code.",run:Code.run_xml_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"JSON Beautify":{description:"Indents and prettifies JavaScript Object Notation (JSON) code.",run:Code.run_json_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"CSS Beautify":{description:"Indents and prettifies Cascading Style Sheets (CSS) code.",run:Code.run_css_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"SQL Beautify":{description:"Indents and prettifies Structured Query Language (SQL) code.",run:Code.run_sql_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"XML Minify":{description:"Compresses eXtensible Markup Language (XML) code.",run:Code.run_xml_minify,input_type:"string",output_type:"string",args:[{name:"Preserve comments",type:"boolean",value:Code.PRESERVE_COMMENTS}]},"JSON Minify":{description:"Compresses JavaScript Object Notation (JSON) code.",run:Code.run_json_minify,input_type:"string",output_type:"string",args:[]},"CSS Minify":{description:"Compresses Cascading Style Sheets (CSS) code.",run:Code.run_css_minify,input_type:"string",output_type:"string",args:[{name:"Preserve comments",type:"boolean",value:Code.PRESERVE_COMMENTS}]},"SQL Minify":{description:"Compresses Structured Query Language (SQL) code.",run:Code.run_sql_minify,input_type:"string",output_type:"string",args:[]},"Analyse hash":{description:"Tries to determine information about a given hash and suggests which algorithm may have been used to generate it based on its length.",run:Hash.run_analyse,input_type:"string",output_type:"string",args:[]},MD5:{description:"MD5 (Message-Digest 5) is a widely used hash function. It has been used in a variety of security applications and is also commonly used to check the integrity of files.<br><br>However, MD5 is not collision resistant and it isn't suitable for applications like SSL/TLS certificates or digital signatures that rely on this property.",run:Hash.run_md5,input_type:"string",output_type:"string",args:[]},SHA1:{description:"The SHA (Secure Hash Algorithm) hash functions were designed by the NSA. SHA-1 is the most established of the existing SHA hash functions and it is used in a variety of security applications and protocols.<br><br>However, SHA-1's collision resistance has been weakening as new attacks are discovered or improved.",run:Hash.run_sha1,input_type:"string",output_type:"string",args:[]},SHA224:{description:"SHA-224 is largely identical to SHA-256 but is truncated to 224 bytes.",run:Hash.run_sha224,input_type:"string",output_type:"string",args:[]},SHA256:{description:"SHA-256 is one of the four variants in the SHA-2 set. It isn't as widely used as SHA-1, though it provides much better security.",run:Hash.run_sha256,input_type:"string",output_type:"string",args:[]},SHA384:{description:"SHA-384 is largely identical to SHA-512 but is truncated to 384 bytes.",run:Hash.run_sha384,input_type:"string",output_type:"string",args:[]},SHA512:{description:"SHA-512 is largely identical to SHA-256 but operates on 64-bit words rather than 32.",run:Hash.run_sha512,input_type:"string",output_type:"string",args:[]},SHA3:{description:"This is an implementation of Keccak[c=2d]. SHA3 functions based on different implementations of Keccak will give different results.",run:Hash.run_sha3,input_type:"string",output_type:"string",args:[{name:"Output length",type:"option",value:Hash.SHA3_LENGTH}]},"RIPEMD-160":{description:"RIPEMD (RACE Integrity Primitives Evaluation Message Digest) is a family of cryptographic hash functions developed in Leuven, Belgium, by Hans Dobbertin, Antoon Bosselaers and Bart Preneel at the COSIC research group at the Katholieke Universiteit Leuven, and first published in 1996.<br><br>RIPEMD was based upon the design principles used in MD4, and is similar in performance to the more popular SHA-1.<br><br>RIPEMD-160 is an improved, 160-bit version of the original RIPEMD, and the most common version in the family.",run:Hash.run_ripemd160,input_type:"string",output_type:"string",args:[]},HMAC:{description:"Keyed-Hash Message Authentication Codes (HMAC) are a mechanism for message authentication using cryptographic hash functions.",run:Hash.run_hmac,input_type:"string",output_type:"string",args:[{name:"Password",type:"binary_string",value:""},{name:"Hashing function",type:"option",value:Hash.HMAC_FUNCTIONS}]},"Fletcher-16 Checksum":{description:"The Fletcher checksum is an algorithm for computing a position-dependent checksum devised by John Gould Fletcher at Lawrence Livermore Labs in the late 1970s.<br><br>The objective of the Fletcher checksum was to provide error-detection properties approaching those of a cyclic redundancy check but with the lower computational effort associated with summation techniques.",run:Checksum.run_fletcher16,input_type:"byte_array",output_type:"string",args:[]},"Adler-32 Checksum":{description:"Adler-32 is a checksum algorithm which was invented by Mark Adler in 1995, and is a modification of the Fletcher checksum. Compared to a cyclic redundancy check of the same length, it trades reliability for speed (preferring the latter).<br><br>Adler-32 is more reliable than Fletcher-16, and slightly less reliable than Fletcher-32.",run:Checksum.run_adler32,input_type:"byte_array",output_type:"string",args:[]},"CRC-32 Checksum":{description:"A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.<br><br>The CRC was invented by W. Wesley Peterson in 1961; the 32-bit CRC function of Ethernet and many other standards is the work of several researchers and was published in 1975.",run:Checksum.run_crc32,input_type:"byte_array",output_type:"string",args:[]},"Generate all hashes":{description:"Generates all available hashes and checksums for the input.",run:Hash.run_all,input_type:"string",output_type:"string",args:[]},Entropy:{description:"Calculates the Shannon entropy of the input data which gives an idea of its randomness. 8 is the maximum.",run:Entropy.run_entropy,input_type:"byte_array",output_type:"html",args:[{name:"Chunk size",type:"number",value:Entropy.CHUNK_SIZE}]},"Frequency distribution":{description:"Displays the distribution of bytes in the data as a graph.",run:Entropy.run_freq_distrib,input_type:"byte_array",output_type:"html",args:[{name:"Show 0%'s",type:"boolean",value:Entropy.FREQ_ZEROS}]},Numberwang:{description:"Based on the popular gameshow by Mitchell and Webb.",run:Numberwang.run,input_type:"string",output_type:"string",args:[]},"Parse X.509 certificate":{description:"X.509 is an ITU-T standard for a public key infrastructure (PKI) and Privilege Management Infrastructure (PMI). It is commonly involved with SSL/TLS security.<br><br>This operation displays the contents of a certificate in a human readable format, similar to the openssl command line tool.",run:PublicKey.run_parse_x509,input_type:"string",output_type:"string",args:[{name:"Input format",type:"option",value:PublicKey.X509_INPUT_FORMAT}]},"PEM to Hex":{description:"Converts PEM (Privacy Enhanced Mail) format to a hexadecimal DER (Distinguished Encoding Rules) string.",run:PublicKey.run_pem_to_hex,input_type:"string",output_type:"string",args:[]},"Hex to PEM":{description:"Converts a hexadecimal DER (Distinguished Encoding Rules) string into PEM (Privacy Enhanced Mail) format.",run:PublicKey.run_hex_to_pem,input_type:"string",output_type:"string",args:[{name:"Header string",type:"string",value:PublicKey.PEM_HEADER_STRING}]},"Hex to Object Identifier":{description:"Converts a hexadecimal string into an object identifier (OID).",run:PublicKey.run_hex_to_object_identifier,input_type:"string",output_type:"string",args:[]},"Object Identifier to Hex":{description:"Converts an object identifier (OID) into a hexadecimal string.",run:PublicKey.run_object_identifier_to_hex,input_type:"string",output_type:"string",args:[]},"Parse ASN.1 hex string":{description:"Abstract Syntax Notation One (ASN.1) is a standard and notation that describes rules and structures for representing, encoding, transmitting, and decoding data in telecommunications and computer networking.<br><br>This operation parses arbitrary ASN.1 data and presents the resulting tree.",run:PublicKey.run_parse_asn1_hex_string,input_type:"string",output_type:"string",args:[{name:"Starting index",type:"number",value:0},{name:"Truncate octet strings longer than",type:"number",value:PublicKey.ASN1_TRUNCATE_LENGTH}]},"Detect File Type":{description:"Attempts to guess the MIME (Multipurpose Internet Mail Extensions) type of the data based on 'magic bytes'.<br><br>Currently supports the following file types: 7z, amr, avi, bmp, bz2, class, cr2, crx, dex, dmg, doc, elf, eot, epub, exe, flac, flv, gif, gz, ico, iso, jpg, jxr, m4a, m4v, mid, mkv, mov, mp3, mp4, mpg, ogg, otf, pdf, png, ppt, ps, psd, rar, rtf, sqlite, swf, tar, tar.z, tif, ttf, utf8, vmdk, wav, webm, webp, wmv, woff, woff2, xls, xz, zip.",run:FileType.run_detect,input_type:"byte_array",output_type:"string",args:[]},"Scan for Embedded Files":{description:"Scans the data for potential embedded files by looking for magic bytes at all offsets. This operation is prone to false positives.<br><br>WARNING: Files over about 100KB in size will take a VERY long time to process.",run:FileType.run_scan_for_embedded_files,input_type:"byte_array",output_type:"string",args:[{name:"Ignore common byte sequences",type:"boolean",value:FileType.IGNORE_COMMON_BYTE_SEQUENCES}]},"Expand alphabet range":{description:"Expand an alphabet range string into a list of the characters in that range.<br><br>e.g. <code>a-z</code> becomes <code>abcdefghijklmnopqrstuvwxyz</code>.",run:SeqUtils.run_expand_alph_range,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"binary_string",value:""}]},Diff:{description:"Compares two inputs (separated by the specified delimiter) and highlights the differences between them.",run:StrUtils.run_diff,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.DIFF_SAMPLE_DELIMITER},{name:"Diff by",type:"option",value:StrUtils.DIFF_BY},{name:"Show added",type:"boolean",value:!0},{name:"Show removed",type:"boolean",value:!0},{name:"Ignore whitespace (relevant for word and line)",type:"boolean",value:!1}]},"Parse UNIX file permissions":{description:"Given a UNIX/Linux file permission string in octal or textual format, this operation explains which permissions are granted to which user groups.<br><br>Input should be in either octal (e.g. <code>755</code>) or textual (e.g. <code>drwxr-xr-x</code>) format.",run:OS.run_parse_unix_perms,input_type:"string",output_type:"string",args:[]},"Swap endianness":{description:"Switches the data from big-endian to little-endian or vice-versa. Data can be read in as hexadecimal or raw bytes. It will be returned in the same format as it is entered.",run:Endian.run_swap_endianness,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Data format",type:"option",value:Endian.DATA_FORMAT},{name:"Word length (bytes)",type:"number",value:Endian.WORD_LENGTH},{name:"Pad incomplete words",type:"boolean",value:Endian.PAD_INCOMPLETE_WORDS}]},"Syntax highlighter":{description:"Adds syntax highlighting to a range of source code languages. Note that this will not indent the code. Use one of the 'Beautify' operations for that.",run:Code.run_syntax_highlight,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"html",args:[{name:"Language/File extension",type:"option",value:Code.LANGUAGES},{name:"Display line numbers",type:"boolean",value:Code.LINE_NUMS}]},"Parse escaped string":{description:"Replaces escaped characters with the bytes they represent.<br><br>e.g.<code>Hello\\nWorld</code> becomes <code>Hello<br>World</code>",run:StrUtils.run_parse_escaped_string,input_type:"string",output_type:"string",args:[]},"TCP/IP Checksum":{description:"Calculates the checksum for a TCP (Transport Control Protocol) or IP (Internet Protocol) header from an input of raw bytes.",run:Checksum.run_tcp_ip,input_type:"byte_array",output_type:"string",args:[]},"Parse colour code":{description:"Converts a colour code in a standard format to other standard formats and displays the colour itself.<br><br><strong>Example inputs</strong><ul><li><code>#d9edf7</code></li><li><code>rgba(217,237,247,1)</code></li><li><code>hsla(200,65%,91%,1)</code></li><li><code>cmyk(0.12, 0.04, 0.00, 0.03)</code></li></ul>",run:HTML.run_parse_colour_code,input_type:"string",output_type:"html",args:[]},"Generate UUID":{description:"Generates an RFC 4122 version 4 compliant Universally Unique Identifier (UUID), also known as a Globally Unique Identifier (GUID).<br><br>A version 4 UUID relies on random numbers, in this case generated using <code>window.crypto</code> if available and falling back to <code>Math.random</code> if not.",run:UUID.run_generate_v4,input_type:"string",output_type:"string",args:[]}};var ControlsWaiter=function(a,b){this.app=a,this.manager=b};ControlsWaiter.prototype.adjust_width=function(){var a=document.getElementById("controls"),b=document.getElementById("step"),c=document.getElementById("clr-breaks"),d=document.querySelector("#save img"),e=document.querySelector("#load img"),f=document.querySelector("#step img"),g=document.querySelector("#clr-recipe img"),h=document.querySelector("#clr-breaks img"); -a.clientWidth<470?b.childNodes[1].nodeValue=" Step":b.childNodes[1].nodeValue=" Step through",a.clientWidth<400?(d.style.display="none",e.style.display="none",f.style.display="none",g.style.display="none",h.style.display="none"):(d.style.display="inline",e.style.display="inline",f.style.display="inline",g.style.display="inline",h.style.display="inline"),a.clientWidth<330?c.childNodes[1].nodeValue=" Clear breaks":c.childNodes[1].nodeValue=" Clear breakpoints"},ControlsWaiter.prototype.set_auto_bake=function(a){var b=document.getElementById("auto-bake");b.checked!==a&&b.click()},ControlsWaiter.prototype.bake_click=function(){this.app.bake(),$("#output-text").selectRange(0)},ControlsWaiter.prototype.step_click=function(){this.app.bake(!0),$("#output-text").selectRange(0)},ControlsWaiter.prototype.auto_bake_change=function(){var a=document.getElementById("auto-bake-label"),b=document.getElementById("auto-bake");this.app.auto_bake_=b.checked,b.checked?(a.classList.remove("btn-default"),a.classList.add("btn-success")):(a.classList.remove("btn-success"),a.classList.add("btn-default"))},ControlsWaiter.prototype.clear_recipe_click=function(){this.manager.recipe.clear_recipe()},ControlsWaiter.prototype.clear_breaks_click=function(){for(var a=document.querySelectorAll("#rec_list li.operation .breakpoint"),b=0;b<a.length;b++)a[b].setAttribute("break","false"),a[b].classList.remove("breakpoint-selected")},ControlsWaiter.prototype.initialise_save_link=function(a){a=a||this.app.get_recipe_config();var b=document.getElementById("save-link-recipe-checkbox").checked,c=document.getElementById("save-link-input-checkbox").checked,d=document.getElementById("save-link"),e=this.generate_state_url(b,c,a);d.innerHTML=Utils.truncate(e,120),d.setAttribute("href",e)},ControlsWaiter.prototype.generate_state_url=function(a,b,c){c=c||this.app.get_recipe_config();var d=window.location.protocol+"//"+window.location.host+window.location.pathname,e=JSON.stringify(c),f=Utils.to_base64(this.app.get_input(),"A-Za-z0-9+/");return a=a&&c.length>0,b=b&&f.length>0&&f.length<8e3,a&&(d+="?recipe="+encodeURIComponent(e)),a&&b?d+="&input="+encodeURIComponent(f):b&&(d+="?input="+encodeURIComponent(f)),d},ControlsWaiter.prototype.save_text_change=function(){try{var a=JSON.parse(document.getElementById("save-text").value);this.initialise_save_link(a)}catch(a){}},ControlsWaiter.prototype.save_click=function(){var a=this.app.get_recipe_config(),b=JSON.stringify(a).replace(/},{/g,"},\n{");document.getElementById("save-text").value=b,this.initialise_save_link(a),$("#save-modal").modal()},ControlsWaiter.prototype.slr_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.sli_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.load_click=function(){this.populate_load_recipes_list(),$("#load-modal").modal()},ControlsWaiter.prototype.save_button_click=function(){var a=document.getElementById("save-name").value,b=document.getElementById("save-text").value;if(!a)return void this.app.alert("Please enter a recipe name","danger",2e3);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=localStorage.recipe_id||0;c.push({id:++d,name:a,recipe:b}),localStorage.saved_recipes=JSON.stringify(c),localStorage.recipe_id=d,this.app.alert('Recipe saved as "'+a+'".',"success",2e3)},ControlsWaiter.prototype.populate_load_recipes_list=function(){for(var a=document.getElementById("load-name"),b=a.options.length;b--;)a.remove(b);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];for(b=0;b<c.length;b++){var d=document.createElement("option");d.value=c[b].id,d.innerHTML=c[b].name,a.appendChild(d)}document.getElementById("load-text").value=c.length?c[0].recipe:""},ControlsWaiter.prototype.load_delete_click=function(){var a=document.getElementById("load-name").value,b=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];b=b.filter(function(b){return b.id!==a}),localStorage.saved_recipes=JSON.stringify(b),this.populate_load_recipes_list()},ControlsWaiter.prototype.load_name_change=function(a){var b=a.target,c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=parseInt(b.value,10),e=c.filter(function(a){return a.id===d})[0];document.getElementById("load-text").value=e.recipe},ControlsWaiter.prototype.load_button_click=function(){try{var a=JSON.parse(document.getElementById("load-text").value);this.app.set_recipe_config(a),$("#rec_list [data-toggle=popover]").popover()}catch(a){this.app.alert("Invalid recipe","danger",2e3)}};var HTMLApp=function(a,b,c,d){this.categories=a,this.operations=b,this.dfavourites=c,this.doptions=d,this.options=Utils.extend({},d),this.chef=new Chef,this.manager=new Manager(this),this.auto_bake_=!1,this.progress=0,this.ing_id=0,window.chef=this.chef};HTMLApp.prototype.setup=function(){document.dispatchEvent(this.manager.appstart),this.initialise_splitter(),this.load_local_storage(),this.populate_operations_list(),this.manager.setup(),this.reset_layout(),this.set_compile_message(),this.load_URI_params()},HTMLApp.prototype.handle_error=function(a){console.error(a);var b=a.display_str||a.toString();this.alert(b,"danger",this.options.error_timeout,!this.options.show_errors)},HTMLApp.prototype.bake=function(a){var b;try{b=this.chef.bake(this.get_input(),this.get_recipe_config(),this.options,this.progress,a)}catch(a){this.handle_error(a)}b&&(b.error&&this.handle_error(b.error),this.options=b.options,this.dish_str="html"===b.type?Utils.strip_html_tags(b.result,!0):b.result,this.progress=b.progress,this.manager.recipe.update_breakpoint_indicator(b.progress),this.manager.output.set(b.result,b.type,b.duration),b.duration>this.options.auto_bake_threshold&&this.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.alert("Baking took longer than "+this.options.auto_bake_threshold+"ms, Auto Bake has been disabled.","warning",5e3)))},HTMLApp.prototype.auto_bake=function(){this.auto_bake_&&this.bake()},HTMLApp.prototype.silent_bake=function(){var a=(new Date).getTime(),b=this.get_recipe_config();return this.auto_bake_&&this.chef.silent_bake(b),(new Date).getTime()-a},HTMLApp.prototype.get_input=function(){var a=this.manager.input.get();return sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),a},HTMLApp.prototype.set_input=function(a){sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),this.manager.input.set(a)},HTMLApp.prototype.populate_operations_list=function(){document.body.appendChild(document.getElementById("edit-favourites"));for(var a="",b=0;b<this.categories.length;b++){for(var c=this.categories[b],d=0===b,e=new HTMLCategory(c.name,d),f=0;f<c.ops.length;f++){var g=c.ops[f],h=new HTMLOperation(g,this.operations[g],this,this.manager);e.add_operation(h)}a+=e.to_html()}document.getElementById("categories").innerHTML=a;var i=document.querySelectorAll("#categories .op_list");for(b=0;b<i.length;b++)i[b].dispatchEvent(this.manager.oplistcreate);document.querySelector("#categories a").appendChild(document.getElementById("edit-favourites"))},HTMLApp.prototype.initialise_splitter=function(){Split(["#operations","#recipe","#IO"],{sizes:[20,30,50],minSize:[240,325,500],gutterSize:4,onDrag:this.manager.controls.adjust_width.bind(this.manager.controls)}),Split(["#input","#output"],{direction:"vertical",gutterSize:4}),this.reset_layout()},HTMLApp.prototype.load_local_storage=function(){var a;void 0!==localStorage.options&&(a=JSON.parse(localStorage.options)),this.manager.options.load(a),this.load_favourites()},HTMLApp.prototype.load_favourites=function(){var a=localStorage.favourites&&localStorage.favourites.length>2?JSON.parse(localStorage.favourites):this.dfavourites;a=this.valid_favourites(a),this.save_favourites(a);var b=this.categories.filter(function(a){return"Favourites"===a.name})[0];b?b.ops=a:this.categories.unshift({name:"Favourites",ops:a})},HTMLApp.prototype.valid_favourites=function(a){for(var b=[],c=0;c<a.length;c++)this.operations.hasOwnProperty(a[c])?b.push(a[c]):this.alert('The operation "'+Utils.escape_html(a[c])+'" is no longer available. It has been removed from your favourites.',"info");return b},HTMLApp.prototype.save_favourites=function(a){localStorage.setItem("favourites",JSON.stringify(this.valid_favourites(a)))},HTMLApp.prototype.reset_favourites=function(){this.save_favourites(this.dfavourites),this.load_favourites(),this.populate_operations_list(),this.manager.recipe.initialise_operation_drag_n_drop()},HTMLApp.prototype.add_favourite=function(a){var b=JSON.parse(localStorage.favourites);return b.indexOf(a)>=0?void this.alert("'"+a+"' is already in your favourites","info",2e3):(b.push(a),this.save_favourites(b),this.load_favourites(),this.populate_operations_list(),void this.manager.recipe.initialise_operation_drag_n_drop())},HTMLApp.prototype.load_URI_params=function(){this.query_string=function(a){if(""===a)return{};for(var b={},c=0;c<a.length;c++){var d=a[c].split("=");2!==d.length?b[a[c]]=!0:b[d[0]]=decodeURIComponent(d[1].replace(/\+/g," "))}return b}(window.location.search.substr(1).split("&"));var a=this.auto_bake_;if(this.auto_bake_=!1,this.query_string.recipe)try{var b=JSON.parse(this.query_string.recipe);this.set_recipe_config(b)}catch(a){}else if(this.query_string.op){this.manager.recipe.clear_recipe();try{this.manager.recipe.add_operation(this.query_string.op)}catch(a){var c=this.manager.ops.filter_operations(this.query_string.op,!1);c.length&&this.manager.recipe.add_operation(c[0].name);var d=document.getElementById("search");d.value=this.query_string.op,d.dispatchEvent(new Event("search"))}}if(this.query_string.input)try{var e=Utils.from_base64(this.query_string.input);this.set_input(e)}catch(a){}this.auto_bake_=a,this.auto_bake()},HTMLApp.prototype.next_ing_id=function(){return this.ing_id++},HTMLApp.prototype.get_recipe_config=function(){var a=this.manager.recipe.get_config();return sessionStorage.setItem("recipe_config",JSON.stringify(a)),a},HTMLApp.prototype.set_recipe_config=function(a){sessionStorage.setItem("recipe_config",JSON.stringify(a)),document.getElementById("rec_list").innerHTML=null;for(var b=0;b<a.length;b++){for(var c=this.manager.recipe.add_operation(a[b].op),d=c.querySelectorAll(".arg"),e=0;e<d.length;e++)"checkbox"===d[e].getAttribute("type")?d[e].checked=a[b].args[e]:d[e].classList.contains("toggle-string")?(d[e].value=a[b].args[e].string,d[e].previousSibling.children[0].innerHTML=Utils.escape_html(a[b].args[e].option)+" <span class='caret'></span>"):d[e].value=a[b].args[e];a[b].disabled&&c.querySelector(".disable-icon").click(),a[b].breakpoint&&c.querySelector(".breakpoint").click(),this.progress=0}},HTMLApp.prototype.reset_layout=function(){document.getElementById("operations").style.width="calc(20% - 2px)",document.getElementById("recipe").style.width="calc(30% - 4px)",document.getElementById("IO").style.width="calc(50% - 2px)",document.getElementById("input").style.height="calc(50% - 2px)",document.getElementById("output").style.height="calc(50% - 2px)",this.manager.controls.adjust_width()},HTMLApp.prototype.set_compile_message=function(){var a=new Date,b=Utils.fuzzy_time(a.getTime()-window.compile_time),c='<span style="font-weight: normal">Last build: '+b.substr(0,1).toUpperCase()+b.substr(1)+" ago";""!==window.compile_message&&(c+=" - "+window.compile_message),c+="</span>",document.getElementById("notice").innerHTML=c},HTMLApp.prototype.alert=function(a,b,c,d){var e=new Date;if(console.log("["+e.toLocaleString()+"] "+a),!d){b=b||"danger",c=c||0;var f=document.getElementById("alert"),g=document.getElementById("alert-content");f.classList.remove("alert-danger"),f.classList.remove("alert-warning"),f.classList.remove("alert-info"),f.classList.remove("alert-success"),f.classList.add("alert-"+b),"block"===f.style.display?g.innerHTML+="<br><br>["+e.toLocaleTimeString()+"] "+a:g.innerHTML="["+e.toLocaleTimeString()+"] "+a,$("#alert").stop(),f.style.display="block",f.style.opacity=1,c>0&&(clearTimeout(this.alert_timeout),this.alert_timeout=setTimeout(function(){$("#alert").slideUp(100)},c))}},HTMLApp.prototype.confirm=function(a,b,c,d){d=d||this,document.getElementById("confirm-title").innerHTML=a,document.getElementById("confirm-body").innerHTML=b,document.getElementById("confirm-modal").style.display="block",this.confirm_closed=!1,$("#confirm-modal").modal().one("show.bs.modal",function(a){this.confirm_closed=!1}.bind(this)).one("click","#confirm-yes",function(){this.confirm_closed=!0,c.bind(d)(!0),$("#confirm-modal").modal("hide")}.bind(this)).one("hide.bs.modal",function(a){this.confirm_closed||c.bind(d)(!1),this.confirm_closed=!0}.bind(this))},HTMLApp.prototype.alert_close_click=function(){document.getElementById("alert").style.display="none"},HTMLApp.prototype.state_change=function(a){this.auto_bake(),this.options.update_url&&(this.last_state_url=this.manager.controls.generate_state_url(!0,!0),window.history.replaceState({},"CyberChef",this.last_state_url))},HTMLApp.prototype.pop_state=function(a){window.location.href.split("#")[0]!==this.last_state_url&&this.load_URI_params()},HTMLApp.prototype.call_api=function(a,b,c,d,e){b=b||"POST",c=c||{},d=d||void 0,e=e||"application/json";var f=null,g=!1;return $.ajax({url:a,async:!1,type:b,data:c,dataType:d,contentType:e,success:function(a){g=!0,f=a},error:function(a){g=!1,f=a}}),{success:g,response:f}};var HTMLCategory=function(a,b){this.name=a,this.selected=b,this.op_list=[]};HTMLCategory.prototype.add_operation=function(a){this.op_list.push(a)},HTMLCategory.prototype.to_html=function(){for(var a="cat"+this.name.replace(/[\s\/-:_]/g,""),b="<div class='panel category'> <a class='category-title' data-toggle='collapse' data-parent='#categories' href='#"+a+"'> "+this.name+" </a> <div id='"+a+"' class='panel-collapse collapse "+(this.selected?" in":"")+"'><ul class='op_list'>",c=0;c<this.op_list.length;c++)b+=this.op_list[c].to_stub_html();return b+="</ul></div></div>"};var HTMLIngredient=function(a,b,c){this.app=b,this.manager=c,this.name=a.name,this.type=a.type,this.value=a.value,this.disabled=a.disabled||!1,this.disable_args=a.disable_args||!1,this.placeholder=a.placeholder||!1,this.target=a.target,this.toggle_values=a.toggle_values,this.id="ing-"+this.app.next_ing_id()};HTMLIngredient.prototype.to_html=function(){var a,b,c="boolean"===this.type||"number"===this.type||"option"===this.type||"short_string"===this.type||"binary_short_string"===this.type,d=c?"":"<div class='clearfix'> </div>";switch(d+="<div class='arg-group"+(c?" inline-args":"")+("text"===this.type?" arg-group-text":"")+"'><label class='arg-label' for='"+this.id+"'>"+this.name+"</label>",this.type){case"string":case"binary_string":case"byte_array":d+="<input type='text' id='"+this.id+"' class='arg arg-input' arg_name='"+this.name+"' value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"short_string":case"binary_short_string":d+="<input type='text' id='"+this.id+"'class='arg arg-input short-string' arg_name='"+this.name+"'value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"toggle_string":for(d+="<div class='input-group'><div class='input-group-btn'> <button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'"+(this.disabled?" disabled='disabled'":"")+">"+this.toggle_values[0]+" <span class='caret'></span></button><ul class='dropdown-menu'>",a=0;a<this.toggle_values.length;a++)d+="<li><a href='#'>"+this.toggle_values[a]+"</a></li>";d+="</ul></div><input type='text' class='arg arg-input toggle-string'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+"></div>";break;case"number":d+="<input type='number' id='"+this.id+"'class='arg arg-input' arg_name='"+this.name+"'value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"boolean":d+="<input type='checkbox' id='"+this.id+"'class='arg' arg_name='"+this.name+"'"+(this.value?" checked='checked' ":"")+(this.disabled?" disabled='disabled'":"")+">",this.disable_args&&this.manager.add_dynamic_listener("#"+this.id,"click",this.toggle_disable_args,this);break;case"option":for(d+="<select class='arg' id='"+this.id+"'arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+=(b=this.value[a].match(/\[([a-z0-9 -()^]+)\]/i))?"<optgroup label='"+b[1]+"'>":(b=this.value[a].match(/\[\/([a-z0-9 -()^]+)\]/i))?"</optgroup>":"<option>"+this.value[a]+"</option>";d+="</select>";break;case"populate_option":for(d+="<select class='arg' id='"+this.id+"'arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+=(b=this.value[a].name.match(/\[([a-z0-9 -()^]+)\]/i))?"<optgroup label='"+b[1]+"'>":(b=this.value[a].name.match(/\[\/([a-z0-9 -()^]+)\]/i))?"</optgroup>":"<option populate-value='"+this.value[a].value+"'>"+this.value[a].name+"</option>";d+="</select>",this.manager.add_dynamic_listener("#"+this.id,"change",this.populate_option_change,this);break;case"editable_option":for(d+="<div class='editable-option'>",d+="<select class='editable-option-select' id='sel-"+this.id+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+="<option value='"+this.value[a].value+"'>"+this.value[a].name+"</option>";d+="</select>",d+="<input class='arg arg-input editable-option-input' id='"+this.id+"'arg_name='"+this.name+"' value='"+this.value[0].value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">",d+="</div>",this.manager.add_dynamic_listener("#sel-"+this.id,"change",this.editable_option_change,this);break;case"text":d+="<textarea id='"+this.id+"' class='arg' arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">"+this.value+"</textarea>"}return d+="</div>"},HTMLIngredient.prototype.toggle_disable_args=function(a){for(var b,c=a.target,d=c.parentNode.parentNode,e=d.querySelectorAll(".arg-group"),f=0;f<this.disable_args.length;f++){b=e[this.disable_args[f]].querySelectorAll("input, select, button");for(var g=0;g<b.length;g++)b[g].getAttribute("disabled")?b[g].removeAttribute("disabled"):b[g].setAttribute("disabled","disabled")}this.manager.recipe.ing_change()},HTMLIngredient.prototype.populate_option_change=function(a){var b=a.target,c=b.parentNode.parentNode,d=c.querySelectorAll(".arg-group")[this.target].querySelector("input, select, textarea");d.value=b.childNodes[b.selectedIndex].getAttribute("populate-value"),this.manager.recipe.ing_change()},HTMLIngredient.prototype.editable_option_change=function(a){var b=a.target,c=b.nextSibling;c.value=b.childNodes[b.selectedIndex].value,this.manager.recipe.ing_change()};var HTMLOperation=function(a,b,c,d){this.app=c,this.manager=d,this.name=a,this.description=b.description,this.manual_bake=b.manual_bake||!1,this.config=b,this.ing_list=[];for(var e=0;e<b.args.length;e++){var f=new HTMLIngredient(b.args[e],this.app,this.manager);this.ing_list.push(f)}};HTMLOperation.INFO_ICON="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAByElEQVR4XqVTzWoaYRQ9KZJmoVaS1J1QiYTIuOgqi9lEugguQhYhdGs3hTyAi0CWJTvJIks30ZBNsimUtlqkVLoQCuJsphRriyFjabWtEyf/Rv3iWcwwymTlgQuH851z5hu43wRGkEwmXwCIA4hiGAUAmUQikQbhEHwyGCWVSglVVUW73RYmyKnxjB56ncJ6NpsVxHGrI/ZLuniVb3DIqQmCHnrNkgcggNeSJPlisRgyJR2b737j/TcDsQUPwv6H5NR4BnroZcb6Z16N2PvyX6yna9Z8qp6JQ0Uf0ughmGHWBSAuyzJqrQ7eqKewY/dzE363C71e39LoWQq5wUwul4uzIBoIBHD01RgyrkZ8eDbvwUWnj623v2DHx4qB51IAzLIAXq8XP/7W0bUVVJtXWIk8wvlN364TA+/1IDMLwmWK/Hq3axmhaBdoGLeklm73ElaBYRgIzkyifHIOO4QQJKM3oJcZq6CgaVp0OTyHw9K/kQI4FiyHfdC0n2CWe5ApFosIPZ7C2tNpXpcDOehGyD/FIbd0euhlhllzFxRzC3fydbG4XRYbB9/tQ41n9m1U7l3lyp9LkfygiZeZCoecmtMqj/+Yxn7Od3v0j50qCO3zAAAAAElFTkSuQmCC",HTMLOperation.REMOVE_ICON="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABwklEQVR42qRTPU8CQRB9K2CCMRJ6NTQajOUaqfxIbLCRghhjQixosLAgFNBQ3l8wsabxLxBJbCyVUBiMCVQEQkOEKBbCnefM3p4eohWXzM3uvHlv52b2hG3bmOWZw4yPn1/XQkCQ9wFxcgZZ0QLKpifpN8Z1n1L13griBBjHhYK0nMT4b+wom53ClAAFQacZJ/m8rNfrSOZy0vxJjPP6IJ2WzWYTO6mUwiwtILiJJSHUKVSWkchkZK1WQzQaxU2pVGUglkjIbreLUCiEx0qlStlFCpfPiPstYDtVKJH9ZFI2Gw1FGA6H6LTbCAaDeGu1FJl6UuYjpwTGzucokZW1NfnS66kyfT4fXns9RaZmlgNcuhZQU+jowLzuOK/HgwEW3E5ZlhLXVWKk11P3wNYNWw+HZdA0sUgx1zjGmD05nckx0ilGjBJdUq3fr7K5e8bGf43RdL7fOPSQb4lI8SLbrUfkUIuY32VTI1bJn5BqDnh4Dodt9ryPUDzyD7aquWoKQohl2i9sAbubwPkTcHkP3FHsg+yT+7sN7G0AF3Xg6sHB3onbdgWWKBDQg/BcTuVt51dQA/JrnIcyIu6rmPV3/hJgACPc0BMEYTg+AAAAAElFTkSuQmCC",HTMLOperation.prototype.to_stub_html=function(a){var b="<li class='operation'";return this.description&&(b+=" data-container='body' data-toggle='popover' data-placement='auto right' data-content=\""+this.description+"\" data-html='true' data-trigger='hover'"),b+=">"+this.name,a&&(b+="<img src='data:image/png;base64,"+HTMLOperation.REMOVE_ICON+"' class='op-icon remove-icon'>"),this.description&&(b+="<img src='data:image/png;base64,"+HTMLOperation.INFO_ICON+"' class='op-icon'>"),b+="</li>"},HTMLOperation.prototype.to_full_html=function(){for(var a="<div class='arg-title'>"+this.name+"</div>",b=0;b<this.ing_list.length;b++)a+=this.ing_list[b].to_html();return a+="<div class='recip-icons'> <div class='breakpoint' title='Set breakpoint' break='false'></div> <div class='disable-icon recip-icon' title='Disable operation' disabled='false'></div>",a+="</div> <div class='clearfix'> </div>"},HTMLOperation.prototype.highlight_search_string=function(a,b,c){b>=0&&(this.name=this.name.slice(0,b)+"<b><u>"+this.name.slice(b,b+a.length)+"</u></b>"+this.name.slice(b+a.length)),this.description&&c>=0&&(this.description=this.description.slice(0,c)+"<b><u>"+this.description.slice(c,c+a.length)+"</u></b>"+this.description.slice(c+a.length))};var HighlighterWaiter=function(a){this.app=a,this.mouse_button_down=!1,this.mouse_target=null};HighlighterWaiter.INPUT=0,HighlighterWaiter.OUTPUT=1,HighlighterWaiter.prototype._is_selection_backwards=function(){var a=!1,b=window.getSelection();if(!b.isCollapsed){var c=document.createRange();c.setStart(b.anchorNode,b.anchorOffset),c.setEnd(b.focusNode,b.focusOffset),a=c.collapsed,c.detach()}return a},HighlighterWaiter.prototype._get_output_html_offset=function(a,b){var c=window.getSelection(),d=document.createRange();return d.selectNodeContents(document.getElementById("output-html")),d.setEnd(a,b),c.removeAllRanges(),c.addRange(d),c.toString().length},HighlighterWaiter.prototype._get_output_html_selection_offsets=function(){var a,b=window.getSelection(),c=0,d=0,e=!1;return b.rangeCount&&(a=b.getRangeAt(b.rangeCount-1),e=this._is_selection_backwards(),c=this._get_output_html_offset(a.startContainer,a.startOffset),d=this._get_output_html_offset(a.endContainer,a.endOffset),b.removeAllRanges(),b.addRange(a),e&&(b.collapseToEnd(),b.extend(b.anchorNode,a.startOffset))),{start:c,end:d}},HighlighterWaiter.prototype.input_scroll=function(a){var b=a.target;document.getElementById("input-highlighter").scrollTop=b.scrollTop,document.getElementById("input-highlighter").scrollLeft=b.scrollLeft},HighlighterWaiter.prototype.output_scroll=function(a){var b=a.target;document.getElementById("output-highlighter").scrollTop=b.scrollTop,document.getElementById("output-highlighter").scrollLeft=b.scrollLeft},HighlighterWaiter.prototype.input_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.INPUT,this.remove_highlights();var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("input-selection-info").innerHTML=this.selection_info(c,d),this.highlight_output([{start:c,end:d}]))},HighlighterWaiter.prototype.output_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.OUTPUT,this.remove_highlights();var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("output-selection-info").innerHTML=this.selection_info(c,d),this.highlight_input([{start:c,end:d}]))},HighlighterWaiter.prototype.output_html_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.OUTPUT;var b=this._get_output_html_selection_offsets();0===b.start&&0===b.end||(document.getElementById("output-selection-info").innerHTML=this.selection_info(b.start,b.end))},HighlighterWaiter.prototype.input_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.output_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.output_html_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.input_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.INPUT){var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("input-selection-info").innerHTML=this.selection_info(c,d),this.highlight_output([{start:c,end:d}]))}},HighlighterWaiter.prototype.output_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.OUTPUT){var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("output-selection-info").innerHTML=this.selection_info(c,d),this.highlight_input([{start:c,end:d}]))}},HighlighterWaiter.prototype.output_html_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.OUTPUT){var b=this._get_output_html_selection_offsets();0===b.start&&0===b.end||(document.getElementById("output-selection-info").innerHTML=this.selection_info(b.start,b.end))}},HighlighterWaiter.prototype.selection_info=function(a,b){var c=b.toString().length;c=c<2?2:c;var d=Utils.pad(a.toString(),c," ").replace(/ /g," "),e=Utils.pad(b.toString(),c," ").replace(/ /g," "),f=Utils.pad((b-a).toString(),c," ").replace(/ /g," ");return"start: "+d+"<br>end: "+e+"<br>length: "+f},HighlighterWaiter.prototype.remove_highlights=function(){document.getElementById("input-highlighter").innerHTML="",document.getElementById("output-highlighter").innerHTML="",document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML=""},HighlighterWaiter.prototype.generate_highlight_list=function(){for(var a=this.app.get_recipe_config(),b=[],c=0;c<a.length;c++)if(!a[c].disabled){if(a[c].breakpoint)return!1;var d=this.app.operations[a[c].op];if(d.highlight===!1||void 0===d.highlight)return!1;b.push({f:d.highlight,b:d.highlight_reverse,args:a[c].args})}return b},HighlighterWaiter.prototype.highlight_output=function(a){var b=this.generate_highlight_list();if(!b||!this.app.auto_bake_)return!1;for(var c=0;c<b.length;c++)a=[a[0]],"function"==typeof b[c].f&&(a=b[c].f(a,b[c].args));document.getElementById("output-selection-info").innerHTML=this.selection_info(a[0].start,a[0].end),this.highlight(document.getElementById("output-text"),document.getElementById("output-highlighter"),a)},HighlighterWaiter.prototype.highlight_input=function(a){var b=this.generate_highlight_list();if(!b||!this.app.auto_bake_)return!1;for(var c=0;c<b.length;c++)a=[a[0]],"function"==typeof b[c].b&&(a=b[c].b(a,b[c].args));document.getElementById("input-selection-info").innerHTML=this.selection_info(a[0].start,a[0].end),this.highlight(document.getElementById("input-text"),document.getElementById("input-highlighter"),a)},HighlighterWaiter.prototype.highlight=function(a,b,c){if(!this.app.options.show_highlighter)return!1;if(!this.app.options.attempt_highlight)return!1;if(!this.app.dish_str||this.app.dish_str.indexOf("\r")>=0)return!1;var d="[start_highlight]",e=/\[start_highlight\]/g,f="[end_highlight]",g=/\[end_highlight\]/g,h=a.value;if(1===c.length){if(c[0].end<c[0].start)return;h=h.slice(0,c[0].start)+d+h.slice(c[0].start,c[0].end)+f+h.slice(c[0].end,h.length)}else{for(var i="",j=!0,k=0;k<h.length;k++){for(var l=1;l<c.length;l++)c[l].end<c[l].start||(c[l].start===k&&(i+=d,j=!1),c[l].end===k&&(i+=f,j=!0));i+=h[k]}j||(i+=f),h=i}var m="hl1";h=h.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\n/g," ").replace(e,'<span class="'+m+'">').replace(g,"</span>")+" ",b.style.width=a.clientWidth+"px",b.innerHTML=h,b.scrollTop=a.scrollTop,b.scrollLeft=a.scrollLeft};var InputWaiter=function(a,b){this.app=a,this.manager=b,this.bad_keys=[16,17,18,19,20,27,33,34,35,36,37,38,39,40,44,91,92,93,112,113,114,115,116,117,118,119,120,121,122,123,144,145]};InputWaiter.prototype.get=function(){return document.getElementById("input-text").value},InputWaiter.prototype.set=function(a){document.getElementById("input-text").value=a,window.dispatchEvent(this.manager.statechange)},InputWaiter.prototype.set_input_info=function(a,b){var c=a.toString().length;c=c<2?2:c;var d=Utils.pad(a.toString(),c," ").replace(/ /g," "),e=Utils.pad(b.toString(),c," ").replace(/ /g," ");document.getElementById("input-info").innerHTML="length: "+d+"<br>lines: "+e},InputWaiter.prototype.input_change=function(a){this.manager.highlighter.remove_highlights(),this.app.progress=0;var b=this.get(),c=b.count("\n")+1;this.set_input_info(b.length,c),this.bad_keys.indexOf(a.keyCode)<0&&window.dispatchEvent(this.manager.statechange)},InputWaiter.prototype.input_dragover=function(a){return"move"!==a.dataTransfer.effectAllowed&&(a.stopPropagation(),a.preventDefault(),void a.target.classList.add("dropping-file"))},InputWaiter.prototype.input_dragleave=function(a){a.stopPropagation(),a.preventDefault(),a.target.classList.remove("dropping-file")},InputWaiter.prototype.input_drop=function(a){if("move"===a.dataTransfer.effectAllowed)return!1;a.stopPropagation(),a.preventDefault();var b=a.target,c=a.dataTransfer.files[0],d=a.dataTransfer.getData("Text"),e=new FileReader,f="",g=0,h=20480,i=function(){f.length>1e5&&this.app.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.app.alert("Turned off Auto Bake as the input is large","warning",5e3)),this.set(f);var a=this.app.get_recipe_config();a[0]&&"From Hex"===a[0].op||(a.unshift({op:"From Hex",args:["Space"]}),this.app.set_recipe_config(a)),b.classList.remove("loading_file")}.bind(this),j=function(){if(g>=c.size)return void i();b.value="Processing... "+Math.round(g/c.size*100)+"%";var a=c.slice(g,g+h);e.readAsArrayBuffer(a)};e.onload=function(a){var b=new Uint8Array(e.result);f+=Utils.to_hex_fast(b),g+=h,j()},b.classList.remove("dropping-file"),c?(b.classList.add("loading_file"),j()):d&&this.set(d)},InputWaiter.prototype.clear_io_click=function(){this.manager.highlighter.remove_highlights(),document.getElementById("input-text").value="",document.getElementById("output-text").value="",document.getElementById("input-info").innerHTML="",document.getElementById("output-info").innerHTML="",document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML="",window.dispatchEvent(this.manager.statechange)};var Manager=function(a){this.app=a,this.appstart=new CustomEvent("appstart",{bubbles:!0}),this.operationadd=new CustomEvent("operationadd",{bubbles:!0}),this.operationremove=new CustomEvent("operationremove",{bubbles:!0}),this.oplistcreate=new CustomEvent("oplistcreate",{bubbles:!0}),this.statechange=new CustomEvent("statechange",{bubbles:!0}),this.window=new WindowWaiter(this.app),this.controls=new ControlsWaiter(this.app,this),this.recipe=new RecipeWaiter(this.app,this),this.ops=new OperationsWaiter(this.app,this),this.input=new InputWaiter(this.app,this),this.output=new OutputWaiter(this.app,this),this.options=new OptionsWaiter(this.app),this.highlighter=new HighlighterWaiter(this.app),this.seasonal=new SeasonalWaiter(this.app,this),this.dynamic_handlers={},this.initialise_event_listeners()};Manager.prototype.setup=function(){this.recipe.initialise_operation_drag_n_drop(),this.controls.auto_bake_change(), -this.seasonal.load()},Manager.prototype.initialise_event_listeners=function(){window.addEventListener("resize",this.window.window_resize.bind(this.window)),window.addEventListener("blur",this.window.window_blur.bind(this.window)),window.addEventListener("focus",this.window.window_focus.bind(this.window)),window.addEventListener("statechange",this.app.state_change.bind(this.app)),window.addEventListener("popstate",this.app.pop_state.bind(this.app)),document.getElementById("bake").addEventListener("click",this.controls.bake_click.bind(this.controls)),document.getElementById("auto-bake").addEventListener("change",this.controls.auto_bake_change.bind(this.controls)),document.getElementById("step").addEventListener("click",this.controls.step_click.bind(this.controls)),document.getElementById("clr-recipe").addEventListener("click",this.controls.clear_recipe_click.bind(this.controls)),document.getElementById("clr-breaks").addEventListener("click",this.controls.clear_breaks_click.bind(this.controls)),document.getElementById("save").addEventListener("click",this.controls.save_click.bind(this.controls)),document.getElementById("save-button").addEventListener("click",this.controls.save_button_click.bind(this.controls)),document.getElementById("save-link-recipe-checkbox").addEventListener("change",this.controls.slr_check_change.bind(this.controls)),document.getElementById("save-link-input-checkbox").addEventListener("change",this.controls.sli_check_change.bind(this.controls)),document.getElementById("load").addEventListener("click",this.controls.load_click.bind(this.controls)),document.getElementById("load-delete-button").addEventListener("click",this.controls.load_delete_click.bind(this.controls)),document.getElementById("load-name").addEventListener("change",this.controls.load_name_change.bind(this.controls)),document.getElementById("load-button").addEventListener("click",this.controls.load_button_click.bind(this.controls)),this.add_multi_event_listener("#save-text","keyup paste",this.controls.save_text_change,this.controls),this.add_multi_event_listener("#search","keyup paste search",this.ops.search_operations,this.ops),this.add_dynamic_listener(".op_list li.operation","dblclick",this.ops.operation_dblclick,this.ops),document.getElementById("edit-favourites").addEventListener("click",this.ops.edit_favourites_click.bind(this.ops)),document.getElementById("save-favourites").addEventListener("click",this.ops.save_favourites_click.bind(this.ops)),document.getElementById("reset-favourites").addEventListener("click",this.ops.reset_favourites_click.bind(this.ops)),this.add_dynamic_listener(".op_list .op-icon","mouseover",this.ops.op_icon_mouseover,this.ops),this.add_dynamic_listener(".op_list .op-icon","mouseleave",this.ops.op_icon_mouseleave,this.ops),this.add_dynamic_listener(".op_list","oplistcreate",this.ops.op_list_create,this.ops),this.add_dynamic_listener("li.operation","operationadd",this.recipe.op_add.bind(this.recipe)),this.add_dynamic_listener(".arg","keyup",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".arg","change",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".disable-icon","click",this.recipe.disable_click,this.recipe),this.add_dynamic_listener(".breakpoint","click",this.recipe.breakpoint_click,this.recipe),this.add_dynamic_listener("#rec_list li.operation","dblclick",this.recipe.operation_dblclick,this.recipe),this.add_dynamic_listener("#rec_list li.operation > div","dblclick",this.recipe.operation_child_dblclick,this.recipe),this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a","click",this.recipe.dropdown_toggle_click,this.recipe),this.add_dynamic_listener("#rec_list","operationremove",this.recipe.op_remove.bind(this.recipe)),this.add_multi_event_listener("#input-text","keyup paste",this.input.input_change,this.input),document.getElementById("reset-layout").addEventListener("click",this.app.reset_layout.bind(this.app)),document.getElementById("clr-io").addEventListener("click",this.input.clear_io_click.bind(this.input)),document.getElementById("input-text").addEventListener("dragover",this.input.input_dragover.bind(this.input)),document.getElementById("input-text").addEventListener("dragleave",this.input.input_dragleave.bind(this.input)),document.getElementById("input-text").addEventListener("drop",this.input.input_drop.bind(this.input)),document.getElementById("input-text").addEventListener("scroll",this.highlighter.input_scroll.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mouseup",this.highlighter.input_mouseup.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mousemove",this.highlighter.input_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#input-text","mousedown dblclick select",this.highlighter.input_mousedown,this.highlighter),document.getElementById("save-to-file").addEventListener("click",this.output.save_click.bind(this.output)),document.getElementById("switch").addEventListener("click",this.output.switch_click.bind(this.output)),document.getElementById("undo-switch").addEventListener("click",this.output.undo_switch_click.bind(this.output)),document.getElementById("output-text").addEventListener("scroll",this.highlighter.output_scroll.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mouseup",this.highlighter.output_mouseup.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mousemove",this.highlighter.output_mousemove.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mouseup",this.highlighter.output_html_mouseup.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mousemove",this.highlighter.output_html_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#output-text","mousedown dblclick select",this.highlighter.output_mousedown,this.highlighter),this.add_multi_event_listener("#output-html","mousedown dblclick select",this.highlighter.output_html_mousedown,this.highlighter),document.getElementById("options").addEventListener("click",this.options.options_click.bind(this.options)),document.getElementById("reset-options").addEventListener("click",this.options.reset_options_click.bind(this.options)),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox",this.options.switch_change.bind(this.options)),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox",this.options.set_word_wrap.bind(this.options)),this.add_dynamic_listener(".option-item input[type=number]","keyup",this.options.number_change,this.options),this.add_dynamic_listener(".option-item input[type=number]","change",this.options.number_change,this.options),this.add_dynamic_listener(".option-item select","change",this.options.select_change,this.options),document.getElementById("alert-close").addEventListener("click",this.app.alert_close_click.bind(this.app))},Manager.prototype.add_listeners=function(a,b,c,d){d=d||this,[].forEach.call(document.querySelectorAll(a),function(a){a.addEventListener(b,c.bind(d))})},Manager.prototype.add_multi_event_listener=function(a,b,c,d){for(var e=b.split(" "),f=0;f<e.length;f++)document.querySelector(a).addEventListener(e[f],c.bind(d))},Manager.prototype.add_multi_event_listeners=function(a,b,c,d){for(var e=b.split(" "),f=0;f<e.length;f++)this.add_listeners(a,e[f],c,d)},Manager.prototype.add_dynamic_listener=function(a,b,c,d){var e={selector:a,callback:c.bind(d||this)};this.dynamic_handlers.hasOwnProperty(b)?this.dynamic_handlers[b].push(e):(this.dynamic_handlers[b]=[e],document.addEventListener(b,this.dynamic_listener_handler.bind(this)))},Manager.prototype.dynamic_listener_handler=function(a){for(var b=this.dynamic_handlers[a.type],c=a.target.matches||a.target.webkitMatchesSelector||a.target.mozMatchesSelector||a.target.msMatchesSelector||a.target.oMatchesSelector,d=0;d<b.length;d++)c&&a.target[c.name](b[d].selector)&&b[d].callback(a)};var OperationsWaiter=function(a,b){this.app=a,this.manager=b,this.options={},this.remove_intent=!1};OperationsWaiter.prototype.search_operations=function(a){var b,c;if("search"===a.type&&(a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&(this.manager.recipe.add_operation(b[c].innerHTML),this.app.auto_bake()))),13===a.keyCode)a.preventDefault();else if(40===a.keyCode)a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&b[c].classList.remove("selected-op"),c===b.length-1&&(c=-1),b[c+1].classList.add("selected-op"));else if(38===a.keyCode)a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&b[c].classList.remove("selected-op"),0===c&&(c=b.length),b[c-1].classList.add("selected-op"));else{for(var d=document.getElementById("search-results"),e=a.target,f=e.value;d.firstChild;)$(d.firstChild).popover("destroy"),d.removeChild(d.firstChild);if($("#categories .in").collapse("hide"),f){for(var g=this.filter_operations(f,!0),h="",i=0;i<g.length;i++)h+=g[i].to_stub_html();d.innerHTML=h,d.dispatchEvent(this.manager.oplistcreate)}}},OperationsWaiter.prototype.filter_operations=function(a,b){var c=[],d=[];a=a.toLowerCase();for(var e in this.app.operations){var f=this.app.operations[e],g=e.toLowerCase().indexOf(a),h=f.description.toLowerCase().indexOf(a);if(g>=0||h>=0){var i=new HTMLOperation(e,this.app.operations[e],this.app,this.manager);b&&i.highlight_search_string(a,g,h),g<0?c.push(i):d.push(i)}}return d.concat(c)},OperationsWaiter.prototype.get_selected_op=function(a){for(var b=0;b<a.length;b++)if(a[b].classList.contains("selected-op"))return b;return-1},OperationsWaiter.prototype.op_list_create=function(a){this.manager.recipe.create_sortable_seed_list(a.target),$("[data-toggle=popover]").popover()},OperationsWaiter.prototype.operation_dblclick=function(a){var b=a.target;this.manager.recipe.add_operation(b.textContent),this.app.auto_bake()},OperationsWaiter.prototype.edit_favourites_click=function(a){a.preventDefault(),a.stopPropagation();for(var b=this.app.categories.filter(function(a){return"Favourites"===a.name})[0],c="",d=0;d<b.ops.length;d++){var e=b.ops[d],f=new HTMLOperation(e,this.app.operations[e],this.app,this.manager);c+=f.to_stub_html(!0)}var g=document.getElementById("edit-favourites-list");g.innerHTML=c,this.remove_intent=!1;var h=Sortable.create(g,{filter:".remove-icon",onFilter:function(a){var b=h.closest(a.item);b&&($(b).popover("destroy"),b.parentNode.removeChild(b))},onEnd:function(a){this.remove_intent&&a.item.remove()}.bind(this)});Sortable.utils.on(g,"dragleave",function(){this.remove_intent=!0}.bind(this)),Sortable.utils.on(g,"dragover",function(){this.remove_intent=!1}.bind(this)),$("#edit-favourites-list [data-toggle=popover]").popover(),$("#favourites-modal").modal()},OperationsWaiter.prototype.save_favourites_click=function(){for(var a=[],b=document.querySelectorAll("#edit-favourites-list li"),c=0;c<b.length;c++)a.push(b[c].textContent);this.app.save_favourites(a),this.app.load_favourites(),this.app.populate_operations_list(),this.manager.recipe.initialise_operation_drag_n_drop()},OperationsWaiter.prototype.reset_favourites_click=function(){this.app.reset_favourites()},OperationsWaiter.prototype.op_icon_mouseover=function(a){var b=a.target.parentNode;"popover"===a.target.getAttribute("data-toggle")&&$(b).popover("hide")},OperationsWaiter.prototype.op_icon_mouseleave=function(a){var b=a.target.parentNode,c=a.toElement||a.relatedElement;"popover"===a.target.getAttribute("data-toggle")&&c===b&&$(b).popover("show")};var OptionsWaiter=function(a){this.app=a};OptionsWaiter.prototype.load=function(a){$(".option-item input:checkbox").bootstrapSwitch({size:"small",animate:!1});for(var b in a)this.app.options[b]=a[b];for(var c=document.querySelectorAll("#options-body input[type=checkbox]"),d=0;d<c.length;d++)$(c[d]).bootstrapSwitch("state",this.app.options[c[d].getAttribute("option")]);var e=document.querySelectorAll("#options-body input[type=number]");for(d=0;d<e.length;d++)e[d].value=this.app.options[e[d].getAttribute("option")],e[d].dispatchEvent(new CustomEvent("change",{bubbles:!0}));var f=document.querySelectorAll("#options-body select");for(d=0;d<f.length;d++)f[d].value=this.app.options[f[d].getAttribute("option")],f[d].dispatchEvent(new CustomEvent("change",{bubbles:!0}))},OptionsWaiter.prototype.options_click=function(){$("#options-modal").modal()},OptionsWaiter.prototype.reset_options_click=function(){this.load(this.app.doptions)},OptionsWaiter.prototype.switch_change=function(a,b){var c=a.target,d=c.getAttribute("option");this.app.options[d]=b,localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.number_change=function(a){var b=a.target,c=b.getAttribute("option");this.app.options[c]=parseInt(b.value,10),localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.select_change=function(a){var b=a.target,c=b.getAttribute("option");this.app.options[c]=b.value,localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.set_word_wrap=function(){document.getElementById("input-text").classList.remove("word-wrap"),document.getElementById("output-text").classList.remove("word-wrap"),document.getElementById("output-html").classList.remove("word-wrap"),document.getElementById("input-highlighter").classList.remove("word-wrap"),document.getElementById("output-highlighter").classList.remove("word-wrap"),this.app.options.word_wrap||(document.getElementById("input-text").classList.add("word-wrap"),document.getElementById("output-text").classList.add("word-wrap"),document.getElementById("output-html").classList.add("word-wrap"),document.getElementById("input-highlighter").classList.add("word-wrap"),document.getElementById("output-highlighter").classList.add("word-wrap"))};var OutputWaiter=function(a,b){this.app=a,this.manager=b};OutputWaiter.prototype.get=function(){return document.getElementById("output-text").value},OutputWaiter.prototype.set=function(data_str,type,duration){var output_text=document.getElementById("output-text"),output_html=document.getElementById("output-html"),output_highlighter=document.getElementById("output-highlighter"),input_highlighter=document.getElementById("input-highlighter");if("html"===type){output_text.style.display="none",output_html.style.display="block",output_highlighter.display="none",input_highlighter.display="none",output_text.value="",output_html.innerHTML=data_str;for(var script_elements=output_html.querySelectorAll("script"),i=0;i<script_elements.length;i++)try{eval(script_elements[i].innerHTML)}catch(a){console.error(a)}}else output_text.style.display="block",output_html.style.display="none",output_highlighter.display="block",input_highlighter.display="block",output_text.value=Utils.printable(data_str,!0),output_html.innerHTML="";this.manager.highlighter.remove_highlights();var lines=data_str.count("\n")+1;this.set_output_info(data_str.length,lines,duration)},OutputWaiter.prototype.set_output_info=function(a,b,c){var d=a.toString().length;d=d<4?4:d;var e=Utils.pad(a.toString(),d," ").replace(/ /g," "),f=Utils.pad(b.toString(),d," ").replace(/ /g," "),g=Utils.pad(c.toString()+"ms",d," ").replace(/ /g," ");document.getElementById("output-info").innerHTML="time: "+g+"<br>length: "+e+"<br>lines: "+f,document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML=""},OutputWaiter.prototype.save_click=function(){var a=Utils.to_base64(this.app.dish_str),b=window.prompt("Please enter a filename:","download.dat");if(b){var c=document.createElement("a");c.setAttribute("href","data:application/octet-stream;base64;charset=utf-8,"+a),c.setAttribute("download",b),c.style.display="none",document.body.appendChild(c),c.click(),c.remove()}},OutputWaiter.prototype.switch_click=function(){this.switch_orig_data=this.manager.input.get(),document.getElementById("undo-switch").disabled=!1,this.app.set_input(this.app.dish_str)},OutputWaiter.prototype.undo_switch_click=function(){this.app.set_input(this.switch_orig_data),document.getElementById("undo-switch").disabled=!0};var RecipeWaiter=function(a,b){this.app=a,this.manager=b,this.remove_intent=!1};RecipeWaiter.prototype.initialise_operation_drag_n_drop=function(){var a=document.getElementById("rec_list");Sortable.create(a,{group:"recipe",sort:!0,animation:0,delay:0,filter:".arg-input,.arg",setData:function(a,b){a.setData("Text",b.querySelector(".arg-title").textContent)},onEnd:function(a){this.remove_intent&&(a.item.remove(),a.target.dispatchEvent(this.manager.operationremove))}.bind(this)}),Sortable.utils.on(a,"dragover",function(){this.remove_intent=!1}.bind(this)),Sortable.utils.on(a,"dragleave",function(){this.remove_intent=!0,this.app.progress=0}.bind(this)),Sortable.utils.on(a,"touchend",function(b){var c=b.changedTouches[0],d=document.elementFromPoint(c.clientX,c.clientY);this.remove_intent=!a.contains(d)}.bind(this)),document.querySelector("#categories a").addEventListener("dragover",this.fav_dragover.bind(this)),document.querySelector("#categories a").addEventListener("dragleave",this.fav_dragleave.bind(this)),document.querySelector("#categories a").addEventListener("drop",this.fav_drop.bind(this))},RecipeWaiter.prototype.create_sortable_seed_list=function(a){Sortable.create(a,{group:{name:"recipe",pull:"clone",put:!1},sort:!1,setData:function(a,b){a.setData("Text",b.textContent)},onStart:function(a){$(a.item).popover("destroy"),a.item.setAttribute("data-toggle","popover-disabled")},onEnd:this.op_sort_end.bind(this)})},RecipeWaiter.prototype.op_sort_end=function(a){return this.remove_intent?void("rec_list"===a.item.parentNode.id&&a.item.remove()):($(a.clone).popover(),$(a.clone).children("[data-toggle=popover]").popover(),void("rec_list"===a.item.parentNode.id&&(this.build_recipe_operation(a.item),a.item.dispatchEvent(this.manager.operationadd))))},RecipeWaiter.prototype.fav_dragover=function(a){return"move"===a.dataTransfer.effectAllowed&&(a.stopPropagation(),a.preventDefault(),void(a.target.className&&a.target.className.indexOf("category-title")>-1?a.target.classList.add("favourites-hover"):a.target.parentNode.className&&a.target.parentNode.className.indexOf("category-title")>-1?a.target.parentNode.classList.add("favourites-hover"):a.target.parentNode.parentNode.className&&a.target.parentNode.parentNode.className.indexOf("category-title")>-1&&a.target.parentNode.parentNode.classList.add("favourites-hover")))},RecipeWaiter.prototype.fav_dragleave=function(a){a.stopPropagation(),a.preventDefault(),document.querySelector("#categories a").classList.remove("favourites-hover")},RecipeWaiter.prototype.fav_drop=function(a){a.stopPropagation(),a.preventDefault(),a.target.classList.remove("favourites-hover");var b=a.dataTransfer.getData("Text");this.app.add_favourite(b)},RecipeWaiter.prototype.ing_change=function(){window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.disable_click=function(a){var b=a.target;"false"===b.getAttribute("disabled")?(b.setAttribute("disabled","true"),b.classList.add("disable-icon-selected"),b.parentNode.parentNode.classList.add("disabled")):(b.setAttribute("disabled","false"),b.classList.remove("disable-icon-selected"),b.parentNode.parentNode.classList.remove("disabled")),this.app.progress=0,window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.breakpoint_click=function(a){var b=a.target;"false"===b.getAttribute("break")?(b.setAttribute("break","true"),b.classList.add("breakpoint-selected")):(b.setAttribute("break","false"),b.classList.remove("breakpoint-selected")),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.operation_dblclick=function(a){a.target.remove(),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.operation_child_dblclick=function(a){a.target.parentNode.remove(),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.get_config=function(){for(var a,b,c,d,e,f=[],g=document.querySelectorAll("#rec_list li.operation"),h=0;h<g.length;h++){a=[],c=g[h].querySelector(".disable-icon"),d=g[h].querySelector(".breakpoint"),b=g[h].querySelectorAll(".arg");for(var i=0;i<b.length;i++)"checkbox"===b[i].getAttribute("type")?a[i]=b[i].checked:b[i].classList.contains("toggle-string")?a[i]={option:b[i].previousSibling.children[0].textContent.slice(0,-1),string:b[i].value}:a[i]=b[i].value;e={op:g[h].querySelector(".arg-title").textContent,args:a},c&&"true"===c.getAttribute("disabled")&&(e.disabled=!0),d&&"true"===d.getAttribute("break")&&(e.breakpoint=!0),f.push(e)}return f},RecipeWaiter.prototype.update_breakpoint_indicator=function(a){for(var b=document.querySelectorAll("#rec_list li.operation"),c=0;c<b.length;c++)c===a?b[c].classList.add("break"):b[c].classList.remove("break")},RecipeWaiter.prototype.build_recipe_operation=function(a){var b=a.textContent,c=new HTMLOperation(b,this.app.operations[b],this.app,this.manager);a.innerHTML=c.to_full_html(),this.app.operations[b].flow_control&&a.classList.add("flow-control-op"),c.manual_bake&&this.app.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.app.alert("Auto-Bake is disabled by default when using this operation.","info",5e3))},RecipeWaiter.prototype.add_operation=function(a){var b=document.createElement("li");return b.classList.add("operation"),b.innerHTML=a,this.build_recipe_operation(b),document.getElementById("rec_list").appendChild(b),b.dispatchEvent(this.manager.operationadd),b},RecipeWaiter.prototype.clear_recipe=function(){for(var a=document.getElementById("rec_list");a.firstChild;)a.removeChild(a.firstChild);a.dispatchEvent(this.manager.operationremove)},RecipeWaiter.prototype.dropdown_toggle_click=function(a){var b=a.target,c=b.parentNode.parentNode.previousSibling;c.innerHTML=b.textContent+" <span class='caret'></span>",this.ing_change()},RecipeWaiter.prototype.op_add=function(a){window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.op_remove=function(a){window.dispatchEvent(this.manager.statechange)};var SeasonalWaiter=function(a,b){this.app=a,this.manager=b};SeasonalWaiter.prototype.load=function(){var a=new Date;11===a.getMonth()&&a.getDate()>12&&(this.app.options.snow=!1,this.create_snow_option(),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox[option='snow']",this.let_it_snow.bind(this)),window.addEventListener("resize",this.let_it_snow.bind(this)),this.manager.add_listeners(".btn","click",this.shake_off_snow,this),25===a.getDate()&&this.let_it_snow()),this.kkeys=[],window.addEventListener("keydown",this.konami_code_listener.bind(this))},SeasonalWaiter.prototype.insert_spider_icons=function(){var a="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB3UlEQVQ4y2NgGJaAmYGBgVnf0oKJgYGBobWtXamqqoYTn2I4CI+LTzM2NTulpKbu+vPHz2dV5RWlluZmi3j5+KqFJSSEzpw8uQPdAEYYIzo5Kfjrl28rWFlZzjAzMYuEBQao3Lh+g+HGvbsMzExMDN++fWf4/PXLBzY2tqYNK1f2+4eHM2xcuRLigsT09Igf3384MTExbf767etBI319jU8fPsi+//jx/72HDxh5uLkZ7ty7y/Dz1687Avz8n2UUFR3Z2NjOySoqfmdhYGBg+PbtuwI7O8e5H79+8X379t357PnzYo+ePP7y6cuXc9++f69nYGRsvf/w4XdtLS2R799/bBUWFHr57sP7Jbs3b/ZkzswvUP3165fZ7z9//r988WIVAyPDr8tXr576+u3bpb9//7YwMjKeV1dV41NWVGoVEhDgPH761DJREeHaz1+/lqlpafUx6+jrRfz4+fPy+w8fTu/fsf3uw7t3L39+//4cv7DwGQYGhpdPbt9m4BcRFlNWVJC4fuvWASszs4C379792Ldt2xZBUdEdDP5hYSqQGIjDGa965uYKCalpZQwMDAxhMTG9DAwMDLaurhIkJY7A8IgGBgYGBgd3Dz2yUpeFo6O4rasrA9T24ZRxAAMTwMpgEJwLAAAAAElFTkSuQmCC",b="iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACYVBMVEUAAAAcJSU2Pz85QkM9RUWEhIWMjI2MkJEcJSU2Pz85QkM9RUWWlpc9RUVXXl4cJSU2Pz85QkM8REU9RUVRWFh6ens9RUVCSkpNVFRdY2McJSU5QkM7REQ9RUVGTk5KUlJQVldcY2Rla2uTk5WampscJSVUWltZX2BrcHF1e3scJSUjLCw9RUVASEhFTU1HTk9bYWJeZGRma2xudHV1eHiZmZocJSUyOjpJUFFQVldSWlpTWVpXXl5YXl5rb3B9fX6RkZIcJSUmLy8tNTU9RUVFTU1IT1BOVldRV1hTWlp0enocJSUfKChJUFBWXV1hZ2hnbGwcJSVETExLUlJLU1NNVVVPVlZYXl9cY2RiaGlobW5rcXFyd3h0eHgcJSUpMTFDS0tQV1dRV1hSWFlWXF1bYWJma2tobW5uc3SsrK0cJSVJUFBMVFROVlZVW1xZX2BdYmNhZ2hjaGhla2tqcHBscHE4Pz9KUlJRWVlSWVlXXF1aYGFbYWFfZWZlampqbW4cJSUgKSkiKysuNjY0PD01PT07QkNES0tHTk5JUFBMUlNMU1NOU1ROVVVPVVZRVlZRV1dSWVlWXFxXXV5aX2BbYWFbYWJcYmJcYmNcY2RdYmNgZmZhZmdkaWpkampkamtlamtla2tma2tma2xnbG1obW5pbG1pb3Bqb3Brb3BtcXJudHVvcHFvcXJvc3NwcXNwdXVxc3RzeXl1eXp2eXl3ent6e3x+gYKAhISBg4SKi4yLi4yWlpeampudnZ6fn6CkpaanqKiur6+vr7C4uLm6urq6u7u8vLy9vb3Av8DR0dL2b74UAAAAgHRSTlMAEBAQEBAQECAgICAgMDBAQEBAQEBAUFBQUGBgYGBgYGBgYGBgcHBwcHCAgICAgICAgICAgICPj4+Pj4+Pj4+Pj5+fn5+fn5+fn5+vr6+vr6+/v7+/v7+/v7+/v7+/z8/Pz8/Pz8/Pz8/P39/f39/f39/f39/f7+/v7+/v7+/v78x6RlYAAAGBSURBVDjLY2AYWUCSgUGAk4GBTdlUhQebvP7yjIgCPQbWzBMnjx5wwJSX37Rwfm1isqj9/iPHTuxYlyeMJi+yunfptBkZOw/uWj9h3vatcycu8eRGlldb3Vsts3ph/cFTh7fN3bCoe2Vf8+TZoQhTvBa6REozVC7cuPvQnmULJm1e2z+308eyJieEBSLPXbKQIUqQIczk+N6eNaumtnZMaWhaHM89m8XVCqJA02Y5w0xmga6yfVsamtrN4xoXNzS0JTHkK3CXy4EVFMumcxUy2LbENTVkZfEzMDAudtJyTmNwS2XQreAFyvOlK9louDNVaXurmjkGgnTMkWDgXswtNouFISEX6Awv+RihQi5OcYY4DtVARpCCFCMGhiJ1hjwFBpagEAaWEpFoC0WQOCOjFMRRwXYMDB4BDLJ+QLYsg7GBGjtasLnEMjCIrWBgyAZ7058FI9x1SoFEnTCDsCyIhynPILYYSFgbYpUDA5bpQBluXzxpI1yYAbd2sCMYRhwAAHB9ZPztbuMUAAAAAElFTkSuQmCC",c="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";document.querySelector("link[rel=icon]").setAttribute("href","data:image/png;base64,"+a),document.querySelector("#bake img").setAttribute("src","data:image/png;base64,"+b),document.querySelector(".about-img-left").setAttribute("src","data:image/png;base64,"+c)},SeasonalWaiter.prototype.insert_spider_text=function(){document.title=document.title.replace(/Cyber/g,"Spider"),SeasonalWaiter.tree_walk(document.body,function(a){3===a.nodeType&&(a.nodeValue=a.nodeValue.replace(/Cyber/g,"Spider"))},!0),SeasonalWaiter.tree_walk(document.getElementById("bake-group"),function(a){3===a.nodeType&&(a.nodeValue=a.nodeValue.replace(/Bake/g,"Spin"))},!0),document.querySelector("#recipe .title").innerHTML="Web"},SeasonalWaiter.prototype.create_snow_option=function(){var a=document.getElementById("options-body"),b=document.createElement("div");b.className="option-item",b.innerHTML="<input type='checkbox' option='snow' checked /> Let it snow",a.appendChild(b),this.manager.options.load()},SeasonalWaiter.prototype.let_it_snow=function(){if($(document).snowfall("clear"),this.app.options.snow){var a={},b=navigator.userAgent.match(/Firefox\/(\d\d?)/);a=b&&parseInt(b[1],10)<30?{flakeCount:10,flakeColor:"#fff",flakePosition:"absolute",minSize:1,maxSize:2,minSpeed:1,maxSpeed:5,round:!1,shadow:!1,collection:!1,collectionHeight:20,deviceorientation:!0}:{flakeCount:35,flakeColor:"#fff",flakePosition:"absolute",minSize:5,maxSize:8,minSpeed:1,maxSpeed:5,round:!0,shadow:!0,collection:".btn",collectionHeight:20,deviceorientation:!0},$(document).snowfall(a)}},SeasonalWaiter.prototype.shake_off_snow=function(a){for(var b=a.target,c=b.getBoundingClientRect(),d=document.querySelectorAll("canvas.snowfall-canvas"),e=null,f=function(){h.clearRect(0,0,e.width,e.height),$(this).fadeIn()},g=0;g<d.length;g++)if(e=d[g],e.style.left===c.left+"px"&&e.style.top===c.top-20+"px"){var h=e.getContext("2d");$(e).fadeOut("slow",f);break}},SeasonalWaiter.prototype.konami_code_listener=function(a){this.kkeys.push(a.keyCode);for(var b=[38,38,40,40,37,39,37,39,66,65],c=0;c<this.kkeys.length;c++){if(this.kkeys[c]!==b[c]){this.kkeys=[];break}c===b.length-1&&($("body").children().toggleClass("konami"),this.kkeys=[])}},SeasonalWaiter.tree_walk=function(){var a={SCRIPT:!0,IFRAME:!0,OBJECT:!0,EMBED:!0,STYLE:!0,LINK:!0,META:!0};return function(b,c,d){for(var e=b.firstChild;e&&e!==b;){if((d||1===e.nodeType)&&c(e)===!1)return!1;if(1!==e.nodeType||!e.firstChild||e.tagName&&a[e.tagName]){if(e.nextSibling)e=e.nextSibling;else for(;(e=e.parentNode)!==b;)if(e.nextSibling){e=e.nextSibling;break}}else e=e.firstChild}}}();var WindowWaiter=function(a){this.app=a};WindowWaiter.prototype.window_resize=function(){clearTimeout(this.reset_layout_timeout),this.reset_layout_timeout=setTimeout(this.app.reset_layout.bind(this.app),200)},WindowWaiter.prototype.window_blur=function(){this.window_blur_time=(new Date).getTime()},WindowWaiter.prototype.window_focus=function(){var a=(new Date).getTime()-this.window_blur_time;a>6e4&&this.app.silent_bake()};var main=function(){var a=["To Base64","From Base64","To Hex","From Hex","To Hexdump","From Hexdump","URL Decode","Regular expression","Entropy","Fork"],b={update_url:!0,show_highlighter:!0,treat_as_utf8:!0,word_wrap:!0,show_errors:!0,error_timeout:4e3,auto_bake_threshold:200,attempt_highlight:!0,snow:!1};document.removeEventListener("DOMContentLoaded",main,!1),window.app=new HTMLApp(Categories,OperationConfig,a,b),window.app.setup()};window.console=console||{log:function(){},error:function(){}}, -window.compile_time=moment.tz("Wed Dec 14 2016 16:37:29","ddd MMM D YYYY HH:mm:ss","UTC").valueOf(),window.compile_message="Merry Christmas! Have a look in the options panel for some festive flavour.",document.addEventListener("DOMContentLoaded",main,!1); \ No newline at end of file +function(a){"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=s({},b),a[M]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);W(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=!b.forceFallback&&Q,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),U.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){w&&w.state!==a&&(h(w,"display",a?"none":""),!a&&w.state&&x.insertBefore(w,t),w.state=a)}function c(a,b,c){if(a){c=c||O;do if(">*"===b&&a.parentNode===c||q(a,b))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(L," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(L," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return O.defaultView&&O.defaultView.getComputedStyle?c=O.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;e<f;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=O.createEvent("Event"),i=(a||b[M]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=w,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[M],j=i.options.onMove;return g=O.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){S=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a,b){var c=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&q(a,b)&&c++;return c}function q(a,b){if(a){b=b.split(".");var c=b.shift().toUpperCase(),d=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");return!(""!==c&&a.nodeName.toUpperCase()!=c||b.length&&((" "+a.className+" ").match(d)||[]).length!=b.length)}return!1}function r(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function s(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}if("undefined"==typeof window||"undefined"==typeof window.document)return function(){throw new Error("Sortable.js requires a window with a document")};var t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K={},L=/\s+/g,M="Sortable"+(new Date).getTime(),N=window,O=N.document,P=N.parseInt,Q=!!("draggable"in O.createElement("div")),R=function(a){return a=O.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),S=!1,T=Math.abs,U=([].slice,[]),V=r(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(A!==c&&(z=b.scroll,A=c,z===!0)){z=c;do if(z.offsetWidth<z.scrollWidth||z.offsetHeight<z.scrollHeight)break;while(z=z.parentNode)}z&&(d=z,e=z.getBoundingClientRect(),f=(T(e.right-j)<=h)-(T(e.left-j)<=h),g=(T(e.bottom-k)<=h)-(T(e.top-k)<=h)),f||g||(f=(l-j<=h)-(j<=h),g=(m-k<=h)-(k<=h),(f||g)&&(d=N)),K.vx===f&&K.vy===g&&K.el===d||(K.el=d,K.vx=f,K.vy=g,clearInterval(K.pid),d&&(K.pid=setInterval(function(){d===N?N.scrollTo(N.pageXOffset+f*i,N.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),W=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,k=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=c(h,e.draggable,d))){if(E=p(h,e.draggable),"function"==typeof k){if(k.call(this,a,h,this))return j(b,i,"filter",h,d,E),void a.preventDefault()}else if(k&&(k=k.split(",").some(function(a){if(a=c(i,a.trim(),d))return j(b,a,"filter",h,d,E),!0})))return;e.handle&&!c(i,e.handle,d)||this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,f=this,h=f.el,j=f.options,k=h.ownerDocument;c&&!t&&c.parentNode===h&&(H=a,x=h,t=c,u=t.parentNode,y=t.nextSibling,G=j.group,d=function(){f._disableDelayedDrag(),t.draggable=!0,g(t,f.options.chosenClass,!0),f._triggerDragStart(b)},j.ignore.split(",").forEach(function(a){i(t,a.trim(),l)}),e(k,"mouseup",f._onDrop),e(k,"touchend",f._onDrop),e(k,"touchcancel",f._onDrop),j.delay?(e(k,"mouseup",f._disableDelayedDrag),e(k,"touchend",f._disableDelayedDrag),e(k,"touchcancel",f._disableDelayedDrag),e(k,"mousemove",f._disableDelayedDrag),e(k,"touchmove",f._disableDelayedDrag),f._dragStartTimer=setTimeout(d,j.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),f(a,"mouseup",this._disableDelayedDrag),f(a,"touchend",this._disableDelayedDrag),f(a,"touchcancel",this._disableDelayedDrag),f(a,"mousemove",this._disableDelayedDrag),f(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(H={target:t,clientX:a.clientX,clientY:a.clientY},this._onDragStart(H,"touch")):this.nativeDraggable?(e(t,"dragend",this),e(x,"dragstart",this._onDragStart)):this._onDragStart(H,!0);try{O.selection?O.selection.empty():window.getSelection().removeAllRanges()}catch(a){}},_dragStarted:function(){x&&t&&(g(t,this.options.ghostClass,!0),a.active=this,j(this,x,"start",t,x,E))},_emulateDragOver:function(){if(I){if(this._lastX===I.clientX&&this._lastY===I.clientY)return;this._lastX=I.clientX,this._lastY=I.clientY,R||h(v,"display","none");var a=O.elementFromPoint(I.clientX,I.clientY),b=a,c=" "+this.options.group.name,d=U.length;if(b)do{if(b[M]&&b[M].options.groups.indexOf(c)>-1){for(;d--;)U[d]({clientX:I.clientX,clientY:I.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);R||h(v,"display","")}},_onTouchMove:function(b){if(H){a.active||this._dragStarted(),this._appendGhost();var c=b.touches?b.touches[0]:b,d=c.clientX-H.clientX,e=c.clientY-H.clientY,f=b.touches?"translate3d("+d+"px,"+e+"px,0)":"translate("+d+"px,"+e+"px)";J=!0,I=c,h(v,"webkitTransform",f),h(v,"mozTransform",f),h(v,"msTransform",f),h(v,"transform",f),b.preventDefault()}},_appendGhost:function(){if(!v){var a,b=t.getBoundingClientRect(),c=h(t),d=this.options;v=t.cloneNode(!0),g(v,d.ghostClass,!1),g(v,d.fallbackClass,!0),h(v,"top",b.top-P(c.marginTop,10)),h(v,"left",b.left-P(c.marginLeft,10)),h(v,"width",b.width),h(v,"height",b.height),h(v,"opacity","0.8"),h(v,"position","fixed"),h(v,"zIndex","100000"),h(v,"pointerEvents","none"),d.fallbackOnBody&&O.body.appendChild(v)||x.appendChild(v),a=v.getBoundingClientRect(),h(v,"width",2*b.width-a.width),h(v,"height",2*b.height-a.height)}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;this._offUpEvents(),"clone"==G.pull&&(w=t.cloneNode(!0),h(w,"display","none"),x.insertBefore(w,t)),b?("touch"===b?(e(O,"touchmove",this._onTouchMove),e(O,"touchend",this._onDrop),e(O,"touchcancel",this._onDrop)):(e(O,"mousemove",this._onTouchMove),e(O,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,t)),e(O,"drop",this),setTimeout(this._dragStarted,0))},_onDragOver:function(a){var d,e,f,g=this.el,i=this.options,j=i.group,l=j.put,o=G===j,p=i.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!i.dragoverBubble&&a.stopPropagation()),J=!0,G&&!i.disabled&&(o?p||(f=!x.contains(t)):G.pull&&l&&(G.name===j.name||l.indexOf&&~l.indexOf(G.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(V(a,i,this.el),S)return;if(d=c(a.target,i.draggable,g),e=t.getBoundingClientRect(),f)return b(!0),void(w||y?x.insertBefore(t,w||y):p||x.appendChild(t));if(0===g.children.length||g.children[0]===v||g===a.target&&(d=n(g,a))){if(d){if(d.animated)return;r=d.getBoundingClientRect()}b(o),k(x,g,t,e,d,r)!==!1&&(t.contains(g)||(g.appendChild(t),u=g),this._animate(e,t),d&&this._animate(r,d))}else if(d&&!d.animated&&d!==t&&void 0!==d.parentNode[M]){B!==d&&(B=d,C=h(d),D=h(d.parentNode));var q,r=d.getBoundingClientRect(),s=r.right-r.left,z=r.bottom-r.top,A=/left|right|inline/.test(C.cssFloat+C.display)||"flex"==D.display&&0===D["flex-direction"].indexOf("row"),E=d.offsetWidth>t.offsetWidth,F=d.offsetHeight>t.offsetHeight,H=(A?(a.clientX-r.left)/s:(a.clientY-r.top)/z)>.5,I=d.nextElementSibling,K=k(x,g,t,e,d,r);if(K!==!1){if(S=!0,setTimeout(m,30),b(o),1===K||K===-1)q=1===K;else if(A){var L=t.offsetTop,N=d.offsetTop;q=L===N?d.previousElementSibling===t&&!E||H&&E:N>L}else q=I!==t&&!F||H&&F;t.contains(g)||(q&&!I?g.appendChild(t):d.parentNode.insertBefore(t,q?I:d)),u=t.parentNode,this._animate(e,t),this._animate(r,d)}}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();h(b,"transition","none"),h(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,h(b,"transition","all "+c+"ms"),h(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){h(b,"transition",""),h(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;f(O,"touchmove",this._onTouchMove),f(a,"mouseup",this._onDrop),f(a,"touchend",this._onDrop),f(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(K.pid),clearTimeout(this._dragStartTimer),f(O,"mousemove",this._onTouchMove),this.nativeDraggable&&(f(O,"drop",this),f(c,"dragstart",this._onDragStart)),this._offUpEvents(),b&&(J&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation()),v&&v.parentNode.removeChild(v),t&&(this.nativeDraggable&&f(t,"dragend",this),l(t),g(t,this.options.ghostClass,!1),g(t,this.options.chosenClass,!1),x!==u?(F=p(t,d.draggable),F>=0&&(j(null,u,"sort",t,x,E,F),j(this,x,"sort",t,x,E,F),j(null,u,"add",t,x,E,F),j(this,x,"remove",t,x,E,F))):(w&&w.parentNode.removeChild(w),t.nextSibling!==y&&(F=p(t,d.draggable),F>=0&&(j(this,x,"update",t,x,E,F),j(this,x,"sort",t,x,E,F)))),a.active&&(null!==F&&F!==-1||(F=E),j(this,x,"end",t,x,E,F),this.save()))),this._nulling()},_nulling:function(){x=t=u=v=y=w=z=A=H=I=J=F=B=C=G=a.active=null},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?t&&(this._onDragOver(a),d(a)):"drop"!==b&&"dragend"!==b||this._onDrop(a)},toArray:function(){for(var a,b=[],d=this.el.children,e=0,f=d.length,g=this.options;e<f;e++)a=d[e],c(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||o(a));return b},sort:function(a){var b={},d=this.el;this.toArray().forEach(function(a,e){var f=d.children[e];c(f,this.options.draggable,d)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(d.removeChild(b[a]),d.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return c(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:(c[a]=b,void("group"===a&&W(c)))},destroy:function(){var a=this.el;a[M]=null,f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),this.nativeDraggable&&(f(a,"dragover",this),f(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),U.splice(U.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:e,off:f,css:h,find:i,is:function(a,b){return!!c(a,b,a)},extend:s,throttle:r,closest:c,toggleClass:g,index:p},a.create=function(b,c){return new a(b,c)},a.version="1.4.2",a}),function(a){"object"==typeof exports?module.exports=a(window.jQuery):"function"==typeof define&&define.amd?define(["jquery"],a):window.jQuery&&!window.jQuery.fn.colorpicker&&a(window.jQuery)}(function(a){var b=function(b,c){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,c&&a.extend(this.colors,c),b&&(void 0!==b.toLowerCase?(b+="",this.setColor(b)):void 0!==b.h&&(this.value=b))};b.prototype={constructor:b,colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",transparent:"transparent"},_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:""===a?0:void 0!==a.toLowerCase?(a.match(/^\./)&&(a="0"+a),Math.ceil(100*parseFloat(a))/100):1},isTransparent:function(a){return!!a&&(a=a.toLowerCase().trim(),"transparent"===a||a.match(/#?00000000/)||a.match(/(rgba|hsla)\(0,0,0,0?\.?0\)/))},rgbaIsTransparent:function(a){return 0===a.r&&0===a.g&&0===a.b&&0===a.a},setColor:function(a){a=a.toLowerCase().trim(),a&&(this.isTransparent(a)?this.value={h:0,s:0,b:0,a:0}:this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1})},stringToHSB:function(b){b=b.toLowerCase();var c;"undefined"!=typeof this.colors[b]&&(b=this.colors[b],c="alias");var d=this,e=!1;return a.each(this.stringParsers,function(a,f){var g=f.re.exec(b),h=g&&f.parse.apply(d,[g]),i=c||f.format||"rgba";return!h||(e=i.match(/hsla?/)?d.RGBtoHSB.apply(d,d.HSLtoRGB.apply(d,h)):d.RGBtoHSB.apply(d,h),d.origFormat=i,!1)}),e},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=Math.round(parseInt(100*(1-a),10)/100*100)/100},toRGB:function(a,b,c,d){a||(a=this.value.h,b=this.value.s,c=this.value.b),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d||this.value.a}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return this.rgbaIsTransparent(e)?"transparent":"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&f<=1?f:2-f,f/=2,g>1&&(g=1),{h:isNaN(e)?0:e,s:isNaN(g)?0:g,l:isNaN(f)?0:f,a:isNaN(d)?0:d}},toAlias:function(a,b,c,d){var e=this.toHex(a,b,c,d);for(var f in this.colors)if(this.colors[f]===e)return f;return!1},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return c<0?c+=1:c>1&&(c-=1),6*c<1?a+(b-a)*c*6:2*c<1?b:3*c<2?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){b<0&&(b=0);var e;e=c<=.5?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){a=a||"rgba";var b=!1;switch(a){case"rgb":return b=this.toRGB(),this.rgbaIsTransparent(b)?"transparent":"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":return b=this.toRGB(),"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":return b=this.toHSL(),"hsl("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%)";case"hsla":return b=this.toHSL(),"hsla("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%,"+b.a+")";case"hex":return this.toHex();case"alias":return this.toAlias()||this.toHex();default:return b}},stringParsers:[{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}}],colorNameToHex:function(a){return"undefined"!=typeof this.colors[a.toLowerCase()]&&this.colors[a.toLowerCase()]}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div><div class="colorpicker-selectors"></div></div>',align:"right",customClass:null,colorSelectors:null},d=function(d,e){if(this.element=a(d).addClass("colorpicker-element"),this.options=a.extend(!0,{},c,this.element.data(),e),this.component=this.options.component,this.component=this.component!==!1&&this.element.find(this.component),this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1&&a(this.container),this.input=this.element.is("input")?this.element:!!this.options.input&&this.element.find(this.options.input),this.input&&0===this.input.length&&(this.input=!1),this.color=new b(this.options.color!==!1?this.options.color:this.getValue(),this.options.colorSelectors),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.options.color!==!1&&(this.updateInput(this.color),this.updateData(this.color)),this.picker=a(this.options.template),this.options.customClass&&this.picker.addClass(this.options.customClass),this.options.inline?this.picker.addClass("colorpicker-inline colorpicker-visible"):this.picker.addClass("colorpicker-hidden"),this.options.horizontal&&this.picker.addClass("colorpicker-horizontal"),"rgba"!==this.format&&"hsla"!==this.format&&this.options.format!==!1||this.picker.addClass("colorpicker-with-alpha"),"right"===this.options.align&&this.picker.addClass("colorpicker-right"),this.options.inline===!0&&this.picker.addClass("colorpicker-no-arrow"),this.options.colorSelectors){var f=this;a.each(this.options.colorSelectors,function(b,c){var d=a("<i />").css("background-color",c).data("class",b);d.click(function(){f.setValue(a(this).css("background-color"))}),f.picker.find(".colorpicker-selectors").append(d)}),this.picker.find(".colorpicker-selectors").show()}this.picker.on("mousedown.colorpicker touchstart.colorpicker",a.proxy(this.mousedown,this)),this.picker.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.input.on({"change.colorpicker":a.proxy(this.change,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.input!==!1&&this.component!==!1&&"color"===this.input.attr("type")&&this.input.on({"click.colorpicker":a.proxy(this.show,this),"focus.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker","color").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.trigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1||this.options.container)return!1;var a=this.container&&this.container[0]!==document.body?"position":"offset",b=this.component||this.element,c=b[a]();"right"===this.options.align&&(c.left-=this.picker.outerWidth()-b.outerWidth()),this.picker.css({top:c.top+b.outerHeight(),left:c.left})},show:function(b){return!this.isDisabled()&&(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!b||this.hasInput()&&"color"!==this.input.attr("type")||b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),!this.component&&this.input||this.options.inline!==!1||a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),void this.element.trigger({type:"showPicker",color:this.color}))},hide:function(){this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(document).off({"mousedown.colorpicker":this.hide}),this.update(),this.element.trigger({type:"hidePicker",color:this.color})},updateData:function(a){return a=a||this.color.toString(this.format),this.element.data("color",a),a},updateInput:function(a){if(a=a||this.color.toString(this.format),this.input!==!1){if(this.options.colorSelectors){var c=new b(a,this.options.colorSelectors),d=c.toAlias();"undefined"!=typeof this.options.colorSelectors[d]&&(a=d)}this.input.prop("value",a)}return a},updatePicker:function(a){void 0!==a&&(this.color=new b(a,this.options.colorSelectors));var c=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,d=this.picker.find("i");if(0!==d.length)return this.options.horizontal===!1?(c=this.options.sliders,d.eq(1).css("top",c.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",c.alpha.maxTop*(1-this.color.value.a))):(c=this.options.slidersHorz,d.eq(1).css("left",c.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",c.alpha.maxLeft*(1-this.color.value.a))),d.eq(0).css({top:c.saturation.maxTop-this.color.value.b*c.saturation.maxTop,left:this.color.value.s*c.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(this.color.value.h,1,1,1)),this.picker.find(".colorpicker-alpha").css("backgroundColor",this.color.toHex()),this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor",this.color.toString(this.format)),a},updateComponent:function(a){if(a=a||this.color.toString(this.format),this.component!==!1){var b=this.component.find("i").eq(0);b.length>0?b.css({backgroundColor:a}):this.component.css({backgroundColor:a})}return a},update:function(a){var b;return this.getValue(!1)===!1&&a!==!0||(b=this.updateComponent(),this.updateInput(b),this.updateData(b),this.updatePicker()),b},setValue:function(a){this.color=new b(a,this.options.colorSelectors),this.update(!0),this.element.trigger({type:"changeColor",color:this.color,value:a})},getValue:function(a){a=void 0===a?"#000000":a;var b;return b=this.hasInput()?this.input.val():this.element.data("color"),void 0!==b&&""!==b&&null!==b||(b=a),b},hasInput:function(){return this.input!==!1},isDisabled:function(){return!!this.hasInput()&&this.input.prop("disabled")===!0},disable:function(){return!!this.hasInput()&&(this.input.prop("disabled",!0),this.element.trigger({type:"disable",color:this.color,value:this.getValue()}),!0)},enable:function(){return!!this.hasInput()&&(this.input.prop("disabled",!1),this.element.trigger({type:"enable",color:this.color,value:this.getValue()}),!0)},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){!b.pageX&&!b.pageY&&b.originalEvent&&b.originalEvent.touches&&(b.pageX=b.originalEvent.touches[0].pageX,b.pageY=b.originalEvent.touches[0].pageY),b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"touchmove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this),"touchend.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){!a.pageX&&!a.pageY&&a.originalEvent&&a.originalEvent.touches&&(a.pageX=a.originalEvent.touches[0].pageX,a.pageY=a.originalEvent.touches[0].pageY),a.stopPropagation(),a.preventDefault();var b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/this.currentSlider.maxLeft),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/this.currentSlider.maxTop),"setAlpha"===this.currentSlider.callTop&&this.options.format===!1&&(1!==this.color.value.a?(this.format="rgba",this.color.origFormat="rgba"):(this.format="hex",this.color.origFormat="hex")),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return b.stopPropagation(),b.preventDefault(),a(document).off({"mousemove.colorpicker":this.mousemove,"touchmove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup,"touchend.colorpicker":this.mouseup}),!1},change:function(a){this.keyup(a)},keyup:function(a){38===a.keyCode?(this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0)):40===a.keyCode?(this.color.value.a>0&&(this.color.value.a=Math.round(100*(this.color.value.a-.01))/100),this.update(!0)):(this.color=new b(this.input.val(),this.options.colorSelectors),this.color.origFormat&&this.options.format===!1&&(this.format=this.color.origFormat),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())),this.element.trigger({type:"changeColor",color:this.color,value:this.input.val()})}},a.colorpicker=d,a.fn.colorpicker=function(b){var c=Array.prototype.slice.call(arguments,1),e=1===this.length,f=null,g=this.each(function(){var e=a(this),g=e.data("colorpicker"),h="object"==typeof b?b:{};g||(g=new d(this,h),e.data("colorpicker",g)),"string"==typeof b?a.isFunction(g[b])?f=g[b].apply(g,c):(c.length&&(g[b]=c[0]),f=g[b]):f=e});return e?f:g},a.fn.colorpicker.constructor=d}),/** @license +======================================================================== + XPath.js - Pure JavaScript implementation of XPath 2.0 parser and evaluator + + Copyright (c) 2012 Sergey Ilinsky + Dual licensed under the MIT and GPL licenses. +*/ +function(){function a(a){this.code=a,this.message=Vc[a]}function b(b){var c=b.match(/\$?(?:(?![0-9-])(?:\w[\w.-]*|\*):)?(?![0-9-])(?:\w[\w.-]*|\*)|\(:|:\)|\/\/|\.\.|::|\d+(?:\.\d*)?(?:[eE][+-]?\d+)?|\.\d+(?:[eE][+-]?\d+)?|"[^"]*(?:""[^"]*)*"|'[^']*(?:''[^']*)*'|<<|>>|[!<>]=|(?![0-9-])[\w-]+:\*|\s+|./g);if(c){for(var d=0,e=0,f=c.length;e<f;e++)"(:"==c[e]?d++:":)"==c[e]&&d?d--:d||/^\s/.test(c[e])||(this[this.length++]=c[e]);if(d)throw new a("XPST0003")}}function c(){}function d(a,b,d,e){this.staticContext=a,this.item=b,this.scope=d||{},this.stack={},this.DOMAdapter=e||new c;var f=new Ec,g=f.getTimezoneOffset();this.dateTime=new _a(f.getFullYear(),f.getMonth()+1,f.getDate(),f.getHours(),f.getMinutes(),f.getSeconds()+f.getMilliseconds()/1e3,(-g)),this.timezone=new Ab(0,Gc.abs(~~(g/60)),Gc.abs(g%60),0,g>0)}function e(){this.dataTypes={},this.documents={},this.functions={},this.collations={},this.collections={}}function f(a,b,c){Xc[a]=c,Yc[a]=b}function g(a,b){Zc[a]=b}function h(c,d){var e=new b(c),f=l(e,d);if(!e.eof())throw new a("XPST0003");if(!f)throw new a("XPST0003");this.internalExpression=f}function i(){}function j(){}function k(){this.items=[]}function l(b,c){var d;if(!b.eof()&&(d=m(b,c))){var e=new k;for(e.items.push(d);","==b.peek();){if(b.next(),b.eof()||!(d=m(b,c)))throw new a("XPST0003");e.items.push(d)}return e}}function m(a,b){if(!a.eof())return s(a,b)||o(a,b)||u(a,b)||K(a,b)}function n(){this.bindings=[],this.returnExpr=null}function o(b,c){if("for"==b.peek()&&"$"==b.peek(1).substr(0,1)){b.next();var d,e=new n;do e.bindings.push(q(b,c));while(","==b.peek()&&b.next());if("return"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(d=m(b,c)))throw new a("XPST0003");return e.returnExpr=d,e}}function p(a,b,c,d){this.prefix=a,this.localName=b,this.namespaceURI=c,this.inExpr=d}function q(b,c){var d=b.peek().substr(1).match(id);if(!d)throw new a("XPST0003");if("*"==d[1]||"*"==d[2])throw new a("XPST0003");if(b.next(),"in"!=b.peek())throw new a("XPST0003");b.next();var e;if(b.eof()||!(e=m(b,c)))throw new a("XPST0003");return new p(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null,e)}function r(a,b,c){this.condExpr=a,this.thenExpr=b,this.elseExpr=c}function s(b,c){var d,e,f;if("if"==b.peek()&&"("==b.peek(1)){if(b.next(2),b.eof()||!(d=l(b,c)))throw new a("XPST0003");if(")"!=b.peek())throw new a("XPST0003");if(b.next(),"then"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(e=m(b,c)))throw new a("XPST0003");if("else"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(f=m(b,c)))throw new a("XPST0003");return new r(d,e,f)}}function t(a){this.quantifier=a,this.bindings=[],this.satisfiesExpr=null}function u(b,c){var d=b.peek();if(("some"==d||"every"==d)&&"$"==b.peek(1).substr(0,1)){b.next();var e,f=new t(d);do f.bindings.push(w(b,c));while(","==b.peek()&&b.next());if("satisfies"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(e=m(b,c)))throw new a("XPST0003");return f.satisfiesExpr=e,f}}function v(a,b,c,d){this.prefix=a,this.localName=b,this.namespaceURI=c,this.inExpr=d}function w(b,c){var d=b.peek().substr(1).match(id);if(!d)throw new a("XPST0003");if("*"==d[1]||"*"==d[2])throw new a("XPST0003");if(b.next(),"in"!=b.peek())throw new a("XPST0003");b.next();var e;if(b.eof()||!(e=m(b,c)))throw new a("XPST0003");return new v(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null,e)}function x(a,b,c){this.left=a,this.right=b,this.operator=c}function y(b,c){var d,e;if(!b.eof()&&(d=ya(b,c))){if(!(b.peek()in cd))return d;var f=b.peek();if(b.next(),b.eof()||!(e=ya(b,c)))throw new a("XPST0003");return new x(d,e,f)}}function z(a,b){var c=vc(a.left.evaluate(b),b);if(!c.length)return new Xa((!1));var d=vc(a.right.evaluate(b),b);if(!d.length)return new Xa((!1));for(var e,f,g=!1,h=0,i=c.length;h<i&&!g;h++)for(var j,k,l=0,m=d.length;l<m&&!g;l++)f=c[h],k=d[l],e=f instanceof xb,j=k instanceof xb,e&&j?(f=ub.cast(f),k=ub.cast(k)):(e?k instanceof Ab?f=Ab.cast(f):k instanceof yb?f=yb.cast(f):k.primitiveKind&&(f=Zc[k.primitiveKind].cast(f)):j&&(f instanceof Ab?k=Ab.cast(k):f instanceof yb?k=yb.cast(k):f.primitiveKind&&(k=Zc[f.primitiveKind].cast(k))),f instanceof Va&&(f=ub.cast(f)),k instanceof Va&&(k=ub.cast(k))),g=ad[_c[a.operator]](f,k,b).valueOf();return new Xa(g)}function A(a,b){var c=vc(a.left.evaluate(b),b);if(!c.length)return null;ua(b,c,"?");var d=vc(a.right.evaluate(b),b);if(!d.length)return null;ua(b,d,"?");var e=c[0],f=d[0];return e instanceof xb&&(e=ub.cast(e)),f instanceof xb&&(f=ub.cast(f)),e instanceof Va&&(e=ub.cast(e)),f instanceof Va&&(f=ub.cast(f)),ad[a.operator](e,f,b)}function B(a,b){var c=a.left.evaluate(b);if(!c.length)return null;ua(b,c,"?"),ta(b,c,Zb);var d=a.right.evaluate(b);return d.length?(ua(b,d,"?"),ta(b,d,Zb),bd[a.operator](c[0],d[0],b)):null}function C(a){this.left=a,this.items=[]}function D(b,c){var d;if(!b.eof()&&(d=F(b,c))){if(!(b.peek()in dd))return d;for(var e,f=new C(d);(e=b.peek())in dd;){if(b.next(),b.eof()||!(d=F(b,c)))throw new a("XPST0003");f.items.push([e,d])}return f}}function E(a){this.left=a,this.items=[]}function F(b,c){var d;if(!b.eof()&&(d=Aa(b,c))){if(!(b.peek()in ed))return d;for(var e,f=new E(d);(e=b.peek())in ed;){if(b.next(),b.eof()||!(d=Aa(b,c)))throw new a("XPST0003");f.items.push([e,d])}return f}}function G(a,b){this.operator=a,this.expression=b}function H(b,c){if(!b.eof()){if(!(b.peek()in fd))return I(b,c);for(var d,e="+";b.peek()in fd;)"-"==b.peek()&&(e="-"==e?"+":"-"),b.next();if(b.eof()||!(d=I(b,c)))throw new a("XPST0003");return new G(e,d)}}function I(a,b){return V(a,b)}function J(a){this.left=a,this.items=[]}function K(b,c){var d;if(!b.eof()&&(d=M(b,c))){if("or"!=b.peek())return d;for(var e=new J(d);"or"==b.peek();){if(b.next(),b.eof()||!(d=M(b,c)))throw new a("XPST0003");e.items.push(d)}return e}}function L(a){this.left=a,this.items=[]}function M(b,c){var d;if(!b.eof()&&(d=y(b,c))){if("and"!=b.peek())return d;for(var e=new L(d);"and"==b.peek();){if(b.next(),b.eof()||!(d=y(b,c)))throw new a("XPST0003");e.items.push(d)}return e}}function N(){}function O(a,b){if(!a.eof())return na(a,b)||R(a,b)}function P(b,c,d){for(var e;"["==b.peek();){if(b.next(),b.eof()||!(e=l(b,c)))throw new a("XPST0003");if(d.predicates.push(e),"]"!=b.peek())throw new a("XPST0003");b.next()}}function Q(a,b){this.axis=a,this.test=b,this.predicates=[]}function R(b,c){var d,e,f=b.peek();if("::"==b.peek(1)){if(!(f in gd))throw new a("XPST0003");if(b.next(2),b.eof()||!(d=X(b,c)))throw new a("XPST0003");e=new Q(f,d)}else if(".."==f)b.next(),e=new Q("parent",new Y("node"));else if("@"==f){if(b.next(),b.eof()||!(d=X(b,c)))throw new a("XPST0003");e=new Q("attribute",d)}else{if(b.eof()||!(d=X(b,c)))return;e=new Q(d instanceof Y&&"attribute"==d.name?"attribute":"child",d)}return P(b,c,e),e}function S(a,b,c){for(var d;a;a=c(a,"nextSibling"))b.push(a),(d=c(a,"firstChild"))&&S(d,b,c)}function T(a,b,c){for(var d;a;a=c(a,"previousSibling"))(d=c(a,"lastChild"))&&T(d,b,c),b.push(a)}function U(){this.items=[]}function V(b,c){if(!b.eof()){var d,e="/",f="//",g=new U,h=b.peek();if(h!=f&&h!=e||(b.next(),g.items.push(new qa(null,"root",Sc)),h==f&&g.items.push(new Q("descendant-or-self",new Y("node")))),!b.eof()&&(d=O(b,c))){for(g.items.push(d);(h=b.peek())==e||h==f;){if(h==f&&g.items.push(new Q("descendant-or-self",new Y("node"))),b.next(),b.eof()||!(d=O(b,c)))throw new a("XPST0003");g.items.push(d)}return 1==g.items.length?g.items[0]:g}if(h==e)return g.items[0];if(h==f)throw new a("XPST0003")}}function W(){}function X(a,b){if(!a.eof())return Z(a,b)||_(a,b)}function Y(a){this.name=a,this.args=[]}function Z(b,c){var d,e=b.peek();if("("==b.peek(1)){if(!(e in hd))throw new a("XPST0003");b.next(2);var f=new Y(e);if(")"!=b.peek())"document-node"==e||"element"==e||"attribute"==e||"processing-instruction"==e&&(d=la(b,c),d||(d=new ka(new ub(b.peek())),b.next()),f.args.push(d));else{if("schema-attribute"==e)throw new a("XPST0003");if("schema-element"==e)throw new a("XPST0003")}if(")"!=b.peek())throw new a("XPST0003");return b.next(),f}}function $(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function _(b,c){var d=b.peek().match(id);if(d){if("*"==d[1]&&"*"==d[2])throw new a("XPST0003");return b.next(),new $(d[1]||null,d[2],d[1]?"*"==d[1]?"*":c.getURIForPrefix(d[1])||null:c.defaultElementNamespace)}}function aa(a,b){if(!a.eof())return ea(a,b)||ca(a,b)||ra(a,b)||pa(a,b)||ga(a,b)}function ba(a){this.expression=a}function ca(b,c){if("("==b.peek()){b.next();var d=null;if(")"!=b.peek()&&(d=l(b,c)),")"!=b.peek())throw new a("XPST0003");return b.next(),new ba(d)}}function da(){}function ea(a,b){if("."==a.peek())return a.next(),new da}function fa(){}function ga(a,b){if(!a.eof())return ia(a,b)||la(a,b)}function ha(a){this.value=a}function ia(a,b){var c=a.peek(),d=ja(c);if(d)return a.next(),new ha(d)}function ja(a){var b=a.match(jd);if(b){var c=Cb;return b[5]?c=gb:(b[2]||b[3])&&(c=fb),new c((+a))}}function ka(a){this.value=a}function la(a,b){var c=a.peek().match(kd);if(c)return a.next(),new ka(new ub(c[1]?c[1].replace("''","'"):c[2]?c[2].replace('""','"'):""))}function ma(a){this.expression=a,this.predicates=[]}function na(a,b){var c;if(!a.eof()&&(c=aa(a,b))){var d=new ma(c);return P(a,b,d),0==d.predicates.length?d.expression:d}}function oa(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function pa(b,c){if("$"==b.peek().substr(0,1)){var d=b.peek().substr(1).match(id);if(d){if("*"==d[1]||"*"==d[2])throw new a("XPST0003");var e=new oa(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null);return b.next(),e}}}function qa(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c,this.args=[]}function ra(b,c){var d=b.peek().match(id);if(d&&"("==b.peek(1)){if(!d[1]&&d[2]in hd)return R(b,c);if("*"==d[1]||"*"==d[2])throw new a("XPST0003");var e,f=new qa(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1])||null:c.defaultFunctionNamespace);if(b.next(2),")"!=b.peek()){do{if(b.eof()||!(e=m(b,c)))throw new a("XPST0003");f.args.push(e)}while(","==b.peek()&&b.next());if(")"!=b.peek())throw new a("XPST0003")}return b.next(),f}}function sa(b,c,d,e,f){for(var g,h,i=e.length,j=c.length,k=0;k<c.length&&!c[k][2];)k++;if(i>j)throw new a("XPST0017");if(i<k)throw new a("XPST0017");for(var l=0;l<i;l++)h=c[l],g=e[l],ua(f,g,h[1]),ta(f,g,h[0]),"+"!=h[1]&&"*"!=h[1]&&(e[l]=g.length?g[0]:null)}function ta(b,c,d){for(var e,f,g=0,h=c.length;g<h;g++)if(f=c[g],d==Zb||d.prototype instanceof Zb){if(!b.DOMAdapter.isNode(f))throw new a("XPTY0004");if(d!=Zb&&(e=b.DOMAdapter.getProperty(f,"nodeType"),[null,bc,$b,dc,dc,null,null,cc,_b,ac,null,null,null][e]!=d))throw new a("XPTY0004")}else if(d==Ta||d.prototype instanceof Ta){if(f=vc([f],b)[0],d!=Ta&&(f instanceof xb?f=d.cast(f):d==ub?f instanceof Va&&(f=ub.cast(f)):d==gb&&Ua(f)&&(f=d.cast(f))),!(f instanceof d))throw new a("XPTY0004");c[g]=f}}function ua(b,c,d){var e=c.length;if("?"==d){if(e>1)throw new a("XPTY0004")}else if("+"==d){if(e<1)throw new a("XPTY0004")}else if("*"!=d&&1!=e)throw new a("XPTY0004")}function va(a){this.left=a,this.items=[]}function wa(b,c){var d,e;if(!b.eof()&&(d=Ca(b,c))){if("intersect"!=(e=b.peek())&&"except"!=e)return d;for(var f=new va(d);"intersect"==(e=b.peek())||"except"==e;){if(b.next(),b.eof()||!(d=Ca(b,c)))throw new a("XPST0003");f.items.push([e,d])}return f}}function xa(a,b){this.left=a,this.right=b}function ya(b,c){var d,e;if(!b.eof()&&(d=D(b,c))){if("to"!=b.peek())return d;if(b.next(),b.eof()||!(e=D(b,c)))throw new a("XPST0003");return new xa(d,e)}}function za(a){this.left=a,this.items=[]}function Aa(b,c){var d,e;if(!b.eof()&&(d=wa(b,c))){if("|"!=(e=b.peek())&&"union"!=e)return d;for(var f=new za(d);"|"==(e=b.peek())||"union"==e;){if(b.next(),b.eof()||!(d=wa(b,c)))throw new a("XPST0003");f.items.push(d)}return f}}function Ba(a,b){this.expression=a,this.type=b}function Ca(b,c){var d,e;if(!b.eof()&&(d=Ea(b,c))){if("instance"!=b.peek()||"of"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Oa(b,c)))throw new a("XPST0003");return new Ba(d,e)}}function Da(a,b){this.expression=a,this.type=b}function Ea(b,c){var d,e;if(!b.eof()&&(d=Ga(b,c))){if("treat"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Oa(b,c)))throw new a("XPST0003");return new Da(d,e)}}function Fa(a,b){this.expression=a,this.type=b}function Ga(b,c){var d,e;if(!b.eof()&&(d=Ia(b,c))){if("castable"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Qa(b,c)))throw new a("XPST0003");return new Fa(d,e)}}function Ha(a,b){this.expression=a,this.type=b}function Ia(b,c){var d,e;if(!b.eof()&&(d=H(b,c))){if("cast"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Qa(b,c)))throw new a("XPST0003");return new Ha(d,e)}}function Ja(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function Ka(b,c){var d=b.peek().match(id);if(d){if("*"==d[1]||"*"==d[2])throw new a("XPST0003");return b.next(),new Ja(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null)}}function La(a){this.test=a}function Ma(b,c){if(!b.eof()){var d;if("item"==b.peek()&&"("==b.peek(1)){if(b.next(2),")"!=b.peek())throw new a("XPST0003");return b.next(),new La}return(d=Z(b,c))?new La(d):(d=Ka(b,c))?new La(d):void 0}}function Na(a,b){this.itemType=a||null,this.occurence=b||null}function Oa(b,c){if(!b.eof()){if("empty-sequence"==b.peek()&&"("==b.peek(1)){if(b.next(2),")"!=b.peek())throw new a("XPST0003");return b.next(),new Na}var d,e;return!b.eof()&&(d=Ma(b,c))?(e=b.peek(),"?"==e||"*"==e||"+"==e?b.next():e=null,new Na(d,e)):void 0}}function Pa(a,b){this.itemType=a||null,this.occurence=b||null}function Qa(a,b){var c,d;if(!a.eof()&&(c=Ka(a,b)))return d=a.peek(),"?"==d?a.next():d=null,new Pa(c,d)}function Ra(){}function Sa(){}function Ta(){}function Ua(a){return a instanceof lb||a instanceof gb||a instanceof fb}function Va(a,b,c,d,e){this.scheme=a,this.authority=b,this.path=c,this.query=d,this.fragment=e}function Wa(a){this.value=a}function Xa(a){this.value=a}function Ya(a,b,c,d,e){this.year=a,this.month=b,this.day=c,this.timezone=d,this.negative=e}function Za(a,b){return 2==b&&(a%400==0||a%100!=0&&a%4==0)?29:pd[b-1]}function $a(a,b){if(!b){var c=Za(a.year,a.month);if(a.day>c)for(;a.day>c;)a.month+=1,a.month>12&&(a.year+=1,0==a.year&&(a.year=1),a.month=1),a.day-=c,c=Za(a.year,a.month);else if(a.day<1)for(;a.day<1;)a.month-=1,a.month<1&&(a.year-=1,0==a.year&&(a.year=-1),a.month=12),c=Za(a.year,a.month),a.day+=c}return a.month>12?(a.year+=~~(a.month/12),0==a.year&&(a.year=1),a.month=a.month%12):a.month<1&&(a.year+=~~(a.month/12)-1,0==a.year&&(a.year=-1),a.month=a.month%12+12),a}function _a(a,b,c,d,e,f,g,h){this.year=a,this.month=b,this.day=c,this.hours=d,this.minutes=e,this.seconds=f,this.timezone=g,this.negative=h}function ab(a,b){var c=Ac(a);return arguments.length<2&&(b=2),(c.length<b+1?new Cc(b+1-c.length).join("0"):"")+c}function bb(a){var b=a.timezone;return null==b?"":b?(b>0?"+":"-")+ab(Gc.abs(~~(b/60)))+":"+ab(Gc.abs(b%60)):"Z"}function cb(a){return(a.negative?"-":"")+ab(a.year,4)+"-"+ab(a.month)+"-"+ab(a.day)}function db(a){var b=Ac(a.seconds).split(".");return ab(a.hours)+":"+ab(a.minutes)+":"+ab(b[0])+(b.length>1?"."+b[1]:"")}function eb(a){return $a(wb(a))}function fb(a){this.value=a}function gb(a){this.value=a}function hb(a,b,c,d,e,f,g){this.year=a,this.month=b,this.day=c,this.hours=d,this.minutes=e,this.seconds=f,this.negative=g}function ib(a){return(a.year?a.year+"Y":"")+(a.month?a.month+"M":"")}function jb(a){return(a.day?a.day+"D":"")+(a.hours||a.minutes||a.seconds?"T"+(a.hours?a.hours+"H":"")+(a.minutes?a.minutes+"M":"")+(a.seconds?a.seconds+"S":""):"")}function kb(a){return zb(Bb(a))}function lb(a){this.value=a}function mb(a,b){this.day=a,this.timezone=b}function nb(a,b){this.month=a,this.timezone=b}function ob(a,b,c){this.month=a,this.day=b,this.timezone=c}function pb(a,b){this.year=a,this.timezone=b}function qb(a,b,c){this.year=a,this.month=b,this.timezone=c}function rb(a){this.value=a}function sb(){}function tb(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function ub(a){this.value=a}function vb(a,b,c,d){this.hours=a,this.minutes=b,this.seconds=c,this.timezone=d}function wb(a){return(a.seconds>=60||a.seconds<0)&&(a.minutes+=~~(a.seconds/60)-(a.seconds<0&&a.seconds%60?1:0),a.seconds=a.seconds%60+(a.seconds<0&&a.seconds%60?60:0)),(a.minutes>=60||a.minutes<0)&&(a.hours+=~~(a.minutes/60)-(a.minutes<0&&a.minutes%60?1:0),a.minutes=a.minutes%60+(a.minutes<0&&a.minutes%60?60:0)),(a.hours>=24||a.hours<0)&&(a instanceof _a&&(a.day+=~~(a.hours/24)-(a.hours<0&&a.hours%24?1:0)),a.hours=a.hours%24+(a.hours<0&&a.hours%24?24:0)),a}function xb(a){this.value=a}function yb(a,b,c){hb.call(this,a,b,0,0,0,0,c)}function zb(a){return a.month>=12&&(a.year+=~~(a.month/12),a.month%=12),a}function Ab(a,b,c,d,e){hb.call(this,0,0,a,b,c,d,e)}function Bb(a){return a.seconds>=60&&(a.minutes+=~~(a.seconds/60),a.seconds%=60),a.minutes>=60&&(a.hours+=~~(a.minutes/60),a.minutes%=60),a.hours>=24&&(a.day+=~~(a.hours/24),a.hours%=24),a}function Cb(a){this.value=a}function Db(a){this.value=a}function Eb(a){this.value=a}function Fb(a){this.value=a}function Gb(a){this.value=a}function Hb(a){this.value=a}function Ib(a){this.value=a}function Jb(a){this.value=a}function Kb(a){this.value=a}function Lb(a){this.value=a}function Mb(a){this.value=a}function Nb(a){this.value=a}function Ob(a){this.value=a}function Pb(a){this.value=a}function Qb(a){this.value=a}function Rb(a){this.value=a}function Sb(a){this.value=a}function Tb(a){this.value=a}function Ub(a){this.value=a}function Vb(a){this.value=a}function Wb(a){this.value=a}function Xb(a){this.value=a}function Yb(){}function Zb(){}function $b(){}function _b(){}function ac(){}function bc(){}function cc(){}function dc(){}function ec(a,b,c){var d=nc(a),e=nc(b);return new Xa("lt"==c?d<e:"gt"==c?d>e:d==e)}function fc(a,b,c){return gc(_a.cast(a),_a.cast(b),c)}function gc(a,b,c){var d=new Ab(0,0,0,0),e=tc(a,d).toString(),f=tc(b,d).toString();return new Xa("lt"==c?e<f:"gt"==c?e>f:e==f)}function hc(a,b,c){var d;a instanceof Ya?d=new Ya(a.year,a.month,a.day,a.timezone,a.negative):a instanceof _a&&(d=new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative)),d.year=d.year+b.year*("-"==c?-1:1),d.month=d.month+b.month*("-"==c?-1:1),$a(d,!0);var e=Za(d.year,d.month);return d.day>e&&(d.day=e),d}function ic(a,b,c){var d;if(a instanceof Ya){var e=60*(60*b.hours+b.minutes)+b.seconds;d=new Ya(a.year,a.month,a.day,a.timezone,a.negative),d.day=d.day+b.day*("-"==c?-1:1)-1*(e&&"-"==c),$a(d)}else a instanceof _a&&(d=new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative),d.seconds=d.seconds+b.seconds*("-"==c?-1:1),d.minutes=d.minutes+b.minutes*("-"==c?-1:1),d.hours=d.hours+b.hours*("-"==c?-1:1),d.day=d.day+b.day*("-"==c?-1:1),eb(d));return d}function jc(a){return(60*(60*(24*a.day+a.hours)+a.minutes)+a.seconds)*(a.negative?-1:1)}function kc(a){var b=(a=Gc.round(a))<0,c=~~((a=Gc.abs(a))/86400),d=~~((a-=3600*c*24)/3600),e=~~((a-=3600*d)/60),f=a-=60*e;return new Ab(c,d,e,f,b)}function lc(a){return(12*a.year+a.month)*(a.negative?-1:1)}function mc(a){var b=(a=Gc.round(a))<0,c=~~((a=Gc.abs(a))/12),d=a-=12*c;return new yb(c,d,b)}function nc(a){return a.seconds+60*(a.minutes-(null!=a.timezone?a.timezone%60:0)+60*(a.hours-(null!=a.timezone?~~(a.timezone/60):0)))}function oc(a){var b=new Ec((a.negative?-1:1)*a.year,a.month,a.day,0,0,0,0);return a instanceof _a&&(b.setHours(a.hours),b.setMinutes(a.minutes),b.setSeconds(a.seconds)),null!=a.timezone&&b.setMinutes(b.getMinutes()-a.timezone),b.getTime()/1e3}function pc(a,b){if(Ic(a)||Gc.abs(a)==Lc||Ic(b)||Gc.abs(b)==Lc)return 0;var c=Ac(a).match(jd),d=Ac(b).match(jd),e=Gc.max(1,(c[2]||c[3]||"").length+(c[5]||0)*("+"==c[4]?-1:1),(d[2]||d[3]||"").length+(d[5]||0)*("+"==d[4]?-1:1));return e+(e%2?0:1)}function qc(a,b,c){return new(a instanceof Cb&&b instanceof Cb&&c==Gc.round(c)?Cb:fb)(c)}function rc(a,b){if(null==a)return null;var c=a[b]*(a.negative?-1:1);return"seconds"==b?new fb(c):new Cb(c)}function sc(a,b){if(null==a)return null;if("timezone"==b){var c=a.timezone;return null==c?null:new Ab(0,Gc.abs(~~(c/60)),Gc.abs(c%60),0,c<0)}var d=a[b];return a instanceof Ya||"hours"==b&&24==d&&(d=0),a instanceof vb||(d*=a.negative?-1:1),"seconds"==b?new fb(d):new Cb(d)}function tc(a,b){if(null==a)return null;var c;if(c=a instanceof Ya?new Ya(a.year,a.month,a.day,a.timezone,a.negative):a instanceof vb?new vb(a.hours,a.minutes,a.seconds,a.timezone,a.negative):new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative),null==b)c.timezone=null;else{var d=jc(b)/60;if(null!=a.timezone){var e=d-a.timezone;a instanceof Ya?e<0&&c.day--:(c.minutes+=e%60,c.hours+=~~(e/60)),eb(c)}c.timezone=d}return c}function uc(b,c){if(!b.length)return!1;var d=b[0];if(c.DOMAdapter.isNode(d))return!0;if(1==b.length){if(d instanceof Xa)return d.value.valueOf();if(d instanceof ub)return!!d.valueOf().length;if(Ua(d))return!(Ic(d.valueOf())||0==d.valueOf());throw new a("FORG0006")}throw new a("FORG0006")}function vc(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++){if(c=a[f],d=null,null==c)d=null;else if(b.DOMAdapter.isNode(c)){var h=b.DOMAdapter.getProperty;switch(h(c,"nodeType")){case 1:d=new xb(h(c,"textContent"));break;case 2:d=new xb(h(c,"value"));break;case 3:case 4:case 8:d=new xb(h(c,"data"));break;case 7:d=new xb(h(c,"data"));break;case 9:var i=h(c,"documentElement");d=new xb(i?h(i,"textContent"):"")}}else c instanceof Ta&&(d=c);null!=d&&e.push(d)}return e}function wc(a,b){return a.sort(function(a,c){var d=b.DOMAdapter.compareDocumentPosition(a,c);return 2&d?1:4&d?-1:0})}function xc(b,c){var d="\xc0-\xd6\xd8-\xf6\xf8-\u02ff",e="\u0370-\u037d\u037f-\u1fff\u200c-\u200d",f="\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd",g="A-Z_a-z\\-.0-9\xb7"+d+"\u0300-\u036f"+e+"\u203f-\u2040"+f,h="A-Z_a-z"+d+e+f;if(b=b.replace(/\[\\i-\[:\]\]/g,"["+h+"]").replace(/\[\\c-\[:\]\]/g,"["+g+"]").replace(/\\i/g,"[:"+h+"]").replace(/\\I/g,"[^:"+h+"]").replace(/\\c/g,"[:"+g+"]").replace(/\\C/g,"[^:"+g+"]"),c&&!c.match(/^[smix]+$/))throw new a("FORX0001");var i=c.indexOf("s")>=0,j=c.indexOf("x")>=0;if(i||j){c=c.replace(/[sx]/g,"");for(var k,l=[],m=/\s/,n=0,o=b.length,p=!1,q="";n<o;n++)k=b.charAt(n),"\\"!=q&&("["==k?p=!0:"]"==k&&(p=!1)),!p&&j&&m.test(k)||(!p&&i&&"."==k&&"\\"!=q?l[l.length]="(?:.|\\s)":l[l.length]=k),q=k;b=l.join("")}return new Dc(b,c+"g")}function yc(){}function zc(){}var Ac=window.String,Bc=(window.Boolean,window.Number),Cc=(window.Object,window.Array),Dc=window.RegExp,Ec=window.Date,Fc=window.Function,Gc=window.Math,Hc=window.Error,Ic=(window.SyntaxError,window.TypeError,window.isNaN),Jc=window.isFinite,Kc=window.NaN,Lc=window.Infinity,Mc=window.btoa,Nc=window.atob,Oc=window.parseInt,Pc=function(){return Ac.prototype.trim?function(a){return Ac(a).trim()}:function(a){return Ac(a).replace(/^\s+|\s+$/g,"")}}(),Qc=function(){return Cc.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}}(),Rc="http://www.w3.org/2001/XMLSchema",Sc="http://www.w3.org/2005/xpath-functions",Tc="http://www.w3.org/2000/xmlns/",Uc="http://www.w3.org/XML/1998/namespace";a.prototype=new Hc;var Vc={};Vc.XPDY0002="Evaluation of an expression relies on some part of the dynamic context that has not been assigned a value.",Vc.XPST0003="Expression is not a valid instance of the grammar",Vc.XPTY0004="Type is not appropriate for the context in which the expression occurs",Vc.XPST0008="Expression refers to an element name, attribute name, schema type name, namespace prefix, or variable name that is not defined in the static context",Vc.XPST0010="Axis not supported",Vc.XPST0017="Expanded QName and number of arguments in a function call do not match the name and arity of a function signature",Vc.XPTY0018="The result of the last step in a path expression contains both nodes and atomic values",Vc.XPTY0019="The result of a step (other than the last step) in a path expression contains an atomic value.",Vc.XPTY0020="In an axis step, the context item is not a node.",Vc.XPST0051="It is a static error if a QName that is used as an AtomicType in a SequenceType is not defined in the in-scope schema types as an atomic type.",Vc.XPST0081="A QName used in an expression contains a namespace prefix that cannot be expanded into a namespace URI by using the statically known namespaces.",Vc.FORG0001="Invalid value for cast/constructor.",Vc.FORG0003="fn:zero-or-one called with a sequence containing more than one item.",Vc.FORG0004="fn:one-or-more called with a sequence containing no items.",Vc.FORG0005="fn:exactly-one called with a sequence containing zero or more than one item.",Vc.FORG0006="Invalid argument type.",Vc.FODC0001="No context document.",Vc.FORX0001="Invalid regular expression flags.",Vc.FOCA0002="Invalid lexical value.",Vc.FOCH0002="Unsupported collation.",Vc.FONS0004="No namespace found for prefix.",b.prototype.index=0,b.prototype.length=0,b.prototype.reset=function(){this.index=0},b.prototype.peek=function(a){return this[this.index+(a||0)]||""},b.prototype.next=function(a){return(this.index+=a||1)<this.length},b.prototype.back=function(a){return(this.index-=a||1)>0},b.prototype.eof=function(){return this.index>=this.length},c.prototype.isNode=function(a){return a&&!!a.nodeType},c.prototype.getProperty=function(a,b){return a[b]},c.prototype.isSameNode=function(a,b){return a==b},c.prototype.compareDocumentPosition=function(a,b){return a.compareDocumentPosition(b)},c.prototype.lookupNamespaceURI=function(a,b){return a.lookupNamespaceURI(b)},c.prototype.getElementById=function(a,b){return a.getElementById(b)},c.prototype.getElementsByTagNameNS=function(a,b,c){return a.getElementsByTagNameNS(b,c)},d.prototype.item=null,d.prototype.position=0,d.prototype.size=0,d.prototype.scope=null,d.prototype.stack=null,d.prototype.dateTime=null,d.prototype.timezone=null,d.prototype.staticContext=null,d.prototype.pushVariable=function(a,b){this.stack.hasOwnProperty(a)||(this.stack[a]=[]),this.stack[a].push(this.scope[a]),this.scope[a]=b},d.prototype.popVariable=function(a){this.stack.hasOwnProperty(a)&&(this.scope[a]=this.stack[a].pop(),this.stack[a].length||(delete this.stack[a],"undefined"==typeof this.scope[a]&&delete this.scope[a]))},e.prototype.baseURI=null,e.prototype.dataTypes=null,e.prototype.documents=null,e.prototype.functions=null,e.prototype.defaultFunctionNamespace=null,e.prototype.collations=null,e.prototype.defaultCollationName=Sc+"/collation/codepoint",e.prototype.collections=null,e.prototype.namespaceResolver=null,e.prototype.defaultElementNamespace=null;var Wc=/^(?:\{([^\}]+)\})?(.+)$/;e.prototype.setDataType=function(a,b){var c=a.match(Wc);c&&c[1]!=Rc&&(this.dataTypes[a]=b)},e.prototype.getDataType=function(a){var b=a.match(Wc);if(b)return b[1]==Rc?Zc[b[2]]:this.dataTypes[a]},e.prototype.setDocument=function(a,b){this.documents[a]=b},e.prototype.getDocument=function(a){return this.documents[a]},e.prototype.setFunction=function(a,b){var c=a.match(Wc);c&&c[1]!=Sc&&(this.functions[a]=b)},e.prototype.getFunction=function(a){var b=a.match(Wc);if(b)return b[1]==Sc?Xc[b[2]]:this.functions[a]},e.prototype.setCollation=function(a,b){this.collations[a]=b},e.prototype.getCollation=function(a){return this.collations[a]},e.prototype.setCollection=function(a,b){this.collections[a]=b},e.prototype.getCollection=function(a){return this.collections[a]},e.prototype.getURIForPrefix=function(b){var c,d=this.namespaceResolver,e=d&&d.lookupNamespaceURI?d.lookupNamespaceURI:d;if(e instanceof Fc&&(c=e.call(d,b)))return c;if("fn"==b)return Sc;if("xs"==b)return Rc;if("xml"==b)return Uc;if("xmlns"==b)return Tc;throw new a("XPST0081")},e.js2xs=function(a){return a="boolean"==typeof a?new Xa(a):"number"==typeof a?Ic(a)||!Jc(a)?new gb(a):ja(Ac(a)):new ub(Ac(a))},e.xs2js=function(a){return a=a instanceof Xa?a.valueOf():Ua(a)?a.valueOf():a.toString()};var Xc={},Yc={},Zc={},$c={};h.prototype.internalExpression=null,h.prototype.evaluate=function(a){return this.internalExpression.evaluate(a)},i.prototype.equals=function(a,b){throw"Not implemented"},i.prototype.compare=function(a,b){throw"Not implemented"},j.ANYSIMPLETYPE_DT=1,j.STRING_DT=2,j.BOOLEAN_DT=3,j.DECIMAL_DT=4,j.FLOAT_DT=5,j.DOUBLE_DT=6,j.DURATION_DT=7,j.DATETIME_DT=8,j.TIME_DT=9,j.DATE_DT=10,j.GYEARMONTH_DT=11,j.GYEAR_DT=12,j.GMONTHDAY_DT=13,j.GDAY_DT=14,j.GMONTH_DT=15,j.HEXBINARY_DT=16,j.BASE64BINARY_DT=17,j.ANYURI_DT=18,j.QNAME_DT=19,j.NOTATION_DT=20,j.NORMALIZEDSTRING_DT=21,j.TOKEN_DT=22,j.LANGUAGE_DT=23,j.NMTOKEN_DT=24,j.NAME_DT=25,j.NCNAME_DT=26,j.ID_DT=27,j.IDREF_DT=28,j.ENTITY_DT=29,j.INTEGER_DT=30,j.NONPOSITIVEINTEGER_DT=31,j.NEGATIVEINTEGER_DT=32,j.LONG_DT=33,j.INT_DT=34,j.SHORT_DT=35,j.BYTE_DT=36,j.NONNEGATIVEINTEGER_DT=37,j.UNSIGNEDLONG_DT=38,j.UNSIGNEDINT_DT=39,j.UNSIGNEDSHORT_DT=40,j.UNSIGNEDBYTE_DT=41,j.POSITIVEINTEGER_DT=42,j.LISTOFUNION_DT=43,j.LIST_DT=44,j.UNAVAILABLE_DT=45,j.DATETIMESTAMP_DT=46,j.DAYMONTHDURATION_DT=47,j.DAYTIMEDURATION_DT=48,j.PRECISIONDECIMAL_DT=49,j.ANYATOMICTYPE_DT=50,j.ANYTYPE_DT=51,j.XT_YEARMONTHDURATION_DT=-1,j.XT_UNTYPEDATOMIC_DT=-2,k.prototype.items=null,k.prototype.evaluate=function(a){for(var b=[],c=0,d=this.items.length;c<d;c++)b=$c.concatenate.call(a,b,this.items[c].evaluate(a));return b},n.prototype.bindings=null,n.prototype.returnExpr=null,n.prototype.evaluate=function(a){var b=[];return function(c,d){for(var e=c.bindings[d++],f=e.inExpr.evaluate(a),g=(e.namespaceURI?"{"+e.namespaceURI+"}":"")+e.localName,h=0,i=f.length;h<i;h++)a.pushVariable(g,f[h]),d<c.bindings.length?arguments.callee(c,d):b=b.concat(c.returnExpr.evaluate(a)),a.popVariable(g)}(this,0),b},p.prototype.prefix=null,p.prototype.localName=null,p.prototype.namespaceURI=null,p.prototype.inExpr=null,r.prototype.condExpr=null,r.prototype.thenExpr=null,r.prototype.elseExpr=null,r.prototype.evaluate=function(a){return this[uc(this.condExpr.evaluate(a),a)?"thenExpr":"elseExpr"].evaluate(a)},t.prototype.bindings=null,t.prototype.quantifier=null,t.prototype.satisfiesExpr=null,t.prototype.evaluate=function(a){var b="every"==this.quantifier,c=!!b;return function(d,e){for(var f=d.bindings[e++],g=f.inExpr.evaluate(a),h=(f.namespaceURI?"{"+f.namespaceURI+"}":"")+f.localName,i=0,j=g.length;i<j&&(b?c:!c);i++)a.pushVariable(h,g[i]),e<d.bindings.length?arguments.callee(d,e):c=uc(d.satisfiesExpr.evaluate(a),a),a.popVariable(h)}(this,0),[new Xa(c)]},v.prototype.prefix=null,v.prototype.localName=null,v.prototype.namespaceURI=null,v.prototype.inExpr=null,x.prototype.left=null,x.prototype.right=null,x.prototype.operator=null,x.prototype.evaluate=function(a){var b=cd[this.operator](this,a);return null==b?[]:[b]};var _c={"=":"eq","!=":"ne",">":"gt","<":"lt",">=":"ge","<=":"le"},ad={};ad.eq=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-equal");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-equal");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-equal"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-equal"):b instanceof vb?c instanceof vb&&(e="time-equal"):b instanceof _a?c instanceof _a&&(e="dateTime-equal"):b instanceof hb?c instanceof hb&&(e="duration-equal"):b instanceof qb?c instanceof qb&&(e="gYearMonth-equal"):b instanceof pb?c instanceof pb&&(e="gYear-equal"):b instanceof ob?c instanceof ob&&(e="gMonthDay-equal"):b instanceof nb?c instanceof nb&&(e="gMonth-equal"):b instanceof mb?c instanceof mb&&(e="gDay-equal"):b instanceof tb?c instanceof tb&&(e="QName-equal"):b instanceof rb?c instanceof rb&&(e="hexBinary-equal"):b instanceof Wa&&c instanceof Wa&&(e="base64Binary-equal");if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.ne=function(a,b,c){return new Xa((!ad.eq(a,b,c).valueOf()))},ad.gt=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-greater-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-greater-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-greater-than"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-greater-than"):b instanceof vb?c instanceof vb&&(e="time-greater-than"):b instanceof _a?c instanceof _a&&(e="dateTime-greater-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-greater-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-greater-than"); +if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.lt=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-less-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-less-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-less-than"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-less-than"):b instanceof vb?c instanceof vb&&(e="time-less-than"):b instanceof _a?c instanceof _a&&(e="dateTime-less-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-less-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-less-than");if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.ge=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-less-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-less-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-greater-than"].call(d,Xc.compare.call(d,b,c),new Cb((-1)))}else b instanceof Ya?c instanceof Ya&&(e="date-less-than"):b instanceof vb?c instanceof vb&&(e="time-less-than"):b instanceof _a?c instanceof _a&&(e="dateTime-less-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-less-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-less-than");if(e)return new Xa((!$c[e].call(d,b,c).valueOf()));throw new a("XPTY0004")},ad.le=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-greater-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-greater-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-less-than"].call(d,Xc.compare.call(d,b,c),new Cb(1))}else b instanceof Ya?c instanceof Ya&&(e="date-greater-than"):b instanceof vb?c instanceof vb&&(e="time-greater-than"):b instanceof _a?c instanceof _a&&(e="dateTime-greater-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-greater-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-greater-than");if(e)return new Xa((!$c[e].call(d,b,c).valueOf()));throw new a("XPTY0004")};var bd={};bd.is=function(a,b,c){return $c["is-same-node"].call(c,a,b)},bd[">>"]=function(a,b,c){return $c["node-after"].call(c,a,b)},bd["<<"]=function(a,b,c){return $c["node-before"].call(c,a,b)};var cd={"=":z,"!=":z,"<":z,"<=":z,">":z,">=":z,eq:A,ne:A,lt:A,le:A,gt:A,ge:A,is:B,">>":B,"<<":B};C.prototype.left=null,C.prototype.items=null;var dd={};dd["+"]=function(b,c,d){var e="",f=!1;if(Ua(b)?Ua(c)&&(e="numeric-add"):b instanceof Ya?c instanceof yb?e="add-yearMonthDuration-to-date":c instanceof Ab&&(e="add-dayTimeDuration-to-date"):b instanceof yb?c instanceof Ya?(e="add-yearMonthDuration-to-date",f=!0):c instanceof _a?(e="add-yearMonthDuration-to-dateTime",f=!0):c instanceof yb&&(e="add-yearMonthDurations"):b instanceof Ab?c instanceof Ya?(e="add-dayTimeDuration-to-date",f=!0):c instanceof vb?(e="add-dayTimeDuration-to-time",f=!0):c instanceof _a?(e="add-dayTimeDuration-to-dateTime",f=!0):c instanceof Ab&&(e="add-dayTimeDurations"):b instanceof vb?c instanceof Ab&&(e="add-dayTimeDuration-to-time"):b instanceof _a&&(c instanceof yb?e="add-yearMonthDuration-to-dateTime":c instanceof Ab&&(e="add-dayTimeDuration-to-dateTime")),e)return $c[e].call(d,f?c:b,f?b:c);throw new a("XPTY0004")},dd["-"]=function(b,c,d){var e="";if(Ua(b)?Ua(c)&&(e="numeric-subtract"):b instanceof Ya?c instanceof Ya?e="subtract-dates":c instanceof yb?e="subtract-yearMonthDuration-from-date":c instanceof Ab&&(e="subtract-dayTimeDuration-from-date"):b instanceof vb?c instanceof vb?e="subtract-times":c instanceof Ab&&(e="subtract-dayTimeDuration-from-time"):b instanceof _a?c instanceof _a?e="subtract-dateTimes":c instanceof yb?e="subtract-yearMonthDuration-from-dateTime":c instanceof Ab&&(e="subtract-dayTimeDuration-from-dateTime"):b instanceof yb?c instanceof yb&&(e="subtract-yearMonthDurations"):b instanceof Ab&&c instanceof Ab&&(e="subtract-dayTimeDurations"),e)return $c[e].call(d,b,c);throw new a("XPTY0004")},C.prototype.evaluate=function(a){var b=vc(this.left.evaluate(a),a);if(!b.length)return[];ua(a,b,"?");var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e,f=0,g=this.items.length;f<g;f++){if(d=vc(this.items[f][1].evaluate(a),a),!d.length)return[];ua(a,d,"?"),e=d[0],e instanceof xb&&(e=gb.cast(e)),c=dd[this.items[f][0]](c,e,a)}return[c]},E.prototype.left=null,E.prototype.items=null;var ed={};ed["*"]=function(b,c,d){var e="",f=!1;if(Ua(b)?Ua(c)?e="numeric-multiply":c instanceof yb?(e="multiply-yearMonthDuration",f=!0):c instanceof Ab&&(e="multiply-dayTimeDuration",f=!0):b instanceof yb?Ua(c)&&(e="multiply-yearMonthDuration"):b instanceof Ab&&Ua(c)&&(e="multiply-dayTimeDuration"),e)return $c[e].call(d,f?c:b,f?b:c);throw new a("XPTY0004")},ed.div=function(b,c,d){var e="";if(Ua(b)?Ua(c)&&(e="numeric-divide"):b instanceof yb?Ua(c)?e="divide-yearMonthDuration":c instanceof yb&&(e="divide-yearMonthDuration-by-yearMonthDuration"):b instanceof Ab&&(Ua(c)?e="divide-dayTimeDuration":c instanceof Ab&&(e="divide-dayTimeDuration-by-dayTimeDuration")),e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ed.idiv=function(b,c,d){if(Ua(b)&&Ua(c))return $c["numeric-integer-divide"].call(d,b,c);throw new a("XPTY0004")},ed.mod=function(b,c,d){if(Ua(b)&&Ua(c))return $c["numeric-mod"].call(d,b,c);throw new a("XPTY0004")},E.prototype.evaluate=function(a){var b=vc(this.left.evaluate(a),a);if(!b.length)return[];ua(a,b,"?");var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e,f=0,g=this.items.length;f<g;f++){if(d=vc(this.items[f][1].evaluate(a),a),!d.length)return[];ua(a,d,"?"),e=d[0],e instanceof xb&&(e=gb.cast(e)),c=ed[this.items[f][0]](c,e,a)}return[c]},G.prototype.operator=null,G.prototype.expression=null;var fd={};fd["-"]=function(b,c){if(Ua(b))return $c["numeric-unary-minus"].call(c,b);throw new a("XPTY0004")},fd["+"]=function(b,c){if(Ua(b))return $c["numeric-unary-plus"].call(c,b);throw new a("XPTY0004")},G.prototype.evaluate=function(a){var b=vc(this.expression.evaluate(a),a);if(!b.length)return[];ua(a,b,"?");var c=b[0];return c instanceof xb&&(c=gb.cast(c)),[fd[this.operator](c,a)]},J.prototype.left=null,J.prototype.items=null,J.prototype.evaluate=function(a){for(var b=uc(this.left.evaluate(a),a),c=0,d=this.items.length;c<d&&!b;c++)b=uc(this.items[c].evaluate(a),a);return[new Xa(b)]},L.prototype.left=null,L.prototype.items=null,L.prototype.evaluate=function(a){for(var b=uc(this.left.evaluate(a),a),c=0,d=this.items.length;c<d&&b;c++)b=uc(this.items[c].evaluate(a),a);return[new Xa(b)]},N.prototype.predicates=null,N.prototype.applyPredicates=function(a,b){for(var c,d=b.item,e=b.position,f=b.size,g=0,h=this.predicates.length;g<h;g++){c=a,a=[];for(var i,j=0,k=c.length;j<k;j++)b.item=c[j],b.position=j+1,b.size=k,i=this.predicates[g].evaluate(b),1==i.length&&Ua(i[0])?i[0].valueOf()==j+1&&a.push(c[j]):uc(i,b)&&a.push(c[j])}return b.item=d,b.position=e,b.size=f,a},Q.prototype=new N,Q.prototype.axis=null,Q.prototype.test=null;var gd={};gd.attribute={},gd.child={},gd.descendant={},gd["descendant-or-self"]={},gd.following={},gd["following-sibling"]={},gd.self={},gd.ancestor={},gd["ancestor-or-self"]={},gd.parent={},gd.preceding={},gd["preceding-sibling"]={},Q.prototype.evaluate=function(b){var c=b.item;if(!b.DOMAdapter.isNode(c))throw new a("XPTY0020");var d=[],e=b.DOMAdapter.getProperty,f=e(c,"nodeType");switch(this.axis){case"attribute":if(1==f)for(var g=e(c,"attributes"),h=0,i=g.length;h<i;h++)d.push(g[h]);break;case"child":for(var j=e(c,"firstChild");j;j=e(j,"nextSibling"))d.push(j);break;case"descendant-or-self":d.push(c);case"descendant":S(e(c,"firstChild"),d,e);break;case"following":for(var k,l=c;l;l=e(l,"parentNode"))(k=e(l,"nextSibling"))&&S(k,d,e);break;case"following-sibling":for(var j=c;j=e(j,"nextSibling");)d.push(j);break;case"self":d.push(c);break;case"ancestor-or-self":d.push(c);case"ancestor":for(var j=2==f?e(c,"ownerElement"):c;j=e(j,"parentNode");)d.push(j);break;case"parent":var l=2==f?e(c,"ownerElement"):e(c,"parentNode");l&&d.push(l);break;case"preceding":for(var k,l=c;l;l=e(l,"parentNode"))(k=e(l,"previousSibling"))&&T(k,d,e);break;case"preceding-sibling":for(var j=c;j=e(j,"previousSibling");)d.push(j)}if(d.length&&!(this.test instanceof Y&&"node"==this.test.name)){var m=d;d=[];for(var h=0,i=m.length;h<i;h++)this.test.test(m[h],b)&&d.push(m[h])}switch(d.length&&this.predicates.length&&(d=this.applyPredicates(d,b)),this.axis){case"ancestor":case"ancestor-or-self":case"parent":case"preceding":case"preceding-sibling":d.reverse()}return d},U.prototype.items=null,U.prototype.evaluate=function(b){for(var c,d=b.item,e=[d],f=0,g=this.items.length;f<g;f++){c=[];for(var h=0,i=e.length;h<i;h++){b.item=e[h];for(var j=0,k=this.items[f].evaluate(b),l=k.length;j<l;j++){if(f<g-1&&!b.DOMAdapter.isNode(k[j]))throw new a("XPTY0019");Qc(c,k[j])==-1&&c.push(k[j])}}e=c}return b.item=d,wc(e,b)},Y.prototype=new W,Y.prototype.name=null,Y.prototype.args=null;var hd={};hd["document-node"]={},hd.element={},hd.attribute={},hd["processing-instruction"]={},hd.comment={},hd.text={},hd.node={},hd["schema-element"]={},hd["schema-attribute"]={},Y.prototype.test=function(a,b){var c,d=b.DOMAdapter.getProperty,e=b.DOMAdapter.isNode(a)?d(a,"nodeType"):0;switch(this.name){case"node":return!!e;case"attribute":if(2!=e)return!1;break;case"document-node":return 9==e;case"element":return 1==e;case"processing-instruction":if(7!=e)return!1;break;case"comment":return 8==e;case"text":return 3==e||4==e;case"schema-attribute":throw"KindTest 'schema-attribute' not implemented";case"schema-element":throw"KindTest 'schema-element' not implemented"}return 2==e?"xmlns"!=d(a,"prefix")&&"xmlns"!=d(a,"localName"):7!=e||(c=d(a,"target"),this.args.length?c==this.args[0].value:"xml"!=c)},$.prototype=new W,$.prototype.prefix=null,$.prototype.localName=null,$.prototype.namespaceURI=null;var id=/^(?:(?![0-9-])(\w[\w.-]*|\*)\:)?(?![0-9-])(\w[\w.-]*|\*)$/;$.prototype.test=function(a,b){var c=b.DOMAdapter.getProperty,d=c(a,"nodeType");if(1==d||2==d){if("*"==this.localName)return(1==d||"xmlns"!=c(a,"prefix")&&"xmlns"!=c(a,"localName"))&&(!this.prefix||c(a,"namespaceURI")==this.namespaceURI);if(this.localName==c(a,"localName"))return"*"==this.namespaceURI||2==d&&!this.prefix&&!c(a,"prefix")||c(a,"namespaceURI")==this.namespaceURI}return!1},ba.prototype.evaluate=function(a){return this.expression?this.expression.evaluate(a):[]},da.prototype.evaluate=function(b){if(null==b.item)throw new a("XPDY0002");return[b.item]},fa.prototype.value=null,fa.prototype.evaluate=function(a){return[this.value]},ha.prototype=new fa;var jd=/^[+\-]?(?:(?:(\d+)(?:\.(\d*))?)|(?:\.(\d+)))(?:[eE]([+-])?(\d+))?$/;ka.prototype=new fa;var kd=/^'([^']*(?:''[^']*)*)'|"([^"]*(?:""[^"]*)*)"$/;ma.prototype=new N,ma.prototype.expression=null,ma.prototype.evaluate=function(a){var b=this.expression.evaluate(a);return this.predicates.length&&b.length&&(b=this.applyPredicates(b,a)),b},oa.prototype.prefix=null,oa.prototype.localName=null,oa.prototype.namespaceURI=null,oa.prototype.evaluate=function(b){var c=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName;if(b.scope.hasOwnProperty(c))return[b.scope[c]];throw new a("XPST0008")},qa.prototype.prefix=null,qa.prototype.localName=null,qa.prototype.namespaceURI=null,qa.prototype.args=null,qa.prototype.evaluate=function(b){for(var c,d,e=[],f=0,g=this.args.length;f<g;f++)e.push(this.args[f].evaluate(b));var h=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName;if(this.namespaceURI==Sc){if(d=Xc[this.localName]){(c=Yc[this.localName])&&sa(this.localName,c,d,e,b);var i=d.apply(b,e);return null==i?[]:i instanceof Cc?i:[i]}throw new a("XPST0017")}if(this.namespaceURI==Rc){if((d=Zc[this.localName])&&"NOTATION"!=this.localName&&"anyAtomicType"!=this.localName)return sa(this.localName,[[Ta,"?"]],d,e,b),null===e[0]?[]:[d.cast(e[0])];throw new a("XPST0017")}if(d=b.staticContext.getFunction(h)){var i=d.apply(b,e);return null==i?[]:i instanceof Cc?i:[i]}throw new a("XPST0017")};va.prototype.left=null,va.prototype.items=null,va.prototype.evaluate=function(a){for(var b,c=this.left.evaluate(a),d=0,e=this.items.length;d<e;d++)c=$c[(b=this.items[d])[0]].call(a,c,b[1].evaluate(a));return c},xa.prototype.left=null,xa.prototype.right=null,xa.prototype.evaluate=function(a){var b=this.left.evaluate(a);if(!b.length)return[];ua(a,b,"?"),ta(a,b,Cb);var c=this.right.evaluate(a);return c.length?(ua(a,c,"?"),ta(a,c,Cb),$c.to.call(a,b[0],c[0])):[]},za.prototype.left=null,za.prototype.items=null,za.prototype.evaluate=function(a){for(var b=this.left.evaluate(a),c=0,d=this.items.length;c<d;c++)b=$c.union.call(a,b,this.items[c].evaluate(a));return b},Ba.prototype.expression=null,Ba.prototype.type=null,Ba.prototype.evaluate=function(a){var b=this.expression.evaluate(a),c=this.type.itemType,d=this.type.occurence;if(!c)return[new Xa((!b.length))];if(!b.length)return[new Xa("?"==d||"*"==d)];if(1!=b.length&&"+"!=d&&"*"!=d)return[new Xa((!1))];if(!c.test)return[new Xa((!0))];for(var e=!0,f=0,g=b.length;f<g&&e;f++)e=c.test.test(b[f],a);return[new Xa(e)]},Da.prototype.expression=null,Da.prototype.type=null,Da.prototype.evaluate=function(b){var c=this.expression.evaluate(b),d=this.type.itemType,e=this.type.occurence;if(!d){if(c.length)throw new a("XPDY0050");return c}if("?"!=e&&"*"!=e&&!c.length)throw new a("XPDY0050");if("+"!=e&&"*"!=e&&1!=c.length)throw new a("XPDY0050");if(!d.test)return c;for(var f=0,g=c.length;f<g;f++)if(!d.test.test(c[f],b))throw new a("XPDY0050");return c},Fa.prototype.expression=null,Fa.prototype.type=null,Fa.prototype.evaluate=function(b){var c=this.expression.evaluate(b),d=this.type.itemType,e=this.type.occurence;if(c.length>1)return[new Xa((!1))];if(!c.length)return[new Xa("?"==e)];try{d.cast(vc(c,b)[0])}catch(b){if("XPST0051"==b.code)throw b;if("XPST0017"==b.code)throw new a("XPST0080");return[new Xa((!1))]}return[new Xa((!0))]},Ha.prototype.expression=null,Ha.prototype.type=null,Ha.prototype.evaluate=function(a){var b=this.expression.evaluate(a);return ua(a,b,this.type.occurence),b.length?[this.type.itemType.cast(vc(b,a)[0],a)]:[]},Ja.prototype.prefix=null,Ja.prototype.localName=null,Ja.prototype.namespaceURI=null,Ja.prototype.test=function(b,c){var d=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName,e=this.namespaceURI==Rc?Zc[this.localName]:c.staticContext.getDataType(d);if(e)return b instanceof e;throw new a("XPST0051")},Ja.prototype.cast=function(b,c){var d=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName,e=this.namespaceURI==Rc?Zc[this.localName]:c.staticContext.getDataType(d);if(e)return e.cast(b);throw new a("XPST0051")},La.prototype.test=null,Na.prototype.itemType=null,Na.prototype.occurence=null,Pa.prototype.itemType=null,Pa.prototype.occurence=null,Ra.prototype.builtInKind=j.ANYTYPE_DT,Sa.prototype=new Ra,Sa.prototype.builtInKind=j.ANYSIMPLETYPE_DT,Sa.prototype.primitiveKind=null,Sa.PRIMITIVE_ANYURI="anyURI",Sa.PRIMITIVE_BASE64BINARY="base64Binary",Sa.PRIMITIVE_BOOLEAN="boolean",Sa.PRIMITIVE_DATE="date",Sa.PRIMITIVE_DATETIME="dateTime",Sa.PRIMITIVE_DECIMAL="decimal",Sa.PRIMITIVE_DOUBLE="double",Sa.PRIMITIVE_DURATION="duration",Sa.PRIMITIVE_FLOAT="float",Sa.PRIMITIVE_GDAY="gDay",Sa.PRIMITIVE_GMONTH="gMonth",Sa.PRIMITIVE_GMONTHDAY="gMonthDay",Sa.PRIMITIVE_GYEAR="gYear",Sa.PRIMITIVE_GYEARMONTH="gYearMonth",Sa.PRIMITIVE_HEXBINARY="hexBinary",Sa.PRIMITIVE_NOTATION="NOTATION",Sa.PRIMITIVE_QNAME="QName",Sa.PRIMITIVE_STRING="string",Sa.PRIMITIVE_TIME="time",Ta.prototype=new Sa,Ta.prototype.builtInKind=j.ANYATOMICTYPE_DT,Ta.cast=function(b){throw new a("XPST0017")},g("anyAtomicType",Ta),Va.prototype=new Ta,Va.prototype.builtInKind=j.ANYURI_DT,Va.prototype.primitiveKind=Sa.PRIMITIVE_ANYURI,Va.prototype.scheme=null,Va.prototype.authority=null,Va.prototype.path=null,Va.prototype.query=null,Va.prototype.fragment=null,Va.prototype.toString=function(){return(this.scheme?this.scheme+":":"")+(this.authority?"//"+this.authority:"")+(this.path?this.path:"")+(this.query?"?"+this.query:"")+(this.fragment?"#"+this.fragment:"")};var ld=/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;Va.cast=function(b){if(b instanceof Va)return b;if(b instanceof ub||b instanceof xb){var c;if(c=Pc(b).match(ld))return new Va(c[2],c[4],c[5],c[7],c[9]);throw new a("FORG0001")}throw new a("XPTY0004")},g("anyURI",Va),Wa.prototype=new Ta,Wa.prototype.builtInKind=j.BASE64BINARY_DT,Wa.prototype.primitiveKind=Sa.PRIMITIVE_BASE64BINARY,Wa.prototype.value=null,Wa.prototype.valueOf=function(){return this.value},Wa.prototype.toString=function(){return this.value};var md=/^((([A-Za-z0-9+\/]\s*){4})*(([A-Za-z0-9+\/]\s*){3}[A-Za-z0-9+\/]|([A-Za-z0-9+\/]\s*){2}[AEIMQUYcgkosw048]\s*=|[A-Za-z0-9+\/]\s*[AQgw]\s*=\s*=))?$/;Wa.cast=function(b){if(b instanceof Wa)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(md);if(c)return new Wa(c[0]);throw new a("FORG0001")}if(b instanceof rb){for(var c=b.valueOf().match(/.{2}/g),d=[],e=0,f=c.length;e<f;e++)d.push(Ac.fromCharCode(Oc(c[e],16)));return new Wa(Mc(d.join("")))}throw new a("XPTY0004")},g("base64Binary",Wa),Xa.prototype=new Ta,Xa.prototype.builtInKind=j.BOOLEAN_DT,Xa.prototype.primitiveKind=Sa.PRIMITIVE_BOOLEAN,Xa.prototype.value=null,Xa.prototype.valueOf=function(){return this.value},Xa.prototype.toString=function(){return Ac(this.value)};var nd=/^(0|1|true|false)$/;Xa.cast=function(b){if(b instanceof Xa)return b;if(b instanceof ub||b instanceof xb){var c;if(c=Pc(b).match(nd))return new Xa("1"==c[1]||"true"==c[1]);throw new a("FORG0001")}if(Ua(b))return new Xa(0!=b);throw new a("XPTY0004")},g("boolean",Xa),Ya.prototype=new Ta,Ya.prototype.builtInKind=j.DATE_DT,Ya.prototype.primitiveKind=Sa.PRIMITIVE_DATE,Ya.prototype.year=null,Ya.prototype.month=null,Ya.prototype.day=null,Ya.prototype.timezone=null,Ya.prototype.negative=null,Ya.prototype.toString=function(){return cb(this)+bb(this)};var od=/^(-?)([1-9]\d\d\d+|0\d\d\d)-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;Ya.cast=function(b){if(b instanceof Ya)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(od);if(c){var d=+c[2],e=+c[3],f=+c[4];if(f-1<Za(d,e))return new Ya(d,e,f,c[5]?"Z"==c[5]?0:("-"==c[6]?-1:1)*(60*c[7]+1*c[8]):null,"-"==c[1]);throw new a("FORG0001")}throw new a("FORG0001")}if(b instanceof _a)return new Ya(b.year,b.month,b.day,b.timezone,b.negative);throw new a("XPTY0004")};var pd=[31,28,31,30,31,30,31,31,30,31,30,31];g("date",Ya),_a.prototype=new Ta,_a.prototype.builtInKind=j.DATETIME_DT,_a.prototype.primitiveKind=Sa.PRIMITIVE_DATETIME,_a.prototype.year=null,_a.prototype.month=null,_a.prototype.day=null,_a.prototype.hours=null,_a.prototype.minutes=null,_a.prototype.seconds=null,_a.prototype.timezone=null,_a.prototype.negative=null,_a.prototype.toString=function(){return cb(this)+"T"+db(this)+bb(this)};var qd=/^(-?)([1-9]\d\d\d+|0\d\d\d)-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])T(([01]\d|2[0-3]):([0-5]\d):([0-5]\d)(?:\.(\d+))?|(24:00:00)(?:\.(0+))?)(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;_a.cast=function(b){if(b instanceof _a)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(qd);if(c){var d=+c[2],e=+c[3],f=+c[4],g=!!c[10];if(f-1<Za(d,e))return eb(new _a(d,e,f,g?24:+c[6],g?0:+c[7],Bc((g?0:c[8])+"."+(g?0:c[9]||0)),c[12]?"Z"==c[12]?0:("-"==c[13]?-1:1)*(60*c[14]+1*c[15]):null,"-"==c[1]));throw new a("FORG0001")}throw new a("FORG0001")}if(b instanceof Ya)return new _a(b.year,b.month,b.day,0,0,0,b.timezone,b.negative);throw new a("XPTY0004")},g("dateTime",_a),fb.prototype=new Ta,fb.prototype.builtInKind=j.DECIMAL_DT,fb.prototype.primitiveKind=Sa.PRIMITIVE_DECIMAL,fb.prototype.value=null,fb.prototype.valueOf=function(){return this.value},fb.prototype.toString=function(){return Ac(this.value)};var rd=/^[+\-]?((\d+(\.\d*)?)|(\.\d+))$/;fb.cast=function(b){if(b instanceof fb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(rd);if(c)return new fb((+b));throw new a("FORG0001")}if(b instanceof Xa)return new fb(1*b);if(Ua(b)){if(!Ic(b)&&Jc(b))return new fb((+b));throw new a("FOCA0002")}throw new a("XPTY0004")},g("decimal",fb),gb.prototype=new Ta,gb.prototype.builtInKind=j.DOUBLE_DT,gb.prototype.primitiveKind=Sa.PRIMITIVE_DOUBLE,gb.prototype.value=null,gb.prototype.valueOf=function(){return this.value},gb.prototype.toString=function(){return Ac(this.value)};var sd=/^([+\-]?((\d+(\.\d*)?)|(\.\d+))([eE][+\-]?\d+)?|(-?INF)|NaN)$/;gb.cast=function(b){if(b instanceof gb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(sd);if(c)return new gb(c[7]?+c[7].replace("INF","Infinity"):+b);throw new a("FORG0001")}if(b instanceof Xa)return new gb(1*b);if(Ua(b))return new gb(b.value);throw new a("XPTY0004")},g("double",gb),hb.prototype=new Ta,hb.prototype.builtInKind=j.DURATION_DT,hb.prototype.primitiveKind=Sa.PRIMITIVE_DURATION,hb.prototype.year=null,hb.prototype.month=null,hb.prototype.day=null,hb.prototype.hours=null,hb.prototype.minutes=null,hb.prototype.seconds=null,hb.prototype.negative=null,hb.prototype.toString=function(){return(this.negative?"-":"")+"P"+(ib(this)+jb(this)||"T0S")};var td=/^(-)?P(?:([0-9]+)Y)?(?:([0-9]+)M)?(?:([0-9]+)D)?(?:T(?:([0-9]+)H)?(?:([0-9]+)M)?(?:((?:(?:[0-9]+(?:.[0-9]*)?)|(?:.[0-9]+)))S)?)?$/;hb.cast=function(b){if(b instanceof hb)return b;if(b instanceof yb)return new hb(b.year,b.month,0,0,0,0,b.negative);if(b instanceof Ab)return new hb(0,0,b.day,b.hours,b.minutes,b.seconds,b.negative);if(b instanceof ub||b instanceof xb){var c=Pc(b).match(td);if(c)return kb(new hb(+c[2]||0,+c[3]||0,+c[4]||0,+c[5]||0,+c[6]||0,+c[7]||0,"-"==c[1]));throw new a("FORG0001")}throw new a("XPTY0004")},g("duration",hb),lb.prototype=new Ta,lb.prototype.builtInKind=j.FLOAT_DT,lb.prototype.primitiveKind=Sa.PRIMITIVE_FLOAT,lb.prototype.value=null,lb.prototype.valueOf=function(){return this.value},lb.prototype.toString=function(){return Ac(this.value)};var ud=/^([+\-]?((\d+(\.\d*)?)|(\.\d+))([eE][+\-]?\d+)?|(-?INF)|NaN)$/;lb.cast=function(b){if(b instanceof lb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(ud);if(c)return new lb(c[7]?+c[7].replace("INF","Infinity"):+b);throw new a("FORG0001")}if(b instanceof Xa)return new lb(1*b);if(Ua(b))return new lb(b.value);throw new a("XPTY0004")},g("float",lb),mb.prototype=new Ta,mb.prototype.builtInKind=j.GDAY_DT,mb.prototype.primitiveKind=Sa.PRIMITIVE_GDAY,mb.prototype.day=null,mb.prototype.timezone=null,mb.prototype.toString=function(){return"---"+ab(this.day)+bb(this)};var vd=/^---(0[1-9]|[12]\d|3[01])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;mb.cast=function(b){if(b instanceof mb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(vd);if(c){var d=+c[1];return new mb(d,c[2]?"Z"==c[2]?0:("-"==c[3]?-1:1)*(60*c[4]+1*c[5]):null)}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new mb(b.day,b.timezone);throw new a("XPTY0004")},g("gDay",mb),nb.prototype=new Ta,nb.prototype.builtInKind=j.GMONTH_DT,nb.prototype.primitiveKind=Sa.PRIMITIVE_GMONTH,nb.prototype.month=null,nb.prototype.timezone=null,nb.prototype.toString=function(){return"--"+ab(this.month)+bb(this)};var wd=/^--(0[1-9]|1[0-2])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;nb.cast=function(b){if(b instanceof nb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(wd);if(c){var d=+c[1];return new nb(d,c[2]?"Z"==c[2]?0:("-"==c[3]?-1:1)*(60*c[4]+1*c[5]):null)}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new nb(b.month,b.timezone);throw new a("XPTY0004")},g("gMonth",nb),ob.prototype=new Ta,ob.prototype.builtInKind=j.GMONTHDAY_DT,ob.prototype.primitiveKind=Sa.PRIMITIVE_GMONTHDAY,ob.prototype.month=null,ob.prototype.day=null,ob.prototype.timezone=null,ob.prototype.toString=function(){return"--"+ab(this.month)+"-"+ab(this.day)+bb(this)};var xd=/^--(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;ob.cast=function(b){if(b instanceof ob)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(xd);if(c){var d=+c[1],e=+c[2];if(e-1<Za(1976,d))return new ob(d,e,c[3]?"Z"==c[3]?0:("-"==c[4]?-1:1)*(60*c[5]+1*c[6]):null);throw new a("FORG0001")}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new ob(b.month,b.day,b.timezone);throw new a("XPTY0004")},g("gMonthDay",ob),pb.prototype=new Ta,pb.prototype.builtInKind=j.GYEAR_DT,pb.prototype.primitiveKind=Sa.PRIMITIVE_GYEAR,pb.prototype.year=null,pb.prototype.timezone=null,pb.prototype.toString=function(){return ab(this.year)+bb(this)};var yd=/^-?([1-9]\d\d\d+|0\d\d\d)(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;pb.cast=function(b){if(b instanceof pb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(yd);if(c){var d=+c[1];return new pb(d,c[2]?"Z"==c[2]?0:("-"==c[3]?-1:1)*(60*c[4]+1*c[5]):null)}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new pb(b.year,b.timezone);throw new a("XPTY0004")},g("gYear",pb),qb.prototype=new Ta,qb.prototype.builtInKind=j.GYEARMONTH_DT,qb.prototype.primitiveKind=Sa.PRIMITIVE_GYEARMONTH,qb.prototype.year=null,qb.prototype.month=null,qb.prototype.timezone=null,qb.prototype.toString=function(){return ab(this.year)+"-"+ab(this.month)+bb(this)};var zd=/^-?([1-9]\d\d\d+|0\d\d\d)-(0[1-9]|1[0-2])(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;qb.cast=function(b){if(b instanceof qb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(zd);if(c){var d=+c[1],e=+c[2];return new qb(d,e,c[3]?"Z"==c[3]?0:("-"==c[4]?-1:1)*(60*c[5]+1*c[6]):null)}throw new a("FORG0001")}if(b instanceof Ya||b instanceof _a)return new qb(b.year,b.month,b.timezone);throw new a("XPTY0004")},g("gYearMonth",qb),rb.prototype=new Ta,rb.prototype.builtInKind=j.HEXBINARY_DT,rb.prototype.primitiveKind=Sa.PRIMITIVE_HEXBINARY,rb.prototype.value=null,rb.prototype.valueOf=function(){return this.value},rb.prototype.toString=function(){return this.value};var Ad=/^([0-9a-fA-F]{2})*$/;rb.cast=function(b){if(b instanceof rb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Ad);if(c)return new rb(c[0].toUpperCase());throw new a("FORG0001")}if(b instanceof Wa){for(var d,e=Nc(b.valueOf()),f=[],g=0,h=e.length;g<h;g++)d=e.charCodeAt(g).toString(16),f.push(new Cc(3-d.length).join("0")+d);return new rb(f.join(""))}throw new a("XPTY0004")},g("hexBinary",rb),sb.prototype=new Ta,sb.prototype.builtInKind=j.NOTATION_DT,sb.prototype.primitiveKind=Sa.PRIMITIVE_NOTATION,sb.cast=function(b){throw new a("XPST0017")},g("NOTATION",sb),tb.prototype=new Ta,tb.prototype.builtInKind=j.QNAME_DT,tb.prototype.primitiveKind=Sa.PRIMITIVE_QNAME,tb.prototype.prefix=null,tb.prototype.localName=null,tb.prototype.namespaceURI=null,tb.prototype.toString=function(){return(this.prefix?this.prefix+":":"")+this.localName};var Bd=/^(?:(?![0-9-])(\w[\w.-]*)\:)?(?![0-9-])(\w[\w.-]*)$/;tb.cast=function(b){if(b instanceof tb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Bd);if(c)return new tb(c[1]||null,c[2],null);throw new a("FORG0001")}throw new a("XPTY0004")},g("QName",tb),ub.prototype=new Ta,ub.prototype.value=null,ub.prototype.builtInKind=j.STRING_DT,ub.prototype.primitiveKind=Sa.PRIMITIVE_STRING,ub.prototype.valueOf=function(){return this.value},ub.prototype.toString=function(){return this.value},ub.cast=function(a){return new ub(Ac(a))},g("string",ub),vb.prototype=new Ta,vb.prototype.builtInKind=j.TIME_DT,vb.prototype.primitiveKind=Sa.PRIMITIVE_TIME,vb.prototype.hours=null,vb.prototype.minutes=null,vb.prototype.seconds=null,vb.prototype.timezone=null,vb.prototype.toString=function(){return db(this)+bb(this)};var Cd=/^(([01]\d|2[0-3]):([0-5]\d):([0-5]\d)(?:\.(\d+))?|(24:00:00)(?:\.(0+))?)(Z|([+\-])(0\d|1[0-4]):([0-5]\d))?$/;vb.cast=function(b){if(b instanceof vb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Cd);if(c){var d=!!c[6];return new vb(d?0:+c[2],d?0:+c[3],Bc((d?0:c[4])+"."+(d?0:c[5]||0)),c[8]?"Z"==c[8]?0:("-"==c[9]?-1:1)*(60*c[10]+1*c[11]):null)}throw new a("FORG0001")}if(b instanceof _a)return new vb(b.hours,b.minutes,b.seconds,b.timezone);throw new a("XPTY0004")},g("time",vb),xb.prototype=new Ta,xb.prototype.builtInKind=j.XT_UNTYPEDATOMIC_DT,xb.prototype.toString=function(){return Ac(this.value)},xb.cast=function(a){return a instanceof xb?a:new xb(Ac(a))},g("untypedAtomic",xb),yb.prototype=new hb,yb.prototype.builtInKind=j.XT_YEARMONTHDURATION_DT,yb.prototype.toString=function(){return(this.negative?"-":"")+"P"+(ib(this)||"0M")};var Dd=/^(-)?P(?:([0-9]+)Y)?(?:([0-9]+)M)?$/;yb.cast=function(b){if(b instanceof yb)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Dd);if(c)return zb(new yb(+c[2]||0,+c[3]||0,"-"==c[1]));throw new a("FORG0001")}if(b instanceof Ab)return new yb(0,0);if(b instanceof hb)return new yb(b.year,b.month,b.negative);throw new a("XPTY0004")},g("yearMonthDuration",yb),Ab.prototype=new hb,Ab.prototype.builtInKind=j.DAYTIMEDURATION_DT,Ab.prototype.toString=function(){return(this.negative?"-":"")+"P"+(jb(this)||"T0S")};var Ed=/^(-)?P(?:([0-9]+)D)?(?:T(?:([0-9]+)H)?(?:([0-9]+)M)?(?:((?:(?:[0-9]+(?:.[0-9]*)?)|(?:.[0-9]+)))S)?)?$/;Ab.cast=function(b){if(b instanceof Ab)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Ed);if(c)return Bb(new Ab(+c[2]||0,+c[3]||0,+c[4]||0,+c[5]||0,"-"==c[1]));throw new a("FORG0001")}if(b instanceof yb)return new Ab(0,0,0,0);if(b instanceof hb)return new Ab(b.day,b.hours,b.minutes,b.seconds,b.negative);throw new a("XPTY0004")},g("dayTimeDuration",Ab),Cb.prototype=new fb,Cb.prototype.builtInKind=j.INTEGER_DT;var Fd=/^[-+]?[0-9]+$/;Cb.cast=function(b){if(b instanceof Cb)return new Cb(b.value);if(b instanceof ub||b instanceof xb){var c=Pc(b).match(Fd);if(c)return new Cb((+b));throw new a("FORG0001")}if(b instanceof Xa)return new Cb(1*b);if(Ua(b)){if(!Ic(b)&&Jc(b))return new Cb((+b));throw new a("FOCA0002")}throw new a("XPTY0004")},g("integer",Cb),Db.prototype=new Cb,Db.prototype.builtInKind=j.NONPOSITIVEINTEGER_DT,Db.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=0)return new Db(c.value);throw new a("FORG0001")},g("nonPositiveInteger",Db),Eb.prototype=new Db,Eb.prototype.builtInKind=j.NEGATIVEINTEGER_DT,Eb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=-1)return new Eb(c.value);throw new a("FORG0001")},g("negativeInteger",Eb),Fb.prototype=new Cb,Fb.prototype.builtInKind=j.LONG_DT,Fb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=0x8000000000000000&&c.value>=-0x8000000000000000)return new Fb(c.value);throw new a("FORG0001")},g("long",Fb),Gb.prototype=new Fb,Gb.prototype.builtInKind=j.INT_DT,Gb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=2147483647&&c.value>=-2147483648)return new Gb(c.value);throw new a("FORG0001")},g("int",Gb),Hb.prototype=new Gb,Hb.prototype.builtInKind=j.SHORT_DT,Hb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=32767&&c.value>=-32768)return new Hb(c.value);throw new a("FORG0001")},g("short",Hb),Ib.prototype=new Hb,Ib.prototype.builtInKind=j.BYTE_DT,Ib.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=127&&c.value>=-128)return new Ib(c.value);throw new a("FORG0001")},g("byte",Ib),Jb.prototype=new Cb,Jb.prototype.builtInKind=j.NONNEGATIVEINTEGER_DT,Jb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=0)return new Jb(c.value);throw new a("FORG0001")},g("nonNegativeInteger",Jb),Kb.prototype=new Jb,Kb.prototype.builtInKind=j.POSITIVEINTEGER_DT,Kb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1)return new Kb(c.value);throw new a("FORG0001")},g("positiveInteger",Kb),Lb.prototype=new Jb,Lb.prototype.builtInKind=j.UNSIGNEDLONG_DT,Lb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=0x10000000000000000)return new Lb(c.value);throw new a("FORG0001")},g("unsignedLong",Lb),Mb.prototype=new Jb,Mb.prototype.builtInKind=j.UNSIGNEDINT_DT,Mb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=4294967295)return new Mb(c.value);throw new a("FORG0001")},g("unsignedInt",Mb),Nb.prototype=new Mb,Nb.prototype.builtInKind=j.UNSIGNEDSHORT_DT,Nb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=65535)return new Nb(c.value);throw new a("FORG0001")},g("unsignedShort",Nb),Ob.prototype=new Nb,Ob.prototype.builtInKind=j.UNSIGNEDBYTE_DT, +Ob.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=255)return new Ob(c.value);throw new a("FORG0001")},g("unsignedByte",Ob),Pb.prototype=new ub,Pb.prototype.builtInKind=j.NORMALIZEDSTRING_DT,Pb.cast=function(a){return new Pb(Ac(a))},g("normalizedString",Pb),Qb.prototype=new Pb,Qb.prototype.builtInKind=j.TOKEN_DT,Qb.cast=function(a){return new Qb(Ac(a))},g("token",Qb),Rb.prototype=new Qb,Rb.prototype.builtInKind=j.NAME_DT,Rb.cast=function(a){return new Rb(Ac(a))},g("Name",Rb),Sb.prototype=new Rb,Sb.prototype.builtInKind=j.NCNAME_DT,Sb.cast=function(a){return new Sb(Ac(a))},g("NCName",Sb),Tb.prototype=new Sb,Tb.prototype.builtInKind=j.ENTITY_DT,Tb.cast=function(a){return new Tb(Ac(a))},g("ENTITY",Tb),Ub.prototype=new Sb,Ub.prototype.builtInKind=j.ID_DT,Ub.cast=function(a){return new Ub(Ac(a))},g("ID",Ub),Vb.prototype=new Sb,Vb.prototype.builtInKind=j.IDREF_DT,Vb.cast=function(a){return new Vb(Ac(a))},g("IDREF",Vb),Wb.prototype=new Qb,Wb.prototype.builtInKind=j.LANGUAGE_DT,Wb.cast=function(a){return new Wb(Ac(a))},g("language",Wb),Xb.prototype=new Qb,Xb.prototype.builtInKind=j.NMTOKEN_DT,Xb.cast=function(a){return new Xb(Ac(a))},g("NMTOKEN",Xb),Zb.prototype=new Yb,$b.prototype=new Zb,_b.prototype=new Zb,ac.prototype=new Zb,bc.prototype=new Zb,cc.prototype=new Zb,dc.prototype=new Zb,$c["hexBinary-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["base64Binary-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["boolean-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["boolean-less-than"]=function(a,b){return new Xa(a.valueOf()<b.valueOf())},$c["boolean-greater-than"]=function(a,b){return new Xa(a.valueOf()>b.valueOf())},$c["yearMonthDuration-less-than"]=function(a,b){return new Xa(lc(a)<lc(b))},$c["yearMonthDuration-greater-than"]=function(a,b){return new Xa(lc(a)>lc(b))},$c["dayTimeDuration-less-than"]=function(a,b){return new Xa(jc(a)<jc(b))},$c["dayTimeDuration-greater-than"]=function(a,b){return new Xa(jc(a)>jc(b))},$c["duration-equal"]=function(a,b){return new Xa(a.negative==b.negative&&lc(a)==lc(b)&&jc(a)==jc(b))},$c["dateTime-equal"]=function(a,b){return gc(a,b,"eq")},$c["dateTime-less-than"]=function(a,b){return gc(a,b,"lt")},$c["dateTime-greater-than"]=function(a,b){return gc(a,b,"gt")},$c["date-equal"]=function(a,b){return fc(a,b,"eq")},$c["date-less-than"]=function(a,b){return fc(a,b,"lt")},$c["date-greater-than"]=function(a,b){return fc(a,b,"gt")},$c["time-equal"]=function(a,b){return ec(a,b,"eq")},$c["time-less-than"]=function(a,b){return ec(a,b,"lt")},$c["time-greater-than"]=function(a,b){return ec(a,b,"gt")},$c["gYearMonth-equal"]=function(a,b){return gc(new _a(a.year,a.month,Za(a.year,a.month),0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(b.year,b.month,Za(b.year,b.month),0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gYear-equal"]=function(a,b){return gc(new _a(a.year,1,1,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(b.year,1,1,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gMonthDay-equal"]=function(a,b){return gc(new _a(1972,a.month,a.day,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,b.month,b.day,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gMonth-equal"]=function(a,b){return gc(new _a(1972,a.month,Za(1972,b.month),0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,b.month,Za(1972,b.month),0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gDay-equal"]=function(a,b){return gc(new _a(1972,12,a.day,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,12,b.day,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["add-yearMonthDurations"]=function(a,b){return mc(lc(a)+lc(b))},$c["subtract-yearMonthDurations"]=function(a,b){return mc(lc(a)-lc(b))},$c["multiply-yearMonthDuration"]=function(a,b){return mc(lc(a)*b)},$c["divide-yearMonthDuration"]=function(a,b){return mc(lc(a)/b)},$c["divide-yearMonthDuration-by-yearMonthDuration"]=function(a,b){return new fb(lc(a)/lc(b))},$c["add-dayTimeDurations"]=function(a,b){return kc(jc(a)+jc(b))},$c["subtract-dayTimeDurations"]=function(a,b){return kc(jc(a)-jc(b))},$c["multiply-dayTimeDuration"]=function(a,b){return kc(jc(a)*b)},$c["divide-dayTimeDuration"]=function(a,b){return kc(jc(a)/b)},$c["divide-dayTimeDuration-by-dayTimeDuration"]=function(a,b){return new fb(jc(a)/jc(b))},$c["subtract-dateTimes"]=function(a,b){return kc(oc(a)-oc(b))},$c["subtract-dates"]=function(a,b){return kc(oc(a)-oc(b))},$c["subtract-times"]=function(a,b){return kc(nc(a)-nc(b))},$c["add-yearMonthDuration-to-dateTime"]=function(a,b){return hc(a,b,"+")},$c["add-dayTimeDuration-to-dateTime"]=function(a,b){return ic(a,b,"+")},$c["subtract-yearMonthDuration-from-dateTime"]=function(a,b){return hc(a,b,"-")},$c["subtract-dayTimeDuration-from-dateTime"]=function(a,b){return ic(a,b,"-")},$c["add-yearMonthDuration-to-date"]=function(a,b){return hc(a,b,"+")},$c["add-dayTimeDuration-to-date"]=function(a,b){return ic(a,b,"+")},$c["subtract-yearMonthDuration-from-date"]=function(a,b){return hc(a,b,"-")},$c["subtract-dayTimeDuration-from-date"]=function(a,b){return ic(a,b,"-")},$c["add-dayTimeDuration-to-time"]=function(a,b){var c=new vb(a.hours,a.minutes,a.seconds,a.timezone);return c.hours+=b.hours,c.minutes+=b.minutes,c.seconds+=b.seconds,wb(c)},$c["subtract-dayTimeDuration-from-time"]=function(a,b){var c=new vb(a.hours,a.minutes,a.seconds,a.timezone);return c.hours-=b.hours,c.minutes-=b.minutes,c.seconds-=b.seconds,wb(c)},$c["is-same-node"]=function(a,b){return new Xa(this.DOMAdapter.isSameNode(a,b))},$c["node-before"]=function(a,b){return new Xa((!!(4&this.DOMAdapter.compareDocumentPosition(a,b))))},$c["node-after"]=function(a,b){return new Xa((!!(2&this.DOMAdapter.compareDocumentPosition(a,b))))},$c["numeric-add"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,(c*e+d*e)/e)},$c["numeric-subtract"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,(c*e-d*e)/e)},$c["numeric-multiply"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,c*e*(d*e)/(e*e))},$c["numeric-divide"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,a*e/(b*e))},$c["numeric-integer-divide"]=function(a,b){var c=a/b;return new Cb(Gc.floor(c)+(c<0))},$c["numeric-mod"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,c*e%(d*e)/e)},$c["numeric-unary-plus"]=function(a){return a},$c["numeric-unary-minus"]=function(a){return a.value*=-1,a},$c["numeric-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["numeric-less-than"]=function(a,b){return new Xa(a.valueOf()<b.valueOf())},$c["numeric-greater-than"]=function(a,b){return new Xa(a.valueOf()>b.valueOf())},$c["QName-equal"]=function(a,b){return new Xa(a.localName==b.localName&&a.namespaceURI==b.namespaceURI)},$c.concatenate=function(a,b){return a.concat(b)},$c.union=function(b,c){for(var d,e=[],f=0,g=b.length;f<g;f++){if(!this.DOMAdapter.isNode(d=b[f]))throw new a("XPTY0004");Qc(e,d)==-1&&e.push(d)}for(var d,f=0,g=c.length;f<g;f++){if(!this.DOMAdapter.isNode(d=c[f]))throw new a("XPTY0004");Qc(e,d)==-1&&e.push(d)}return wc(e,this)},$c.intersect=function(b,c){for(var d,e,f=[],g=0,h=b.length;g<h;g++){if(!this.DOMAdapter.isNode(d=b[g]))throw new a("XPTY0004");e=!1;for(var i=0,j=c.length;i<j&&!e;i++){if(!this.DOMAdapter.isNode(c[i]))throw new a("XPTY0004");e=this.DOMAdapter.isSameNode(c[i],d)}e&&Qc(f,d)==-1&&f.push(d)}return wc(f,this)},$c.except=function(b,c){for(var d,e,f=[],g=0,h=b.length;g<h;g++){if(!this.DOMAdapter.isNode(d=b[g]))throw new a("XPTY0004");e=!1;for(var i=0,j=c.length;i<j&&!e;i++){if(!this.DOMAdapter.isNode(c[i]))throw new a("XPTY0004");e=this.DOMAdapter.isSameNode(c[i],d)}e||Qc(f,d)!=-1||f.push(d)}return wc(f,this)},$c.to=function(a,b){for(var c=[],d=a.valueOf(),e=b.valueOf();d<=e;d++)c.push(new Cb(d));return c},f("node-name",[[Zb,"?"]],function(a){if(null!=a){var b=this.DOMAdapter.getProperty;switch(b(a,"nodeType")){case 1:case 2:return new tb(b(a,"prefix"),b(a,"localName"),b(a,"namespaceURI"));case 5:throw"Not implemented";case 6:throw"Not implemented";case 7:return new tb(null,b(a,"target"),null);case 10:return new tb(null,b(a,"name"),null)}}return null}),f("nilled",[[Zb,"?"]],function(a){return null!=a&&1==this.DOMAdapter.getProperty(a,"nodeType")?new Xa((!1)):null}),f("string",[[Yb,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=this.item}return null==b?new ub(""):ub.cast(vc([b],this)[0])}),f("data",[[Yb,"*"]],function(a){return vc(a,this)}),f("base-uri",[[Zb,"?",!0]],function(b){if(!arguments.length){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return Va.cast(new ub(this.DOMAdapter.getProperty(b,"baseURI")||""))}),f("document-uri",[[Zb,"?"]],function(a){if(null!=a){var b=this.DOMAdapter.getProperty;if(9==b(a,"nodeType"))return Va.cast(new ub(b(a,"documentURI")||""))}return null}),f("resolve-uri",[[ub,"?"],[ub,"",!0]],function(b,c){if(arguments.length<2){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");c=new ub(this.DOMAdapter.getProperty(this.item,"baseURI")||"")}if(null==b)return null;if(""==b.valueOf()||"#"==b.valueOf().charAt(0))return Va.cast(c);var d=Va.cast(b);if(d.scheme)return d;var e=Va.cast(c);if(d.scheme=e.scheme,!d.authority&&(d.authority=e.authority,"/"!=d.path.charAt(0))){var f=d.path.split("/"),g=e.path.split("/");g.pop();for(var h=""==g[0]?1:0,i=0,j=f.length;i<j;i++)".."==f[i]?g.length>h?g.pop():(g.push(f[i]),h++):"."!=f[i]&&g.push(f[i]);".."!=f[--i]&&"."!=f[i]||g.push(""),d.path=g.join("/")}return d}),f("true",[],function(){return new Xa((!0))}),f("false",[],function(){return new Xa((!1))}),f("not",[[Yb,"*"]],function(a){return new Xa((!uc(a,this)))}),f("position",[],function(){return new Cb(this.position)}),f("last",[],function(){return new Cb(this.size)}),f("current-dateTime",[],function(){return this.dateTime}),f("current-date",[],function(){return Ya.cast(this.dateTime)}),f("current-time",[],function(){return vb.cast(this.dateTime)}),f("implicit-timezone",[],function(){return this.timezone}),f("default-collation",[],function(){return new ub(this.staticContext.defaultCollationName)}),f("static-base-uri",[],function(){return Va.cast(new ub(this.staticContext.baseURI||""))}),f("years-from-duration",[[hb,"?"]],function(a){return rc(a,"year")}),f("months-from-duration",[[hb,"?"]],function(a){return rc(a,"month")}),f("days-from-duration",[[hb,"?"]],function(a){return rc(a,"day")}),f("hours-from-duration",[[hb,"?"]],function(a){return rc(a,"hours")}),f("minutes-from-duration",[[hb,"?"]],function(a){return rc(a,"minutes")}),f("seconds-from-duration",[[hb,"?"]],function(a){return rc(a,"seconds")}),f("year-from-dateTime",[[_a,"?"]],function(a){return sc(a,"year")}),f("month-from-dateTime",[[_a,"?"]],function(a){return sc(a,"month")}),f("day-from-dateTime",[[_a,"?"]],function(a){return sc(a,"day")}),f("hours-from-dateTime",[[_a,"?"]],function(a){return sc(a,"hours")}),f("minutes-from-dateTime",[[_a,"?"]],function(a){return sc(a,"minutes")}),f("seconds-from-dateTime",[[_a,"?"]],function(a){return sc(a,"seconds")}),f("timezone-from-dateTime",[[_a,"?"]],function(a){return sc(a,"timezone")}),f("year-from-date",[[Ya,"?"]],function(a){return sc(a,"year")}),f("month-from-date",[[Ya,"?"]],function(a){return sc(a,"month")}),f("day-from-date",[[Ya,"?"]],function(a){return sc(a,"day")}),f("timezone-from-date",[[Ya,"?"]],function(a){return sc(a,"timezone")}),f("hours-from-time",[[vb,"?"]],function(a){return sc(a,"hours")}),f("minutes-from-time",[[vb,"?"]],function(a){return sc(a,"minutes")}),f("seconds-from-time",[[vb,"?"]],function(a){return sc(a,"seconds")}),f("timezone-from-time",[[vb,"?"]],function(a){return sc(a,"timezone")}),f("adjust-dateTime-to-timezone",[[_a,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)}),f("adjust-date-to-timezone",[[Ya,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)}),f("adjust-time-to-timezone",[[vb,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)}),f("name",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return new ub("")}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}var c=Xc["node-name"].call(this,b);return new ub(null==c?"":c.toString())}),f("local-name",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return new ub("")}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return new ub(this.DOMAdapter.getProperty(b,"localName")||"")}),f("namespace-uri",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return Va.cast(new ub(""))}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return Va.cast(new ub(this.DOMAdapter.getProperty(b,"namespaceURI")||""))}),f("number",[[Ta,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=vc([this.item],this)[0]}var c=new gb(Kc);if(null!=b)try{c=gb.cast(b)}catch(a){}return c}),f("lang",[[ub,"?"],[Zb,"",!0]],function(b,c){if(arguments.length<2){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");c=this.item}var d=this.DOMAdapter.getProperty;2==d(c,"nodeType")&&(c=d(c,"ownerElement"));for(var e;c;c=d(c,"parentNode"))if(e=d(c,"attributes"))for(var f=0,g=e.length;f<g;f++)if("xml:lang"==d(e[f],"nodeName"))return new Xa(d(e[f],"value").replace(/-.+/,"").toLowerCase()==b.valueOf().replace(/-.+/,"").toLowerCase());return new Xa((!1))}),f("root",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return null}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}var c=this.DOMAdapter.getProperty;2==c(b,"nodeType")&&(b=c(b,"ownerElement"));for(var d=b;d;d=c(b,"parentNode"))b=d;return b}),f("abs",[[gb,"?"]],function(a){return new fb(Gc.abs(a))}),f("ceiling",[[gb,"?"]],function(a){return new fb(Gc.ceil(a))}),f("floor",[[gb,"?"]],function(a){return new fb(Gc.floor(a))}),f("round",[[gb,"?"]],function(a){return new fb(Gc.round(a))}),f("round-half-to-even",[[gb,"?"],[Cb,"",!0]],function(a,b){var c=arguments.length>1?b.valueOf():0;if(c<0){var d=new Cb(Gc.pow(10,-c)),e=Gc.round($c["numeric-divide"].call(this,a,d)),f=new Cb(e);return nDecimal=Gc.abs($c["numeric-subtract"].call(this,f,$c["numeric-divide"].call(this,a,d))),$c["numeric-multiply"].call(this,$c["numeric-add"].call(this,f,new fb(.5==nDecimal&&e%2?-1:0)),d)}var d=new Cb(Gc.pow(10,c)),e=Gc.round($c["numeric-multiply"].call(this,a,d)),f=new Cb(e);return nDecimal=Gc.abs($c["numeric-subtract"].call(this,f,$c["numeric-multiply"].call(this,a,d))),$c["numeric-divide"].call(this,$c["numeric-add"].call(this,f,new fb(.5==nDecimal&&e%2?-1:0)),d)}),f("resolve-QName",[[ub,"?"],[bc]],function(b,c){if(null==b)return null;var d=b.valueOf(),e=d.match(Bd);if(!e)throw new a("FOCA0002");var f=e[1]||null,g=e[2],h=this.DOMAdapter.lookupNamespaceURI(c,f);if(null!=f&&!h)throw new a("FONS0004");return new tb(f,g,h||null)}),f("QName",[[ub,"?"],[ub]],function(b,c){var d=c.valueOf(),e=d.match(Bd);if(!e)throw new a("FOCA0002");return new tb(e[1]||null,e[2]||null,null==b?"":b.valueOf())}),f("prefix-from-QName",[[tb,"?"]],function(a){return null!=a&&a.prefix?new Sb(a.prefix):null}),f("local-name-from-QName",[[tb,"?"]],function(a){return null==a?null:new Sb(a.localName)}),f("namespace-uri-from-QName",[[tb,"?"]],function(a){return null==a?null:Va.cast(new ub(a.namespaceURI||""))}),f("namespace-uri-for-prefix",[[ub,"?"],[bc]],function(a,b){var c=null==a?"":a.valueOf(),d=this.DOMAdapter.lookupNamespaceURI(b,c||null);return null==d?null:Va.cast(new ub(d))}),f("in-scope-prefixes",[[bc]],function(a){throw"Function 'in-scope-prefixes' not implemented"}),f("boolean",[[Yb,"*"]],function(a){return new Xa(uc(a,this))}),f("index-of",[[Ta,"*"],[Ta],[ub,"",!0]],function(a,b,c){if(!a.length||null==b)return[];var d=b;d instanceof xb&&(d=ub.cast(d));for(var e,f=[],g=0,h=a.length;g<h;g++)e=a[g],e instanceof xb&&(e=ub.cast(e)),e.valueOf()===d.valueOf()&&f.push(new Cb(g+1));return f}),f("empty",[[Yb,"*"]],function(a){return new Xa((!a.length))}),f("exists",[[Yb,"*"]],function(a){return new Xa((!!a.length))}),f("distinct-values",[[Ta,"*"],[ub,"",!0]],function(a,b){if(arguments.length>1)throw"Collation parameter in function 'distinct-values' is not implemented";if(!a.length)return null;for(var c,d=[],e=0,f=a.length;e<f;e++){c=a[e],c instanceof xb&&(c=ub.cast(c));for(var g,h=0,i=d.length,j=!1;h<i&&!j;h++)g=d[h],g instanceof xb&&(g=ub.cast(g)),g.valueOf()===c.valueOf()&&(j=!0);j||d.push(a[e])}return d}),f("insert-before",[[Yb,"*"],[Cb],[Yb,"*"]],function(a,b,c){if(!a.length)return c;if(!c.length)return a;var d=a.length,e=b.valueOf();e<1?e=1:e>d&&(e=d+1);for(var f=[],g=0;g<d;g++)e==g+1&&(f=f.concat(c)),f.push(a[g]);return e==g+1&&(f=f.concat(c)),f}),f("remove",[[Yb,"*"],[Cb]],function(a,b){if(!a.length)return[];var c=a.length,d=b.valueOf();if(d<1||d>c)return a;for(var e=[],f=0;f<c;f++)d!=f+1&&e.push(a[f]);return e}),f("reverse",[[Yb,"*"]],function(a){return a.reverse(),a}),f("subsequence",[[Yb,"*"],[gb,""],[gb,"",!0]],function(a,b,c){var d=Gc.round(b),e=arguments.length>2?Gc.round(c):a.length-d+1;return a.slice(d-1,d-1+e)}),f("unordered",[[Yb,"*"]],function(a){return a}),f("zero-or-one",[[Yb,"*"]],function(b){if(b.length>1)throw new a("FORG0003");return b}),f("one-or-more",[[Yb,"*"]],function(b){if(!b.length)throw new a("FORG0004");return b}),f("exactly-one",[[Yb,"*"]],function(b){if(1!=b.length)throw new a("FORG0005");return b}),f("deep-equal",[[Yb,"*"],[Yb,"*"],[ub,"",!0]],function(a,b,c){throw"Function 'deep-equal' not implemented"}),f("count",[[Yb,"*"]],function(a){return new Cb(a.length)}),f("avg",[[Ta,"*"]],function(b){if(!b.length)return null;try{var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e=1,f=b.length;e<f;e++)d=b[e],d instanceof xb&&(d=gb.cast(d)),c=dd["+"](c,d,this);return ed.div(c,new Cb(f),this)}catch(b){throw"XPTY0004"!=b.code?b:new a("FORG0006")}}),f("max",[[Ta,"*"],[ub,"",!0]],function(b,c){if(!b.length)return null;try{var d=b[0];d instanceof xb&&(d=gb.cast(d));for(var e,f=1,g=b.length;f<g;f++)e=b[f],e instanceof xb&&(e=gb.cast(e)),ad.ge(e,d,this).valueOf()&&(d=e);return d}catch(b){throw"XPTY0004"!=b.code?b:new a("FORG0006")}}),f("min",[[Ta,"*"],[ub,"",!0]],function(b,c){if(!b.length)return null;try{var d=b[0];d instanceof xb&&(d=gb.cast(d));for(var e,f=1,g=b.length;f<g;f++)e=b[f],e instanceof xb&&(e=gb.cast(e)),ad.le(e,d,this).valueOf()&&(d=e);return d}catch(b){throw"XPTY0004"!=b.code?b:new a("FORG0006")}}),f("sum",[[Ta,"*"],[Ta,"?",!0]],function(b,c){if(!b.length)return arguments.length>1?c:new gb(0);try{var d=b[0];d instanceof xb&&(d=gb.cast(d));for(var e,f=1,g=b.length;f<g;f++)e=b[f],e instanceof xb&&(e=gb.cast(e)),d=dd["+"](d,e,this);return d}catch(b){throw"XPTY0004"!=b.code?b:new a("FORG0006")}}),f("id",[[ub,"*"],[Zb,"",!0]],function(b,c){if(arguments.length<2){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");c=this.item}var d=Xc.root.call(this,c);if(9!=this.DOMAdapter.getProperty(d,"nodeType"))throw new a("FODC0001");for(var e=[],f=0;f<b.length;f++)for(var g=0,h=Pc(b[f]).split(/\s+/),i=h.length;g<i;g++)(c=this.DOMAdapter.getElementById(d,h[g]))&&Qc(e,c)==-1&&e.push(c);return wc(e,this)}),f("idref",[[ub,"*"],[Zb,"",!0]],function(a,b){throw"Function 'idref' not implemented"}),f("doc",[[ub,"?",!0]],function(a){throw"Function 'doc' not implemented"}),f("doc-available",[[ub,"?",!0]],function(a){throw"Function 'doc-available' not implemented"}),f("collection",[[ub,"?",!0]],function(a){throw"Function 'collection' not implemented"}),f("element-with-id",[[ub,"*"],[Zb,"",!0]],function(a,b){throw"Function 'element-with-id' not implemented"}),f("codepoints-to-string",[[Cb,"*"]],function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(Ac.fromCharCode(a[c]));return new ub(b.join(""))}),f("string-to-codepoints",[[ub,"?"]],function(a){if(null==a)return null;var b=a.valueOf();if(""==b)return[];for(var c=[],d=0,e=b.length;d<e;d++)c.push(new Cb(b.charCodeAt(d)));return c}),f("compare",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(b,c,d){if(null==b||null==c)return null;var e,f=this.staticContext.defaultCollationName;if(arguments.length>2&&(f=d.valueOf()),e=f==Sc+"/collation/codepoint"?Gd:this.staticContext.getCollation(f),!e)throw new a("FOCH0002");return new Cb(e.compare(b.valueOf(),c.valueOf()))}),f("codepoint-equal",[[ub,"?"],[ub,"?"]],function(a,b){return null==a||null==b?null:new Xa(a.valueOf()==b.valueOf())}),f("concat",null,function(){if(arguments.length<2)throw new a("XPST0017");for(var b,c=[],d=0,e=arguments.length;d<e;d++)b=arguments[d],ua(this,b,"?"),b.length&&(c[c.length]=ub.cast(vc(b,this)[0]).valueOf());return new ub(c.join(""))}),f("string-join",[[ub,"*"],[ub]],function(a,b){return new ub(a.join(b))}),f("substring",[[ub,"?"],[gb],[gb,"",!0]],function(a,b,c){var d=null==a?"":a.valueOf(),e=Gc.round(b)-1,f=arguments.length>2?e+Gc.round(c):d.length;return new ub(f>e?d.substring(e,f):"")}),f("string-length",[[ub,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=ub.cast(vc([this.item],this)[0])}return new Cb(null==b?0:b.valueOf().length)}),f("normalize-space",[[ub,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=ub.cast(vc([this.item],this)[0])}return new ub(null==b?"":Pc(b).replace(/\s\s+/g," "))}),f("normalize-unicode",[[ub,"?"],[ub,"",!0]],function(a,b){throw"Function 'normalize-unicode' not implemented"}),f("upper-case",[[ub,"?"]],function(a){return new ub(null==a?"":a.valueOf().toUpperCase())}),f("lower-case",[[ub,"?"]],function(a){return new ub(null==a?"":a.valueOf().toLowerCase())}),f("translate",[[ub,"?"],[ub],[ub]],function(a,b,c){if(null==a)return new ub("");for(var d,e=a.valueOf().split(""),f=b.valueOf().split(""),g=c.valueOf().split(""),h=g.length,i=[],j=0,k=e.length;j<k;j++)(d=f.indexOf(e[j]))==-1?i[i.length]=e[j]:d<h&&(i[i.length]=g[d]);return new ub(i.join(""))}),f("encode-for-uri",[[ub,"?"]],function(a){return new ub(null==a?"":window.encodeURIComponent(a))}),f("iri-to-uri",[[ub,"?"]],function(a){return new ub(null==a?"":window.encodeURI(window.decodeURI(a)))}),f("escape-html-uri",[[ub,"?"]],function(a){if(null==a||""==a.valueOf())return new ub("");for(var b,c=a.valueOf().split(""),d=0,e=c.length;d<e;d++)((b=c[d].charCodeAt(0))<32||b>126)&&(c[d]=window.encodeURIComponent(c[d]));return new ub(c.join(""))}),f("contains",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'contains' is not implemented";return new Xa((null==a?"":a.valueOf()).indexOf(null==b?"":b.valueOf())>=0)}),f("starts-with",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'starts-with' is not implemented";return new Xa(0==(null==a?"":a.valueOf()).indexOf(null==b?"":b.valueOf()))}),f("ends-with",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'ends-with' is not implemented";var d=null==a?"":a.valueOf(),e=null==b?"":b.valueOf();return new Xa(d.indexOf(e)==d.length-e.length)}),f("substring-before",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'substring-before' is not implemented";var d,e=null==a?"":a.valueOf(),f=null==b?"":b.valueOf();return new ub((d=e.indexOf(f))>=0?e.substring(0,d):"")}),f("substring-after",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'substring-after' is not implemented";var d,e=null==a?"":a.valueOf(),f=null==b?"":b.valueOf();return new ub((d=e.indexOf(f))>=0?e.substring(d+f.length):"")}),f("matches",[[ub,"?"],[ub],[ub,"",!0]],function(a,b,c){var d=null==a?"":a.valueOf(),e=xc(b.valueOf(),arguments.length>2?c.valueOf():"");return new Xa(e.test(d))}),f("replace",[[ub,"?"],[ub],[ub],[ub,"",!0]],function(a,b,c,d){var e=null==a?"":a.valueOf(),f=xc(b.valueOf(),arguments.length>3?d.valueOf():"");return new Xa(e.replace(f,c.valueOf()))}),f("tokenize",[[ub,"?"],[ub],[ub,"",!0]],function(a,b,c){for(var d=null==a?"":a.valueOf(),e=xc(b.valueOf(),arguments.length>2?c.valueOf():""),f=[],g=0,h=d.split(e),i=h.length;g<i;g++)f.push(new ub(h[g]));return f}),f("trace",[[Yb,"*"],[ub]],function(a,b){var c=window.console;return c&&c.log&&c.log(b.valueOf(),a),a});var Gd=new i;Gd.equals=function(a,b){return a==b},Gd.compare=function(a,b){return a==b?0:a>b?1:-1},yc.prototype=new c;var Hd=new e;yc.prototype.getProperty=function(a,b){if(b in a)return a[b];if("baseURI"==b){for(var c,d="",e=Hd.getFunction("{http://www.w3.org/2005/xpath-functions}resolve-uri"),f=Hd.getDataType("{http://www.w3.org/2001/XMLSchema}string"),g=a;g;g=g.parentNode)1==g.nodeType&&(c=g.getAttribute("xml:base"))&&(d=e(new f(c),new f(d)).toString());return d}if("textContent"==b){var h=[];return function(a){for(var b,c=0;b=a.childNodes[c];c++)3==b.nodeType||4==b.nodeType?h.push(b.data):1==b.nodeType&&b.firstChild&&arguments.callee(b)}(a),h.join("")}},yc.prototype.compareDocumentPosition=function(a,b){if("compareDocumentPosition"in a)return a.compareDocumentPosition(b);if(b==a)return 0;var c,d,e,f,g,h=null,i=null;if(2==a.nodeType&&(h=a,a=this.getProperty(h,"ownerElement")),2==b.nodeType&&(i=b,b=this.getProperty(i,"ownerElement")),h&&i&&a&&a==b)for(f=0,c=this.getProperty(a,"attributes"),g=c.length;f<g;f++){if(d=c[f],d==h)return 36;if(d==i)return 34}var j,k,l,m,n=[],o=[];for(h&&n.push(h),e=a;e;e=e.parentNode)n.push(e);for(i&&o.push(i),e=b;e;e=e.parentNode)o.push(e);if((a.ownerDocument||a)!=(b.ownerDocument||b)||n[n.length-1]!=o[o.length-1])return 33;for(f=Gc.min(j=n.length,l=o.length);f;--f)if((k=n[--j])!=(m=o[--l])){if(2==k.nodeType)return 4;if(2==m.nodeType)return 2;if(!m.nextSibling)return 4;if(!k.nextSibling)return 2;for(e=m.previousSibling;e;e=e.previousSibling)if(e==k)return 4;return 2}return j<l?20:10},yc.prototype.lookupNamespaceURI=function(a,b){if("lookupNamespaceURI"in a)return a.lookupNamespaceURI(b);for(;a&&9!=a.nodeType;a=a.parentNode){if(b==this.getProperty(oChild,"prefix"))return this.getProperty(a,"namespaceURI");if(1==a.nodeType)for(var c=this.getProperty(a,"attributes"),d=0,e=c.length,f="xmlns:"+b;d<e;d++)if(this.getProperty(c[d],"nodeName")==f)return this.getProperty(c[d],"value")}return null},yc.prototype.getElementsByTagNameNS=function(a,b,c){if("getElementsByTagNameNS"in a)return a.getElementsByTagNameNS(b,c);var d=[],e="*"==b,f="*"==c;return function(a){for(var g,h=0;g=a.childNodes[h];h++)1==g.nodeType&&(!f&&c!=this.getProperty(g,"localName")||!e&&b!=this.getProperty(g,"namespaceURI")||(d[d.length]=g),g.firstChild&&arguments.callee(g))}(a),d};var Id=new yc;Id.getProperty=function(a,b){if("localName"==b&&1==a.nodeType)return a.nodeName.toLowerCase();if("prefix"==b)return null;if("namespaceURI"==b)return 1==a.nodeType?"http://www.w3.org/1999/xhtml":null;if("textContent"==b)return a.innerText;if("attributes"==b&&1==a.nodeType){for(var c,d,e=[],f=0,g=a.attributes,h=g.length;f<h;f++)c=g[f],c.specified&&(d=new cAttr,d.ownerElement=a,d.ownerDocument=a.ownerDocument,d.specified=!0,d.value=d.nodeValue=c.nodeValue,d.name=d.nodeName=d.localName=c.nodeName.toLowerCase(),e[e.length]=d);return e}return yc.prototype.getProperty.call(this,a,b)};var Jd=new yc;Jd.getProperty=function(a,b){if("localName"==b){if(7==a.nodeType)return null;if(1==a.nodeType)return a.baseName}if("prefix"==b||"namespaceURI"==b)return a[b]||null;if("textContent"==b)return a.text;if("attributes"==b&&1==a.nodeType){for(var c,d,e=[],f=0,g=a.attributes,h=g.length;f<h;f++)c=g[f],c.specified&&(d=new cAttr,d.nodeType=2,d.ownerElement=a,d.ownerDocument=a.ownerDocument,d.specified=!0,d.value=d.nodeValue=c.nodeValue,d.name=d.nodeName=c.nodeName,d.localName=c.baseName,d.prefix=c.prefix||null,d.namespaceURI=c.namespaceURI||null,e[e.length]=d);return e}return yc.prototype.getProperty.call(this,a,b)},Jd.getElementById=function(a,b){return a.nodeFromID(b)},zc.prototype.defaultOL2DOMAdapter=new yc,zc.prototype.defaultOL2HTMLDOMAdapter=new yc,zc.prototype.defaultHTMLStaticContext=new e,zc.prototype.defaultHTMLStaticContext.baseURI=window.document.location.href,zc.prototype.defaultHTMLStaticContext.defaultFunctionNamespace="http://www.w3.org/2005/xpath-functions",zc.prototype.defaultHTMLStaticContext.defaultElementNamespace="http://www.w3.org/1999/xhtml",zc.prototype.defaultXMLStaticContext=new e,zc.prototype.defaultXMLStaticContext.defaultFunctionNamespace="http://www.w3.org/2005/xpath-functions",zc.prototype.bOldMS=!!window.document.namespaces&&!window.document.createElementNS,zc.prototype.bOldW3=!zc.prototype.bOldMS&&"http://www.w3.org/1999/xhtml"!=window.document.documentElement.namespaceURI,zc.prototype.defaultDOMAdapter=new c,zc.prototype.compile=function(a,b){return new h(a,b)},zc.prototype.evaluate=function(a,b,c){a instanceof window.jQuery||(a=new window.jQuery(a)),"undefined"!=typeof b&&null!==b||(b="");var f=a[0];"undefined"==typeof f&&(f=null);var g=f&&"DIV"==(9==f.nodeType?f:f.ownerDocument).createElement("div").tagName?this.defaultHTMLStaticContext:this.defaultXMLStaticContext;g.namespaceResolver=c;var i=new h(Ac(b),g);g.namespaceResolver=null;var j,k=new window.jQuery,l=this.defaultOL2DOMAdapter;this.bOldMS?l=g==this.defaultHTMLStaticContext?Id:Jd:this.bOldW3&&g==this.defaultHTMLStaticContext&&(l=this.defaultOL2HTMLDOMAdapter),j=i.evaluate(new d(g,f,null,l));for(var m,n=0,o=j.length;n<o;n++)k.push(l.isNode(m=j[n])?m:e.xs2js(m));return k};var Kd=new zc,Ld=Kd.classes={};Ld.Exception=a,Ld.Expression=h,Ld.DOMAdapter=c,Ld.StaticContext=e,Ld.DynamicContext=d,Ld.StringCollator=i,window.xpath=Kd}();var CanvasComponents={draw_line:function(a,b,c,d,e){a.beginPath(),a.moveTo(b,c),a.lineTo(d,e),a.closePath(),a.stroke()},draw_bar_chart:function(a,b,c,d,e,f,g){g=g||15,(!e||e>Math.round(a.width/50))&&(e=Math.round(a.width/50)),(!f||f>Math.round(a.width/50))&&(f=Math.round(a.height/50));var h=a.getContext("2d"),i=.08*a.width,j=.03*a.width,k=.08*a.height,l=.15*a.height,m=a.height-k-l,n=a.width-i-j,o=k+m,p=k;h.font=g+"px Arial",h.lineWidth="1.0",h.strokeStyle="#444",CanvasComponents.draw_line(h,i,o,n+i,o),CanvasComponents.draw_line(h,i,o,i,p);var q=.003*n,r=(n-q*b.length)/b.length,s=i+q,t=Math.max.apply(Math,b);h.fillStyle="green";for(var u=0;u<b.length;u++){var v=b[u]/t*m;h.fillRect(s,o-v,r,v),s+=r+q}if(h.fillStyle="black",h.textAlign="center",s=i+q,e>=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r<d.length;r++)n=k/c*d[r].min+f,o=h+j+.1*i,p=n,q=h+j+.3*i,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].max+f,p=n,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].min+f,o=h+j+.3*i,p=k/c*d[r].max+f,q=o,CanvasComponents.draw_line(e,n,o,p,q),d[r].max>=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.length<b?Utils.pad_left(c.slice(d,c.length)+a,b,c):a; +},pad_right:function(a,b,c){return c=c||" ",a.length<b?Utils.pad_right(a+c.slice(0,b-a.length),b,c):a},pad:function(a,b,c){return Utils.pad_left(a,b,c)},truncate:function(a,b,c){return c=c||"...",a.length>b&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g,d=/[\x09-\x10\x0D\u2028\u2029]/g;return a=a.replace(c,"."),b||(a=a.replace(d,".")),a},parse_escaped_chars:function(a){return a.replace(/(\\)?\\([nrtbf]|x[\da-f]{2})/g,function(a,b,c){if("\\"===b)return"\\"+c;switch(c[0]){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"f":return"\f";case"x":return Utils.chr(parseInt(c.substr(1),16))}})},expand_alph_range:function(a){for(var b=[],c=0;c<a.length;c++)if(c<a.length-2&&"-"===a[c+1]&&"\\"!==a[c]){for(var d=Utils.ord(a[c]),e=Utils.ord(a[c+2]),f=d;f<=e;f++)b.push(Utils.chr(f));c+=2}else c<a.length-2&&"\\"===a[c]&&"-"===a[c+1]?(b.push("-"),c++):b.push(a[c]);return b},hex_to_byte_array:function(a){if(!a)return[];a=a.replace(/\s+/g,"");for(var b=[],c=0;c<a.length;c+=2)b.push(parseInt(a.substr(c,2),16));return b},byte_array_to_hex:function(a){if(!a)return"";for(var b="",c=0;c<a.length;c++)b+=Utils.hex(a[c])+" ";return b.slice(0,b.length-1)},str_to_byte_array:function(a){for(var b,c=new Array(a.length),d=a.length;d--;)if(b=a.charCodeAt(d),c[d]=b,b>255)return Utils.str_to_utf8_byte_array(a);return c},str_to_utf8_byte_array:function(a){var b=CryptoJS.enc.Utf8.parse(a),c=Utils.word_array_to_byte_array(b);return a.length!==b.sigBytes&&(window.app.options.attempt_highlight=!1),c},str_to_charcode:function(a){for(var b=new Array(a.length),c=a.length;c--;)b[c]=a.charCodeAt(c);return b},byte_array_to_utf8:function(a){try{for(var b=[],c=0;c<a.length;c++)b[c>>>2]|=a[c]<<24-c%4*8;var d=new CryptoJS.lib.WordArray.init(b,a.length),e=CryptoJS.enc.Utf8.stringify(d);return e.length!==d.sigBytes&&(window.app.options.attempt_highlight=!1),e}catch(b){return Utils.byte_array_to_chars(a)}},byte_array_to_chars:function(a){if(!a)return"";for(var b="",c=0;c<a.length;)b+=String.fromCharCode(a[c++]);return b},word_array_to_byte_array:function(a){if(a.sigBytes<=0)return[];for(var b=a.words,c=[],d=0;d<a.sigBytes;d++)c.push(b[d>>>2]>>>24-d%4*8&255);return c},UNIC_WIN1251_MAP:{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,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,1027:129,8225:135,1046:198,8222:132,1047:199,1168:165,1048:200,1113:154,1049:201,1045:197,1050:202,1028:170,160:160,1040:192,1051:203,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,1053:205,176:176,177:177,1114:156,181:181,182:182,183:183,8221:148,187:187,1029:189,1056:208,1057:209,1058:210,8364:136,1112:188,1115:158,1059:211,1060:212,1030:178,1061:213,1062:214,1063:215,1116:157,1064:216,1065:217,1031:175,1066:218,1067:219,1068:220,1069:221,1070:222,1032:163,8226:149,1071:223,1072:224,8482:153,1073:225,8240:137,1118:162,1074:226,1110:179,8230:133,1075:227,1033:138,1076:228,1077:229,8211:150,1078:230,1119:159,1079:231,1042:194,1080:232,1034:140,1025:168,1081:233,1082:234,8212:151,1083:235,1169:180,1084:236,1052:204,1085:237,1035:142,1086:238,1087:239,1088:240,1089:241,1090:242,1036:141,1041:193,1091:243,1092:244,8224:134,1093:245,8470:185,1094:246,1054:206,1095:247,1096:248,8249:139,1097:249,1098:250,1044:196,1099:251,1111:191,1055:207,1100:252,1038:161,8220:147,1101:253,8250:155,1102:254,8216:145,1103:255,1043:195,1105:184,1039:143,1026:128,1106:144,8218:130,1107:131,8217:146,1108:186,1109:190},WIN1251_UNIC_MAP:{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,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,160:160,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,176:176,177:177,181:181,182:182,183:183,187:187,168:1025,128:1026,129:1027,170:1028,189:1029,178:1030,175:1031,163:1032,138:1033,140:1034,142:1035,141:1036,161:1038,143:1039,192:1040,193:1041,194:1042,195:1043,196:1044,197:1045,198:1046,199:1047,200:1048,201:1049,202:1050,203:1051,204:1052,205:1053,206:1054,207:1055,208:1056,209:1057,210:1058,211:1059,212:1060,213:1061,214:1062,215:1063,216:1064,217:1065,218:1066,219:1067,220:1068,221:1069,222:1070,223:1071,224:1072,225:1073,226:1074,227:1075,228:1076,229:1077,230:1078,231:1079,232:1080,233:1081,234:1082,235:1083,236:1084,237:1085,238:1086,239:1087,240:1088,241:1089,242:1090,243:1091,244:1092,245:1093,246:1094,247:1095,248:1096,249:1097,250:1098,251:1099,252:1100,253:1101,254:1102,255:1103,184:1105,144:1106,131:1107,186:1108,190:1109,179:1110,191:1111,188:1112,154:1113,156:1114,158:1115,157:1116,162:1118,159:1119,165:1168,180:1169,150:8211,151:8212,145:8216,146:8217,130:8218,147:8220,148:8221,132:8222,134:8224,135:8225,149:8226,133:8230,137:8240,139:8249,155:8250,136:8364,185:8470,153:8482},unicode_to_win1251:function(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(!(d in Utils.UNIC_WIN1251_MAP))throw"Character '"+a.charAt(c)+"' isn't supported by Windows-1251";b.push(String.fromCharCode(Utils.UNIC_WIN1251_MAP[d]))}return b.join("")},win1251_to_unicode:function(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(!(d in Utils.WIN1251_UNIC_MAP))throw"Character '"+a.charAt(c)+"' isn't supported by Windows-1251";b.push(String.fromCharCode(Utils.WIN1251_UNIC_MAP[d]))}return b.join("")},to_base64:function(a,b){if(!a)return"";"string"==typeof a&&(a=Utils.str_to_byte_array(a)),b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";for(var c,d,e,f,g,h,i,j="",k=0;k<a.length;)c=a[k++],d=a[k++],e=a[k++],f=c>>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,isNaN(d)?h=i=64:isNaN(e)&&(i=64),j+=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);return j},from_base64:function(a,b,c,d){if(c=c||"string",!a)return"string"===c?"":[];b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",void 0===d&&(d=!0);var e,f,g,h,i,j,k,l=[],m=0;if(d){var n=new RegExp("[^"+b.replace(/[\[\]\\\-^$]/g,"\\$&")+"]","g");a=a.replace(n,"")}for(;m<a.length;)h=b.indexOf(a.charAt(m++)),i=b.indexOf(a.charAt(m++)||"="),j=b.indexOf(a.charAt(m++)||"="),k=b.indexOf(a.charAt(m++)||"="),i=i===-1?64:i,j=j===-1?64:j,k=k===-1?64:k,e=h<<2|i>>4,f=(15&i)<<4|j>>2,g=(3&j)<<6|k,l.push(e),64!==j&&l.push(f),64!==k&&l.push(g);return"string"===c?Utils.byte_array_to_utf8(l):l},to_hex:function(a,b,c){if(!a)return"";b="string"==typeof b?b:" ",c=c||2;for(var d="",e=0;e<a.length;e++)d+=Utils.pad(a[e].toString(16),c)+b;return"0x"===b&&(d="0x"+d),"\\x"===b&&(d="\\x"+d),b.length?d.slice(0,-b.length):d},to_hex_fast:function(a){if(!a)return"";for(var b=[],c=0;c<a.length;c++)b.push((a[c]>>>4).toString(16)),b.push((15&a[c]).toString(16));return b.join("")},from_hex:function(a,b,c){if(b=b||(a.indexOf(" ")>=0?"Space":"None"),c=c||2,"None"!==b){var d=Utils.regex_rep[b];a=a.replace(d,"")}for(var e=[],f=0;f<a.length;f+=c)e.push(parseInt(a.substr(f,c),16));return e},parse_csv:function(a){for(var b,c=!1,d=!1,e="",f=[],g=[],h=0;h<a.length;h++)b=a[h],c?(e+=b,c=!1):"\\"===b?(e+=b,c=!0):'"'!==b||d?'"'===b&&d?d=!1:","!==b||d?"\n"!==b&&"\r"!==b||d?e+=b:(f.push(e),e="",g.push(f),f=[]):(f.push(e),e=""):d=!0;return f.length&&(f.push(e),g.push(f)),g},strip_html_tags:function(a,b){return b&&(a=a.replace(/<(script|style)[^>]*>.*<\/(script|style)>/gim,"")),a.replace(/<[^>\n]+>/g,"")},escape_html:function(a){return a.replace(/</g,"<").replace(/'/g,"'").replace(/"/g,""").replace(/&/g,"&")},fuzzy_time:function(a){return moment.duration(a,"milliseconds").humanize()},extend:function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a},char_rep:{Space:" ",Comma:",","Semi-colon":";",Colon:":","Line feed":"\n",CRLF:"\r\n","0x":"0x","\\x":"\\x","Nothing (separate chars)":"",None:""},regex_rep:{Space:/\s+/g,Comma:/,/g,"Semi-colon":/;/g,Colon:/:/g,"Line feed":/\n/g,CRLF:/\r\n/g,"0x":/0x/g,"\\x":/\\x/g},format:{Hex:CryptoJS.enc.Hex,Base64:CryptoJS.enc.Base64,UTF8:CryptoJS.enc.Utf8,UTF16:CryptoJS.enc.Utf16,UTF16LE:CryptoJS.enc.Utf16LE,UTF16BE:CryptoJS.enc.Utf16BE,Latin1:CryptoJS.enc.Latin1}};$.fn.selectRange=function(a,b){return b||(b=a),this.each(function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(a,b);else if(this.createTextRange){var c=this.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}})},Array.prototype.unique=function(){for(var a={},b=[],c=0,d=this.length;c<d;c++)a.hasOwnProperty(this[c])||(b.push(this[c]),a[this[c]]=1);return b},Array.prototype.max=function(){return Math.max.apply(null,this)},Array.prototype.min=function(){return Math.min.apply(null,this)},Array.prototype.sum=function(){return this.reduce(function(a,b){return a+b},0)},Array.prototype.equals=function(a){if(!a)return!1;var b=this.length;if(b!==a.length)return!1;for(;b--;)if(this[b]!==a[b])return!1;return!0},String.prototype.count=function(a){return this.split(a).length-1},CryptoJS.enc.Hex.parse=function(a){a=a.replace(/\s/g,"");for(var b=a.length,c=[],d=0;d<b;d+=2)c[d>>>3]|=parseInt(a.substr(d,2),16)<<24-d%8*4;return new CryptoJS.lib.WordArray.init(c,b/2)};var Base={DEFAULT_RADIX:36,run_to:function(a,b){if(!a)throw"Error: Input must be a number";var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return a.toString(c)},run_from:function(a,b){var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return parseInt(a.replace(/\s/g,""),c)}},Base64={ALPHABET:"A-Za-z0-9+/=",ALPHABET_OPTIONS:[{name:"Standard: A-Za-z0-9+/=",value:"A-Za-z0-9+/="},{name:"URL safe: A-Za-z0-9-_",value:"A-Za-z0-9-_"},{name:"Filename safe: A-Za-z0-9+-=",value:"A-Za-z0-9+\\-="},{name:"itoa64: ./0-9A-Za-z=",value:"./0-9A-Za-z="},{name:"XML: A-Za-z0-9_.",value:"A-Za-z0-9_."},{name:"y64: A-Za-z0-9._-",value:"A-Za-z0-9._-"},{name:"z64: 0-9a-zA-Z+/=",value:"0-9a-zA-Z+/="},{name:"Radix-64: 0-9A-Za-z+/=",value:"0-9A-Za-z+/="},{name:"Uuencoding: [space]-_",value:" -_"},{name:"Xxencoding: +-0-9A-Za-z",value:"+\\-0-9A-Za-z"},{name:"BinHex: !-,-0-689@A-NP-VX-Z[`a-fh-mp-r",value:"!-,-0-689@A-NP-VX-Z[`a-fh-mp-r"},{name:"ROT13: N-ZA-Mn-za-m0-9+/=",value:"N-ZA-Mn-za-m0-9+/="}],run_to:function(a,b){var c=b[0]||Base64.ALPHABET;return Utils.to_base64(a,c)},REMOVE_NON_ALPH_CHARS:!0,run_from:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1];return Utils.from_base64(a,c,"byte_array",d)},BASE32_ALPHABET:"A-Z2-7=",run_to_32:function(a,b){if(!a)return"";for(var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q="",r=0;r<a.length;)c=a[r++],d=a[r++],e=a[r++],f=a[r++],g=a[r++],h=c>>3,i=(7&c)<<2|d>>6,j=d>>1&31,k=(1&d)<<4|e>>4,l=(15&e)<<1|f>>7,m=f>>2&63,n=(3&f)<<3|g>>5,o=31&g,isNaN(d)?j=k=l=m=n=o=32:isNaN(e)?l=m=n=o=32:isNaN(f)?m=n=o=32:isNaN(g)&&(o=32),q+=p.charAt(h)+p.charAt(i)+p.charAt(j)+p.charAt(k)+p.charAt(l)+p.charAt(m)+p.charAt(n)+p.charAt(o);return q},run_from_32:function(a,b){if(!a)return[];var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q=b[0],r=[],s=0;if(q){var t=new RegExp("[^"+p.replace(/[\]\\\-^]/g,"\\$&")+"]","g");a=a.replace(t,"")}for(;s<a.length;)h=p.indexOf(a.charAt(s++)),i=p.indexOf(a.charAt(s++)||"="),j=p.indexOf(a.charAt(s++)||"="),k=p.indexOf(a.charAt(s++)||"="),l=p.indexOf(a.charAt(s++)||"="),m=p.indexOf(a.charAt(s++)||"="),n=p.indexOf(a.charAt(s++)||"="),o=p.indexOf(a.charAt(s++)||"="),c=h<<3|i>>2,d=(3&i)<<6|j<<1|k>>4,e=(15&k)<<4|l>>1,f=(1&l)<<7|m<<2|n>>3,g=(7&n)<<5|o,r.push(c),(i&!0||32!==j)&&r.push(d),(k&!0||32!==l)&&r.push(e),(l&!0||32!==m)&&r.push(f),(n&!0||32!==o)&&r.push(g);return r},SHOW_IN_BINARY:!1,OFFSETS_SHOW_VARIABLE:!0,run_offsets:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1],e=Utils.to_base64(a,c),f=Utils.to_base64([0].concat(a),c),g=Utils.to_base64([0,0].concat(a),c),h=e.indexOf("="),i=f.indexOf("="),j=g.indexOf("="),k="<script type='application/javascript'>$('[data-toggle=\"tooltip\"]').tooltip()<\/script>",l="",m="";return a.length<1?"Please enter a string.":(h%4===2?(l=e.slice(0,-3),e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c).slice(0,-2))+"'>"+l+"</span><span class='hlgreen'>"+e.substr(e.length-3,1)+"</span><span class='hlred'>"+e.substr(e.length-2)+"</span>"):h%4===3?(l=e.slice(0,-2),e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c).slice(0,-1))+"'>"+l+"</span><span class='hlgreen'>"+e.substr(e.length-2,1)+"</span><span class='hlred'>"+e.substr(e.length-1)+"</span>"):(l=e,e="<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64(l,c))+"'>"+l+"</span>"),d||(e=l),m="<span class='hlred'>"+f.substr(0,1)+"</span><span class='hlgreen'>"+f.substr(1,1)+"</span>",f=f.substr(2),i%4===2?(l=f.slice(0,-3),f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1,-2))+"'>"+l+"</span><span class='hlgreen'>"+f.substr(f.length-3,1)+"</span><span class='hlred'>"+f.substr(f.length-2)+"</span>"):i%4===3?(l=f.slice(0,-2),f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1,-1))+"'>"+l+"</span><span class='hlgreen'>"+f.substr(f.length-2,1)+"</span><span class='hlred'>"+f.substr(f.length-1)+"</span>"):(l=f,f=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AA"+l,c).slice(1))+"'>"+l+"</span>"),d||(f=l),m="<span class='hlred'>"+g.substr(0,2)+"</span><span class='hlgreen'>"+g.substr(2,1)+"</span>",g=g.substr(3),j%4===2?(l=g.slice(0,-3),g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2,-2))+"'>"+l+"</span><span class='hlgreen'>"+g.substr(g.length-3,1)+"</span><span class='hlred'>"+g.substr(g.length-2)+"</span>"):j%4===3?(l=g.slice(0,-2),g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2,-2))+"'>"+l+"</span><span class='hlgreen'>"+g.substr(g.length-2,1)+"</span><span class='hlred'>"+g.substr(g.length-1)+"</span>"):(l=g,g=m+"<span data-toggle='tooltip' data-placement='top' title='"+Utils.escape_html(Utils.from_base64("AAA"+l,c).slice(2))+"'>"+l+"</span>"),d||(g=l),d?"Characters highlighted in <span class='hlgreen'>green</span> could change if the input is surrounded by more data.\nCharacters highlighted in <span class='hlred'>red</span> are for padding purposes only.\nUnhighlighted characters are <span data-toggle='tooltip' data-placement='top' title='Tooltip on left'>static</span>.\nHover over the static sections to see what they decode to on their own.\n\nOffset 0: "+e+"\nOffset 1: "+f+"\nOffset 2: "+g+k:e+"\n"+f+"\n"+g)},highlight_to:function(a,b){return a[0].start=Math.floor(a[0].start/3*4),a[0].end=Math.ceil(a[0].end/3*4),a},highlight_from:function(a,b){return a[0].start=Math.ceil(a[0].start/4*3),a[0].end=Math.floor(a[0].end/4*3),a}},BitwiseOp={_bit_op:function(a,b,c,d,e){b&&b.length||(b=[0]);for(var f=[],g=null,h=null,i=null,j=0;j<a.length;j++)if(h=b[j%b.length],i=a[j],g=!d||0!==i&&i!==h?c(i,h):i,f.push(g),"Standard"!==e&&(!d||0!==i&&i!==h))switch(e){case"Input differential":b[j%b.length]=g;break;case"Output differential":b[j%b.length]=i}return f},XOR_PRESERVE_NULLS:!1,XOR_SCHEME:["Standard","Input differential","Output differential"],KEY_FORMAT:["Hex","Base64","UTF8","UTF16","UTF16LE","UTF16BE","Latin1"],run_xor:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||""),d=b[1],e=b[2];return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._xor,e,d)},XOR_BRUTE_KEY_LENGTH:["1","2"],XOR_BRUTE_SAMPLE_LENGTH:100,XOR_BRUTE_SAMPLE_OFFSET:0,XOR_BRUTE_PRINT_KEY:!0,XOR_BRUTE_OUTPUT_HEX:!1,run_xor_brute:function(a,b){var c,d,e,f=parseInt(b[0],10),g=b[1],h=b[2],i=b[3],j=b[4],k=b[5],l=b[6],m=b[7],n="";a=a.slice(h,h+g),""!==k&&(c=new RegExp(k,"im"));for(var o=1,p=Math.pow(256,f);o<p;o++)d=BitwiseOp._bit_op(a,Utils.hex_to_byte_array(o.toString(16)),BitwiseOp._xor,i,j),e=Utils.byte_array_to_utf8(d),""!==k&&e.search(c)===-1||(l&&(n+="Key = "+Utils.hex(o,2*f)+": "),n+=m?Utils.byte_array_to_hex(d)+"\n":Utils.printable(e,!1)+"\n",l&&(n+="\n"));return n},run_not:function(a,b){return BitwiseOp._bit_op(a,null,BitwiseOp._not)},run_and:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._and)},run_or:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._or)},run_add:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._add)},run_sub:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string||"");return c=Utils.word_array_to_byte_array(c),BitwiseOp._bit_op(a,c,BitwiseOp._sub)},_xor:function(a,b){return a^b},_not:function(a,b){return 255&~a},_and:function(a,b){return a&b},_or:function(a,b){return a|b},_add:function(a,b){return(a+b)%256},_sub:function(a,b){var c=a-b;return c<0?256+c:c}},ByteRepr={DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF"],HEX_DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF","0x","\\x","None"],BIN_DELIM_OPTIONS:["Space","Comma","Semi-colon","Colon","Line feed","CRLF","None"],run_to_hex:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return Utils.to_hex(a,c,2)},run_from_hex:function(a,b){var c=b[0]||"Space";return Utils.from_hex(a,c,2)},CHARCODE_BASE:16,run_to_charcode:function(a,b){var c,d=Utils.char_rep[b[0]||"Space"],e=b[1],f="",g=2;if(e<2||e>36)throw"Error: Base argument must be between 2 and 36";for(var h=0;h<a.length;h++)c=Utils.ord(a[h]),16===e?(g=c<256?2:c<65536?4:c<16777216?6:c<4294967296?8:2,g>2&&(app.options.attempt_highlight=!1),f+=Utils.hex(c,g)+d):(app.options.attempt_highlight=!1,f+=c.toString(e)+d);return f.slice(0,-d.length)},run_from_charcode:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d=b[1],e=a.split(c),f=0;if(d<2||d>36)throw"Error: Base argument must be between 2 and 36";if(16!==d&&(app.options.attempt_highlight=!1),1===e.length&&a.length>17)for(e=[],f=0;f<a.length;f+=2)e.push(a.slice(f,f+2));var g="";for(f=0;f<e.length;f++)g+=Utils.chr(parseInt(e[f],d));return Utils.str_to_byte_array(g)},highlight_to:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d="\r\n"===c?1:c.length;return a[0].start=a[0].start*(2+d),a[0].end=a[0].end*(2+d)-d,"0x"!==c&&"\\x"!==c||(a[0].start+=2,a[0].end+=2),a},highlight_from:function(a,b){var c=Utils.char_rep[b[0]||"Space"],d="\r\n"===c?1:c.length,e=d+2;return"0x"!==c&&"\\x"!==c||(a[0].start>1?a[0].start-=2:a[0].start=0,a[0].end>1?a[0].end-=2:a[0].end=0),a[0].start=0===a[0].start?0:Math.round(a[0].start/e),a[0].end=0===a[0].end?0:Math.ceil(a[0].end/e),a},run_to_decimal:function(a,b){var c=Utils.char_rep[b[0]];return a.join(c)},run_from_decimal:function(a,b){var c=Utils.char_rep[b[0]],d=a.split(c),e=[];""===d[d.length-1]&&(d=d.slice(0,d.length-1));for(var f=0;f<d.length;f++)e[f]=parseInt(d[f],10);return e},run_to_binary:function(a,b){for(var c=Utils.char_rep[b[0]||"Space"],d="",e=8,f=0;f<a.length;f++)d+=Utils.pad(a[f].toString(2),e)+c;return c.length?d.slice(0,-c.length):d},run_from_binary:function(a,b){if("None"!==b[0]){var c=Utils.regex_rep[b[0]||"Space"];a=a.replace(c,"")}for(var d=[],e=8,f=0;f<a.length;f+=e)d.push(parseInt(a.substr(f,e),2));return d},highlight_to_binary:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return a[0].start=a[0].start*(8+c.length),a[0].end=a[0].end*(8+c.length)-c.length,a},highlight_from_binary:function(a,b){var c=Utils.char_rep[b[0]||"Space"];return a[0].start=0===a[0].start?0:Math.floor(a[0].start/(8+c.length)),a[0].end=0===a[0].end?0:Math.ceil(a[0].end/(8+c.length)),a},HEX_CONTENT_CONVERT_WHICH:["Only special chars","Only special chars including spaces","All chars"],HEX_CONTENT_SPACES_BETWEEN_BYTES:!1,run_to_hex_content:function(a,b){var c=b[0],d=b[1];if("All chars"===c){var e="|"+Utils.to_hex(a)+"|";return d||(e=e.replace(/ /g,"")),e}for(var f,g="",h=!1,i="Only special chars including spaces"===c,j=0;j<a.length;j++)f=a[j],32===f&&i||f<48&&32!==f||f>57&&f<65||f>90&&f<97||f>122?(h?d&&(g+=" "):(g+="|",h=!0),g+=Utils.to_hex([f])):(h&&(g+="|",h=!1),g+=Utils.chr(a[j]));return h&&(g+="|"),g},run_from_hex_content:function(a,b){for(var c,d=/\|([a-f\d ]{2,})\|/gi,e=[],f=0;c=d.exec(a);){for(;f<c.index;)e.push(Utils.ord(a[f++]));var g=Utils.from_hex(c[1]);if(g)for(var h=0;h<g.length;)e.push(g[h++]);else for(;f<d.lastIndex;)e.push(Utils.ord(a[f++]));f=d.lastIndex}for(;f<a.length;)e.push(Utils.ord(a[f++]));return e}},CharEnc={IO_FORMAT:["UTF8","UTF16","UTF16LE","UTF16BE","Latin1","Windows-1251","Hex","Base64"],run:function(a,b){var c=b[0],d=b[1];return"Windows-1251"===c?(a=Utils.win1251_to_unicode(a),a=CryptoJS.enc.Utf8.parse(a)):a=Utils.format[c].parse(a),"Windows-1251"===d?(a=CryptoJS.enc.Utf8.stringify(a),Utils.unicode_to_win1251(a)):Utils.format[d].stringify(a)}},Checksum={run_fletcher16:function(a,b){for(var c=0,d=0,e=0;e<a.length;e++)c=(c+a[e])%255,d=(d+c)%255;return Utils.hex((d<<8|c)>>>0,4)},run_adler32:function(a,b){for(var c=65521,d=1,e=0,f=0;f<a.length;f++)d+=a[f],e+=d;return d%=c,e%=c,Utils.hex((e<<16|d)>>>0,8)},run_crc32:function(a,b){for(var c=window.crc_table||(window.crc_table=Checksum._gen_crc_table()),d=-1,e=0;e<a.length;e++)d=d>>>8^c[255&(d^a[e])];return Utils.hex((d^-1)>>>0)},run_tcp_ip:function(a,b){for(var c=0,d=0;d<a.length;d++)c+=d%2===0?a[d]<<8:a[d];return c=(c>>16)+(65535&c),Utils.hex(65535-c)},_gen_crc_table:function(){for(var a,b=[],c=0;c<256;c++){a=c;for(var d=0;d<8;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}},Cipher={IO_FORMAT1:["Hex","Base64","UTF8","UTF16","UTF16LE","UTF16BE","Latin1"],IO_FORMAT2:["UTF8","UTF16","UTF16LE","UTF16BE","Latin1","Hex","Base64"],IO_FORMAT3:["Hex","Base64","UTF16","UTF16LE","UTF16BE","Latin1"],IO_FORMAT4:["Latin1","UTF8","UTF16","UTF16LE","UTF16BE","Hex","Base64"],MODES:["CBC","CFB","CTR","OFB","ECB"],PADDING:["Pkcs7","Iso97971","AnsiX923","Iso10126","ZeroPadding","NoPadding"],RESULT_TYPE:["Show all","Ciphertext","Key","IV","Salt"],_enc:function(a,b,c){var d=Utils.format[c[0].option].parse(c[0].string||""),e=Utils.format[c[1].option].parse(c[1].string||""),f=Utils.format[c[2].option].parse(c[2].string||""),g=CryptoJS.mode[c[3]],h=CryptoJS.pad[c[4]],i=c[5].toLowerCase(),j=c[6];0===e.sigBytes&&(d=d.toString(CryptoJS.enc.Latin1));var k=a.encrypt(b,d,{salt:f.sigBytes>0&&f,iv:e.sigBytes>0?e:null,mode:g,padding:h}),l="";return"show all"===i?(l+="Key: "+k.key.toString(Utils.format[j]),l+="\nIV: "+k.iv.toString(Utils.format[j]),k.salt&&(l+="\nSalt: "+k.salt.toString(Utils.format[j])),l+="\n\nCiphertext: "+k.ciphertext.toString(Utils.format[j])):l=k[i].toString(Utils.format[j]),l},_dec:function(a,b,c){var d=Utils.format[c[0].option].parse(c[0].string||""),e=Utils.format[c[1].option].parse(c[1].string||""),f=Utils.format[c[2].option].parse(c[2].string||""),g=CryptoJS.mode[c[3]],h=CryptoJS.pad[c[4]],i=c[5],j=c[6];if(!b.length)return"No input";var k=Utils.format[i].parse(b);0===e.sigBytes&&(d=d.toString(CryptoJS.enc.Latin1));var l,m=a.decrypt({ciphertext:k,salt:f.sigBytes>0&&f},d,{iv:e.sigBytes>0?e:null,mode:g,padding:h});try{l=m.toString(Utils.format[j])}catch(a){l="Decrypt error: "+a.message}return l},run_aes_enc:function(a,b){return Cipher._enc(CryptoJS.AES,a,b)},run_aes_dec:function(a,b){return Cipher._dec(CryptoJS.AES,a,b)},run_des_enc:function(a,b){return Cipher._enc(CryptoJS.DES,a,b)},run_des_dec:function(a,b){return Cipher._dec(CryptoJS.DES,a,b)},run_triple_des_enc:function(a,b){return Cipher._enc(CryptoJS.TripleDES,a,b)},run_triple_des_dec:function(a,b){return Cipher._dec(CryptoJS.TripleDES,a,b)},run_rabbit_enc:function(a,b){return Cipher._enc(CryptoJS.Rabbit,a,b)},run_rabbit_dec:function(a,b){return Cipher._dec(CryptoJS.Rabbit,a,b)},BLOWFISH_MODES:["ECB","CBC","PCBC","CFB","OFB","CTR"],BLOWFISH_OUTPUT_TYPES:["Base64","Hex","String","Raw"],run_blowfish_enc:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string).toString(Utils.format.Latin1),d=b[1],e=b[2];if(0===c.length)return"Enter a key";var f=blowfish.encrypt(a,c,{outputType:1,cipherMode:Cipher.BLOWFISH_MODES.indexOf(d)}),g=CryptoJS.enc.Hex.parse(f);return g.toString(Utils.format[e])},run_blowfish_dec:function(a,b){var c=Utils.format[b[0].option].parse(b[0].string).toString(Utils.format.Latin1),d=b[1],e=b[2];return 0===c.length?"Enter a key":(a=Utils.format[e].parse(a),blowfish.decrypt(a.toString(CryptoJS.enc.Base64),c,{outputType:0,cipherMode:Cipher.BLOWFISH_MODES.indexOf(d)}))},KDF_KEY_SIZE:256,KDF_ITERATIONS:1,run_pbkdf2:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.PBKDF2(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_evpkdf:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.EvpKDF(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_rc4:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=CryptoJS.RC4.encrypt(c,d);return e.ciphertext.toString(Utils.format[b[2]])},RC4DROP_BYTES:768,run_rc4drop:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=b[3],f=CryptoJS.RC4Drop.encrypt(c,d,{drop:e});return f.ciphertext.toString(Utils.format[b[2]])},run_vigenere_enc:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(c+d)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(c+d)%26].toUpperCase()):(h+=a[j],i++);return h},run_vigenere_dec:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(d-c+f.length)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(d+f.length-c)%26].toUpperCase()):(h+=a[j],i++);return h}};CryptoJS.kdf.OpenSSL.execute=function(a,b,c,d){ +void 0!==d&&null!==d||(d=CryptoJS.lib.WordArray.random(8));var e=CryptoJS.algo.EvpKDF.create({keySize:b+c}).compute(a,d),f=CryptoJS.lib.WordArray.create(e.words.slice(b),4*c);return e.sigBytes=4*b,CryptoJS.lib.CipherParams.create({key:e,iv:f,salt:d})};var Code={LANGUAGES:["default-code","default-markup","bash","bsh","c","cc","coffee","cpp","cs","csh","cv","cxx","cyc","htm","html","in.tag","java","javascript","js","json","m","mxml","perl","pl","pm","py","python","rb","rc","rs","ruby","rust","sh","uq.val","xhtml","xml","xsl"],LINE_NUMS:!1,run_syntax_highlight:function(a,b){var c=b[0],d=b[1];return"<code class='prettyprint'>"+prettyPrintOne(Utils.escape_html(a),c,d)+"</code>"},BEAUTIFY_INDENT:"\\t",run_xml_beautify:function(a,b){var c=b[0];return vkbeautify.xml(a,c)},run_json_beautify:function(a,b){var c=b[0];return a?vkbeautify.json(a,c):""},run_css_beautify:function(a,b){var c=b[0];return vkbeautify.css(a,c)},run_sql_beautify:function(a,b){var c=b[0];return vkbeautify.sql(a,c)},PRESERVE_COMMENTS:!1,run_xml_minify:function(a,b){var c=b[0];return vkbeautify.xmlmin(a,c)},run_json_minify:function(a,b){return a?vkbeautify.jsonmin(a):""},run_css_minify:function(a,b){var c=b[0];return vkbeautify.cssmin(a,c)},run_sql_minify:function(a,b){return vkbeautify.sqlmin(a)},run_generic_beautify:function(a,b){function c(a,b,c){return g[c]=b[0],a.substring(0,b.index)+"###preserved_token"+c+"###"+a.substring(b.index+b[0].length)}for(var d,e=a,f=0,g=[],h=/'([^'\\]|\\.)*'/g;d=h.exec(e);)e=c(e,d,f++),h.lastIndex=d.index;for(var i=/"([^"\\]|\\.)*"/g;d=i.exec(e);)e=c(e,d,f++),i.lastIndex=d.index;for(var j=/\/\/[^\n\r]*/g;d=j.exec(e);)e=c(e,d,f++),j.lastIndex=d.index;for(var k=/\/\*[\s\S]*?\*\//gm;d=k.exec(e);)e=c(e,d,f++),k.lastIndex=d.index;for(var l=/(^|\n)#[^\n\r#]+/g;d=l.exec(e);)e=c(e,d,f++),l.lastIndex=d.index;for(var m=/\/.*?[^\\]\/[gim]{0,3}/gi;d=m.exec(e);)e=c(e,d,f++),m.lastIndex=d.index;e=e.replace(/;/g,";\n"),e=e.replace(/{/g,"{\n"),e=e.replace(/}/g,"\n}\n"),e=e.replace(/\r/g,""),e=e.replace(/^\s+/g,""),e=e.replace(/\n\s+/g,"\n"),e=e.replace(/\s*$/g,""),e=e.replace(/\n{/g,"{");for(var n=0,o=0;n<e.length;){switch(e[n]){case"{":o++;break;case"\n":if(n+1>=e.length)break;"}"===e[n+1]&&o--;var p=o>=0?Array(4*o+1).join(" "):"";e=e.substring(0,n+1)+p+e.substring(n+1),o>0&&(n+=4*o)}n++}e=e.replace(/\s*([!<>=+-\/*]?)=\s*/g," $1= "),e=e.replace(/\s*<([=]?)\s*/g," <$1 "),e=e.replace(/\s*>([=]?)\s*/g," >$1 "),e=e.replace(/([^+])\+([^+=])/g,"$1 + $2"),e=e.replace(/([^-])-([^-=])/g,"$1 - $2"),e=e.replace(/([^*])\*([^*=])/g,"$1 * $2"),e=e.replace(/([^\/])\/([^\/=])/g,"$1 / $2"),e=e.replace(/\s*,\s*/g,", "),e=e.replace(/\s*{/g," {"),e=e.replace(/}\n/g,"}\n\n"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim,"$1 ($2)\n $3"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim,"$1 ($2) $3"),e=e.replace(/else\s*\n([^{])/gim,"else\n $1"),e=e.replace(/else\s+([^{])/gim,"else $1"),e=e.replace(/\s+;/g,";"),e=e.replace(/\{\s+\}/g,"{}"),e=e.replace(/\[\s+\]/g,"[]"),e=e.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi,"} $1");for(var q=/###preserved_token(\d+)###/g;d=q.exec(e);){var r=parseInt(d[1],10);e=e.substring(0,d.index)+g[r]+e.substring(d.index+d[0].length),q.lastIndex=d.index}return e},XPATH_INITIAL:"",XPATH_DELIMITER:"\\n",run_xpath:function(a,b){const c=b[0],d=b[1];var e;try{e=$.parseXML(a)}catch(a){return"Invalid input XML."}var f;try{f=xpath.evaluate(e,c)}catch(a){return"Invalid XPath. Details:\n"+a.message}const g=new XMLSerializer,h=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:return g.serializeToString(a);case Node.ATTRIBUTE_NODE:return a.value;case Node.COMMENT_NODE:return a.data;case Node.DOCUMENT_NODE:return g.serializeToString(a);default:throw new Error("Unknown Node Type: "+a.nodeType)}};return Object.keys(f).map(function(a){return f[a]}).slice(0,-1).map(h).join(d)},CSS_SELECTOR_INITIAL:"",CSS_QUERY_DELIMITER:"\\n",run_css_query:function(a,b){const c=b[0],d=b[1];var e;try{e=$.parseHTML(a)}catch(a){return"Invalid input HTML."}var f;try{f=$(e).find(c)}catch(a){return"Invalid CSS Selector. Details:\n"+a.message}const g=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:return a.outerHTML;case Node.ATTRIBUTE_NODE:return a.value;case Node.COMMENT_NODE:return a.data;case Node.TEXT_NODE:return a.wholeText;case Node.DOCUMENT_NODE:return a.outerHTML;default:throw new Error("Unknown Node Type: "+a.nodeType)}};return Array.apply(null,Array(f.length)).map(function(a,b){return f[b]}).map(g).join(d)}},Compress={COMPRESSION_TYPE:["Dynamic Huffman Coding","Fixed Huffman Coding","None (Store)"],INFLATE_BUFFER_TYPE:["Adaptive","Block"],COMPRESSION_METHOD:["Deflate","None (Store)"],OS:["MSDOS","Unix","Macintosh"],RAW_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.RawDeflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.RawDeflate.CompressionType.DYNAMIC,"None (Store)":Zlib.RawDeflate.CompressionType.NONE},run_raw_deflate:function(a,b){var c=new Zlib.RawDeflate(a,{compressionType:Compress.RAW_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},INFLATE_INDEX:0,INFLATE_BUFFER_SIZE:0,INFLATE_RESIZE:!1,INFLATE_VERIFY:!1,RAW_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.RawInflate.BufferType.ADAPTIVE,Block:Zlib.RawInflate.BufferType.BLOCK},run_raw_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.RawInflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.RAW_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]}),d=Array.prototype.slice.call(c.decompress());if(d.length>158&&93===d[0]&&93===d[5]){for(var e=!1,f=0;f<155;f+=5)93!==d[f]&&(e=!0);if(!e)throw"Error: Unable to inflate data"}return d},ZLIB_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.Deflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.Deflate.CompressionType.DYNAMIC,"None (Store)":Zlib.Deflate.CompressionType.NONE},run_zlib_deflate:function(a,b){var c=new Zlib.Deflate(a,{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},ZLIB_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.Inflate.BufferType.ADAPTIVE,Block:Zlib.Inflate.BufferType.BLOCK},run_zlib_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.Inflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.ZLIB_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]});return Array.prototype.slice.call(c.decompress())},GZIP_CHECKSUM:!1,run_gzip:function(a,b){var c=b[1],d=b[2],e={deflateOptions:{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[0]]},flags:{fhcrc:b[3]}};c.length&&(e.flags.fname=!0,e.filename=c),d.length&&(e.flags.fcommenct=!0,e.comment=d);var f=new Zlib.Gzip(a,e);return Array.prototype.slice.call(f.compress())},run_gunzip:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.Gunzip(a);return Array.prototype.slice.call(c.decompress())},PKZIP_FILENAME:"file.txt",ZIP_COMPRESSION_METHOD_LOOKUP:{Deflate:Zlib.Zip.CompressionMethod.DEFLATE,"None (Store)":Zlib.Zip.CompressionMethod.STORE},ZIP_OS_LOOKUP:{MSDOS:Zlib.Zip.OperatingSystem.MSDOS,Unix:Zlib.Zip.OperatingSystem.UNIX,Macintosh:Zlib.Zip.OperatingSystem.MACINTOSH},run_pkzip:function(a,b){var c=Utils.str_to_byte_array(b[2]),d={filename:Utils.str_to_byte_array(b[0]),comment:Utils.str_to_byte_array(b[1]),compressionMethod:Compress.ZIP_COMPRESSION_METHOD_LOOKUP[b[3]],os:Compress.ZIP_OS_LOOKUP[b[4]],deflateOption:{compressionType:Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[b[5]]}},e=new Zlib.Zip;return c.length&&e.setPassword(c),e.addFile(a,d),Array.prototype.slice.call(e.compress())},PKUNZIP_VERIFY:!1,run_pkunzip:function(a,b){var c={password:Utils.str_to_byte_array(b[0]),verify:b[1]},d="",e=new Zlib.Unzip(a,c),f=e.getFilenames(),g="<div style='padding: 5px;'>"+f.length+" file(s) found</div>\n";g+="<div class='panel-group' id='zip-accordion' role='tablist' aria-multiselectable='true'>",window.uzip=e;for(var h=0;h<f.length;h++)d=Utils.byte_array_to_utf8(e.decompress(f[h])),g+="<div class='panel panel-default'><div class='panel-heading' role='tab' id='heading"+h+"'><h4 class='panel-title'><a class='collapsed' role='button' data-toggle='collapse' data-parent='#zip-accordion' href='#collapse"+h+"' aria-expanded='true' aria-controls='collapse"+h+"'>"+f[h]+"<span class='pull-right'>"+d.length.toLocaleString()+" bytes</span></a></h4></div><div id='collapse"+h+"' class='panel-collapse collapse' role='tabpanel' aria-labelledby='heading"+h+"'><div class='panel-body'>"+Utils.escape_html(d)+"</div></div></div>";return g+"</div>"},run_bzip2_decompress:function(a,b){var c,d=new Uint8Array(a),e="";return c=bzip2.array(d),e=bzip2.simple(c)}},Convert={DISTANCE_UNITS:["[Metric]","Nanometres (nm)","Micrometres (\xb5m)","Millimetres (mm)","Centimetres (cm)","Metres (m)","Kilometers (km)","[/Metric]","[Imperial]","Thou (th)","Inches (in)","Feet (ft)","Yards (yd)","Chains (ch)","Furlongs (fur)","Miles (mi)","Leagues (lea)","[/Imperial]","[Maritime]","Fathoms (ftm)","Cables","Nautical miles","[/Maritime]","[Comparisons]","Cars (4m)","Buses (8.4m)","American football fields (91m)","Football pitches (105m)","[/Comparisons]","[Astronomical]","Earth-to-Moons","Earth's equators","Astronomical units (au)","Light-years (ly)","Parsecs (pc)","[/Astronomical]"],DISTANCE_FACTOR:{"Nanometres (nm)":1e-9,"Micrometres (\xb5m)":1e-6,"Millimetres (mm)":.001,"Centimetres (cm)":.01,"Metres (m)":1,"Kilometers (km)":1e3,"Thou (th)":254e-7,"Inches (in)":.0254,"Feet (ft)":.3048,"Yards (yd)":.9144,"Chains (ch)":20.1168,"Furlongs (fur)":201.168,"Miles (mi)":1609.344,"Leagues (lea)":4828.032,"Fathoms (ftm)":1.853184,Cables:185.3184,"Nautical miles":1853.184,"Cars (4m)":4,"Buses (8.4m)":8.4,"American football fields (91m)":91,"Football pitches (105m)":105,"Earth-to-Moons":38e7,"Earth's equators":40075016.686,"Astronomical units (au)":149597870700,"Light-years (ly)":9460730472580800,"Parsecs (pc)":30856776e9},run_distance:function(a,b){var c=b[0],d=b[1];return a*=Convert.DISTANCE_FACTOR[c],a/Convert.DISTANCE_FACTOR[d]},DATA_UNITS:["Bits (b)","Nibbles","Octets","Bytes (B)","[Binary bits (2^n)]","Kibibits (Kib)","Mebibits (Mib)","Gibibits (Gib)","Tebibits (Tib)","Pebibits (Pib)","Exbibits (Eib)","Zebibits (Zib)","Yobibits (Yib)","[/Binary bits (2^n)]","[Decimal bits (10^n)]","Decabits","Hectobits","Kilobits (kb)","Megabits (Mb)","Gigabits (Gb)","Terabits (Tb)","Petabits (Pb)","Exabits (Eb)","Zettabits (Zb)","Yottabits (Yb)","[/Decimal bits (10^n)]","[Binary bytes (8 x 2^n)]","Kibibytes (KiB)","Mebibytes (MiB)","Gibibytes (GiB)","Tebibytes (TiB)","Pebibytes (PiB)","Exbibytes (EiB)","Zebibytes (ZiB)","Yobibytes (YiB)","[/Binary bytes (8 x 2^n)]","[Decimal bytes (8 x 10^n)]","Kilobytes (KB)","Megabytes (MB)","Gigabytes (GB)","Terabytes (TB)","Petabytes (PB)","Exabytes (EB)","Zettabytes (ZB)","Yottabytes (YB)","[/Decimal bytes (8 x 10^n)]"],DATA_FACTOR:{"Bits (b)":1,Nibbles:4,Octets:8,"Bytes (B)":8,"Kibibits (Kib)":1024,"Mebibits (Mib)":1048576,"Gibibits (Gib)":1073741824,"Tebibits (Tib)":1099511627776,"Pebibits (Pib)":0x4000000000000,"Exbibits (Eib)":0x1000000000000000,"Zebibits (Zib)":0x400000000000000000,"Yobibits (Yib)":1.2089258196146292e24,Decabits:10,Hectobits:100,"Kilobits (Kb)":1e3,"Megabits (Mb)":1e6,"Gigabits (Gb)":1e9,"Terabits (Tb)":1e12,"Petabits (Pb)":1e15,"Exabits (Eb)":1e18,"Zettabits (Zb)":1e21,"Yottabits (Yb)":1e24,"Kibibytes (KiB)":8192,"Mebibytes (MiB)":8388608,"Gibibytes (GiB)":8589934592,"Tebibytes (TiB)":8796093022208,"Pebibytes (PiB)":9007199254740992,"Exbibytes (EiB)":0x8000000000000000,"Zebibytes (ZiB)":9.44473296573929e21,"Yobibytes (YiB)":9.671406556917033e24,"Kilobytes (KB)":8e3,"Megabytes (MB)":8e6,"Gigabytes (GB)":8e9,"Terabytes (TB)":8e12,"Petabytes (PB)":8e15,"Exabytes (EB)":8e18,"Zettabytes (ZB)":8e21,"Yottabytes (YB)":8e24},run_data_size:function(a,b){var c=b[0],d=b[1];return a*=Convert.DATA_FACTOR[c],a/Convert.DATA_FACTOR[d]},AREA_UNITS:["[Metric]","Square metre (sq m)","Square kilometre (sq km)","Centiare (ca)","Deciare (da)","Are (a)","Decare (daa)","Hectare (ha)","[/Metric]","[Imperial]","Square inch (sq in)","Square foot (sq ft)","Square yard (sq yd)","Square mile (sq mi)","Perch (sq per)","Rood (ro)","International acre (ac)","[/Imperial]","[US customary units]","US survey acre (ac)","US survey square mile (sq mi)","US survey township","[/US customary units]","[Nuclear physics]","Yoctobarn (yb)","Zeptobarn (zb)","Attobarn (ab)","Femtobarn (fb)","Picobarn (pb)","Nanobarn (nb)","Microbarn (\u03bcb)","Millibarn (mb)","Barn (b)","Kilobarn (kb)","Megabarn (Mb)","Outhouse","Shed","Planck area","[/Nuclear physics]","[Comparisons]","Washington D.C.","Isle of Wight","Wales","Texas","[/Comparisons]"],AREA_FACTOR:{"Square metre (sq m)":1,"Square kilometre (sq km)":1e6,"Centiare (ca)":1,"Deciare (da)":10,"Are (a)":100,"Decare (daa)":1e3,"Hectare (ha)":1e4,"Square inch (sq in)":64516e-8,"Square foot (sq ft)":.09290304,"Square yard (sq yd)":.83612736,"Square mile (sq mi)":2589988.110336,"Perch (sq per)":42.21,"Rood (ro)":1011,"International acre (ac)":4046.8564224,"US survey acre (ac)":4046.87261,"US survey square mile (sq mi)":2589998.470305239,"US survey township":93239944.9309886,"Yoctobarn (yb)":1e-52,"Zeptobarn (zb)":1e-49,"Attobarn (ab)":1e-46,"Femtobarn (fb)":1e-43,"Picobarn (pb)":1e-40,"Nanobarn (nb)":1e-37,"Microbarn (\u03bcb)":1e-34,"Millibarn (mb)":1e-31,"Barn (b)":1e-28,"Kilobarn (kb)":1e-25,"Megabarn (Mb)":1e-22,"Planck area":2.6e-70,Shed:1e-52,Outhouse:1e-34,"Washington D.C.":176119191.502848,"Isle of Wight":38e7,Wales:20779e6,Texas:696241e6},run_area:function(a,b){var c=b[0],d=b[1];return a*=Convert.AREA_FACTOR[c],a/Convert.AREA_FACTOR[d]},MASS_UNITS:["[Metric]","Yoctogram (yg)","Zeptogram (zg)","Attogram (ag)","Femtogram (fg)","Picogram (pg)","Nanogram (ng)","Microgram (\u03bcg)","Milligram (mg)","Centigram (cg)","Decigram (dg)","Gram (g)","Decagram (dag)","Hectogram (hg)","Kilogram (kg)","Megagram (Mg)","Tonne (t)","Gigagram (Gg)","Teragram (Tg)","Petagram (Pg)","Exagram (Eg)","Zettagram (Zg)","Yottagram (Yg)","[/Metric]","[Imperial Avoirdupois]","Grain (gr)","Dram (dr)","Ounce (oz)","Pound (lb)","Nail","Stone (st)","Quarter (gr)","Tod","US hundredweight (cwt)","Imperial hundredweight (cwt)","US ton (t)","Imperial ton (t)","[/Imperial Avoirdupois]","[Imperial Troy]","Grain (gr)","Pennyweight (dwt)","Troy dram (dr t)","Troy ounce (oz t)","Troy pound (lb t)","Mark","[/Imperial Troy]","[Archaic]","Wey","Wool wey","Suffolk wey","Wool sack","Coal sack","Load","Last","Flax or feather last","Gunpowder last","Picul","Rice last","[/Archaic]","[Comparisons]","Big Ben (14 tonnes)","Blue whale (180 tonnes)","International Space Station (417 tonnes)","Space Shuttle (2,041 tonnes)","RMS Titanic (52,000 tonnes)","Great Pyramid of Giza (6,000,000 tonnes)","Earth's oceans (1.4 yottagrams)","[/Comparisons]","[Astronomical]","A teaspoon of neutron star (5,500 million tonnes)","Lunar mass (ML)","Earth mass (M\u2295)","Jupiter mass (MJ)","Solar mass (M\u2609)","Sagittarius A* (7.5 x 10^36 kgs-ish)","Milky Way galaxy (1.2 x 10^42 kgs)","The observable universe (1.45 x 10^53 kgs)","[/Astronomical]"],MASS_FACTOR:{"Yoctogram (yg)":1e-24,"Zeptogram (zg)":1e-21,"Attogram (ag)":1e-18,"Femtogram (fg)":1e-15,"Picogram (pg)":1e-12,"Nanogram (ng)":1e-9,"Microgram (\u03bcg)":1e-6,"Milligram (mg)":.001,"Centigram (cg)":.01,"Decigram (dg)":.1,"Gram (g)":1,"Decagram (dag)":10,"Hectogram (hg)":100,"Kilogram (kg)":1e3,"Megagram (Mg)":1e6,"Tonne (t)":1e6,"Gigagram (Gg)":1e9,"Teragram (Tg)":1e12,"Petagram (Pg)":1e15,"Exagram (Eg)":1e18,"Zettagram (Zg)":1e21,"Yottagram (Yg)":1e24,"Grain (gr)":.06479891,"Dram (dr)":1.7718451953125,"Ounce (oz)":28.349523125,"Pound (lb)":453.59237,Nail:3175.14659,"Stone (st)":6350.29318,"Quarter (gr)":12700.58636,Tod:12700.58636,"US hundredweight (cwt)":45359.237,"Imperial hundredweight (cwt)":50802.34544,"US ton (t)":907184.74,"Imperial ton (t)":1016046.9088,"Pennyweight (dwt)":1.55517384,"Troy dram (dr t)":3.8879346,"Troy ounce (oz t)":31.1034768,"Troy pound (lb t)":373.2417216,Mark:248.8278144,Wey:76500,"Wool wey":101700,"Suffolk wey":161500,"Wool sack":153e3,"Coal sack":50802.34544,Load:918e3,Last:1836e3,"Flax or feather last":77e4,"Gunpowder last":109e4,Picul:60478.982,"Rice last":12e5,"Big Ben (14 tonnes)":14e6,"Blue whale (180 tonnes)":18e7,"International Space Station (417 tonnes)":417e6,"Space Shuttle (2,041 tonnes)":2041e6,"RMS Titanic (52,000 tonnes)":52e9,"Great Pyramid of Giza (6,000,000 tonnes)":6e12,"Earth's oceans (1.4 yottagrams)":1.4e24,"A teaspoon of neutron star (5,500 million tonnes)":55e14,"Lunar mass (ML)":7.342e25,"Earth mass (M\u2295)":5.97219e27,"Jupiter mass (MJ)":1.8981411476999997e30,"Solar mass (M\u2609)":1.98855e33,"Sagittarius A* (7.5 x 10^36 kgs-ish)":7.5e39,"Milky Way galaxy (1.2 x 10^42 kgs)":1.2e45,"The observable universe (1.45 x 10^53 kgs)":1.45e56},run_mass:function(a,b){var c=b[0],d=b[1];return a*=Convert.MASS_FACTOR[c],a/Convert.MASS_FACTOR[d]},SPEED_UNITS:["[Metric]","Metres per second (m/s)","Kilometres per hour (km/h)","[/Metric]","[Imperial]","Miles per hour (mph)","Knots (kn)","[/Imperial]","[Comparisons]","Human hair growth rate","Bamboo growth rate","World's fastest snail","Usain Bolt's top speed","Jet airliner cruising speed","Concorde","SR-71 Blackbird","Space Shuttle","International Space Station","[/Comparisons]","[Scientific]","Sound in standard atmosphere","Sound in water","Lunar escape velocity","Earth escape velocity","Earth's solar orbit","Solar system's Milky Way orbit","Milky Way relative to the cosmic microwave background","Solar escape velocity","Neutron star escape velocity (0.3c)","Light in a diamond (0.4136c)","Signal in an optical fibre (0.667c)","Light (c)","[/Scientific]"],SPEED_FACTOR:{"Metres per second (m/s)":1,"Kilometres per hour (km/h)":.2778,"Miles per hour (mph)":.44704,"Knots (kn)":.5144,"Human hair growth rate":4.8e-9,"Bamboo growth rate":14e-6,"World's fastest snail":.00275,"Usain Bolt's top speed":12.42,"Jet airliner cruising speed":250,Concorde:603,"SR-71 Blackbird":981,"Space Shuttle":1400,"International Space Station":7700,"Sound in standard atmosphere":340.3,"Sound in water":1500,"Lunar escape velocity":2375,"Earth escape velocity":11200,"Earth's solar orbit":29800,"Solar system's Milky Way orbit":2e5,"Milky Way relative to the cosmic microwave background":552e3,"Solar escape velocity":617700,"Neutron star escape velocity (0.3c)":1e8,"Light in a diamond (0.4136c)":124e6,"Signal in an optical fibre (0.667c)":2e8,"Light (c)":299792458},run_speed:function(a,b){var c=b[0],d=b[1];return a*=Convert.SPEED_FACTOR[c],a/Convert.SPEED_FACTOR[d]}},DateTime={UNITS:["Seconds (s)","Milliseconds (ms)","Microseconds (\u03bcs)","Nanoseconds (ns)"],run_from_unix_timestamp:function(a,b){var c,d=b[0];if(a=parseFloat(a),"Seconds (s)"===d)return c=moment.unix(a),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss")+" UTC";if("Milliseconds (ms)"===d)return c=moment(a),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";if("Microseconds (\u03bcs)"===d)return c=moment(a/1e3),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";if("Nanoseconds (ns)"===d)return c=moment(a/1e6),c.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS")+" UTC";throw"Unrecognised unit"},run_to_unix_timestamp:function(a,b){var c=b[0],d=moment(a);if("Seconds (s)"===c)return d.unix();if("Milliseconds (ms)"===c)return d.valueOf();if("Microseconds (\u03bcs)"===c)return 1e3*d.valueOf();if("Nanoseconds (ns)"===c)return 1e6*d.valueOf();throw"Unrecognised unit"},DATETIME_FORMATS:[{name:"Standard date and time",value:"DD/MM/YYYY HH:mm:ss"},{name:"American-style date and time",value:"MM/DD/YYYY HH:mm:ss"},{name:"International date and time",value:"YYYY-MM-DD HH:mm:ss"},{name:"Verbose date and time",value:"dddd Do MMMM YYYY HH:mm:ss Z z"},{name:"UNIX timestamp (seconds)",value:"X"},{name:"UNIX timestamp offset (milliseconds)",value:"x"},{name:"Automatic",value:""}],INPUT_FORMAT_STRING:"DD/MM/YYYY HH:mm:ss",OUTPUT_FORMAT_STRING:"dddd Do MMMM YYYY HH:mm:ss Z z",TIMEZONES:["UTC"].concat(moment.tz.names()),run_translate_format:function(a,b){var c,d=b[1],e=b[2],f=b[3],g=b[4];try{if(c=moment.tz(a,d,e),!c||"Invalid date"===c.format())throw Error}catch(a){return"Invalid format.\n\n"+DateTime.FORMAT_EXAMPLES}return c.tz(g).format(f)},run_parse:function(a,b){var c,d=b[1],e=b[2],f="";try{if(c=moment.tz(a,d,e),!c||"Invalid date"===c.format())throw Error}catch(a){return"Invalid format.\n\n"+DateTime.FORMAT_EXAMPLES}return f+="Date: "+c.format("dddd Do MMMM YYYY")+"\nTime: "+c.format("HH:mm:ss")+"\nPeriod: "+c.format("A")+"\nTimezone: "+c.format("z")+"\nUTC offset: "+c.format("ZZ")+"\n\nDaylight Saving Time: "+c.isDST()+"\nLeap year: "+c.isLeapYear()+"\nDays in this month: "+c.daysInMonth()+"\n\nDay of year: "+c.dayOfYear()+"\nWeek number: "+c.weekYear()+"\nQuarter: "+c.quarter()},FORMAT_EXAMPLES:"Format string tokens:\n\n<table class='table table-striped table-hover table-condensed table-bordered' style='font-family: sans-serif'> <thead> <tr> <th>Category</th> <th>Token</th> <th>Output</th> </tr> </thead> <tbody> <tr> <td><b>Month</b></td> <td>M</td> <td>1 2 ... 11 12</td> </tr> <tr> <td></td> <td>Mo</td> <td>1st 2nd ... 11th 12th</td> </tr> <tr> <td></td> <td>MM</td> <td>01 02 ... 11 12</td> </tr> <tr> <td></td> <td>MMM</td> <td>Jan Feb ... Nov Dec</td> </tr> <tr> <td></td> <td>MMMM</td> <td>January February ... November December</td> </tr> <tr> <td><b>Quarter</b></td> <td>Q</td> <td>1 2 3 4</td> </tr> <tr> <td><b>Day of Month</b></td> <td>D</td> <td>1 2 ... 30 31</td> </tr> <tr> <td></td> <td>Do</td> <td>1st 2nd ... 30th 31st</td> </tr> <tr> <td></td> <td>DD</td> <td>01 02 ... 30 31</td> </tr> <tr> <td><b>Day of Year</b></td> <td>DDD</td> <td>1 2 ... 364 365</td> </tr> <tr> <td></td> <td>DDDo</td> <td>1st 2nd ... 364th 365th</td> </tr> <tr> <td></td> <td>DDDD</td> <td>001 002 ... 364 365</td> </tr> <tr> <td><b>Day of Week</b></td> <td>d</td> <td>0 1 ... 5 6</td> </tr> <tr> <td></td> <td>do</td> <td>0th 1st ... 5th 6th</td> </tr> <tr> <td></td> <td>dd</td> <td>Su Mo ... Fr Sa</td> </tr> <tr> <td></td> <td>ddd</td> <td>Sun Mon ... Fri Sat</td> </tr> <tr> <td></td> <td>dddd</td> <td>Sunday Monday ... Friday Saturday</td> </tr> <tr> <td><b>Day of Week (Locale)</b></td> <td>e</td> <td>0 1 ... 5 6</td> </tr> <tr> <td><b>Day of Week (ISO)</b></td> <td>E</td> <td>1 2 ... 6 7</td> </tr> <tr> <td><b>Week of Year</b></td> <td>w</td> <td>1 2 ... 52 53</td> </tr> <tr> <td></td> <td>wo</td> <td>1st 2nd ... 52nd 53rd</td> </tr> <tr> <td></td> <td>ww</td> <td>01 02 ... 52 53</td> </tr> <tr> <td><b>Week of Year (ISO)</b></td> <td>W</td> <td>1 2 ... 52 53</td> </tr> <tr> <td></td> <td>Wo</td> <td>1st 2nd ... 52nd 53rd</td> </tr> <tr> <td></td> <td>WW</td> <td>01 02 ... 52 53</td> </tr> <tr> <td><b>Year</b></td> <td>YY</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>YYYY</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>Week Year</b></td> <td>gg</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>gggg</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>Week Year (ISO)</b></td> <td>GG</td> <td>70 71 ... 29 30</td> </tr> <tr> <td></td> <td>GGGG</td> <td>1970 1971 ... 2029 2030</td> </tr> <tr> <td><b>AM/PM</b></td> <td>A</td> <td>AM PM</td> </tr> <tr> <td></td> <td>a</td> <td>am pm</td> </tr> <tr> <td><b>Hour</b></td> <td>H</td> <td>0 1 ... 22 23</td> </tr> <tr> <td></td> <td>HH</td> <td>00 01 ... 22 23</td> </tr> <tr> <td></td> <td>h</td> <td>1 2 ... 11 12</td> </tr> <tr> <td></td> <td>hh</td> <td>01 02 ... 11 12</td> </tr> <tr> <td><b>Minute</b></td> <td>m</td> <td>0 1 ... 58 59</td> </tr> <tr> <td></td> <td>mm</td> <td>00 01 ... 58 59</td> </tr> <tr> <td><b>Second</b></td> <td>s</td> <td>0 1 ... 58 59</td> </tr> <tr> <td></td> <td>ss</td> <td>00 01 ... 58 59</td> </tr> <tr> <td><b>Fractional Second</b></td> <td>S</td> <td>0 1 ... 8 9</td> </tr> <tr> <td></td> <td>SS</td> <td>00 01 ... 98 99</td> </tr> <tr> <td></td> <td>SSS</td> <td>000 001 ... 998 999</td> </tr> <tr> <td></td> <td>SSSS ... SSSSSSSSS</td> <td>000[0..] 001[0..] ... 998[0..] 999[0..]</td> </tr> <tr> <td><b>Timezone</b></td> <td>z or zz</td> <td>EST CST ... MST PST</td> </tr> <tr> <td></td> <td>Z</td> <td>-07:00 -06:00 ... +06:00 +07:00</td> </tr> <tr> <td></td> <td>ZZ</td> <td>-0700 -0600 ... +0600 +0700</td> </tr> <tr> <td><b>Unix Timestamp</b></td> <td>X</td> <td>1360013296</td> </tr> <tr> <td><b>Unix Millisecond Timestamp</b></td> <td>x</td> <td>1360013296123</td> </tr> </tbody></table>"},Endian={DATA_FORMAT:["Hex","Raw"],WORD_LENGTH:4,PAD_INCOMPLETE_WORDS:!0,run_swap_endianness:function(a,b){var c=b[0],d=b[1],e=b[2],f=[],g=[],h=[],i=0,j=0;if(d<=0)return"Word length must be greater than 0";switch(c){case"Hex":f=Utils.from_hex(a);break;case"Raw":f=Utils.str_to_byte_array(a);break;default:f=a}for(i=0;i<f.length;i+=d){var k=f.slice(i,i+d);if(e&&k.length<d)for(j=k.length;j<d;j++)k.push(0);h.push(k)}for(i=0;i<h.length;i++)for(j=h[i].length;j--;)g.push(h[i][j]);switch(c){case"Hex":return Utils.to_hex(g);case"Raw":return Utils.byte_array_to_utf8(g);default:return g}}},Entropy={CHUNK_SIZE:1e3,run_entropy:function(a,b){var c=b[0],d="",e=Entropy._calc_entropy(a);d+="Shannon entropy: "+e+"\n<br><canvas id='chart-area'></canvas><br>\n- 0 represents no randomness (i.e. all the bytes in the data have the same value) whereas 8, the maximum, represents a completely random string.\n- Standard English text usually falls somewhere between 3.5 and 5.\n- Properly encrypted or compressed data of a reasonable length should have an entropy of over 7.5.\n\nThe following results show the entropy of chunks of the input data. Chunks with particularly high entropy could suggest encrypted or compressed sections.\n\n<br><script> var canvas = document.getElementById('chart-area'), parent_rect = canvas.parentNode.getBoundingClientRect(), entropy = "+e+", height = parent_rect.height * 0.25; canvas.width = parent_rect.width * 0.95; canvas.height = height > 150 ? 150 : height; CanvasComponents.draw_scale_bar(canvas, entropy, 8, [ { label: 'English text', min: 3.5, max: 5 },{ label: 'Encrypted/compressed', min: 7.5, max: 8 } ]); <\/script>";var f=0;if(0!==c)for(var g=0;g<a.length;g+=c)f=Entropy._calc_entropy(a.slice(g,g+c)),d+="Bytes "+g+" to "+(g+c)+": "+f+"\n";else d+="Chunk size cannot be 0.";return d},FREQ_ZEROS:!1,run_freq_distrib:function(a,b){if(!a.length)return"No data";for(var c=new Array(256),d=new Array(256),e=a.length,f=b[0],g=0;g<256;g++)c[g]=0;for(g=0;g<e;g++)c[a[g]]++;var h=0;for(g=0;g<256;g++)c[g]>0&&h++,d[g]=c[g]/e*100;var i="<canvas id='chart-area'></canvas><br>Total data length: "+e+"\nNumber of bytes represented: "+h+"\nNumber of bytes not represented: "+(256-h)+"\n\nByte Percentage\n<script> var canvas = document.getElementById('chart-area'), parent_rect = canvas.parentNode.getBoundingClientRect(), scores = "+JSON.stringify(d)+"; canvas.width = parent_rect.width * 0.95; canvas.height = parent_rect.height * 0.9; CanvasComponents.draw_bar_chart(canvas, scores, 'Byte', 'Frequency %', 16, 6); <\/script>";for(g=0;g<256;g++)(c[g]||f)&&(i+=" "+Utils.hex(g,2)+" ("+Utils.pad_right(d[g].toFixed(2).replace(".00","")+"%)",8)+Array(Math.ceil(d[g])+1).join("|")+"\n");return i},_calc_entropy:function(a){for(var b=[],c=a.unique(),d=Utils.byte_array_to_chars(a),e=0;e<c.length;e++)b.push(d.count(Utils.chr(c[e]))/a.length);var f,g=0;for(e=0;e<b.length;e++)f=b[e],g+=f*Math.log(f)/Math.log(2);return-g}},Extract={_search:function(a,b,c,d){for(var e,f="",g=0;e=b.exec(a);)c&&c.test(e[0])||(g++,f+=e[0]+"\n");return d&&(f="Total found: "+g+"\n\n"+f),f},MIN_STRING_LEN:3,DISPLAY_TOTAL:!1,run_strings:function(a,b){var c=b[0]||Extract.MIN_STRING_LEN,d=b[1],e="[A-Z\\d/\\-:.,_$%'\"()<>= !\\[\\]{}@]",f=new RegExp(e+"{"+c+",}","ig");return Extract._search(a,f,null,d)},INCLUDE_IPV4:!0,INCLUDE_IPV6:!1,REMOVE_LOCAL:!1,run_ip:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g="(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?",h="((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|(?![\\dA-F])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})",i="";if(c&&d?i=g+"|"+h:c?i=g:d&&(i=h),i){var j=new RegExp(i,"ig");if(e){var k="10\\..+",l="192\\.168\\..+",m="172\\.(?:1[6-9]|2\\d|3[01])\\..+",n="127\\..+",o=new RegExp("^(?:"+k+"|"+l+"|"+m+"|"+n+")");return Extract._search(a,j,o,f)}return Extract._search(a,j,null,f)}return""},run_email:function(a,b){var c=b[0],d=/\w[-.\w]*@[-\w]+(?:\.[-\w]+)*\.[A-Z]{2,4}/gi;return Extract._search(a,d,null,c)},run_mac:function(a,b){var c=b[0],d=/[A-F\d]{2}(?:[:-][A-F\d]{2}){5}/gi;return Extract._search(a,d,null,c)},run_urls:function(a,b){var c=b[0],d="[A-Z]+://",e="[-\\w]+(?:\\.\\w[-\\w]*)+",f=":\\d+",g="/[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]*";g+="(?:[.!,?]+[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]+)*";var h=new RegExp(d+e+"(?:"+f+")?(?:"+g+")?","ig");return Extract._search(a,h,null,c)},run_domains:function(a,b){var c=b[0],d="https?://",e="[-\\w\\.]+",f="\\.(?:com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+",g=new RegExp("(?:"+d+")?"+e+f,"ig");return Extract._search(a,g,null,c)},INCLUDE_WIN_PATH:!0,INCLUDE_UNIX_PATH:!0,run_file_paths:function(a,b){var c=b[0],d=b[1],e=b[2],f="[A-Z]:\\\\",g="[A-Z\\d][A-Z\\d\\- '_\\(\\)]{0,61}",h="[A-Z\\d]{1,6}",i=f+"(?:"+g+"\\\\?)*"+g+"(?:\\."+h+")?",j="(?:/[A-Z\\d.][A-Z\\d\\-.]{0,61})+",k="";if(c&&d?k=i+"|"+j:c?k=i:d&&(k=j),k){var l=new RegExp(k,"ig");return Extract._search(a,l,null,e)}return""},run_dates:function(a,b){var c=b[0],d="(?:19|20)\\d\\d[- /.](?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])",e="(?:0[1-9]|[12][0-9]|3[01])[- /.](?:0[1-9]|1[012])[- /.](?:19|20)\\d\\d",f="(?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])[- /.](?:19|20)\\d\\d",g=new RegExp(d+"|"+e+"|"+f,"ig");return Extract._search(a,g,null,c)},run_all_idents:function(a,b){var c="";return c+="IP addresses\n",c+=Extract.run_ip(a,[!0,!0,!1]),c+="\nEmail addresses\n",c+=Extract.run_email(a,[]),c+="\nMAC addresses\n",c+=Extract.run_mac(a,[]),c+="\nURLs\n",c+=Extract.run_urls(a,[]),c+="\nDomain names\n",c+=Extract.run_domains(a,[]),c+="\nFile paths\n",c+=Extract.run_file_paths(a,[!0,!0]),c+="\nDates\n",c+=Extract.run_dates(a,[])}},FileType={run_detect:function(a,b){var c=FileType._magic_type(a);if(c){ +var d="File extension: "+c.ext+"\nMIME type: "+c.mime;return c.desc&&c.desc.length&&(d+="\nDescription: "+c.desc),d}return"Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?"},IGNORE_COMMON_BYTE_SEQUENCES:!0,run_scan_for_embedded_files:function(a,b){for(var c,d="Scanning data for 'magic bytes' which may indicate embedded files. The following results may be false positives and should not be treat as reliable. Any suffiently long file is likely to contain these magic bytes coincidentally.\n",e=b[0],f=["ico","ttf",""],g=0,h=0,i=0;i<a.length;i++)if(c=FileType._magic_type(a.slice(i))){if(e&&f.indexOf(c.ext)>-1){h++;continue}g++,d+="\nOffset "+i+" (0x"+Utils.hex(i)+"):\n File extension: "+c.ext+"\n MIME type: "+c.mime+"\n",c.desc&&c.desc.length&&(d+=" Description: "+c.desc+"\n")}return 0===g&&(d+="\nNo embedded files were found."),h>0&&(d+="\n\n"+h,d+=1===h?" file type was detected that has a common byte sequence. This is likely to be a false positive.":" file types were detected that have common byte sequences. These are likely to be false positives.",d+=" Run this operation with the 'Ignore common byte sequences' option unchecked to see details."),d},_magic_type:function(a){return a&&a.length>1?255===a[0]&&216===a[1]&&255===a[2]?{ext:"jpg",mime:"image/jpeg"}:137===a[0]&&80===a[1]&&78===a[2]&&71===a[3]?{ext:"png",mime:"image/png"}:71===a[0]&&73===a[1]&&70===a[2]?{ext:"gif",mime:"image/gif"}:87===a[8]&&69===a[9]&&66===a[10]&&80===a[11]?{ext:"webp",mime:"image/webp"}:(73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3])&&67===a[8]&&82===a[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3]?{ext:"tif",mime:"image/tiff"}:66===a[0]&&77===a[1]?{ext:"bmp",mime:"image/bmp"}:73===a[0]&&73===a[1]&&188===a[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===a[0]&&66===a[1]&&80===a[2]&&83===a[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===a[0]&&75===a[1]&&3===a[2]&&4===a[3]&&109===a[30]&&105===a[31]&&109===a[32]&&101===a[33]&&116===a[34]&&121===a[35]&&112===a[36]&&101===a[37]&&97===a[38]&&112===a[39]&&112===a[40]&&108===a[41]&&105===a[42]&&99===a[43]&&97===a[44]&&116===a[45]&&105===a[46]&&111===a[47]&&110===a[48]&&47===a[49]&&101===a[50]&&112===a[51]&&117===a[52]&&98===a[53]&&43===a[54]&&122===a[55]&&105===a[56]&&112===a[57]?{ext:"epub",mime:"application/epub+zip"}:80!==a[0]||75!==a[1]||3!==a[2]&&5!==a[2]&&7!==a[2]||4!==a[3]&&6!==a[3]&&8!==a[3]?117===a[257]&&115===a[258]&&116===a[259]&&97===a[260]&&114===a[261]?{ext:"tar",mime:"application/x-tar"}:82!==a[0]||97!==a[1]||114!==a[2]||33!==a[3]||26!==a[4]||7!==a[5]||0!==a[6]&&1!==a[6]?31===a[0]&&139===a[1]&&8===a[2]?{ext:"gz",mime:"application/gzip"}:66===a[0]&&90===a[1]&&104===a[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===a[0]&&122===a[1]&&188===a[2]&&175===a[3]&&39===a[4]&&28===a[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===a[0]&&1===a[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===a[0]&&0===a[1]&&0===a[2]&&(24===a[3]||32===a[3])&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]||51===a[0]&&103===a[1]&&112===a[2]&&53===a[3]||0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&109===a[8]&&112===a[9]&&52===a[10]&&50===a[11]&&109===a[16]&&112===a[17]&&52===a[18]&&49===a[19]&&109===a[20]&&112===a[21]&&52===a[22]&&50===a[23]&&105===a[24]&&115===a[25]&&111===a[26]&&109===a[27]?{ext:"mp4",mime:"video/mp4"}:0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&86===a[10]?{ext:"m4v",mime:"video/x-m4v"}:77===a[0]&&84===a[1]&&104===a[2]&&100===a[3]?{ext:"mid",mime:"audio/midi"}:109===a[31]&&97===a[32]&&116===a[33]&&114===a[34]&&111===a[35]&&115===a[36]&&107===a[37]&&97===a[38]?{ext:"mkv",mime:"video/x-matroska"}:26===a[0]&&69===a[1]&&223===a[2]&&163===a[3]?{ext:"webm",mime:"video/webm"}:0===a[0]&&0===a[1]&&0===a[2]&&20===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]?{ext:"mov",mime:"video/quicktime"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&65===a[8]&&86===a[9]&&73===a[10]?{ext:"avi",mime:"video/x-msvideo"}:48===a[0]&&38===a[1]&&178===a[2]&&117===a[3]&&142===a[4]&&102===a[5]&&207===a[6]&&17===a[7]&&166===a[8]&&217===a[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===a[0]&&0===a[1]&&1===a[2]&&"b"===a[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===a[0]&&68===a[1]&&51===a[2]||255===a[0]&&251===a[1]?{ext:"mp3",mime:"audio/mpeg"}:102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&65===a[10]||77===a[0]&&52===a[1]&&65===a[2]&&32===a[3]?{ext:"m4a",mime:"audio/m4a"}:79===a[0]&&103===a[1]&&103===a[2]&&83===a[3]?{ext:"ogg",mime:"audio/ogg"}:102===a[0]&&76===a[1]&&97===a[2]&&67===a[3]?{ext:"flac",mime:"audio/x-flac"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&87===a[8]&&65===a[9]&&86===a[10]&&69===a[11]?{ext:"wav",mime:"audio/x-wav"}:35===a[0]&&33===a[1]&&65===a[2]&&77===a[3]&&82===a[4]&&10===a[5]?{ext:"amr",mime:"audio/amr"}:37===a[0]&&80===a[1]&&68===a[2]&&70===a[3]?{ext:"pdf",mime:"application/pdf"}:77===a[0]&&90===a[1]?{ext:"exe",mime:"application/x-msdownload"}:67!==a[0]&&70!==a[0]||87!==a[1]||83!==a[2]?123===a[0]&&92===a[1]&&114===a[2]&&116===a[3]&&102===a[4]?{ext:"rtf",mime:"application/rtf"}:119===a[0]&&79===a[1]&&70===a[2]&&70===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff",mime:"application/font-woff"}:119===a[0]&&79===a[1]&&70===a[2]&&50===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff2",mime:"application/font-woff"}:76===a[34]&&80===a[35]&&(2===a[8]&&0===a[9]&&1===a[10]||1===a[8]&&0===a[9]&&0===a[10]||2===a[8]&&0===a[9]&&2===a[10])?{ext:"eot",mime:"application/octet-stream"}:0===a[0]&&1===a[1]&&0===a[2]&&0===a[3]&&0===a[4]?{ext:"ttf",mime:"application/font-sfnt"}:79===a[0]&&84===a[1]&&84===a[2]&&79===a[3]&&0===a[4]?{ext:"otf",mime:"application/font-sfnt"}:0===a[0]&&0===a[1]&&1===a[2]&&0===a[3]?{ext:"ico",mime:"image/x-icon"}:70===a[0]&&76===a[1]&&86===a[2]&&1===a[3]?{ext:"flv",mime:"video/x-flv"}:37===a[0]&&33===a[1]?{ext:"ps",mime:"application/postscript"}:253===a[0]&&55===a[1]&&122===a[2]&&88===a[3]&&90===a[4]&&0===a[5]?{ext:"xz",mime:"application/x-xz"}:83===a[0]&&81===a[1]&&76===a[2]&&105===a[3]?{ext:"sqlite",mime:"application/x-sqlite3"}:31===a[0]&&157===a[1]||31===a[0]&&160===a[1]?{ext:"z, tar.z",mime:"application/x-gtar"}:127===a[0]&&69===a[1]&&76===a[2]&&70===a[3]?{ext:"none, axf, bin, elf, o, prx, puff, so",mime:"application/x-executable",desc:"Executable and Linkable Format file. No standard file extension."}:202===a[0]&&254===a[1]&&186===a[2]&&190===a[3]?{ext:"class",mime:"application/java-vm"}:239===a[0]&&187===a[1]&&191===a[2]?{ext:"txt",mime:"text/plain",desc:"UTF-8 encoded Unicode byte order mark detected, commonly but not exclusively seen in text files."}:255===a[0]&&254===a[1]&&0===a[2]&&0===a[3]?{ext:"",mime:"",desc:"Little-endian UTF-32 encoded Unicode byte order mark detected."}:255===a[0]&&254===a[1]?{ext:"",mime:"",desc:"Little-endian UTF-16 encoded Unicode byte order mark detected."}:67===a[32769]&&68===a[32770]&&48===a[32771]&&48===a[32772]&&49===a[32773]||67===a[34817]&&68===a[34818]&&48===a[34819]&&48===a[34820]&&49===a[34821]||67===a[36865]&&68===a[36866]&&48===a[36867]&&48===a[36868]&&49===a[36869]?{ext:"iso",mime:"application/octet-stream",desc:"ISO 9660 CD/DVD image file"}:208===a[0]&&207===a[1]&&17===a[2]&&224===a[3]&&161===a[4]&&177===a[5]&&26===a[6]&&225===a[7]?{ext:"doc, xls, ppt",mime:"application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint",desc:"Microsoft Office documents"}:100===a[0]&&101===a[1]&&120===a[2]&&10===a[3]&&48===a[4]&&51===a[5]&&53===a[6]&&0===a[7]?{ext:"dex",mime:"application/octet-stream",desc:"Dalvik Executable (Android)"}:75===a[0]&&68===a[1]&&77===a[2]?{ext:"vmdk",mime:"application/vmdk, application/x-virtualbox-vmdk"}:67===a[0]&&114===a[1]&&50===a[2]&&52===a[3]?{ext:"crx",mime:"application/crx",desc:"Google Chrome extension or packaged app"}:null:{ext:"swf",mime:"application/x-shockwave-flash"}:{ext:"rar",mime:"application/x-rar-compressed"}:{ext:"zip",mime:"application/zip"}:null}},HTML={CONVERT_ALL:!1,CONVERT_OPTIONS:["Named entities where possible","Numeric entities","Hex entities"],run_to_entity:function(a,b){for(var c=b[0],d="Numeric entities"===b[1],e="Hex entities"===b[1],f=Utils.str_to_charcode(a),g="",h=0;h<f.length;h++)g+=c&&d?"&#"+f[h]+";":c&&e?"&#x"+Utils.hex(f[h])+";":c?HTML._byte_to_entity[f[h]]||"&#"+f[h]+";":d?f[h]>255||HTML._byte_to_entity.hasOwnProperty(f[h])?"&#"+f[h]+";":Utils.chr(f[h]):e?f[h]>255||HTML._byte_to_entity.hasOwnProperty(f[h])?"&#x"+Utils.hex(f[h])+";":Utils.chr(f[h]):HTML._byte_to_entity[f[h]]||(f[h]>255?"&#"+f[h]+";":Utils.chr(f[h]));return g},run_from_entity:function(a,b){for(var c,d=/&(#?x?[a-zA-Z0-9]{1,8});/g,e="",f=0;c=d.exec(a);){for(;f<c.index;)e+=a[f++];var g=HTML._entity_to_byte[c[1]];if(g)e+=Utils.chr(g);else if(!g&&"#"===c[1][0]&&c[1].length>1&&/^#\d{1,5}$/.test(c[1])){var h=c[1].slice(1,c[1].length);e+=Utils.chr(parseInt(h,10))}else if(!g&&"#"===c[1][0]&&c[1].length>3&&/^#x[\dA-F]{2,8}$/i.test(c[1])){var i=c[1].slice(2,c[1].length);e+=Utils.chr(parseInt(i,16))}else for(;f<d.lastIndex;)e+=a[f++];f=d.lastIndex}for(;f<a.length;)e+=a[f++];return e},REMOVE_INDENTATION:!0,REMOVE_LINE_BREAKS:!0,run_strip_tags:function(a,b){var c=b[0],d=b[1];return a=Utils.strip_html_tags(a),c&&(a=a.replace(/\n[ \f\t]+/g,"\n")),d&&(a=a.replace(/^\s*\n/,"").replace(/(\n\s*){2,}/g,"\n")),a},run_parse_colour_code:function(a,b){var c=null,d=0,e=0,f=0,g=1;if(c=a.match(/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i))d=parseInt(c[1],16),e=parseInt(c[2],16),f=parseInt(c[3],16);else if(c=a.match(/rgba?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)(?:,\s?(\d(?:\.\d+)?))?\)/i))d=parseFloat(c[1]),e=parseFloat(c[2]),f=parseFloat(c[3]),g=c[4]?parseFloat(c[4]):1;else if(c=a.match(/hsla?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)%,\s?(\d{1,3}(?:\.\d+)?)%(?:,\s?(\d(?:\.\d+)?))?\)/i)){var h=parseFloat(c[1])/360,i=parseFloat(c[2])/100,j=parseFloat(c[3])/100,k=HTML._hsl_to_rgb(h,i,j);d=k[0],e=k[1],f=k[2],g=c[4]?parseFloat(c[4]):1}else if(c=a.match(/cmyk\((\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?)\)/i)){var l=parseFloat(c[1]),m=parseFloat(c[2]),n=parseFloat(c[3]),o=parseFloat(c[4]);d=Math.round(255*(1-l)*(1-o)),e=Math.round(255*(1-m)*(1-o)),f=Math.round(255*(1-n)*(1-o))}var p=HTML._rgb_to_hsl(d,e,f),q=Math.round(360*p[0]),r=Math.round(100*p[1]),s=Math.round(100*p[2]),t=1-Math.max(d/255,e/255,f/255),u=(1-d/255-t)/(1-t),c=(1-e/255-t)/(1-t),v=(1-f/255-t)/(1-t);u=isNaN(u)?"0":u.toFixed(2),c=isNaN(c)?"0":c.toFixed(2),v=isNaN(v)?"0":v.toFixed(2),t=t.toFixed(2);var w="#"+Utils.pad_left(Math.round(d).toString(16),2)+Utils.pad_left(Math.round(e).toString(16),2)+Utils.pad_left(Math.round(f).toString(16),2),x="rgb("+d+", "+e+", "+f+")",y="rgba("+d+", "+e+", "+f+", "+g+")",z="hsl("+q+", "+r+"%, "+s+"%)",A="hsla("+q+", "+r+"%, "+s+"%, "+g+")",B="cmyk("+u+", "+c+", "+v+", "+t+")";return"<div id='colorpicker' style='display: inline-block'></div>Hex: "+w+"\nRGB: "+x+"\nRGBA: "+y+"\nHSL: "+z+"\nHSLA: "+A+"\nCMYK: "+B+"<script> $('#colorpicker').colorpicker({ format: 'rgba', color: '"+y+"', container: true, inline: true, }).on('changeColor', function(e) { var color = e.color.toRGB(); document.getElementById('input-text').value = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + color.a + ')'; window.app.auto_bake(); }); <\/script>"},_hsl_to_rgb:function(a,b,c){var d,e,f;if(0===b)d=e=f=c;else{var g=function(a,b,c){return c<0&&(c+=1),c>1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},h=c<.5?c*(1+b):c+b-c*b,i=2*c-h;d=g(i,h,a+1/3),e=g(i,h,a),f=g(i,h,a-1/3)}return[Math.round(255*d),Math.round(255*e),Math.round(255*f)]},_rgb_to_hsl:function(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f===g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(b<c?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return[d,e,h]},_byte_to_entity:{34:""",38:"&",39:"'",60:"<",62:">",160:" ",161:"¡",162:"¢",163:"£",164:"¤",165:"¥",166:"¦",167:"§",168:"¨",169:"©",170:"ª",171:"«",172:"¬",173:"­",174:"®",175:"¯",176:"°",177:"±",178:"²",179:"³",180:"´",181:"µ",182:"¶",183:"·",184:"¸",185:"¹",186:"º",187:"»",188:"¼",189:"½",190:"¾",191:"¿",192:"À",193:"Á",194:"Â",195:"Ã",196:"Ä",197:"Å",198:"Æ",199:"Ç",200:"È",201:"É",202:"Ê",203:"Ë",204:"Ì",205:"Í",206:"Î",207:"Ï",208:"Ð",209:"Ñ",210:"Ò",211:"Ó",212:"Ô",213:"Õ",214:"Ö",215:"×",216:"Ø",217:"Ù",218:"Ú",219:"Û",220:"Ü",221:"Ý",222:"Þ",223:"ß",224:"à",225:"á",226:"â",227:"ã",228:"ä",229:"å",230:"æ",231:"ç",232:"è",233:"é",234:"ê",235:"ë",236:"ì",237:"í",238:"î",239:"ï",240:"ð",241:"ñ",242:"ò",243:"ó",244:"ô",245:"õ",246:"ö",247:"÷",248:"ø",249:"ù",250:"ú",251:"û",252:"ü",253:"ý",254:"þ",255:"ÿ",338:"Œ",339:"œ",352:"Š",353:"š",376:"Ÿ",402:"ƒ",710:"ˆ",732:"˜",913:"Α",914:"Β",915:"Γ",916:"Δ",917:"Ε",918:"Ζ",919:"Η",920:"Θ",921:"Ι",922:"Κ",923:"Λ",924:"Μ",925:"Ν",926:"Ξ",927:"Ο",928:"Π",929:"Ρ",931:"Σ",932:"Τ",933:"Υ",934:"Φ",935:"Χ",936:"Ψ",937:"Ω",945:"α",946:"β",947:"γ",948:"δ",949:"ε",950:"ζ",951:"η",952:"θ",953:"ι",954:"κ",955:"λ",956:"μ",957:"ν",958:"ξ",959:"ο",960:"π",961:"ρ",962:"ς",963:"σ",964:"τ",965:"υ",966:"φ",967:"χ",968:"ψ",969:"ω",977:"ϑ",978:"ϒ",982:"ϖ",8194:" ",8195:" ",8201:" ",8204:"‌",8205:"‍",8206:"‎",8207:"‏",8211:"–",8212:"—",8216:"‘",8217:"’",8218:"‚",8220:"“",8221:"”",8222:"„",8224:"†",8225:"‡",8226:"•",8230:"…",8240:"‰",8242:"′",8243:"″",8249:"‹",8250:"›",8254:"‾",8260:"⁄",8364:"€",8465:"ℑ",8472:"℘",8476:"ℜ",8482:"™",8501:"ℵ",8592:"←",8593:"↑",8594:"→",8595:"↓",8596:"↔",8629:"↵",8656:"⇐",8657:"⇑",8658:"⇒",8659:"⇓",8660:"⇔",8704:"∀",8706:"∂",8707:"∃",8709:"∅",8711:"∇",8712:"∈",8713:"∉",8715:"∋",8719:"∏",8721:"∑",8722:"−",8727:"∗",8730:"√",8733:"∝",8734:"∞",8736:"∠",8743:"∧",8744:"∨",8745:"∩",8746:"∪",8747:"∫",8756:"∴",8764:"∼",8773:"≅",8776:"≈",8800:"≠",8801:"≡",8804:"≤",8805:"≥",8834:"⊂",8835:"⊃",8836:"⊄",8838:"⊆",8839:"⊇",8853:"⊕",8855:"⊗",8869:"⊥",8901:"⋅",8942:"⋮",8968:"⌈",8969:"⌉",8970:"⌊",8971:"⌋",9001:"⟨",9002:"⟩",9674:"◊",9824:"♠",9827:"♣",9829:"♥",9830:"♦"},_entity_to_byte:{quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,vellip:8942,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830}},HTTP={run_strip_headers:function(a,b){var c=a.indexOf("\r\n\r\n")+(c<0)?a.indexOf("\n\n")+2:c+4;return c<2?a:a.slice(c,a.length)},run_parse_user_agent:function(a,b){var c=UAS_parser.parse(a);return"Type: "+c.type+"\nFamily: "+c.uaFamily+"\nName: "+c.uaName+"\nURL: "+c.uaUrl+"\nCompany: "+c.uaCompany+"\nCompany URL: "+c.uaCompanyUrl+"\n\nOS Family: "+c.osFamily+"\nOS Name: "+c.osName+"\nOS URL: "+c.osUrl+"\nOS Company: "+c.osCompany+"\nOS Company URL: "+c.osCompanyUrl+"\nDevice Type: "+c.deviceType+"\n"}},Hash={run_md5:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.MD5(a).toString(CryptoJS.enc.Hex)},run_sha1:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA1(a).toString(CryptoJS.enc.Hex)},run_sha224:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA224(a).toString(CryptoJS.enc.Hex)},run_sha256:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA256(a).toString(CryptoJS.enc.Hex)},run_sha384:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA384(a).toString(CryptoJS.enc.Hex)},run_sha512:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.SHA512(a).toString(CryptoJS.enc.Hex)},SHA3_LENGTH:["512","384","256","224"],run_sha3:function(a,b){a=CryptoJS.enc.Latin1.parse(a);var c=b[0],d={outputLength:parseInt(c,10)};return CryptoJS.SHA3(a,d).toString(CryptoJS.enc.Hex)},run_ripemd160:function(a,b){return a=CryptoJS.enc.Latin1.parse(a),CryptoJS.RIPEMD160(a).toString(CryptoJS.enc.Hex)},HMAC_FUNCTIONS:["MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160"],run_hmac:function(a,b){var c=b[1];a=CryptoJS.enc.Latin1.parse(a);var d={MD5:CryptoJS.HmacMD5(a,b[0]),SHA1:CryptoJS.HmacSHA1(a,b[0]),SHA224:CryptoJS.HmacSHA224(a,b[0]),SHA256:CryptoJS.HmacSHA256(a,b[0]),SHA384:CryptoJS.HmacSHA384(a,b[0]),SHA512:CryptoJS.HmacSHA512(a,b[0]),SHA3:CryptoJS.HmacSHA3(a,b[0]),"RIPEMD-160":CryptoJS.HmacRIPEMD160(a,b[0])};return d[c].toString(CryptoJS.enc.Hex)},run_all:function(a,b){var c=Utils.str_to_byte_array(a),d="MD5: "+Hash.run_md5(a,[])+"\nSHA1: "+Hash.run_sha1(a,[])+"\nSHA2 224: "+Hash.run_sha224(a,[])+"\nSHA2 256: "+Hash.run_sha256(a,[])+"\nSHA2 384: "+Hash.run_sha384(a,[])+"\nSHA2 512: "+Hash.run_sha512(a,[])+"\nSHA3 224: "+Hash.run_sha3(a,["224"])+"\nSHA3 256: "+Hash.run_sha3(a,["256"])+"\nSHA3 384: "+Hash.run_sha3(a,["384"])+"\nSHA3 512: "+Hash.run_sha3(a,["512"])+"\nRIPEMD-160: "+Hash.run_ripemd160(a,[])+"\n\nChecksums:\nFletcher-16: "+Checksum.run_fletcher16(c,[])+"\nAdler-32: "+Checksum.run_adler32(c,[])+"\nCRC-32: "+Checksum.run_crc32(c,[]);return d},run_analyse:function(a,b){a=a.replace(/\s/g,"");var c="",d=a.length/2,e=8*d,f=[];if(!/^[a-f0-9]+$/i.test(a))return"Invalid hash";switch(c+="Hash length: "+a.length+"\nByte length: "+d+"\nBit length: "+e+"\n\nBased on the length, this hash could have been generated by one of the following hashing functions:\n",e){case 4:f=["Fletcher-4","Luhn algorithm","Verhoeff algorithm"];break;case 8:f=["Fletcher-8"];break;case 16:f=["BSD checksum","CRC-16","SYSV checksum","Fletcher-16"];break;case 32:f=["CRC-32","Fletcher-32","Adler-32"];break;case 64:f=["CRC-64","RIPEMD-64","SipHash"];break;case 128:f=["MD5","MD4","MD2","HAVAL-128","RIPEMD-128","Snefru","Tiger-128"];break;case 160:f=["SHA-1","SHA-0","FSB-160","HAS-160","HAVAL-160","RIPEMD-160","Tiger-160"];break;case 192:f=["Tiger","HAVAL-192"];break;case 224:f=["SHA-224","SHA3-224","ECOH-224","FSB-224","HAVAL-224"];break;case 256:f=["SHA-256","SHA3-256","BLAKE-256","ECOH-256","FSB-256","GOST","Gr\xf8stl-256","HAVAL-256","PANAMA","RIPEMD-256","Snefru"];break;case 320:f=["RIPEMD-320"];break;case 384:f=["SHA-384","SHA3-384","ECOH-384","FSB-384"];break;case 512:f=["SHA-512","SHA3-512","BLAKE-512","ECOH-512","FSB-512","Gr\xf8stl-512","JH","MD6","Spectral Hash","SWIFFT","Whirlpool"];break;case 1024:f=["Fowler-Noll-Vo"];break;default:f=["Unknown"]}return c+f.join("\n")}},Hexdump={WIDTH:16,UPPER_CASE:!1,INCLUDE_FINAL_LENGTH:!1,run_to:function(a,b){for(var c=b[0]||Hexdump.WIDTH,d=b[1],e=b[2],f="",g=2,h=0;h<a.length;h+=c){for(var i=a.slice(h,h+c),j="",k=0;k<i.length;k++)j+=Utils.hex(i[k],g)+" ";var l=Utils.hex(h,8);d&&(j=j.toUpperCase(),l=l.toUpperCase()),f+=l+" "+Utils.pad_right(j,c*(g+1))+" |"+Utils.pad_right(Utils.printable(Utils.byte_array_to_chars(i)),i.length)+"|\n",e&&h+i.length===a.length&&(f+=Utils.hex(h+i.length,8)+"\n")}return f.slice(0,-1)},run_from:function(a,b){for(var c,d,e=[],f=/^\s*(?:[\dA-F]{4,16}:?)?\s*((?:[\dA-F]{2}\s){1,8}(?:\s|[\dA-F]{2}-)(?:[\dA-F]{2}\s){1,8}|(?:[\dA-F]{2}\s|[\dA-F]{4}\s)+)/gim;c=f.exec(a);){d=Utils.from_hex(c[1].replace(/-/g," "));for(var g=0;g<d.length;g++)e.push(d[g])}var h=a.indexOf("\n"),i=(h-13)/4;return Math.floor(i)===i&&a.indexOf("\r")===-1&&e.indexOf(13)===-1||(app.options.attempt_highlight=!1),e},highlight_to:function(a,b){var c=b[0]||16,d=14+4*c,e=Math.floor(a[0].start/c),f=a[0].start%c,g=0,h=0;a[0].start=e*d+10+3*f,e=Math.floor(a[0].end/c),f=a[0].end%c,0===f&&(e--,f=c),a[0].end=e*d+10+3*f-1;var i=Math.floor(a[0].start/d),j=Math.floor(a[0].end/d);if(i===j)a.push(a[0]);else for(g=a[0].start,h=(i+1)*d-c-5,a.push({start:g,end:h});h<a[0].end;)i++,g=i*d+10,h=(i+1)*d-c-5,h>a[0].end&&(h=a[0].end),a.push({start:g,end:h});var k=a.length,l=0;g=0,h=0;for(var m=1;m<k;m++)l=Math.floor(a[m].start/d),g=(a[m].start-l*d-10)/3+(d-c-2)+l*d,h=(a[m].end+1-l*d-10)/3+(d-c-2)+l*d,a.push({start:g,end:h});return a},highlight_from:function(a,b){var c=b[0]||16,d=14+4*c,e=Math.floor(a[0].start/d),f=a[0].start%d;return f<10?a[0].start=e*c:f>10+3*c?a[0].start=(e+1)*c:a[0].start=e*c+Math.floor((f-10)/3),e=Math.floor(a[0].end/d),f=a[0].end%d,f<10?a[0].end=e*c:f>10+3*c?a[0].end=(e+1)*c:a[0].end=e*c+Math.ceil((f-10)/3),a}},IP={INCLUDE_NETWORK_INFO:!0,ENUMERATE_ADDRESSES:!0,ALLOW_LARGE_LIST:!1,run_parse_ip_range:function(a,b){var c,d=b[0],e=b[1],f=b[2],g=/^\s*((?:\d{1,3}\.){3}\d{1,3})\/(\d\d?)\s*$/,h=/^\s*((?:\d{1,3}\.){3}\d{1,3})\s*-\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/,i=/^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\/(\d\d?\d?)\s*$/i,j=/^\s*(((?=.*::)(?!.*::[^-]+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*-\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\17)::|:\b|(?![\dA-F])))|(?!\16\17)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i;return(c=g.exec(a))?IP._ipv4_cidr_range(c,d,e,f):(c=h.exec(a))?IP._ipv4_hyphenated_range(c,d,e,f):(c=i.exec(a))?IP._ipv6_cidr_range(c,d):(c=j.exec(a))?IP._ipv6_hyphenated_range(c,d):"Invalid input.\n\nEnter either a CIDR range (e.g. 10.0.0.0/24) or a hyphenated range (e.g. 10.0.0.0 - 10.0.1.0). IPv6 also supported."},IPv4_REGEX:/^\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/,IPv6_REGEX:/^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i,run_parse_ipv6:function(a,b){var c,d="";if(!(c=IP.IPv6_REGEX.exec(a)))return"Invalid IPv6 address";var e=IP._str_to_ipv6(c[1]),f=IP._ipv6_to_str(e),g=IP._ipv6_to_str(e,!0);if(d+="Longhand: "+f+"\nShorthand: "+g+"\n","::"===g)d+="\nUnspecified address corresponding to 0.0.0.0/32 in IPv4.",d+="\nUnspecified address range: ::/128";else if("::1"===g)d+="\nLoopback address to the local host corresponding to 127.0.0.1/8 in IPv4.",d+="\nLoopback addresses range: ::1/128";else if(0===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&65535===e[5])d+="\nIPv4-mapped IPv6 address detected. IPv6 clients will be handled natively by default, and IPv4 clients appear as IPv6 clients at their IPv4-mapped IPv6 address.",d+="\nMapped IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\nIPv4-mapped IPv6 addresses range: ::ffff:0:0/96";else if(0===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&65535===e[4]&&0===e[5])d+="\nIPv4-translated address detected. Used by Stateless IP/ICMP Translation (SIIT). See RFCs 6145 and 6052 for more details.",d+="\nTranslated IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\nIPv4-translated addresses range: ::ffff:0:0:0/96";else if(256===e[0])d+="\nDiscard prefix detected. This is used when forwarding traffic to a sinkhole router to mitigate the effects of a denial-of-service attack. See RFC 6666 for more details.",d+="\nDiscard range: 100::/64";else if(100===e[0]&&65435===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&0===e[5])d+="\n'Well-Known' prefix for IPv4/IPv6 translation detected. See RFC 6052 for more details.",d+="\nTranslated IPv4 address: "+IP._ipv4_to_str((e[6]<<16)+e[7]),d+="\n'Well-Known prefix range: 64:ff9b::/96";else if(8193===e[0]&&0===e[1]){d+="\nTeredo tunneling IPv6 address detected\n";var h=(e[2]<<16)+e[3],i=65535&~e[5],j=~((e[6]<<16)+e[7]),k=e[4]>>>15&1,l=e[4]>>>14&1,m=e[4]>>>10&15,n=e[4]>>>8&3,o=255&e[4];d+="\nServer IPv4 address: "+IP._ipv4_to_str(h)+"\nClient IPv4 address: "+IP._ipv4_to_str(j)+"\nClient UDP port: "+i+"\nFlags:\n\tCone: "+k,d+=k?" (Client is behind a cone NAT)":" (Client is not behind a cone NAT)",d+="\n\tR: "+l,l&&(d+=" Error: This flag should be set to 0. See RFC 5991 and RFC 4380."),d+="\n\tRandom1: "+Utils.bin(m,4)+"\n\tUG: "+Utils.bin(n,2),n&&(d+=" Error: This flag should be set to 00. See RFC 4380."),d+="\n\tRandom2: "+Utils.bin(o,8),d+=!l&&!n&&m&&o?"\n\nThis is a valid Teredo address which complies with RFC 4380 and RFC 5991.":l||n?"\n\nThis is an invalid Teredo address.":"\n\nThis is a valid Teredo address which complies with RFC 4380, however it does not comply with RFC 5991 (Teredo Security Updates) as there are no randomised bits in the flag field.",d+="\n\nTeredo prefix range: 2001::/32"}else if(8193===e[0]&&2===e[1]&&0===e[2])d+="\nAssigned to the Benchmarking Methodology Working Group (BMWG) for benchmarking IPv6. Corresponds to 198.18.0.0/15 for benchmarking IPv4. See RFC 5180 for more details.",d+="\nBMWG range: 2001:2::/48";else if(8193===e[0]&&e[1]>=16&&e[1]<=31)d+="\nDeprecated, previously ORCHIDv1 (Overlay Routable Cryptographic Hash Identifiers).\nORCHIDv1 range: 2001:10::/28\nORCHIDv2 now uses 2001:20::/28.";else if(8193===e[0]&&e[1]>=32&&e[1]<=47)d+="\nORCHIDv2 (Overlay Routable Cryptographic Hash Identifiers).\nThese are non-routed IPv6 addresses used for Cryptographic Hash Identifiers.",d+="\nORCHIDv2 range: 2001:20::/28";else if(8193===e[0]&&3512===e[1])d+="\nThis is a documentation IPv6 address. This range should be used whenever an example IPv6 address is given or to model networking scenarios. Corresponds to 192.0.2.0/24, 198.51.100.0/24, and 203.0.113.0/24 in IPv4.",d+="\nDocumentation range: 2001:db8::/32";else if(8194===e[0]){d+="\n6to4 transition IPv6 address detected. See RFC 3056 for more details.\n6to4 prefix range: 2002::/16";var p=IP._ipv4_to_str((e[1]<<16)+e[2]),q=e[3],r=e[4].toString(16)+e[5].toString(16)+e[6].toString(16)+e[7].toString(16),s=new BigInteger(r,16);d+="\n\nEncapsulated IPv4 address: "+p+"\nSLA ID: "+q+"\nInterface ID (base 16): "+r+"\nInterface ID (base 10): "+s.toString()}else e[0]>=64512&&e[0]<=65023?(d+="\nThis is a unique local address comparable to the IPv4 private addresses 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. See RFC 4193 for more details.",d+="\nUnique local addresses range: fc00::/7"):e[0]>=65152&&e[0]<=65215?(d+="\nThis is a link-local address comparable to the auto-configuration addresses 169.254.0.0/16 in IPv4.",d+="\nLink-local addresses range: fe80::/10"):e[0]>=65280&&(d+="\nThis is a reserved multicast address.",d+="\nMulticast addresses range: ff00::/8");return d},IP_FORMAT_LIST:["Dotted Decimal","Decimal","Hex"],run_change_ip_format:function(a,b){for(var c=b[0],d=b[1],e=a.split("\n"),f="",g=0,h=0;h<e.length;h++)if(""!==e[h]){var i=[];if(c!==d){switch(c){case"Dotted Decimal":var j=e[h].split(".");for(g=0;g<j.length;g++)i.push(parseInt(j[g],10));break;case"Decimal":var k=e[h].toString();i.push(k>>24&255),i.push(k>>16&255),i.push(k>>8&255),i.push(255&k);break;case"Hex":i=Utils.hex_to_byte_array(e[h]);break;default:throw"Unsupported input IP format"}switch(d){case"Dotted Decimal":var l="";for(g=0;g<i.length;g++)l+=i[g]+".";f+=l.slice(0,l.length-1)+"\n";break;case"Decimal":var m=(i[0]<<24|i[1]<<16|i[2]<<8|i[3])>>>0;f+=m.toString()+"\n";break;case"Hex":var n="";for(g=0;g<i.length;g++)n+=Utils.hex(i[g]);f+=n+"\n";break;default:throw"Unsupported output IP format"}}else f+=e[h]+"\n"}return f.slice(0,f.length-1)},DELIM_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon"],GROUP_CIDR:24,GROUP_ONLY_SUBNET:!1,run_group_ips:function(a,b){var c=Utils.char_rep[b[0]],d=b[1],e=b[2],f=d<32?~(4294967295>>>d):4294967295,g=IP._gen_ipv6_mask(d),h=a.split(c),i={},j={},k=null,l="",m=null,n=null,o="";if(d<0||d>127)return"CIDR must be less than 32 for IPv4 or 128 for IPv6";for(var p=0;p<h.length;p++)if(k=IP.IPv4_REGEX.exec(h[p]))m=IP._str_to_ipv4(k[1])>>>0,n=m&f,i.hasOwnProperty(n)?i[n].push(m):i[n]=[m];else if(k=IP.IPv6_REGEX.exec(h[p])){m=IP._str_to_ipv6(k[1]),n=[],o="";for(var q=0;q<8;q++)n.push(m[q]&g[q]);o=IP._ipv6_to_str(n,!0),j.hasOwnProperty(o)?j[o].push(m):j[o]=[m]}for(n in i)if(i[n]=i[n].sort(),l+=IP._ipv4_to_str(n)+"/"+d+"\n",!e){for(p=0;p<i[n].length;p++)l+=" "+IP._ipv4_to_str(i[n][p])+"\n";l+="\n"}for(o in j)if(l+=o+"/"+d+"\n",!e){for(p=0;p<j[o].length;p++)l+=" "+IP._ipv6_to_str(j[o][p],!0)+"\n";l+="\n"}return l},_LARGE_RANGE_ERROR:'The specified range contains more than 65,536 addresses. Running this query could crash your browser. If you want to run it, select the "Allow large queries" option. You are advised to turn off "Auto Bake" whilst editing large ranges.', +_ipv4_cidr_range:function(a,b,c,d){var e="",f=IP._str_to_ipv4(a[1]),g=parseInt(a[2],10);if(g<0||g>31)return"IPv4 CIDR must be less than 32";var h=~(4294967295>>>g),i=f&h,j=i|~h;return b&&(e+="Network: "+IP._ipv4_to_str(f)+"\n",e+="CIDR: "+g+"\n",e+="Mask: "+IP._ipv4_to_str(h)+"\n",e+="Range: "+IP._ipv4_to_str(i)+" - "+IP._ipv4_to_str(j)+"\n",e+="Total addresses in range: "+((j-i>>>0)+1)+"\n\n"),c&&(e+=g>=16||d?IP._generate_ipv4_range(i,j).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_cidr_range:function(a,b){var c="",d=IP._str_to_ipv6(a[1]),e=parseInt(a[a.length-1],10);if(e<0||e>127)return"IPv6 CIDR must be less than 128";for(var f=IP._gen_ipv6_mask(e),g=new Array(8),h=new Array(8),i="",j=new Array(128),k=0;k<8;k++)if(g[k]=d[k]&f[k],h[k]=g[k]|65535&~f[k],i=(h[k]-g[k]).toString(2),"0"!==i)for(var l=0;l<i.length;l++)j[16*k+16-(i.length-l)]=i[l];return b&&(c+="Network: "+IP._ipv6_to_str(d)+"\n",c+="Shorthand: "+IP._ipv6_to_str(d,!0)+"\n",c+="CIDR: "+e+"\n",c+="Mask: "+IP._ipv6_to_str(f)+"\n",c+="Range: "+IP._ipv6_to_str(g)+" - "+IP._ipv6_to_str(h)+"\n",c+="Total addresses in range: "+(parseInt(j.join(""),2)+1)+"\n\n"),c},_gen_ipv6_mask:function(a){for(var b,c=new Array(8),d=0;d<8;d++)a>16*(d+1)?c[d]=65535:(b=a-16*d,b<0&&(b=0),c[d]=~(65535>>>b|4294901760));return c},_ipv4_hyphenated_range:function(a,b,c,d){for(var e="",f=IP._str_to_ipv4(a[1]),g=IP._str_to_ipv4(a[2]),h=f^g,i=32,j=0;0!==h;)h>>=1,i--,j=j<<1|1;j=~j>>>0;var k=f&j,l=k&j,m=l|~j;return b&&(e+="Minimum subnet required to hold this range:\n",e+="\tNetwork: "+IP._ipv4_to_str(k)+"\n",e+="\tCIDR: "+i+"\n",e+="\tMask: "+IP._ipv4_to_str(j)+"\n",e+="\tSubnet range: "+IP._ipv4_to_str(l)+" - "+IP._ipv4_to_str(m)+"\n",e+="\tTotal addresses in subnet: "+((m-l>>>0)+1)+"\n\n",e+="Range: "+IP._ipv4_to_str(f)+" - "+IP._ipv4_to_str(g)+"\n",e+="Total addresses in range: "+((g-f>>>0)+1)+"\n\n"),c&&(e+=g-f>>>0<=65536||d?IP._generate_ipv4_range(f,g).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_hyphenated_range:function(a,b){for(var c="",d=IP._str_to_ipv6(a[1]),e=IP._str_to_ipv6(a[14]),f="",g=new Array(128),h=0;h<128;h++)g[h]="0";for(h=0;h<8;h++)if(f=(e[h]-d[h]).toString(2),"0"!==f)for(var i=0;i<f.length;i++)g[16*h+16-(f.length-i)]=f[i];return b&&(c+="Range: "+IP._ipv6_to_str(d)+" - "+IP._ipv6_to_str(e)+"\n",c+="Shorthand range: "+IP._ipv6_to_str(d,!0)+" - "+IP._ipv6_to_str(e,!0)+"\n",c+="Total addresses in range: "+(parseInt(g.join(""),2)+1)+"\n\n"),c},_str_to_ipv4:function(a){function b(a){if(4!==a.length)throw"More than 4 blocks.";for(var b=[],c=0;c<4;c++)if(b[c]=parseInt(a[c],10),b[c]<0||b[c]>255)throw"Block out of range.";return b}var c=a.split("."),d=b(c),e=0;return e+=d[0]<<24,e+=d[1]<<16,e+=d[2]<<8,e+=d[3]},_ipv4_to_str:function(a){var b=a>>24&255,c=a>>16&255,d=a>>8&255,e=255&a;return b+"."+c+"."+d+"."+e},_str_to_ipv6:function(a){function b(a){if(a.length<3||a.length>8)throw"Badly formatted IPv6 address.";for(var b=[],c=0;c<a.length;c++)if(b[c]=parseInt(a[c],16),b[c]<0||b[c]>65535)throw"Block out of range.";return b}for(var c=a.split(":"),d=b(c),e=0,f=new Array(8),g=0;g<8;g++)isNaN(d[e])?(f[g]=0,g===8-d.slice(e).length&&e++):(f[g]=d[e],e++);return f},_ipv6_to_str:function(a,b){var c="",d=0;if(b){var e=-1,f=-1,g=0,h=-1;for(d=0;d<8;d++)0===a[d]&&h===d-1?h=d:0===a[d]&&(g=d,h=d),h>=0&&h-g>f-e&&(e=g,f=h);for(d=0;d<8;d++)d!==e?c+=Utils.hex(a[d],1)+":":(c+=":",d=f,7===f&&(c+=":"));":"===c[0]&&(c=":"+c)}else for(d=0;d<8;d++)c+=Utils.hex(a[d],4)+":";return c.slice(0,c.length-1)},_generate_ipv4_range:function(a,b){var c=[];if(b>=a)for(;a<=b;a++)c.push(IP._ipv4_to_str(a));else c[0]="Second IP address smaller than first.";return c}},JS={PARSE_LOC:!1,PARSE_RANGE:!1,PARSE_TOKENS:!1,PARSE_COMMENT:!1,PARSE_TOLERANT:!1,run_parse:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h={},i={loc:c,range:d,tokens:e,comment:f,tolerant:g};return h=esprima.parse(a,i),JSON.stringify(h,null,2)},BEAUTIFY_INDENT:"\\t",BEAUTIFY_QUOTES:["Auto","Single","Double"],BEAUTIFY_SEMICOLONS:!0,BEAUTIFY_COMMENT:!0,run_beautify:function(a,b){var c,d=b[0]||JS.BEAUTIFY_INDENT,e=b[1].toLowerCase(),f=b[2],g=b[3],h="";try{c=esprima.parse(a,{range:!0,tokens:!0,comment:!0});var i={format:{indent:{style:d},quotes:e,semicolons:f},comment:g};i.comment&&(c=escodegen.attachComments(c,c.comments,c.tokens)),h=escodegen.generate(c,i)}catch(a){throw"Unable to parse JavaScript.<br>"+a.message}return h},run_minify:function(a,b){var c="",d=esprima.parse(a),e=esmangle.optimize(d,null),f=esmangle.mangle(e);return c=escodegen.generate(f,{format:{renumber:!0,hexadecimal:!0,escapeless:!0,compact:!0,semicolons:!1,parentheses:!1}})}},MAC={OUTPUT_CASE:["Both","Upper only","Lower only"],NO_DELIM:!0,DASH_DELIM:!0,COLON_DELIM:!0,CISCO_STYLE:!1,run_format:function(a,b){if(!a)return"";var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=[],i=a.toLowerCase().split(/[,\s\r\n]+/);return i.forEach(function(a){var b=a.replace(/[:.-]+/g,""),i=b.replace(/(.{2}(?=.))/g,"$1-"),j=b.replace(/(.{2}(?=.))/g,"$1:"),k=b.replace(/(.{4}(?=.))/g,"$1.");"Lower only"===c?(d&&h.push(b),e&&h.push(i),f&&h.push(j),g&&h.push(k)):"Upper only"===c?(d&&h.push(b.toUpperCase()),e&&h.push(i.toUpperCase()),f&&h.push(j.toUpperCase()),g&&h.push(k.toUpperCase())):(d&&h.push(b,b.toUpperCase()),e&&h.push(i,i.toUpperCase()),f&&h.push(j,j.toUpperCase()),g&&h.push(k,k.toUpperCase())),h.push("")}),h.join("\n")}},Numberwang={run:function(a,b){if(!a)return"Let's play Wangernumb!";var c=a.match(/\d+/);return c?c[0]+"! That's Numberwang!":"Sorry, that's not Numberwang. Let's rotate the board!"}},OS={run_parse_unix_perms:function(a,b){var c={d:!1,sl:!1,np:!1,s:!1,cd:!1,bd:!1,dr:!1,sb:!1,su:!1,sg:!1,ru:!1,wu:!1,eu:!1,rg:!1,wg:!1,eg:!1,ro:!1,wo:!1,eo:!1},d=0,e=0,f=0,g=0,h="",i=null,j=null;if(0===a.search(/\s*[0-7]{1,4}\s*/i))i=a.match(/\s*([0-7]{1,4})\s*/i)[1],4===i.length?(d=parseInt(i[0],8),e=parseInt(i[1],8),f=parseInt(i[2],8),g=parseInt(i[3],8)):(i.length>0&&(e=parseInt(i[0],8)),i.length>1&&(f=parseInt(i[1],8)),i.length>2&&(g=parseInt(i[2],8))),c.su=d>>2&1,c.sg=d>>1&1,c.sb=1&d,c.ru=e>>2&1,c.wu=e>>1&1,c.eu=1&e,c.rg=f>>2&1,c.wg=f>>1&1,c.eg=1&f,c.ro=g>>2&1,c.wo=g>>1&1,c.eo=1&g;else{if(0!==a.search(/\s*[dlpcbDrwxsStT-]{1,10}\s*/))return"Invalid input format.\nPlease enter the permissions in either octal (e.g. 755) or textual (e.g. drwxr-xr-x) format.";switch(j=a.match(/\s*([dlpcbDrwxsStT-]{1,10})\s*/)[1],j[0]){case"d":c.d=!0;break;case"l":c.sl=!0;break;case"p":c.np=!0;break;case"s":c.s=!0;break;case"c":c.cd=!0;break;case"b":c.bd=!0;break;case"D":c.dr=!0}if(j.length>1&&(c.ru="r"===j[1]),j.length>2&&(c.wu="w"===j[2]),j.length>3)switch(j[3]){case"x":c.eu=!0;break;case"s":c.eu=!0,c.su=!0;break;case"S":c.su=!0}if(j.length>4&&(c.rg="r"===j[4]),j.length>5&&(c.wg="w"===j[5]),j.length>6)switch(j[6]){case"x":c.eg=!0;break;case"s":c.eg=!0,c.sg=!0;break;case"S":c.sg=!0}if(j.length>7&&(c.ro="r"===j[7]),j.length>8&&(c.wo="w"===j[8]),j.length>9)switch(j[9]){case"x":c.eo=!0;break;case"t":c.eo=!0,c.sb=!0;break;case"T":c.sb=!0}}return h+="Textual representation: "+OS._perms_to_str(c),h+="\nOctal representation: "+OS._perms_to_octal(c),j&&(h+="\nFile type: "+OS._ft_from_perms(c)),c.su&&(h+="\nThe setuid flag is set"),c.sg&&(h+="\nThe setgid flag is set"),c.sb&&(h+="\nThe sticky bit is set"),h+="\n\n +---------+-------+-------+-------+\n | | User | Group | Other |\n +---------+-------+-------+-------+\n | Read | "+(c.ru?"X":" ")+" | "+(c.rg?"X":" ")+" | "+(c.ro?"X":" ")+" |\n +---------+-------+-------+-------+\n | Write | "+(c.wu?"X":" ")+" | "+(c.wg?"X":" ")+" | "+(c.wo?"X":" ")+" |\n +---------+-------+-------+-------+\n | Execute | "+(c.eu?"X":" ")+" | "+(c.eg?"X":" ")+" | "+(c.eo?"X":" ")+" |\n +---------+-------+-------+-------+\n"},_perms_to_str:function(a){var b="",c="-";return a.d&&(c="d"),a.sl&&(c="l"),a.np&&(c="p"),a.s&&(c="s"),a.cd&&(c="c"),a.bd&&(c="b"),a.dr&&(c="D"),b=c,b+=a.ru?"r":"-",b+=a.wu?"w":"-",b+=a.eu&&a.su?"s":a.su?"S":a.eu?"x":"-",b+=a.rg?"r":"-",b+=a.wg?"w":"-",b+=a.eg&&a.sg?"s":a.sg?"S":a.eg?"x":"-",b+=a.ro?"r":"-",b+=a.wo?"w":"-",b+=a.eo&&a.sb?"t":a.sb?"T":a.eo?"x":"-"},_perms_to_octal:function(a){var b=0,c=0,d=0,e=0;return a.su&&(b+=4),a.sg&&(b+=2),a.sb&&(b+=1),a.ru&&(c+=4),a.wu&&(c+=2),a.eu&&(c+=1),a.rg&&(d+=4),a.wg&&(d+=2),a.eg&&(d+=1),a.ro&&(e+=4),a.wo&&(e+=2),a.eo&&(e+=1),b.toString()+c.toString()+d.toString()+e.toString()},_ft_from_perms:function(a){return a.d?"Directory":a.sl?"Symbolic link":a.np?"Named pipe":a.s?"Socket":a.cd?"Character device":a.bd?"Block device":a.dr?"Door":"Regular file"}},PublicKey={X509_INPUT_FORMAT:["PEM","DER Hex","Base64","Raw"],run_parse_x509:function(a,b){var c=new X509,d=b[0];if(!a.length)return"No input";switch(d){case"DER Hex":a=a.replace(/\s/g,""),c.hex=a,c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(a,"CERTIFICATE");break;case"PEM":c.hex=X509.pemToHex(a),c.pem=a;break;case"Base64":c.hex=Utils.to_hex(Utils.from_base64(a,null,"byte_array"),""),c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(c.hex,"CERTIFICATE");break;case"Raw":c.hex=Utils.to_hex(Utils.str_to_byte_array(a),""),c.pem=KJUR.asn1.ASN1Util.getPEMStringFromHex(c.hex,"CERTIFICATE");break;default:throw"Undefined input format"}var e=ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,0,0]),f=c.getSerialNumberHex(),g=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,2,0]))),h=c.getIssuerString(),i=c.getNotBefore(),j=c.getNotAfter(),k=c.getSubjectString(),l=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,6,0,0]))),m=X509.getPublicKeyFromCertPEM(c.pem),n=[],o="",p=KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[1,0]))),q=ASN1HEX.getDecendantHexVByNthList(c.hex,0,[2]).substr(2),r="",s=ASN1HEX.dump(ASN1HEX.getDecendantHexVByNthList(c.hex,0,[0,7]));"EC"===m.type?(n.push({key:"Curve Name",value:m.curveName}),n.push({key:"Length",value:(new BigInteger(m.pubKeyHex,16).bitLength()-3)/2+" bits"}),n.push({key:"pub",value:PublicKey._format_byte_str(m.pubKeyHex,16,18)})):"DSA"===m.type?(n.push({key:"pub",value:PublicKey._format_byte_str(m.y.toString(16),16,18)}),n.push({key:"P",value:PublicKey._format_byte_str(m.p.toString(16),16,18)}),n.push({key:"Q",value:PublicKey._format_byte_str(m.q.toString(16),16,18)}),n.push({key:"G",value:PublicKey._format_byte_str(m.g.toString(16),16,18)})):m.e?(n.push({key:"Length",value:m.n.bitLength()+" bits"}),n.push({key:"Modulus",value:PublicKey._format_byte_str(m.n.toString(16),16,18)}),n.push({key:"Exponent",value:m.e+" (0x"+m.e.toString(16)+")"})):n.push({key:"Error",value:"Unknown Public Key type"}),r=0===ASN1HEX.dump(q).indexOf("SEQUENCE")?" r: "+PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(q,0,[0]),16,18)+"\n s: "+PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(q,0,[1]),16,18)+"\n":" Signature: "+PublicKey._format_byte_str(q,16,18)+"\n";for(var t=0;t<n.length;t++)o+=" "+n[t].key+":"+Utils.pad_left(n[t].value+"\n",18-(n[t].key.length+3)+n[t].value.length+1," ");var u=PublicKey._format_dn_str(h,2),v=PublicKey._format_date(i),w=PublicKey._format_date(j),x=PublicKey._format_dn_str(k,2),y="Version: "+(parseInt(e,16)+1)+" (0x"+e+")\nSerial number: "+new BigInteger(f,16).toString()+" (0x"+f+")\nAlgorithm ID: "+g+"\nValidity\n Not Before: "+v+" (dd-mm-yy hh:mm:ss) ("+i+")\n Not After: "+w+" (dd-mm-yy hh:mm:ss) ("+j+")\nIssuer\n"+u+"Subject\n"+x+"Public Key\n Algorithm: "+l+"\n"+o+"Certificate Signature\n Algorithm: "+p+"\n"+r+"\nExtensions (parsed ASN.1)\n"+s;return y},run_pem_to_hex:function(a,b){return a.indexOf("-----BEGIN")<0&&(a="-----BEGIN CERTIFICATE-----"+a),a.indexOf("-----END")<0&&(a+="-----END CERTIFICATE-----"),KEYUTIL.getHexFromPEM(a)},PEM_HEADER_STRING:"CERTIFICATE",run_hex_to_pem:function(a,b){return KJUR.asn1.ASN1Util.getPEMStringFromHex(a.replace(/\s/g,""),b[0])},run_hex_to_object_identifier:function(a,b){return KJUR.asn1.ASN1Util.oidHexToInt(a.replace(/\s/g,""))},run_object_identifier_to_hex:function(a,b){return KJUR.asn1.ASN1Util.oidIntToHex(a)},ASN1_TRUNCATE_LENGTH:32,run_parse_asn1_hex_string:function(a,b){var c=b[1],d=b[0];return ASN1HEX.dump(a.replace(/\s/g,""),{ommit_long_octet:c},d)},_format_dn_str:function(a,b){for(var c,d,e,f="",g=a.split(",/|"),h=0,i=0;i<g.length;i++)g[i].length&&(c=g[i].split("=")[0],h=c.length>h?c.length:h);for(i=0;i<g.length;i++)g[i].length&&(c=g[i].split("=")[0],d=g[i].split("=")[1],e=Utils.pad_right(c,h)+" = "+d+"\n",f+=Utils.pad_left(e,b+e.length," "));return f},_format_byte_str:function(a,b,c){a=Utils.to_hex(Utils.from_hex(a),":"),b=3*b;for(var d="",e=0;e<a.length;e+=b){var f=a.slice(e,e+b)+"\n";d+=0===e?f:Utils.pad_left(f,c+f.length," ")}return d.slice(0,d.length-1)},_format_date:function(a){return a[4]+a[5]+"/"+a[2]+a[3]+"/"+a[0]+a[1]+" "+a[6]+a[7]+":"+a[8]+a[9]+":"+a[10]+a[11]}};X509.hex2dn=function(a){for(var b="",c=ASN1HEX.getPosArrayOfChildren_AtObj(a,0),d=0;d<c.length;d++){var e=ASN1HEX.getHexOfTLV_AtObj(a,c[d]);b=b+",/|"+X509.hex2rdn(e)}return b},X509.DN_ATTRHEX={"0603550403":"commonName","0603550404":"surname","0603550406":"countryName","0603550407":"localityName","0603550408":"stateOrProvinceName","0603550409":"streetAddress","060355040a":"organizationName","060355040b":"organizationalUnitName","060355040c":"title","0603550414":"telephoneNumber","060355042a":"givenName","06032b06010505070201":"id_certificatePolicies","06036086480186f8420101":"netscape-cert-type","06036086480186f8420102":"netscape-base-url","06036086480186f8420103":"netscape-revocation-url","06036086480186f8420104":"netscape-ca-revocation-url","06036086480186f8420107":"netscape-cert-renewal-url","06036086480186f8420108":"netscape-ca-policy-url","06036086480186f842010c":"netscape-ssl-server-name","06036086480186f842010d":"netscape-comment","0603604c010201":"A1","0603604c010203":"A3","0603604c01020110":"Certification Practice Statement pointer","0603604c010301":"Dados do cert parte 1","0603604c010305":"Dados do cert parte 2","0603604c010306":"Dados do cert parte 3","06030992268993f22c640119":"domainComponent","06032a24a0f2a07d01010a":"Signet pilot","06032a24a0f2a07d01010b":"Signet intraNet","06032a24a0f2a07d010102":"Signet personal","06032a24a0f2a07d010114":"Signet securityPolicy","06032a24a0f2a07d010103":"Signet business","06032a24a0f2a07d010104":"Signet legal","06032a24a497a35301640101":"Certificates Australia policyIdentifier","06032a85702201":"seis-cp","06032a8570220101":"SEIS certificatePolicy-s10","06032a85702202":"SEIS pe","06032a85702203":"SEIS at","06032a8570220301":"SEIS at-personalIdentifier","06032a8648ce380201":"holdinstruction-none","06032a8648ce380202":"holdinstruction-callissuer","06032a8648ce380203":"holdinstruction-reject","06032a8648ce380401":"dsa","06032a8648ce380403":"dsaWithSha1","06032a8648ce3d01":"fieldType","06032a8648ce3d0101":"prime-field","06032a8648ce3d0102":"characteristic-two-field","06032a8648ce3d010201":"ecPublicKey","06032a8648ce3d010203":"characteristic-two-basis","06032a8648ce3d01020301":"onBasis","06032a8648ce3d01020302":"tpBasis","06032a8648ce3d01020303":"ppBasis","06032a8648ce3d02":"publicKeyType","06032a8648ce3d0201":"ecPublicKey","06032a8648ce3e0201":"dhPublicNumber","06032a864886f67d07":"nsn","06032a864886f67d0741":"nsn-ce","06032a864886f67d074100":"entrustVersInfo","06032a864886f67d0742":"nsn-alg","06032a864886f67d07420a":"cast5CBC","06032a864886f67d07420b":"cast5MAC","06032a864886f67d07420c":"pbeWithMD5AndCAST5-CBC","06032a864886f67d07420d":"passwordBasedMac","06032a864886f67d074203":"cast3CBC","06032a864886f67d0743":"nsn-oc","06032a864886f67d074300":"entrustUser","06032a864886f67d0744":"nsn-at","06032a864886f67d074400":"entrustCAInfo","06032a864886f67d07440a":"attributeCertificate","06032a864886f70d0101":"pkcs-1","06032a864886f70d010101":"rsaEncryption","06032a864886f70d010102":"md2withRSAEncryption","06032a864886f70d010103":"md4withRSAEncryption","06032a864886f70d010104":"md5withRSAEncryption","06032a864886f70d010105":"sha1withRSAEncryption","06032a864886f70d010106":"rsaOAEPEncryptionSET","06032a864886f70d010910020b":"SMIMEEncryptionKeyPreference","06032a864886f70d010c":"pkcs-12","06032a864886f70d010c01":"pkcs-12-PbeIds","06032a864886f70d010c0101":"pbeWithSHAAnd128BitRC4","06032a864886f70d010c0102":"pbeWithSHAAnd40BitRC4","06032a864886f70d010c0103":"pbeWithSHAAnd3-KeyTripleDES-CBC","06032a864886f70d010c0104":"pbeWithSHAAnd2-KeyTripleDES-CBC","06032a864886f70d010c0105":"pbeWithSHAAnd128BitRC2-CBC","06032a864886f70d010c0106":"pbeWithSHAAnd40BitRC2-CBC","06032a864886f70d010c0a":"pkcs-12Version1","06032a864886f70d010c0a01":"pkcs-12BadIds","06032a864886f70d010c0a0101":"pkcs-12-keyBag","06032a864886f70d010c0a0102":"pkcs-12-pkcs-8ShroudedKeyBag","06032a864886f70d010c0a0103":"pkcs-12-certBag","06032a864886f70d010c0a0104":"pkcs-12-crlBag","06032a864886f70d010c0a0105":"pkcs-12-secretBag","06032a864886f70d010c0a0106":"pkcs-12-safeContentsBag","06032a864886f70d010c02":"pkcs-12-ESPVKID","06032a864886f70d010c0201":"pkcs-12-PKCS8KeyShrouding","06032a864886f70d010c03":"pkcs-12-BagIds","06032a864886f70d010c0301":"pkcs-12-keyBagId","06032a864886f70d010c0302":"pkcs-12-certAndCRLBagId","06032a864886f70d010c0303":"pkcs-12-secretBagId","06032a864886f70d010c0304":"pkcs-12-safeContentsId","06032a864886f70d010c0305":"pkcs-12-pkcs-8ShroudedKeyBagId","06032a864886f70d010c04":"pkcs-12-CertBagID","06032a864886f70d010c0401":"pkcs-12-X509CertCRLBagID","06032a864886f70d010c0402":"pkcs-12-SDSICertBagID","06032a864886f70d010c05":"pkcs-12-OID","06032a864886f70d010c0501":"pkcs-12-PBEID","06032a864886f70d010c050101":"pkcs-12-PBEWithSha1And128BitRC4","06032a864886f70d010c050102":"pkcs-12-PBEWithSha1And40BitRC4","06032a864886f70d010c050103":"pkcs-12-PBEWithSha1AndTripleDESCBC","06032a864886f70d010c050104":"pkcs-12-PBEWithSha1And128BitRC2CBC","06032a864886f70d010c050105":"pkcs-12-PBEWithSha1And40BitRC2CBC","06032a864886f70d010c050106":"pkcs-12-PBEWithSha1AndRC4","06032a864886f70d010c050107":"pkcs-12-PBEWithSha1AndRC2CBC","06032a864886f70d010c0502":"pkcs-12-EnvelopingID","06032a864886f70d010c050201":"pkcs-12-RSAEncryptionWith128BitRC4","06032a864886f70d010c050202":"pkcs-12-RSAEncryptionWith40BitRC4","06032a864886f70d010c050203":"pkcs-12-RSAEncryptionWithTripleDES","06032a864886f70d010c0503":"pkcs-12-SignatureID","06032a864886f70d010c050301":"pkcs-12-RSASignatureWithSHA1Digest","06032a864886f70d0103":"pkcs-3","06032a864886f70d010301":"dhKeyAgreement","06032a864886f70d0105":"pkcs-5","06032a864886f70d010501":"pbeWithMD2AndDES-CBC","06032a864886f70d01050a":"pbeWithSHAAndDES-CBC","06032a864886f70d010503":"pbeWithMD5AndDES-CBC","06032a864886f70d010504":"pbeWithMD2AndRC2-CBC","06032a864886f70d010506":"pbeWithMD5AndRC2-CBC","06032a864886f70d010509":"pbeWithMD5AndXOR","06032a864886f70d0107":"pkcs-7","06032a864886f70d010701":"data","06032a864886f70d010702":"signedData","06032a864886f70d010703":"envelopedData","06032a864886f70d010704":"signedAndEnvelopedData","06032a864886f70d010705":"digestData","06032a864886f70d010706":"encryptedData","06032a864886f70d010707":"dataWithAttributes","06032a864886f70d010708":"encryptedPrivateKeyInfo","06032a864886f70d0109":"pkcs-9","06032a864886f70d010901":"emailAddress","06032a864886f70d01090a":"issuerAndSerialNumber","06032a864886f70d01090b":"passwordCheck","06032a864886f70d01090c":"publicKey","06032a864886f70d01090d":"signingDescription","06032a864886f70d01090e":"extensionReq","06032a864886f70d01090f":"sMIMECapabilities","06032a864886f70d01090f01":"preferSignedData","06032a864886f70d01090f02":"canNotDecryptAny","06032a864886f70d01090f03":"receiptRequest","06032a864886f70d01090f04":"receipt","06032a864886f70d01090f05":"contentHints","06032a864886f70d01090f06":"mlExpansionHistory","06032a864886f70d010910":"id-sMIME","06032a864886f70d01091000":"id-mod","06032a864886f70d0109100001":"id-mod-cms","06032a864886f70d0109100002":"id-mod-ess","06032a864886f70d01091001":"id-ct","06032a864886f70d0109100101":"id-ct-receipt","06032a864886f70d01091002":"id-aa","06032a864886f70d0109100201":"id-aa-receiptRequest","06032a864886f70d0109100202":"id-aa-securityLabel","06032a864886f70d0109100203":"id-aa-mlExpandHistory","06032a864886f70d0109100204":"id-aa-contentHint","06032a864886f70d010902":"unstructuredName","06032a864886f70d010914":"friendlyName","06032a864886f70d010915":"localKeyID","06032a864886f70d010916":"certTypes","06032a864886f70d01091601":"x509Certificate","06032a864886f70d01091602":"sdsiCertificate","06032a864886f70d010917":"crlTypes","06032a864886f70d01091701":"x509Crl","06032a864886f70d010903":"contentType","06032a864886f70d010904":"messageDigest","06032a864886f70d010905":"signingTime","06032a864886f70d010906":"countersignature","06032a864886f70d010907":"challengePassword","06032a864886f70d010908":"unstructuredAddress","06032a864886f70d010909":"extendedCertificateAttributes","06032a864886f70d02":"digestAlgorithm","06032a864886f70d0202":"md2","06032a864886f70d0204":"md4","06032a864886f70d0205":"md5","06032a864886f70d03":"encryptionAlgorithm","06032a864886f70d030a":"desCDMF","06032a864886f70d0302":"rc2CBC","06032a864886f70d0303":"rc2ECB","06032a864886f70d0304":"rc4","06032a864886f70d0305":"rc4WithMAC","06032a864886f70d0306":"DESX-CBC","06032a864886f70d0307":"DES-EDE3-CBC","06032a864886f70d0308":"RC5CBC","06032a864886f70d0309":"RC5-CBCPad","06032a864886f7140403":"microsoftExcel","06032a864886f7140404":"titledWithOID","06032a864886f7140405":"microsoftPowerPoint","06032b81051086480954":"x9-84","06032b8105108648095400":"x9-84-Module","06032b810510864809540001":"x9-84-Biometrics","06032b810510864809540002":"x9-84-CMS","06032b810510864809540003":"x9-84-Identifiers","06032b8105108648095401":"biometric","06032b810510864809540100":"id-unknown-Type","06032b810510864809540101":"id-body-Odor","06032b81051086480954010a":"id-palm","06032b81051086480954010b":"id-retina","06032b81051086480954010c":"id-signature","06032b81051086480954010d":"id-speech-Pattern","06032b81051086480954010e":"id-thermal-Image","06032b81051086480954010f":"id-vein-Pattern","06032b810510864809540110":"id-thermal-Face-Image","06032b810510864809540111":"id-thermal-Hand-Image","06032b810510864809540112":"id-lip-Movement","06032b810510864809540113":"id-gait","06032b810510864809540102":"id-dna","06032b810510864809540103":"id-ear-Shape","06032b810510864809540104":"id-facial-Features","06032b810510864809540105":"id-finger-Image","06032b810510864809540106":"id-finger-Geometry","06032b810510864809540107":"id-hand-Geometry","06032b810510864809540108":"id-iris-Features","06032b810510864809540109":"id-keystroke-Dynamics","06032b8105108648095402":"processing-algorithm","06032b8105108648095403":"matching-method","06032b8105108648095404":"format-Owner","06032b810510864809540400":"cbeff-Owner","06032b810510864809540401":"ibia-Owner","06032b81051086480954040101":"id-ibia-SAFLINK","06032b8105108648095404010a":"id-ibia-SecuGen","06032b8105108648095404010b":"id-ibia-PreciseBiometric","06032b8105108648095404010c":"id-ibia-Identix","06032b8105108648095404010d":"id-ibia-DERMALOG","06032b8105108648095404010e":"id-ibia-LOGICO","06032b8105108648095404010f":"id-ibia-NIST","06032b81051086480954040110":"id-ibia-A3Vision","06032b81051086480954040111":"id-ibia-NEC","06032b81051086480954040112":"id-ibia-STMicroelectronics","06032b81051086480954040102":"id-ibia-Bioscrypt","06032b81051086480954040103":"id-ibia-Visionics","06032b81051086480954040104":"id-ibia-InfineonTechnologiesAG","06032b81051086480954040105":"id-ibia-IridianTechnologies","06032b81051086480954040106":"id-ibia-Veridicom","06032b81051086480954040107":"id-ibia-CyberSIGN","06032b81051086480954040108":"id-ibia-eCryp.","06032b81051086480954040109":"id-ibia-FingerprintCardsAB","06032b810510864809540402":"x9-Owner","06032b0e021a05":"sha","06032b0e03020101":"rsa","06032b0e03020a":"desMAC","06032b0e03020b":"rsaSignature","06032b0e03020c":"dsa","06032b0e03020d":"dsaWithSHA","06032b0e03020e":"mdc2WithRSASignature","06032b0e03020f":"shaWithRSASignature","06032b0e030210":"dhWithCommonModulus","06032b0e030211":"desEDE","06032b0e030212":"sha","06032b0e030213":"mdc-2","06032b0e030202":"md4WitRSA","06032b0e03020201":"sqmod-N","06032b0e030214":"dsaCommon","06032b0e030215":"dsaCommonWithSHA","06032b0e030216":"rsaKeyTransport","06032b0e030217":"keyed-hash-seal","06032b0e030218":"md2WithRSASignature","06032b0e030219":"md5WithRSASignature","06032b0e03021a":"sha1","06032b0e03021b":"dsaWithSHA1","06032b0e03021c":"dsaWithCommonSHA1","06032b0e03021d":"sha-1WithRSAEncryption","06032b0e030203":"md5WithRSA","06032b0e03020301":"sqmod-NwithRSA","06032b0e030204":"md4WithRSAEncryption","06032b0e030206":"desECB","06032b0e030207":"desCBC","06032b0e030208":"desOFB","06032b0e030209":"desCFB","06032b0e030301":"simple-strong-auth-mechanism","06032b0e07020101":"ElGamal","06032b0e07020301":"md2WithRSA","06032b0e07020302":"md2WithElGamal","06032b2403":"algorithm","06032b240301":"encryptionAlgorithm","06032b24030101":"des","06032b240301010101":"desECBPad","06032b24030101010101":"desECBPadISO","06032b240301010201":"desCBCPad","06032b24030101020101":"desCBCPadISO","06032b24030102":"idea","06032b2403010201":"ideaECB","06032b240301020101":"ideaECBPad","06032b24030102010101":"ideaECBPadISO","06032b2403010202":"ideaCBC","06032b240301020201":"ideaCBCPad","06032b24030102020101":"ideaCBCPadISO","06032b2403010203":"ideaOFB","06032b2403010204":"ideaCFB","06032b24030103":"des-3","06032b240301030101":"des-3ECBPad","06032b24030103010101":"des-3ECBPadISO","06032b240301030201":"des-3CBCPad","06032b24030103020101":"des-3CBCPadISO","06032b240302":"hashAlgorithm","06032b24030201":"ripemd160","06032b24030202":"ripemd128","06032b24030203":"ripemd256","06032b24030204":"mdc2singleLength","06032b24030205":"mdc2doubleLength","06032b240303":"signatureAlgorithm","06032b24030301":"rsa","06032b2403030101":"rsaMitSHA-1","06032b2403030102":"rsaMitRIPEMD160","06032b24030302":"ellipticCurve","06032b240304":"signatureScheme","06032b24030401":"iso9796-1","06032b2403040201":"iso9796-2","06032b2403040202":"iso9796-2rsa","06032b2404":"attribute","06032b2405":"policy","06032b2406":"api","06032b240601":"manufacturerSpecific","06032b240602":"functionalitySpecific","06032b2407":"api","06032b240701":"keyAgreement","06032b240702":"keyTransport","06032b06010401927c0a0101":"UNINETT policyIdentifier","06032b0601040195180a":"ICE-TEL policyIdentifier","06032b0601040197552001":"cryptlibEnvelope","06032b0601040197552002":"cryptlibPrivateKey","060a2b060104018237":"Microsoft OID","060a2b0601040182370a":"Crypto 2.0","060a2b0601040182370a01":"certTrustList","060a2b0601040182370a0101":"szOID_SORTED_CTL","060a2b0601040182370a0a":"Microsoft CMC OIDs","060a2b0601040182370a0a01":"szOID_CMC_ADD_ATTRIBUTES","060a2b0601040182370a0b":"Microsoft certificate property OIDs","060a2b0601040182370a0b01":"szOID_CERT_PROP_ID_PREFIX","060a2b0601040182370a0c":"CryptUI","060a2b0601040182370a0c01":"szOID_ANY_APPLICATION_POLICY","060a2b0601040182370a02":"nextUpdateLocation","060a2b0601040182370a0301":"certTrustListSigning","060a2b0601040182370a030a":"szOID_KP_QUALIFIED_SUBORDINATION","060a2b0601040182370a030b":"szOID_KP_KEY_RECOVERY","060a2b0601040182370a030c":"szOID_KP_DOCUMENT_SIGNING","060a2b0601040182370a0302":"timeStampSigning","060a2b0601040182370a0303":"serverGatedCrypto","060a2b0601040182370a030301":"szOID_SERIALIZED","060a2b0601040182370a0304":"encryptedFileSystem","060a2b0601040182370a030401":"szOID_EFS_RECOVERY","060a2b0601040182370a0305":"szOID_WHQL_CRYPTO","060a2b0601040182370a0306":"szOID_NT5_CRYPTO","060a2b0601040182370a0307":"szOID_OEM_WHQL_CRYPTO","060a2b0601040182370a0308":"szOID_EMBEDDED_NT_CRYPTO","060a2b0601040182370a0309":"szOID_ROOT_LIST_SIGNER","060a2b0601040182370a0401":"yesnoTrustAttr","060a2b0601040182370a0501":"szOID_DRM","060a2b0601040182370a0502":"szOID_DRM_INDIVIDUALIZATION","060a2b0601040182370a0601":"szOID_LICENSES","060a2b0601040182370a0602":"szOID_LICENSE_SERVER","060a2b0601040182370a07":"szOID_MICROSOFT_RDN_PREFIX","060a2b0601040182370a0701":"szOID_KEYID_RDN","060a2b0601040182370a0801":"szOID_REMOVE_CERTIFICATE","060a2b0601040182370a0901":"szOID_CROSS_CERT_DIST_POINTS","060a2b0601040182370c":"Catalog","060a2b0601040182370c0101":"szOID_CATALOG_LIST","060a2b0601040182370c0102":"szOID_CATALOG_LIST_MEMBER","060a2b0601040182370c0201":"CAT_NAMEVALUE_OBJID","060a2b0601040182370c0202":"CAT_MEMBERINFO_OBJID","060a2b0601040182370d":"Microsoft PKCS10 OIDs","060a2b0601040182370d01":"szOID_RENEWAL_CERTIFICATE","060a2b0601040182370d0201":"szOID_ENROLLMENT_NAME_VALUE_PAIR","060a2b0601040182370d0202":"szOID_ENROLLMENT_CSP_PROVIDER","060a2b0601040182370d0203":"OS Version","060a2b0601040182370f":"Microsoft Java","060a2b06010401823710":"Microsoft Outlook/Exchange","060a2b0601040182371004":"Outlook Express","060a2b06010401823711":"Microsoft PKCS12 attributes","060a2b0601040182371101":"szOID_LOCAL_MACHINE_KEYSET","060a2b06010401823712":"Microsoft Hydra","060a2b06010401823713":"Microsoft ISPU Test","060a2b06010401823702":"Authenticode","060a2b06010401823702010a":"spcAgencyInfo","060a2b06010401823702010b":"spcStatementType","060a2b06010401823702010c":"spcSpOpusInfo","060a2b06010401823702010e":"certExtensions","060a2b06010401823702010f":"spcPelmageData","060a2b060104018237020112":"SPC_RAW_FILE_DATA_OBJID","060a2b060104018237020113":"SPC_STRUCTURED_STORAGE_DATA_OBJID","060a2b060104018237020114":"spcLink","060a2b060104018237020115":"individualCodeSigning","060a2b060104018237020116":"commercialCodeSigning","060a2b060104018237020119":"spcLink","060a2b06010401823702011a":"spcMinimalCriteriaInfo","060a2b06010401823702011b":"spcFinancialCriteriaInfo","060a2b06010401823702011c":"spcLink","060a2b06010401823702011d":"SPC_HASH_INFO_OBJID","060a2b06010401823702011e":"SPC_SIPINFO_OBJID","060a2b060104018237020104":"spcIndirectDataContext","060a2b0601040182370202":"CTL for Software Publishers Trusted CAs","060a2b060104018237020201":"szOID_TRUSTED_CODESIGNING_CA_LIST","060a2b060104018237020202":"szOID_TRUSTED_CLIENT_AUTH_CA_LIST","060a2b060104018237020203":"szOID_TRUSTED_SERVER_AUTH_CA_LIST","060a2b06010401823714":"Microsoft Enrollment Infrastructure","060a2b0601040182371401":"szOID_AUTO_ENROLL_CTL_USAGE","060a2b0601040182371402":"szOID_ENROLL_CERTTYPE_EXTENSION","060a2b060104018237140201":"szOID_ENROLLMENT_AGENT","060a2b060104018237140202":"szOID_KP_SMARTCARD_LOGON","060a2b060104018237140203":"szOID_NT_PRINCIPAL_NAME","060a2b0601040182371403":"szOID_CERT_MANIFOLD","06092b06010401823715":"Microsoft CertSrv Infrastructure","06092b0601040182371501":"szOID_CERTSRV_CA_VERSION","06092b0601040182371514":"Client Information","060a2b06010401823719":"Microsoft Directory Service","060a2b0601040182371901":"szOID_NTDS_REPLICATION","060a2b06010401823703":"Time Stamping","060a2b060104018237030201":"SPC_TIME_STAMP_REQUEST_OBJID","060a2b0601040182371e":"IIS","060a2b0601040182371f":"Windows updates and service packs","060a2b0601040182371f01":"szOID_PRODUCT_UPDATE","060a2b06010401823704":"Permissions","060a2b06010401823728":"Fonts","060a2b06010401823729":"Microsoft Licensing and Registration","060a2b0601040182372a":"Microsoft Corporate PKI (ITG)","060a2b06010401823758":"CAPICOM","060a2b0601040182375801":"szOID_CAPICOM_VERSION","060a2b0601040182375802":"szOID_CAPICOM_ATTRIBUTE","060a2b060104018237580201":"szOID_CAPICOM_DOCUMENT_NAME","060a2b060104018237580202":"szOID_CAPICOM_DOCUMENT_DESCRIPTION","060a2b0601040182375803":"szOID_CAPICOM_ENCRYPTED_DATA","060a2b060104018237580301":"szOID_CAPICOM_ENCRYPTED_CONTENT","06032b0601050507":"pkix","06032b060105050701":"privateExtension","06032b06010505070101":"authorityInfoAccess","06032b06010505070c02":"CMC Data","06032b060105050702":"policyQualifierIds","06032b06010505070202":"unotice","06032b060105050703":"keyPurpose","06032b06010505070301":"serverAuth","06032b06010505070302":"clientAuth","06032b06010505070303":"codeSigning","06032b06010505070304":"emailProtection","06032b06010505070305":"ipsecEndSystem","06032b06010505070306":"ipsecTunnel","06032b06010505070307":"ipsecUser","06032b06010505070308":"timeStamping","06032b060105050704":"cmpInformationTypes", +"06032b06010505070401":"caProtEncCert","06032b06010505070402":"signKeyPairTypes","06032b06010505070403":"encKeyPairTypes","06032b06010505070404":"preferredSymmAlg","06032b06010505070405":"caKeyUpdateInfo","06032b06010505070406":"currentCRL","06032b06010505073001":"ocsp","06032b06010505073002":"caIssuers","06032b06010505080101":"HMAC-MD5","06032b06010505080102":"HMAC-SHA","060360864801650201010a":"mosaicKeyManagementAlgorithm","060360864801650201010b":"sdnsKMandSigAlgorithm","060360864801650201010c":"mosaicKMandSigAlgorithm","060360864801650201010d":"SuiteASignatureAlgorithm","060360864801650201010e":"SuiteAConfidentialityAlgorithm","060360864801650201010f":"SuiteAIntegrityAlgorithm","06036086480186f84201":"cert-extension","06036086480186f842010a":"EntityLogo","06036086480186f842010b":"UserPicture","06036086480186f8420109":"HomePage-url","06036086480186f84202":"data-type","06036086480186f8420201":"GIF","06036086480186f8420202":"JPEG","06036086480186f8420203":"URL","06036086480186f8420204":"HTML","06036086480186f8420205":"netscape-cert-sequence","06036086480186f8420206":"netscape-cert-url","06036086480186f84203":"directory","06036086480186f8420401":"serverGatedCrypto","06036086480186f845010603":"Unknown Verisign extension","06036086480186f845010606":"Unknown Verisign extension","06036086480186f84501070101":"Verisign certificatePolicy","06036086480186f8450107010101":"Unknown Verisign policy qualifier","06036086480186f8450107010102":"Unknown Verisign policy qualifier","0603678105":"TCPA","060367810501":"tcpa_specVersion","060367810502":"tcpa_attribute","06036781050201":"tcpa_at_tpmManufacturer","0603678105020a":"tcpa_at_securityQualities","0603678105020b":"tcpa_at_tpmProtectionProfile","0603678105020c":"tcpa_at_tpmSecurityTarget","0603678105020d":"tcpa_at_foundationProtectionProfile","0603678105020e":"tcpa_at_foundationSecurityTarget","0603678105020f":"tcpa_at_tpmIdLabel","06036781050202":"tcpa_at_tpmModel","06036781050203":"tcpa_at_tpmVersion","06036781050204":"tcpa_at_platformManufacturer","06036781050205":"tcpa_at_platformModel","06036781050206":"tcpa_at_platformVersion","06036781050207":"tcpa_at_componentManufacturer","06036781050208":"tcpa_at_componentModel","06036781050209":"tcpa_at_componentVersion","060367810503":"tcpa_protocol","06036781050301":"tcpa_prtt_tpmIdProtocol","0603672a00":"contentType","0603672a0000":"PANData","0603672a0001":"PANToken","0603672a0002":"PANOnly","0603672a01":"msgExt","0603672a0a":"national","0603672a0a8140":"Japan","0603672a02":"field","0603672a0200":"fullName","0603672a0201":"givenName","0603672a020a":"amount","0603672a0202":"familyName","0603672a0203":"birthFamilyName","0603672a0204":"placeName","0603672a0205":"identificationNumber","0603672a0206":"month","0603672a0207":"date","0603672a02070b":"accountNumber","0603672a02070c":"passPhrase","0603672a0208":"address","0603672a0209":"telephone","0603672a03":"attribute","0603672a0300":"cert","0603672a030000":"rootKeyThumb","0603672a030001":"additionalPolicy","0603672a04":"algorithm","0603672a05":"policy","0603672a0500":"root","0603672a06":"module","0603672a07":"certExt","0603672a0700":"hashedRootKey","0603672a0701":"certificateType","0603672a0702":"merchantData","0603672a0703":"cardCertRequired","0603672a0704":"tunneling","0603672a0705":"setExtensions","0603672a0706":"setQualifier","0603672a08":"brand","0603672a0801":"IATA-ATA","0603672a081e":"Diners","0603672a0822":"AmericanExpress","0603672a0804":"VISA","0603672a0805":"MasterCard","0603672a08ae7b":"Novus","0603672a09":"vendor","0603672a0900":"GlobeSet","0603672a0901":"IBM","0603672a090a":"Griffin","0603672a090b":"Certicom","0603672a090c":"OSS","0603672a090d":"TenthMountain","0603672a090e":"Antares","0603672a090f":"ECC","0603672a0910":"Maithean","0603672a0911":"Netscape","0603672a0912":"Verisign","0603672a0913":"BlueMoney","0603672a0902":"CyberCash","0603672a0914":"Lacerte","0603672a0915":"Fujitsu","0603672a0916":"eLab","0603672a0917":"Entrust","0603672a0918":"VIAnet","0603672a0919":"III","0603672a091a":"OpenMarket","0603672a091b":"Lexem","0603672a091c":"Intertrader","0603672a091d":"Persimmon","0603672a0903":"Terisa","0603672a091e":"NABLE","0603672a091f":"espace-net","0603672a0920":"Hitachi","0603672a0921":"Microsoft","0603672a0922":"NEC","0603672a0923":"Mitsubishi","0603672a0924":"NCR","0603672a0925":"e-COMM","0603672a0926":"Gemplus","0603672a0904":"RSADSI","0603672a0905":"VeriFone","0603672a0906":"TrinTech","0603672a0907":"BankGate","0603672a0908":"GTE","0603672a0909":"CompuSource","0603551d01":"authorityKeyIdentifier","0603551d0a":"basicConstraints","0603551d0b":"nameConstraints","0603551d0c":"policyConstraints","0603551d0d":"basicConstraints","0603551d0e":"subjectKeyIdentifier","0603551d0f":"keyUsage","0603551d10":"privateKeyUsagePeriod","0603551d11":"subjectAltName","0603551d12":"issuerAltName","0603551d13":"basicConstraints","0603551d02":"keyAttributes","0603551d14":"cRLNumber","0603551d15":"cRLReason","0603551d16":"expirationDate","0603551d17":"instructionCode","0603551d18":"invalidityDate","0603551d1a":"issuingDistributionPoint","0603551d1b":"deltaCRLIndicator","0603551d1c":"issuingDistributionPoint","0603551d1d":"certificateIssuer","0603551d03":"certificatePolicies","0603551d1e":"nameConstraints","0603551d1f":"cRLDistributionPoints","0603551d20":"certificatePolicies","0603551d21":"policyMappings","0603551d22":"policyConstraints","0603551d23":"authorityKeyIdentifier","0603551d24":"policyConstraints","0603551d25":"extKeyUsage","0603551d04":"keyUsageRestriction","0603551d05":"policyMapping","0603551d06":"subtreesConstraint","0603551d07":"subjectAltName","0603551d08":"issuerAltName","0603551d09":"subjectDirectoryAttributes","0603550400":"objectClass","0603550401":"aliasObjectName","060355040d":"description","060355040e":"searchGuide","060355040f":"businessCategory","0603550410":"postalAddress","0603550411":"postalCode","0603550412":"postOfficeBox","0603550413":"physicalDeliveryOfficeName","0603550402":"knowledgeInformation","0603550415":"telexNumber","0603550416":"teletexTerminalIdentifier","0603550417":"facsimileTelephoneNumber","0603550418":"x121Address","0603550419":"internationalISDNNumber","060355041a":"registeredAddress","060355041b":"destinationIndicator","060355041c":"preferredDeliveryMehtod","060355041d":"presentationAddress","060355041e":"supportedApplicationContext","060355041f":"member","0603550420":"owner","0603550421":"roleOccupant","0603550422":"seeAlso","0603550423":"userPassword","0603550424":"userCertificate","0603550425":"caCertificate","0603550426":"authorityRevocationList","0603550427":"certificateRevocationList","0603550428":"crossCertificatePair","0603550429":"givenName","0603550405":"serialNumber","0603550434":"supportedAlgorithms","0603550435":"deltaRevocationList","060355043a":"crossCertificatePair","06035508":"X.500-Algorithms","0603550801":"X.500-Alg-Encryption","060355080101":"rsa","0603604c0101":"DPC"};var Punycode={IDN:!1,run_to_ascii:function(a,b){var c=b[0];return c?punycode.ToASCII(a):punycode.encode(a)},run_to_unicode:function(a,b){var c=b[0];return c?punycode.ToUnicode(a):punycode.decode(a)}},QuotedPrintable={run_to:function(a,b){var c=QuotedPrintable.mimeEncode(a);return c=c.replace(/\r?\n|\r/g,function(){return"\r\n"}).replace(/[\t ]+$/gm,function(a){return a.replace(/ /g,"=20").replace(/\t/g,"=09")}),QuotedPrintable._addSoftLinebreaks(c,"qp")},run_from:function(a,b){var c=a.replace(/\=(?:\r?\n|$)/g,"");return QuotedPrintable.mimeDecode(c)},mimeDecode:function(a){for(var b,c,d=(a.match(/\=[\da-fA-F]{2}/g)||[]).length,e=a.length-2*d,f=new Array(e),g=0,h=0,i=a.length;h<i;h++)b=a.charAt(h),"="===b&&(c=a.substr(h+1,2))&&/[\da-fA-F]{2}/.test(c)?(f[g++]=parseInt(c,16),h+=2):f[g++]=b.charCodeAt(0);return f},mimeEncode:function(a){for(var b=[[9],[10],[13],[32],[33],[35,60],[62],[64,94],[96,126]],c="",d=0,e=a.length;d<e;d++)c+=this._checkRanges(a[d],b)?String.fromCharCode(a[d]):"="+(a[d]<16?"0":"")+a[d].toString(16).toUpperCase();return c},_checkRanges:function(a,b){for(var c=b.length-1;c>=0;c--)if(b[c].length){if(1===b[c].length&&a===b[c][0])return!0;if(2===b[c].length&&a>=b[c][0]&&a<=b[c][1])return!0}return!1},_addSoftLinebreaks:function(a,b){var c=76;return b=(b||"base64").toString().toLowerCase().trim(),"qp"===b?this._addQPSoftLinebreaks(a,c):this._addBase64SoftLinebreaks(a,c)},_addBase64SoftLinebreaks:function(a,b){return a=(a||"").toString().trim(),a.replace(new RegExp(".{"+b+"}","g"),"$&\r\n").trim()},_addQPSoftLinebreaks:function(a,b){for(var c,d,e,f=0,g=a.length,h=Math.floor(b/3),i="";f<g;)if(e=a.substr(f,b),c=e.match(/\r\n/))e=e.substr(0,c.index+c[0].length),i+=e,f+=e.length;else if("\n"!==e.substr(-1))if(c=e.substr(-h).match(/\n.*?$/))e=e.substr(0,e.length-(c[0].length-1)),i+=e,f+=e.length;else{if(e.length>b-h&&(c=e.substr(-h).match(/[ \t\.,!\?][^ \t\.,!\?]*$/)))e=e.substr(0,e.length-(c[0].length-1));else if("\r"===e.substr(-1))e=e.substr(0,e.length-1);else if(e.match(/\=[\da-f]{0,2}$/i))for((c=e.match(/\=[\da-f]{0,1}$/i))&&(e=e.substr(0,e.length-c[0].length));e.length>3&&e.length<g-f&&!e.match(/^(?:=[\da-f]{2}){1,4}$/i)&&(c=e.match(/\=[\da-f]{2}$/gi))&&(d=parseInt(c[0].substr(1,2),16),!(d<128))&&(e=e.substr(0,e.length-3),!(d>=192)););f+e.length<g&&"\n"!==e.substr(-1)?(76===e.length&&e.match(/\=[\da-f]{2}$/i)?e=e.substr(0,e.length-3):76===e.length&&(e=e.substr(0,e.length-1)),f+=e.length,e+="=\r\n"):f+=e.length,i+=e}else i+=e,f+=e.length;return i}},Rotate={ROTATE_AMOUNT:1,ROTATE_WHOLE:!1,_rot:function(a,b,c){for(var d=[],e=0;e<a.length;e++){for(var f=a[e],g=0;g<b;g++)f=c(f);d.push(f)}return d},run_rotr:function(a,b){return b[1]?Rotate._rotr_whole(a,b[0]):Rotate._rot(a,b[0],Rotate._rotr)},run_rotl:function(a,b){return b[1]?Rotate._rotl_whole(a,b[0]):Rotate._rot(a,b[0],Rotate._rotl)},ROT13_AMOUNT:13,ROT13_LOWERCASE:!0,ROT13_UPPERCASE:!0,run_rot13:function(a,b){var c,d=b[2],e=a,f=b[0],g=b[1];if(d){d<0&&(d=26-Math.abs(d)%26);for(var h=0;h<a.length;h++)c=a[h],g&&c>=65&&c<=90?(c=(c-65+d)%26,e[h]=c+65):f&&c>=97&&c<=122&&(c=(c-97+d)%26,e[h]=c+97)}return e},ROT47_AMOUNT:47,run_rot47:function(a,b){var c,d=b[0],e=a;if(d){d<0&&(d=94-Math.abs(d)%94);for(var f=0;f<a.length;f++)c=a[f],c>=33&&c<=126&&(c=(c-33+d)%94,e[f]=c+33)}return e},_rotr:function(a){var b=(1&a)<<7;return a>>1|b},_rotl:function(a){var b=a>>7&1;return 255&(a<<1|b)},_rotr_whole:function(a,b){var c,d=0,e=[];b%=8;for(var f=0;f<a.length;f++){var g=a[f]>>>0;c=g>>b|d,d=(g&Math.pow(2,b)-1)<<8-b,e.push(c)}return e[0]|=d,e},_rotl_whole:function(a,b){var c,d=0,e=[];b%=8;for(var f=a.length-1;f>=0;f--){var g=a[f];c=255&(g<<b|d),d=g>>8-b&Math.pow(2,b)-1,e[f]=c}return e[a.length-1]=e[a.length-1]|d,e}},SeqUtils={DELIMITER_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon","Colon","Nothing (separate chars)"],SORT_REVERSE:!1,SORT_ORDER:["Alphabetical (case sensitive)","Alphabetical (case insensitive)","IP address"],run_sort:function(a,b){var c=Utils.char_rep[b[0]],d=b[1],e=b[2],f=a.split(c);return"Alphabetical (case sensitive)"===e?f=f.sort():"Alphabetical (case insensitive)"===e?f=f.sort(SeqUtils._case_insensitive_sort):"IP address"===e&&(f=f.sort(SeqUtils._ip_sort)),d&&f.reverse(),f.join(c)},run_unique:function(a,b){var c=Utils.char_rep[b[0]];return a.split(c).unique().join(c)},SEARCH_TYPE:["Regex","Extended (\\n, \\t, \\x...)","Simple string"],run_count:function(a,b){var c=b[0].string,d=b[0].option;if("Regex"!==d||!c)return c?(0===d.indexOf("Extended")&&(c=Utils.parse_escaped_chars(c)),a.count(c)):0;try{var e=new RegExp(c,"gi"),f=a.match(e);return f.length}catch(a){return 0}},REVERSE_BY:["Character","Line"],run_reverse:function(a,b){if("Line"===b[0]){for(var c=[],d=[],e=[],f=0;f<a.length;f++)10===a[f]?(c.push(d),d=[]):d.push(a[f]);for(c.push(d),c.reverse(),f=0;f<c.length;f++)e=e.concat(c[f]),e.push(10);return e.slice(0,a.length)}return a.reverse()},run_add_line_numbers:function(a,b){for(var c=a.split("\n"),d="",e=c.length.toString().length,f=0;f<c.length;f++)d+=Utils.pad((f+1).toString(),e," ")+" "+c[f]+"\n";return d.slice(0,d.length-1)},run_remove_line_numbers:function(a,b){return a.replace(/^[ \t]{0,5}\d+[\s:|\-,.)\]]/gm,"")},run_expand_alph_range:function(a,b){return Utils.expand_alph_range(a).join(b[0])},_case_insensitive_sort:function(a,b){return a.toLowerCase().localeCompare(b.toLowerCase())},_ip_sort:function(a,b){var c=a.split("."),d=b.split(".");return c=16777216*c[0]+65536*c[1]+256*c[2]+1*c[3],d=16777216*d[0]+65536*d[1]+256*d[2]+1*d[3],isNaN(c)&&!isNaN(d)?1:!isNaN(c)&&isNaN(d)?-1:isNaN(c)&&isNaN(d)?a.localeCompare(b):c-d}},StrUtils={REGEX_PRE_POPULATE:[{name:"User defined",value:""},{name:"IPv4 address",value:"(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?"},{name:"IPv6 address",value:"((?=.*::)(?!.*::.+::)(::)?([\\dA-Fa-f]{1,4}:(:|\\b)|){5}|([\\dA-Fa-f]{1,4}:){6})((([\\dA-Fa-f]{1,4}((?!\\3)::|:\\b|(?![\\dA-Fa-f])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})"},{name:"Email address",value:"(\\w[-.\\w]*)@([-\\w]+(?:\\.[-\\w]+)*)\\.([A-Za-z]{2,4})"},{name:"URL",value:'([A-Za-z]+://)([-\\w]+(?:\\.\\w[-\\w]*)+)(:\\d+)?(/[^.!,?;"\\x27<>()\\[\\]{}\\s\\x7F-\\xFF]*(?:[.!,?]+[^.!,?;"\\x27<>()\\[\\]{}\\s\\x7F-\\xFF]+)*)?'},{name:"Domain",value:"(?:(https?):\\/\\/)?([-\\w.]+)\\.(com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+"},{name:"Windows file path",value:"([A-Za-z]):\\\\((?:[A-Za-z\\d][A-Za-z\\d\\- \\x27_\\(\\)]{0,61}\\\\?)*[A-Za-z\\d][A-Za-z\\d\\- \\x27_\\(\\)]{0,61})(\\.[A-Za-z\\d]{1,6})?"},{name:"UNIX file path",value:"(?:/[A-Za-z\\d.][A-Za-z\\d\\-.]{0,61})+"},{name:"MAC address",value:"[A-Fa-f\\d]{2}(?:[:-][A-Fa-f\\d]{2}){5}"},{name:"Date (yyyy-mm-dd)",value:"((?:19|20)\\d\\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])"},{name:"Date (dd/mm/yyyy)",value:"(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.]((?:19|20)\\d\\d)"},{name:"Date (mm/dd/yyyy)",value:"(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]((?:19|20)\\d\\d)"},{name:"Strings",value:'[A-Za-z\\d/\\-:.,_$%\\x27"()<>= !\\[\\]{}@]{4,}'}],REGEX_CASE_INSENSITIVE:!0,REGEX_MULTILINE_MATCHING:!0,OUTPUT_FORMAT:["Highlight matches","List matches","List capture groups","List matches with capture groups"],DISPLAY_TOTAL:!1,run_regex:function(a,b){var c=b[1],d=b[2],e=b[3],f=b[4],g=b[5],h="g";if(d&&(h+="i"),e&&(h+="m"),!c||"^"===c||"$"===c)return Utils.escape_html(a);try{var i=new RegExp(c,h);switch(g){case"Highlight matches":return StrUtils._regex_highlight(a,i,f);case"List matches":return Utils.escape_html(StrUtils._regex_list(a,i,f,!0,!1));case"List capture groups":return Utils.escape_html(StrUtils._regex_list(a,i,f,!1,!0));case"List matches with capture groups":return Utils.escape_html(StrUtils._regex_list(a,i,f,!0,!0));default:return"Error: Invalid output format"}}catch(a){return"Invalid regex. Details: "+a.message}},CASE_SCOPE:["All","Word","Sentence","Paragraph"],run_upper:function(a,b){var c=b[0];switch(c){case"Word":return a.replace(/(\b\w)/gi,function(a){return a.toUpperCase()});case"Sentence":return a.replace(/(?:\.|^)\s*(\b\w)/gi,function(a){return a.toUpperCase()});case"Paragraph":return a.replace(/(?:\n|^)\s*(\b\w)/gi,function(a){return a.toUpperCase()});case"All":default:return a.toUpperCase()}},run_lower:function(a,b){return a.toLowerCase()},SEARCH_TYPE:["Regex","Extended (\\n, \\t, \\x...)","Simple string"],FIND_REPLACE_GLOBAL:!0,FIND_REPLACE_CASE:!1,FIND_REPLACE_MULTILINE:!0,run_find_replace:function(a,b){var c=b[0].string,d=b[0].option,e=b[1],f=b[2],g=b[3],h=b[4],i="";return f&&(i+="g"),g&&(i+="i"),h&&(i+="m"),"Regex"===d?c=new RegExp(c,i):0===d.indexOf("Extended")&&(c=Utils.parse_escaped_chars(c)),a.replace(c,e,i)},SPLIT_DELIM:",",DELIMITER_OPTIONS:["Line feed","CRLF","Space","Comma","Semi-colon","Colon","Nothing (separate chars)"],run_split:function(a,b){var c=b[0]||StrUtils.SPLIT_DELIM,d=Utils.char_rep[b[1]],e=a.split(c);return e.join(d)},DIFF_SAMPLE_DELIMITER:"\\n\\n",DIFF_BY:["Character","Word","Line","Sentence","CSS","JSON"],run_diff:function(a,b){var c,d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=a.split(d),j="";if(!i||2!==i.length)return"Incorrect number of samples, perhaps you need to modify the sample delimiter or add more samples?";switch(e){case"Character":c=JsDiff.diffChars(i[0],i[1]);break;case"Word":c=h?JsDiff.diffWords(i[0],i[1]):JsDiff.diffWordsWithSpace(i[0],i[1]);break;case"Line":c=h?JsDiff.diffTrimmedLines(i[0],i[1]):JsDiff.diffLines(i[0],i[1]);break;case"Sentence":c=JsDiff.diffSentences(i[0],i[1]);break;case"CSS":c=JsDiff.diffCss(i[0],i[1]);break;case"JSON":c=JsDiff.diffJson(i[0],i[1]);break;default:return"Invalid 'Diff by' option."}for(var k=0;k<c.length;k++)c[k].added?f&&(j+="<span class='hlgreen'>"+Utils.escape_html(c[k].value)+"</span>"):c[k].removed?g&&(j+="<span class='hlred'>"+Utils.escape_html(c[k].value)+"</span>"):j+=Utils.escape_html(c[k].value);return j},OFF_CHK_SAMPLE_DELIMITER:"\\n\\n",run_offset_checker:function(a,b){var c,d=b[0],e=a.split(d),f=[],g=0,h=0,i=!1,j=!1;if(!e||e.length<2)return"Not enough samples, perhaps you need to modify the sample delimiter or add more data?";for(h=0;h<e.length;h++)f[h]="";for(g=0;g<e[0].length;g++){for(c=e[0][g],i=!1,h=1;h<e.length;h++){if(e[h][g]!==c){i=!1;break}i=!0}for(h=0;h<e.length;h++)e[h].length<=g?(j&&(f[h]+="</span>"),h===e.length-1&&(j=!1)):(i&&!j?(f[h]+="<span class='hlgreen'>"+Utils.escape_html(e[h][g]),e[h].length===g+1&&(f[h]+="</span>"),h===e.length-1&&(j=!0)):!i&&j?(f[h]+="</span>"+Utils.escape_html(e[h][g]),h===e.length-1&&(j=!1)):(f[h]+=Utils.escape_html(e[h][g]),j&&e[h].length===g+1&&(f[h]+="</span>",e[h].length-1!==g&&(j=!1))),e[0].length-1===g&&(j&&(f[h]+="</span>"),f[h]+=Utils.escape_html(e[h].substring(g+1))))}return f.join(d)},run_parse_escaped_string:function(a,b){return Utils.parse_escaped_chars(a)},_regex_highlight:function(a,b,c){for(var d,e="",f=1,g=0,h=0;d=b.exec(a);)e+=Utils.escape_html(a.slice(g,d.index)),e+="<span class='hl"+f+"'>"+Utils.escape_html(d[0])+"</span>",f=1===f?2:1,g=b.lastIndex,h++;return e+=Utils.escape_html(a.slice(g,a.length)),c&&(e="Total found: "+h+"\n\n"+e),e},_regex_list:function(a,b,c,d,e){for(var f,g="",h=0;f=b.exec(a);)if(h++,d&&(g+=f[0]+"\n"),e)for(var i=1;i<f.length;i++)d&&(g+=" Group "+i+": "),g+=f[i]+"\n";return c&&(g="Total found: "+h+"\n\n"+g),g}},Tidy={REMOVE_SPACES:!0,REMOVE_CARIAGE_RETURNS:!0,REMOVE_LINE_FEEDS:!0,REMOVE_TABS:!0,REMOVE_FORM_FEEDS:!0,REMOVE_FULL_STOPS:!1,run_remove_whitespace:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=a;return c&&(i=i.replace(/ /g,"")),d&&(i=i.replace(/\r/g,"")),e&&(i=i.replace(/\n/g,"")),f&&(i=i.replace(/\t/g,"")),g&&(i=i.replace(/\f/g,"")),h&&(i=i.replace(/\./g,"")),i},run_remove_nulls:function(a,b){for(var c=[],d=0;d<a.length;d++)0!==a[d]&&c.push(a[d]);return c},APPLY_TO_EACH_LINE:!1,DROP_START:0,DROP_LENGTH:5,run_drop_bytes:function(a,b){var c=b[0],d=b[1],e=b[2];if(c<0||d<0)throw"Error: Invalid value";if(!e)return a.slice(0,c).concat(a.slice(c+d,a.length));for(var f=[],g=[],h=0;h<a.length;h++)10===a[h]?(f.push(g),g=[]):g.push(a[h]);f.push(g);var i=[];for(h=0;h<f.length;h++)i=i.concat(f[h].slice(0,c).concat(f[h].slice(c+d,f[h].length))),i.push(10);return i.slice(0,i.length-1)},TAKE_START:0,TAKE_LENGTH:5,run_take_bytes:function(a,b){var c=b[0],d=b[1],e=b[2];if(c<0||d<0)throw"Error: Invalid value";if(!e)return a.slice(c,c+d);for(var f=[],g=[],h=0;h<a.length;h++)10===a[h]?(f.push(g),g=[]):g.push(a[h]);f.push(g);var i=[];for(h=0;h<f.length;h++)i=i.concat(f[h].slice(c,c+d)),i.push(10);return i.slice(0,i.length-1)},PAD_POSITION:["Start","End"],PAD_LENGTH:5,PAD_CHAR:" ",run_pad:function(a,b){var c=b[0],d=b[1],e=b[2],f=a.split("\n"),g="",h=0;if("Start"===c)for(h=0;h<f.length;h++)g+=Utils.pad_left(f[h],f[h].length+d,e)+"\n";else if("End"===c)for(h=0;h<f.length;h++)g+=Utils.pad_right(f[h],f[h].length+d,e)+"\n";return g.slice(0,g.length-1)}},URL_={ENCODE_ALL:!1,run_to:function(a,b){var c=b[0];return c?URL_._encode_all_chars(a):encodeURI(a)},run_from:function(a,b){var c=a.replace(/\+/g,"%20");try{return decodeURIComponent(c)}catch(a){return unescape(c)}},run_parse:function(a,b){var c=document.createElement("a");if(c.href="http://example.com/",c.href=a,c.protocol){var d="";if(c.hostname!==window.location.hostname&&(d="Protocol:\t"+c.protocol+"\n",c.hostname&&(d+="Hostname:\t"+c.hostname+"\n"),c.port&&(d+="Port:\t\t"+c.port+"\n")),c.pathname){var e=c.pathname;0===e.indexOf(window.location.pathname)&&(e=e.replace(window.location.pathname,"")),e&&(d+="Path name:\t"+e+"\n")}if(c.hash&&(d+="Hash:\t\t"+c.hash+"\n"),c.search){d+="Arguments:\n";for(var f=c.search.slice(1,c.search.length).split("&"),g=[],h=0,i=0;i<f.length;i++)g.push(f[i].split("=")),h=g[i][0].length>h?g[i][0].length:h;for(i=0;i<g.length;i++)d+="\t"+Utils.pad_right(g[i][0],h),d+=g[i].length>1&&g[i][1].length?" = "+g[i][1]+"\n":"\n"}return d}return"Invalid URI"},_encode_all_chars:function(a){return encodeURIComponent(a).replace(/!/g,"%21").replace(/#/g,"%23").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/\-/g,"%2D").replace(/\./g,"%2E").replace(/_/g,"%5F").replace(/~/g,"%7E")}},UUID={run_generate_v4:function(a,b){if("undefined"!=typeof window.crypto&&"undefined"!=typeof window.crypto.getRandomValues){var c=new Uint32Array(4),d=0;return window.crypto.getRandomValues(c),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=c[d>>3]>>d%8*4&15,e="x"===a?b:3&b|8;return d++,e.toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})}},Unicode={PREFIXES:["\\u","%u","U+"],run_unescape:function(a,b){for(var c,d=Unicode._prefix_to_regex[b[0]],e=new RegExp(d+"([a-f\\d]{4,6})","ig"),f="",g=0;c=e.exec(a);)f+=a.slice(g,c.index),g=c.index,f+=Utils.chr(parseInt(c[1],16)),g=e.lastIndex;return f+=a.slice(g,a.length)},_prefix_to_regex:{"\\u":"\\\\u","%u":"%u","U+":"U\\+"}},Chef=function(){this.dish=new Dish};Chef.prototype.bake=function(a,b,c,d,e){var f=(new Date).getTime(),g=new Recipe(b),h=g.contains_flow_control(),i=!1;c.hasOwnProperty("attempt_highlight")&&(c.attempt_highlight=!0),h&&(c.attempt_highlight=!1),d>=b.length&&(d=0),e&&(g.set_breakpoint(d,!1),g.set_breakpoint(d+1,!0)),d>0&&h&&(g.remove_breaks_up_to(d),d=0),0===d&&this.dish.set(a,Dish.STRING);try{d=g.execute(this.dish,d)}catch(a){i=a,d=a.progress}return{result:this.dish.type===Dish.HTML?this.dish.get(Dish.HTML):this.dish.get(Dish.STRING),type:Dish.enum_lookup(this.dish.type),progress:d,options:c,duration:(new Date).getTime()-f,error:i}},Chef.prototype.silent_bake=function(a){var b=(new Date).getTime(),c=new Recipe(a),d=new Dish("",Dish.STRING);try{c.execute(d)}catch(a){}return(new Date).getTime()-b};var Dish=function(a,b){this.value=a||"string"==typeof a?a:null,this.type=b||Dish.BYTE_ARRAY};Dish.BYTE_ARRAY=0,Dish.STRING=1,Dish.NUMBER=2,Dish.HTML=3,Dish.type_enum=function(a){switch(a){case"byte_array":case"Byte array":return Dish.BYTE_ARRAY;case"string":case"String":return Dish.STRING;case"number":case"Number":return Dish.NUMBER;case"html":case"HTML":return Dish.HTML;default:throw"Invalid data type string. No matching enum."}},Dish.enum_lookup=function(a){switch(a){case Dish.BYTE_ARRAY:return"byte_array";case Dish.STRING:return"string";case Dish.NUMBER:return"number";case Dish.HTML:return"html";default:throw"Invalid data type enum. No matching type."}},Dish.prototype.set=function(a,b){if(this.value=a,this.type=b,!this.valid()){var c=Utils.truncate(JSON.stringify(this.value),13);throw"Data is not a valid "+Dish.enum_lookup(b)+": "+c}},Dish.prototype.get=function(a){return this.type!==a&&this.translate(a),this.value},Dish.prototype.translate=function(a){switch(this.type){case Dish.STRING:this.value=this.value?Utils.str_to_byte_array(this.value):[],this.type=Dish.BYTE_ARRAY;break;case Dish.NUMBER:this.value="number"==typeof this.value?Utils.str_to_byte_array(this.value.toString()):[],this.type=Dish.BYTE_ARRAY;break;case Dish.HTML:this.value=this.value?Utils.str_to_byte_array(Utils.strip_html_tags(this.value,!0)):[],this.type=Dish.BYTE_ARRAY}switch(a){case Dish.STRING:case Dish.HTML:this.value=this.value?Utils.byte_array_to_utf8(this.value):"",this.type=Dish.STRING;break;case Dish.NUMBER:this.value=this.value?parseFloat(Utils.byte_array_to_utf8(this.value)):0,this.type=Dish.NUMBER}},Dish.prototype.valid=function(){switch(this.type){case Dish.BYTE_ARRAY:if(!(this.value instanceof Array))return!1;for(var a=0;a<this.value.length;a++)if("number"!=typeof this.value[a]||this.value[a]<0||this.value[a]>255)return!1;return!0;case Dish.STRING:case Dish.HTML:return"string"==typeof this.value;case Dish.NUMBER:return"number"==typeof this.value;default:return!1}};const FlowControl={FORK_DELIM:"\\n",MERGE_DELIM:"\\n",run_fork:function(a){var b=a.op_list,c=b[a.progress].input_type,d=b[a.progress].output_type,e=a.dish.get(c),f=b[a.progress].get_ing_values(),g=f[0],h=f[1],i=[],j=[];e&&(j=e.split(g));for(var k=a.progress+1;k<b.length&&("Merge"!==b[k].name||b[k].is_disabled());k++)i.push(b[k]);var l,m=new Recipe,n="";for(m.add_operations(i),k=0;k<j.length;k++){var o=new Dish(j[k],c);l=m.execute(o,0),n+=o.get(d)+h}return a.dish.set(n,d),a.progress+=l,a},run_merge:function(a){return a},JUMP_NUM:0,MAX_JUMPS:10,run_jump:function(a){var b=a.op_list[a.progress].get_ing_values(),c=b[0],d=b[1];if(a.num_jumps>=d)throw"Reached maximum jumps, sorry!";return a.progress+=c,a.num_jumps++,a},run_cond_jump:function(a){var b=a.op_list[a.progress].get_ing_values(),c=a.dish,d=b[0],e=b[1],f=b[2];if(a.num_jumps>=f)throw"Reached maximum jumps, sorry!";return""!==d&&c.get(Dish.STRING).search(d)>-1&&(a.progress+=e,a.num_jumps++),a},run_return:function(a){return a.progress=a.op_list.length,a}};var Ingredient=function(a){this.name="",this.type="",this.value=null,a&&this._parse_config(a)};Ingredient.prototype._parse_config=function(a){this.name=a.name,this.type=a.type},Ingredient.prototype.get_config=function(){return this.value},Ingredient.prototype.set_value=function(a){this.value=Ingredient.prepare(a,this.type)},Ingredient.prepare=function(a,b){switch(b){case"binary_string":case"binary_short_string":case"editable_option":return Utils.parse_escaped_chars(a);case"byte_array":return"string"==typeof a?(a=a.replace(/\s+/g,""),Utils.hex_to_byte_array(a)):a;case"number":var c=parseFloat(a);if(isNaN(c)){var d=Utils.truncate(a.toString(),10);throw"Invalid ingredient value. Not a number: "+d}return c;default:return a}};var Operation=function(a,b){this.name=a,this.description="",this.input_type=-1,this.output_type=-1,this.run=null,this.highlight=null,this.highlight_reverse=null,this.breakpoint=!1,this.disabled=!1,this.ing_list=[],b&&this._parse_config(b)};Operation.prototype._parse_config=function(a){this.description=a.description,this.input_type=Dish.type_enum(a.input_type),this.output_type=Dish.type_enum(a.output_type),this.run=a.run,this.highlight=a.highlight,this.highlight_reverse=a.highlight_reverse,this.flow_control=a.flow_control;for(var b=0;b<a.args.length;b++){var c=a.args[b],d=new Ingredient(c);this.add_ingredient(d)}},Operation.prototype.get_config=function(){for(var a=[],b=0;b<this.ing_list.length;b++)a.push(this.ing_list[b].get_config());var c={op:this.name,args:a};return c},Operation.prototype.add_ingredient=function(a){this.ing_list.push(a)},Operation.prototype.set_ing_values=function(a){for(var b=0;b<a.length;b++)this.ing_list[b].set_value(a[b])},Operation.prototype.get_ing_values=function(){for(var a=[],b=0;b<this.ing_list.length;b++)a.push(this.ing_list[b].value);return a},Operation.prototype.set_breakpoint=function(a){this.breakpoint=!!a},Operation.prototype.is_breakpoint=function(){return this.breakpoint},Operation.prototype.set_disabled=function(a){this.disabled=!!a},Operation.prototype.is_disabled=function(){return this.disabled},Operation.prototype.is_flow_control=function(){return this.flow_control};var Recipe=function(a){this.op_list=[],a&&this._parse_config(a)};Recipe.prototype._parse_config=function(a){for(var b=0;b<a.length;b++){var c=a[b].op,d=OperationConfig[c],e=new Operation(c,d);e.set_ing_values(a[b].args),e.set_breakpoint(a[b].breakpoint),e.set_disabled(a[b].disabled),this.add_operation(e)}},Recipe.prototype.get_config=function(){for(var a=[],b=0;b<this.op_list.length;b++)a.push(this.op_list[b].get_config());return a},Recipe.prototype.add_operation=function(a){this.op_list.push(a)},Recipe.prototype.add_operations=function(a){this.op_list=this.op_list.concat(a)},Recipe.prototype.set_breakpoint=function(a,b){try{this.op_list[a].set_breakpoint(b)}catch(a){}},Recipe.prototype.remove_breaks_up_to=function(a){for(var b=0;b<a;b++)this.op_list[b].set_breakpoint(!1)},Recipe.prototype.contains_flow_control=function(){for(var a=0;a<this.op_list.length;a++)if(this.op_list[a].is_flow_control())return!0;return!1},Recipe.prototype.last_op_index=function(a){for(var b,c=a+1||0;c<this.op_list.length;c++){if(b=this.op_list[c],b.is_disabled())return c-1;if(b.is_breakpoint())return c-1}return c-1},Recipe.prototype.execute=function(a,b){b=b||0;for(var c,d,e,f=0,g=b;g<this.op_list.length;g++)if(c=this.op_list[g],!c.is_disabled()){if(c.is_breakpoint())return g;try{if(d=a.get(c.input_type),c.is_flow_control()){var h={progress:g,dish:a,op_list:this.op_list,num_jumps:f};h=c.run(h),g=h.progress,f=h.num_jumps}else e=c.run(d,c.get_ing_values()),a.set(e,c.output_type)}catch(a){var i="string"==typeof a?{message:a}:a;throw i.progress=g,i.display_str=c.name+" - ",i.fileName?i.display_str+=i.name+" in "+i.fileName+" on line "+i.lineNumber+".<br><br>Message: "+i.message:i.display_str+=i.message,i}}return this.op_list.length},Recipe.prototype.to_string=function(){return JSON.stringify(this.get_config())},Recipe.prototype.from_string=function(a){var b=JSON.parse(a);this._parse_config(b)};const Categories=[{name:"Favourites",ops:[]},{name:"Data format",ops:["To Hexdump","From Hexdump","To Hex","From Hex","To Charcode","From Charcode","To Decimal","From Decimal","To Binary","From Binary","To Base64","From Base64","Show Base64 offsets","To Base32","From Base32","To Base","From Base","To HTML Entity","From HTML Entity","URL Encode","URL Decode","Unescape Unicode Characters","To Quoted Printable","From Quoted Printable","To Punycode","From Punycode","To Hex Content","From Hex Content","PEM to Hex","Hex to PEM","Parse ASN.1 hex string","Change IP format","Text encoding","Swap endianness"]},{name:"Encryption / Encoding",ops:["AES Encrypt","AES Decrypt","Blowfish Encrypt","Blowfish Decrypt","DES Encrypt","DES Decrypt","Triple DES Encrypt","Triple DES Decrypt","Rabbit Encrypt","Rabbit Decrypt","RC4","RC4 Drop","ROT13","ROT47","XOR","XOR Brute Force","Vigen\xe8re Encode","Vigen\xe8re Decode","Derive PBKDF2 key","Derive EVP key"]},{name:"Public Key",ops:["Parse X.509 certificate","Parse ASN.1 hex string","PEM to Hex","Hex to PEM","Hex to Object Identifier","Object Identifier to Hex"]},{name:"Logical operations",ops:["XOR","XOR Brute Force","OR","NOT","AND","ADD","SUB","Rotate left","Rotate right","ROT13"]},{name:"Networking",ops:["Strip HTTP headers","Parse User Agent","Parse IP range","Parse IPv6 address","Parse URI","URL Encode","URL Decode","Format MAC addresses","Change IP format","Group IP addresses"]},{name:"Language",ops:["Text encoding","Unescape Unicode Characters"]},{name:"Utils",ops:["Diff","Remove whitespace","Remove null bytes","To Upper case","To Lower case","Add line numbers","Remove line numbers","Reverse","Sort","Unique","Split","Count occurrences","Expand alphabet range","Parse escaped string","Drop bytes","Take bytes","Pad lines","Find / Replace","Regular expression","Offset checker","Convert distance","Convert area","Convert mass","Convert speed","Convert data units","Parse UNIX file permissions","Swap endianness","Parse colour code"]},{name:"Date / Time",ops:["Parse DateTime","Translate DateTime Format","From UNIX Timestamp","To UNIX Timestamp","Extract dates"]},{name:"Extractors",ops:["Strings","Extract IP addresses","Extract email addresses","Extract MAC addresses","Extract URLs","Extract domains","Extract file paths","Extract dates","Regular expression","XPath expression","CSS selector"] +},{name:"Compression",ops:["Raw Deflate","Raw Inflate","Zlib Deflate","Zlib Inflate","Gzip","Gunzip","Zip","Unzip","Bzip2 Decompress"]},{name:"Hashing",ops:["Analyse hash","Generate all hashes","MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160","HMAC","Fletcher-16 Checksum","Adler-32 Checksum","CRC-32 Checksum","TCP/IP Checksum"]},{name:"Code tidy",ops:["Syntax highlighter","Generic Code Beautify","JavaScript Parser","JavaScript Beautify","JavaScript Minify","JSON Beautify","JSON Minify","XML Beautify","XML Minify","SQL Beautify","SQL Minify","CSS Beautify","CSS Minify","XPath expression","CSS selector","Strip HTML tags","Diff"]},{name:"Other",ops:["Entropy","Frequency distribution","Detect File Type","Scan for Embedded Files","Generate UUID","Numberwang"]},{name:"Flow control",ops:["Fork","Merge","Jump","Conditional Jump","Return"]}],OperationConfig={Fork:{description:"Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",run:FlowControl.run_fork,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Split delimiter",type:"binary_short_string",value:FlowControl.FORK_DELIM},{name:"Merge delimiter",type:"binary_short_string",value:FlowControl.MERGE_DELIM}]},Merge:{description:"Consolidate all branches back into a single trunk. The opposite of Fork.",run:FlowControl.run_merge,input_type:"string",output_type:"string",flow_control:!0,args:[]},Jump:{description:"Jump forwards or backwards over the specified number of operations.",run:FlowControl.run_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Number of operations to jump over",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},"Conditional Jump":{description:"Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression.",run:FlowControl.run_cond_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Match (regex)",type:"string",value:""},{name:"Number of operations to jump over if match found",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},Return:{description:"End execution of operations at this point in the recipe.",run:FlowControl.run_return,input_type:"string",output_type:"string",flow_control:!0,args:[]},"From Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>",run:Base64.run_from,highlight:Base64.highlight_from,highlight_reverse:Base64.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>",run:Base64.run_to,highlight:Base64.highlight_to,highlight_reverse:Base64.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS}]},"From Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_from_32,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_to_32,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET}]},"Show Base64 offsets":{description:"When a string is within a block of data and the whole block is Base64'd, the string itself could be represented in Base64 in three distinct ways depending on its offset within the block.<br><br>This operation shows all possible offsets for a given string so that each possible encoding can be considered.",run:Base64.run_offsets,input_type:"byte_array",output_type:"html",args:[{name:"Alphabet",type:"binary_string",value:Base64.ALPHABET},{name:"Show variable chars and padding",type:"boolean",value:Base64.OFFSETS_SHOW_VARIABLE}]},XOR:{description:"XOR the input with the given key.<br>e.g. <code>fe023da5</code><br><br><strong>Options</strong><br><u>Null preserving:</u> If the current byte is 0x00 or the same as the key, skip it.<br><br><u>Scheme:</u><ul><li>Standard - key is unchanged after each round</li><li>Input differential - key is set to the value of the previous unprocessed byte</li><li>Output differential - key is set to the value of the previous processed byte</li></ul>",run:BitwiseOp.run_xor,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT},{name:"Scheme",type:"option",value:BitwiseOp.XOR_SCHEME},{name:"Null preserving",type:"boolean",value:BitwiseOp.XOR_PRESERVE_NULLS}]},"XOR Brute Force":{description:"Enumerate all possible XOR solutions. Current maximum key length is 2 due to browser performance.<br><br>Optionally enter a regex string that you expect to find in the plaintext to filter results (crib).",run:BitwiseOp.run_xor_brute,input_type:"byte_array",output_type:"string",args:[{name:"Key length",type:"option",value:BitwiseOp.XOR_BRUTE_KEY_LENGTH},{name:"Length of sample",type:"number",value:BitwiseOp.XOR_BRUTE_SAMPLE_LENGTH},{name:"Offset of sample",type:"number",value:BitwiseOp.XOR_BRUTE_SAMPLE_OFFSET},{name:"Null preserving",type:"boolean",value:BitwiseOp.XOR_PRESERVE_NULLS},{name:"Differential",type:"boolean",value:BitwiseOp.XOR_DIFFERENTIAL},{name:"Crib (known plaintext string)",type:"binary_string",value:""},{name:"Print key",type:"boolean",value:BitwiseOp.XOR_BRUTE_PRINT_KEY},{name:"Output as hex",type:"boolean",value:BitwiseOp.XOR_BRUTE_OUTPUT_HEX}]},NOT:{description:"Returns the inverse of each byte.",run:BitwiseOp.run_not,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[]},AND:{description:"AND the input with the given key.<br>e.g. <code>fe023da5</code>",run:BitwiseOp.run_and,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},OR:{description:"OR the input with the given key.<br>e.g. <code>fe023da5</code>",run:BitwiseOp.run_or,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},ADD:{description:"ADD the input with the given key (e.g. <code>fe023da5</code>), MOD 255",run:BitwiseOp.run_add,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},SUB:{description:"SUB the input with the given key (e.g. <code>fe023da5</code>), MOD 255",run:BitwiseOp.run_sub,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:BitwiseOp.KEY_FORMAT}]},"From Hex":{description:"Converts a hexadecimal byte string back into a its raw value.<br><br>e.g. <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code> becomes the UTF-8 encoded string <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code>",run:ByteRepr.run_from_hex,highlight:ByteRepr.highlight_from,highlight_reverse:ByteRepr.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.HEX_DELIM_OPTIONS}]},"To Hex":{description:"Converts the input string to hexadecimal bytes separated by the specified delimiter.<br><br>e.g. The UTF-8 encoded string <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code> becomes <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code>",run:ByteRepr.run_to_hex,highlight:ByteRepr.highlight_to,highlight_reverse:ByteRepr.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.HEX_DELIM_OPTIONS}]},"From Charcode":{description:"Converts unicode character codes back into text.<br><br>e.g. <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code> becomes <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code>",run:ByteRepr.run_from_charcode,highlight:ByteRepr.highlight_from,highlight_reverse:ByteRepr.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS},{name:"Base",type:"number",value:ByteRepr.CHARCODE_BASE}]},"To Charcode":{description:"Converts text to its unicode character code equivalent.<br><br>e.g. <code>\u0393\u03b5\u03b9\u03ac \u03c3\u03bf\u03c5</code> becomes <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code>",run:ByteRepr.run_to_charcode,highlight:ByteRepr.highlight_to,highlight_reverse:ByteRepr.highlight_from,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS},{name:"Base",type:"number",value:ByteRepr.CHARCODE_BASE}]},"From Binary":{description:"Converts a binary string back into its raw form.<br><br>e.g. <code>01001000 01101001</code> becomes <code>Hi</code>",run:ByteRepr.run_from_binary,highlight:ByteRepr.highlight_from_binary,highlight_reverse:ByteRepr.highlight_to_binary,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.BIN_DELIM_OPTIONS}]},"To Binary":{description:"Displays the input data as a binary string.<br><br>e.g. <code>Hi</code> becomes <code>01001000 01101001</code>",run:ByteRepr.run_to_binary,highlight:ByteRepr.highlight_to_binary,highlight_reverse:ByteRepr.highlight_from_binary,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.BIN_DELIM_OPTIONS}]},"From Decimal":{description:"Converts the data from an ordinal integer array back into its raw form.<br><br>e.g. <code>72 101 108 108 111</code> becomes <code>Hello</code>",run:ByteRepr.run_from_decimal,input_type:"string",output_type:"byte_array",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS}]},"To Decimal":{description:"Converts the input data to an ordinal integer array.<br><br>e.g. <code>Hello</code> becomes <code>72 101 108 108 111</code>",run:ByteRepr.run_to_decimal,input_type:"byte_array",output_type:"string",args:[{name:"Delimiter",type:"option",value:ByteRepr.DELIM_OPTIONS}]},"From Hexdump":{description:"Attempts to convert a hexdump back into raw data. This operation supports many different hexdump variations, but probably not all. Make sure you verify that the data it gives you is correct before continuing analysis.",run:Hexdump.run_from,highlight:Hexdump.highlight_from,highlight_reverse:Hexdump.highlight_to,input_type:"string",output_type:"byte_array",args:[]},"To Hexdump":{description:"Creates a hexdump of the input data, displaying both the hexademinal values of each byte and an ASCII representation alongside.",run:Hexdump.run_to,highlight:Hexdump.highlight_to,highlight_reverse:Hexdump.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Width",type:"number",value:Hexdump.WIDTH},{name:"Upper case hex",type:"boolean",value:Hexdump.UPPER_CASE},{name:"Include final length",type:"boolean",value:Hexdump.INCLUDE_FINAL_LENGTH}]},"From Base":{description:"Converts a number to decimal from a given numerical base.",run:Base.run_from,input_type:"string",output_type:"number",args:[{name:"Radix",type:"number",value:Base.DEFAULT_RADIX}]},"To Base":{description:"Converts a decimal number to a given numerical base.",run:Base.run_to,input_type:"number",output_type:"string",args:[{name:"Radix",type:"number",value:Base.DEFAULT_RADIX}]},"From HTML Entity":{description:"Converts HTML entities back to characters<br><br>e.g. <code>&<span>amp;</span></code> becomes <code>&</code>",run:HTML.run_from_entity,input_type:"string",output_type:"string",args:[]},"To HTML Entity":{description:"Converts characters to HTML entities<br><br>e.g. <code>&</code> becomes <code>&<span>amp;</span></code>",run:HTML.run_to_entity,input_type:"string",output_type:"string",args:[{name:"Convert all characters",type:"boolean",value:HTML.CONVERT_ALL},{name:"Convert to",type:"option",value:HTML.CONVERT_OPTIONS}]},"Strip HTML tags":{description:"Removes all HTML tags from the input.",run:HTML.run_strip_tags,input_type:"string",output_type:"string",args:[{name:"Remove indentation",type:"boolean",value:HTML.REMOVE_INDENTATION},{name:"Remove excess line breaks",type:"boolean",value:HTML.REMOVE_LINE_BREAKS}]},"URL Decode":{description:"Converts URI/URL percent-encoded characters back to their raw values.<br><br>e.g. <code>%3d</code> becomes <code>=</code>",run:URL_.run_from,input_type:"string",output_type:"string",args:[]},"URL Encode":{description:"Encodes problematic characters into percent-encoding, a format supported by URIs/URLs.<br><br>e.g. <code>=</code> becomes <code>%3d</code>",run:URL_.run_to,input_type:"string",output_type:"string",args:[{name:"Encode all special chars",type:"boolean",value:URL_.ENCODE_ALL}]},"Parse URI":{description:"Pretty prints complicated Uniform Resource Identifier (URI) strings for ease of reading. Particularly useful for Uniform Resource Locators (URLs) with a lot of arguments.",run:URL_.run_parse,input_type:"string",output_type:"string",args:[]},"Unescape Unicode Characters":{description:"Converts unicode-escaped character notation back into raw characters.<br><br>Supports the prefixes:<ul><li><code>\\u</code></li><li><code>%u</code></li><li><code>U+</code></li></ul>e.g. <code>\\u03c3\\u03bf\\u03c5</code> becomes <code>\u03c3\u03bf\u03c5</code>",run:Unicode.run_unescape,input_type:"string",output_type:"string",args:[{name:"Prefix",type:"option",value:Unicode.PREFIXES}]},"From Quoted Printable":{description:"Converts QP-encoded text back to standard text.",run:QuotedPrintable.run_from,input_type:"string",output_type:"byte_array",args:[]},"To Quoted Printable":{description:"Quoted-Printable, or QP encoding, is an encoding using printable ASCII characters (alphanumeric and the equals sign '=') to transmit 8-bit data over a 7-bit data path or, generally, over a medium which is not 8-bit clean. It is defined as a MIME content transfer encoding for use in e-mail.<br><br>QP works by using the equals sign '=' as an escape character. It also limits line length to 76, as some software has limits on line length.",run:QuotedPrintable.run_to,input_type:"byte_array",output_type:"string",args:[]},"From Punycode":{description:"Punycode is a way to represent Unicode with the limited character subset of ASCII supported by the Domain Name System.<br><br>e.g. <code>mnchen-3ya</code> decodes to <code>m\xfcnchen</code>",run:Punycode.run_to_unicode,input_type:"string",output_type:"string",args:[{name:"Internationalised domain name",type:"boolean",value:Punycode.IDN}]},"To Punycode":{description:"Punycode is a way to represent Unicode with the limited character subset of ASCII supported by the Domain Name System.<br><br>e.g. <code>m\xfcnchen</code> encodes to <code>mnchen-3ya</code>",run:Punycode.run_to_ascii,input_type:"string",output_type:"string",args:[{name:"Internationalised domain name",type:"boolean",value:Punycode.IDN}]},"From Hex Content":{description:"Translates hexadecimal bytes in text back to raw bytes.<br><br>e.g. <code>foo|3d|bar</code> becomes <code>foo=bar</code>.",run:ByteRepr.run_from_hex_content,input_type:"string",output_type:"byte_array",args:[]},"To Hex Content":{description:"Converts special characters in a string to hexadecimal.<br><br>e.g. <code>foo=bar</code> becomes <code>foo|3d|bar</code>.",run:ByteRepr.run_to_hex_content,input_type:"byte_array",output_type:"string",args:[{name:"Convert",type:"option",value:ByteRepr.HEX_CONTENT_CONVERT_WHICH},{name:"Print spaces between bytes",type:"boolean",value:ByteRepr.HEX_CONTENT_SPACES_BETWEEN_BYTES}]},"Change IP format":{description:"Convert an IP address from one format to another, e.g. <code>172.20.23.54</code> to <code>ac141736</code>",run:IP.run_change_ip_format,input_type:"string",output_type:"string",args:[{name:"Input format",type:"option",value:IP.IP_FORMAT_LIST},{name:"Output format",type:"option",value:IP.IP_FORMAT_LIST}]},"Parse IP range":{description:"Given a CIDR range (e.g. <code>10.0.0.0/24</code>) or a hyphenated range (e.g. <code>10.0.0.0 - 10.0.1.0</code>), this operation provides network information and enumerates all IP addresses in the range.<br><br>IPv6 is supported but will not be enumerated.",run:IP.run_parse_ip_range,input_type:"string",output_type:"string",args:[{name:"Include network info",type:"boolean",value:IP.INCLUDE_NETWORK_INFO},{name:"Enumerate IP addresses",type:"boolean",value:IP.ENUMERATE_ADDRESSES},{name:"Allow large queries",type:"boolean",value:IP.ALLOW_LARGE_LIST}]},"Group IP addresses":{description:"Groups a list of IP addresses into subnets. Supports both IPv4 and IPv6 addresses.",run:IP.run_group_ips,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:IP.DELIM_OPTIONS},{name:"Subnet (CIDR)",type:"number",value:IP.GROUP_CIDR},{name:"Only show the subnets",type:"boolean",value:IP.GROUP_ONLY_SUBNET}]},"Parse IPv6 address":{description:"Displays the longhand and shorthand versions of a valid IPv6 address.<br><br>Recognises all reserved ranges and parses encapsulated or tunnelled addresses including Teredo and 6to4.",run:IP.run_parse_ipv6,input_type:"string",output_type:"string",args:[]},"Text encoding":{description:"Translates the data between different character encodings.<br><br>Supported charsets are:<ul><li>UTF8</li><li>UTF16</li><li>UTF16LE (little-endian)</li><li>UTF16BE (big-endian)</li><li>Hex</li><li>Base64</li><li>Latin1 (ISO-8859-1)</li><li>Windows-1251</li></ul>",run:CharEnc.run,input_type:"string",output_type:"string",args:[{name:"Input type",type:"option",value:CharEnc.IO_FORMAT},{name:"Output type",type:"option",value:CharEnc.IO_FORMAT}]},"AES Decrypt":{description:"To successfully decrypt AES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 16 bytes of encrypted material.",run:Cipher.run_aes_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"AES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Advanced Encryption Standard (AES) is a U.S. Federal Information Processing Standard (FIPS). It was selected after a 5-year process where 15 competing designs were evaluated.<br><br>AES-128, AES-192, and AES-256 are supported. The variant will be chosen based on the size of the key passed in. If a passphrase is used, a 256-bit key will be generated.",run:Cipher.run_aes_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"DES Decrypt":{description:"To successfully decrypt DES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_des_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"DES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>DES is a previously dominant algorithm for encryption, and was published as an official U.S. Federal Information Processing Standard (FIPS). It is now considered to be insecure due to its small key size.",run:Cipher.run_des_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"Triple DES Decrypt":{description:"To successfully decrypt Triple DES, you need either:<ul><li>The passphrase</li><li>Or the key and IV</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_triple_des_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"Triple DES Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Triple DES applies DES three times to each block to increase key size.",run:Cipher.run_triple_des_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},"Blowfish Decrypt":{description:"Blowfish is a symmetric-key block cipher designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. AES now receives more attention.",run:Cipher.run_blowfish_dec,input_type:"string",output_type:"string",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Mode",type:"option",value:Cipher.BLOWFISH_MODES},{name:"Input format",type:"option",value:Cipher.IO_FORMAT3}]},"Blowfish Encrypt":{description:"Blowfish is a symmetric-key block cipher designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. AES now receives more attention.",run:Cipher.run_blowfish_enc,input_type:"string",output_type:"string",args:[{name:"Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Mode",type:"option",value:Cipher.BLOWFISH_MODES},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Rabbit Decrypt":{description:"To successfully decrypt Rabbit, you need either:<ul><li>The passphrase</li><li>Or the key and IV (This is currently broken. You need the key and salt at the moment.)</li></ul>The IV should be the first 8 bytes of encrypted material.",run:Cipher.run_rabbit_dec,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Input format",type:"option",value:Cipher.IO_FORMAT1},{name:"Output format",type:"option",value:Cipher.IO_FORMAT2}]},"Rabbit Encrypt":{description:"Input: Either enter a passphrase (which will be used to derive a key using the OpenSSL KDF) or both the key and IV.<br><br>Rabbit is a high-performance stream cipher and a finalist in the eSTREAM Portfolio. It is one of the four designs selected after a 3 1/2 year process where 22 designs were evaluated.",run:Cipher.run_rabbit_enc,input_type:"string",output_type:"string",args:[{name:"Passphrase/Key",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"IV",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Salt",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT1},{name:"Mode",type:"option",value:Cipher.MODES},{name:"Padding",type:"option",value:Cipher.PADDING},{name:"Output result",type:"option",value:Cipher.RESULT_TYPE},{name:"Output format",type:"option",value:Cipher.IO_FORMAT1}]},RC4:{description:"RC4 is a widely-used stream cipher. It is used in popular protocols such as SSL and WEP. Although remarkable for its simplicity and speed, the algorithm's history doesn't inspire confidence in its security.",run:Cipher.run_rc4,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Passphrase",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Input format",type:"option",value:Cipher.IO_FORMAT4},{name:"Output format",type:"option",value:Cipher.IO_FORMAT4}]},"RC4 Drop":{description:"It was discovered that the first few bytes of the RC4 keystream are strongly non-random and leak information about the key. We can defend against this attack by discarding the initial portion of the keystream. This modified algorithm is traditionally called RC4-drop.",run:Cipher.run_rc4drop,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Passphrase",type:"toggle_string",value:"",toggle_values:Cipher.IO_FORMAT2},{name:"Input format",type:"option",value:Cipher.IO_FORMAT4},{name:"Output format",type:"option",value:Cipher.IO_FORMAT4},{name:"Number of bytes to drop",type:"number",value:Cipher.RC4DROP_BYTES}]},"Derive PBKDF2 key":{description:"PBKDF2 is a password-based key derivation function. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.<br><br>A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.<br><br>Enter your passphrase as the input and then set the relevant options to generate a key.",run:Cipher.run_pbkdf2,input_type:"string",output_type:"string",args:[{name:"Key size",type:"number",value:Cipher.KDF_KEY_SIZE},{name:"Iterations",type:"number",value:Cipher.KDF_ITERATIONS},{name:"Salt (hex)",type:"string",value:""},{name:"Input format",type:"option",value:Cipher.IO_FORMAT2},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Derive EVP key":{description:"EVP is a password-based key derivation function used extensively in OpenSSL. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.<br><br>A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.<br><br>Enter your passphrase as the input and then set the relevant options to generate a key.",run:Cipher.run_evpkdf,input_type:"string",output_type:"string",args:[{name:"Key size",type:"number",value:Cipher.KDF_KEY_SIZE},{name:"Iterations",type:"number",value:Cipher.KDF_ITERATIONS},{name:"Salt (hex)",type:"string",value:""},{name:"Input format",type:"option",value:Cipher.IO_FORMAT2},{name:"Output format",type:"option",value:Cipher.IO_FORMAT3}]},"Vigen\xe8re Encode":{description:"The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",run:Cipher.run_vigenere_enc,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Key",type:"string",value:""}]},"Vigen\xe8re Decode":{description:"The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",run:Cipher.run_vigenere_dec,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Key",type:"string",value:""}]},"Rotate right":{description:"Rotates each byte to the right by the number of bits specified. Currently only supports 8-bit values.",run:Rotate.run_rotr,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Number of bits",type:"number",value:Rotate.ROTATE_AMOUNT},{name:"Rotate as a whole",type:"boolean",value:Rotate.ROTATE_WHOLE}]},"Rotate left":{description:"Rotates each byte to the left by the number of bits specified. Currently only supports 8-bit values.",run:Rotate.run_rotl,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Number of bits",type:"number",value:Rotate.ROTATE_AMOUNT},{name:"Rotate as a whole",type:"boolean",value:Rotate.ROTATE_WHOLE}]},ROT13:{description:"A simple caesar substitution cipher which rotates alphabet characters by the specified amount (default 13).",run:Rotate.run_rot13,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Rotate lower case chars",type:"boolean",value:Rotate.ROT13_LOWERCASE},{name:"Rotate upper case chars",type:"boolean",value:Rotate.ROT13_UPPERCASE},{name:"Amount",type:"number",value:Rotate.ROT13_AMOUNT}]},ROT47:{description:"A slightly more complex variation of a caesar cipher, which includes ASCII characters from 33 '!' to 126 '~'. Default rotation: 47.",run:Rotate.run_rot47,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Amount", +type:"number",value:Rotate.ROT47_AMOUNT}]},"Strip HTTP headers":{description:"Removes HTTP headers from a request or response by looking for the first instance of a double newline.",run:HTTP.run_strip_headers,input_type:"string",output_type:"string",args:[]},"Parse User Agent":{description:"Attempts to identify and categorise information contained in a user-agent string.",run:HTTP.run_parse_user_agent,input_type:"string",output_type:"string",args:[]},"Format MAC addresses":{description:"Displays given MAC addresses in multiple different formats.<br><br>Expects addresses in a list separated by newlines, spaces or commas.<br><br>WARNING: There are no validity checks.",run:MAC.run_format,input_type:"string",output_type:"string",args:[{name:"Output case",type:"option",value:MAC.OUTPUT_CASE},{name:"No delimiter",type:"boolean",value:MAC.NO_DELIM},{name:"Dash delimiter",type:"boolean",value:MAC.DASH_DELIM},{name:"Colon delimiter",type:"boolean",value:MAC.COLON_DELIM},{name:"Cisco style",type:"boolean",value:MAC.CISCO_STYLE}]},"Offset checker":{description:"Compares multiple inputs (separated by the specified delimiter) and highlights matching characters which appear at the same position in all samples.",run:StrUtils.run_offset_checker,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.OFF_CHK_SAMPLE_DELIMITER}]},"Remove whitespace":{description:"Optionally removes all spaces, carriage returns, line feeds, tabs and form feeds from the input data.<br><br>This operation also supports the removal of full stops which are sometimes used to represent non-printable bytes in ASCII output.",run:Tidy.run_remove_whitespace,input_type:"string",output_type:"string",args:[{name:"Spaces",type:"boolean",value:Tidy.REMOVE_SPACES},{name:"Carriage returns (\\r)",type:"boolean",value:Tidy.REMOVE_CARIAGE_RETURNS},{name:"Line feeds (\\n)",type:"boolean",value:Tidy.REMOVE_LINE_FEEDS},{name:"Tabs",type:"boolean",value:Tidy.REMOVE_TABS},{name:"Form feeds (\\f)",type:"boolean",value:Tidy.REMOVE_FORM_FEEDS},{name:"Full stops",type:"boolean",value:Tidy.REMOVE_FULL_STOPS}]},"Remove null bytes":{description:"Removes all null bytes (<code>0x00</code>) from the input.",run:Tidy.run_remove_nulls,input_type:"byte_array",output_type:"byte_array",args:[]},"Drop bytes":{description:"Cuts the specified number of bytes out of the data.",run:Tidy.run_drop_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.DROP_START},{name:"Length",type:"number",value:Tidy.DROP_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Take bytes":{description:"Takes a slice of the specified number of bytes from the data.",run:Tidy.run_take_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.TAKE_START},{name:"Length",type:"number",value:Tidy.TAKE_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Pad lines":{description:"Add the specified number of the specified character to the beginning or end of each line",run:Tidy.run_pad,input_type:"string",output_type:"string",args:[{name:"Position",type:"option",value:Tidy.PAD_POSITION},{name:"Length",type:"number",value:Tidy.PAD_LENGTH},{name:"Character",type:"binary_short_string",value:Tidy.PAD_CHAR}]},Reverse:{description:"Reverses the input string.",run:SeqUtils.run_reverse,input_type:"byte_array",output_type:"byte_array",args:[{name:"By",type:"option",value:SeqUtils.REVERSE_BY}]},Sort:{description:"Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only.",run:SeqUtils.run_sort,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS},{name:"Reverse",type:"boolean",value:SeqUtils.SORT_REVERSE},{name:"Order",type:"option",value:SeqUtils.SORT_ORDER}]},Unique:{description:"Removes duplicate strings from the input.",run:SeqUtils.run_unique,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS}]},"Count occurrences":{description:"Counts the number of times the provided string occurs in the input.",run:SeqUtils.run_count,input_type:"string",output_type:"number",args:[{name:"Search string",type:"toggle_string",value:"",toggle_values:SeqUtils.SEARCH_TYPE}]},"Add line numbers":{description:"Adds line numbers to the output.",run:SeqUtils.run_add_line_numbers,input_type:"string",output_type:"string",args:[]},"Remove line numbers":{description:"Removes line numbers from the output if they can be trivially detected.",run:SeqUtils.run_remove_line_numbers,input_type:"string",output_type:"string",args:[]},"Find / Replace":{description:"Replaces all occurrences of the first string with the second.<br><br>The three match options are only relevant to regex search strings.",run:StrUtils.run_find_replace,manual_bake:!0,input_type:"string",output_type:"string",args:[{name:"Find",type:"toggle_string",value:"",toggle_values:StrUtils.SEARCH_TYPE},{name:"Replace",type:"binary_string",value:""},{name:"Global match",type:"boolean",value:StrUtils.FIND_REPLACE_GLOBAL},{name:"Case insensitive",type:"boolean",value:StrUtils.FIND_REPLACE_CASE},{name:"Multiline matching",type:"boolean",value:StrUtils.FIND_REPLACE_MULTILINE}]},"To Upper case":{description:"Converts the input string to upper case, optionally limiting scope to only the first character in each word, sentence or paragraph.",run:StrUtils.run_upper,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Scope",type:"option",value:StrUtils.CASE_SCOPE}]},"To Lower case":{description:"Converts every character in the input to lower case.",run:StrUtils.run_lower,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[]},Split:{description:"Splits a string into sections around a given delimiter.",run:StrUtils.run_split,input_type:"string",output_type:"string",args:[{name:"Split delimiter",type:"binary_short_string",value:StrUtils.SPLIT_DELIM},{name:"Join delimiter",type:"option",value:StrUtils.DELIMITER_OPTIONS}]},Strings:{description:"Extracts all strings from the input.",run:Extract.run_strings,input_type:"string",output_type:"string",args:[{name:"Minimum length",type:"number",value:Extract.MIN_STRING_LEN},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract IP addresses":{description:"Extracts all IPv4 and IPv6 addresses.<br><br>Warning: Given a string <code>710.65.0.456</code>, this will match <code>10.65.0.45</code> so always check the original input!",run:Extract.run_ip,input_type:"string",output_type:"string",args:[{name:"IPv4",type:"boolean",value:Extract.INCLUDE_IPV4},{name:"IPv6",type:"boolean",value:Extract.INCLUDE_IPV6},{name:"Remove local IPv4 addresses",type:"boolean",value:Extract.REMOVE_LOCAL},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract email addresses":{description:"Extracts all email addresses from the input.",run:Extract.run_email,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract MAC addresses":{description:"Extracts all Media Access Control (MAC) addresses from the input.",run:Extract.run_mac,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract URLs":{description:"Extracts Uniform Resource Locators (URLs) from the input. The protocol (http, ftp etc.) is required otherwise there will be far too many false positives.",run:Extract.run_urls,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract domains":{description:"Extracts domain names with common Top-Level Domains (TLDs).<br>Note that this will not include paths. Use <strong>Extract URLs</strong> to find entire URLs.",run:Extract.run_domains,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract file paths":{description:"Extracts anything that looks like a Windows or UNIX file path.<br><br>Note that if UNIX is selected, there will likely be a lot of false positives.",run:Extract.run_file_paths,input_type:"string",output_type:"string",args:[{name:"Windows",type:"boolean",value:Extract.INCLUDE_WIN_PATH},{name:"UNIX",type:"boolean",value:Extract.INCLUDE_UNIX_PATH},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract dates":{description:"Extracts dates in the following formats<ul><li><code>yyyy-mm-dd</code></li><li><code>dd/mm/yyyy</code></li><li><code>mm/dd/yyyy</code></li></ul>Dividers can be any of /, -, . or space",run:Extract.run_dates,input_type:"string",output_type:"string",args:[{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Regular expression":{description:"Define your own regular expression to search the input data with, optionally choosing from a list of pre-defined patterns.",run:StrUtils.run_regex,manual_bake:!0,input_type:"string",output_type:"html",args:[{name:"Built in regexes",type:"populate_option",value:StrUtils.REGEX_PRE_POPULATE,target:1},{name:"Regex",type:"text",value:""},{name:"Case insensitive",type:"boolean",value:StrUtils.REGEX_CASE_INSENSITIVE},{name:"Multiline matching",type:"boolean",value:StrUtils.REGEX_MULTILINE_MATCHING},{name:"Display total",type:"boolean",value:StrUtils.DISPLAY_TOTAL},{name:"Output format",type:"option",value:StrUtils.OUTPUT_FORMAT}]},"XPath expression":{description:"Extract information from an XML document with an XPath query",run:Code.run_xpath,input_type:"string",output_type:"string",args:[{name:"XPath",type:"string",value:Code.XPATH_INITIAL},{name:"Result delimiter",type:"binary_short_string",value:Code.XPATH_DELIMITER}]},"CSS selector":{description:"Extract information from an HTML document with a CSS selector",run:Code.run_css_query,input_type:"string",output_type:"string",args:[{name:"CSS selector",type:"string",value:Code.CSS_SELECTOR_INITIAL},{name:"Delimiter",type:"binary_short_string",value:Code.CSS_QUERY_DELIMITER}]},"From UNIX Timestamp":{description:"Converts a UNIX timestamp to a datetime string.<br><br>e.g. <code>978346800</code> becomes <code>Mon 1 January 2001 11:00:00 UTC</code>",run:DateTime.run_from_unix_timestamp,input_type:"number",output_type:"string",args:[{name:"Units",type:"option",value:DateTime.UNITS}]},"To UNIX Timestamp":{description:"Parses a datetime string and returns the corresponding UNIX timestamp.<br><br>e.g. <code>Mon 1 January 2001 11:00:00 UTC</code> becomes <code>978346800</code>",run:DateTime.run_to_unix_timestamp,input_type:"string",output_type:"number",args:[{name:"Units",type:"option",value:DateTime.UNITS}]},"Translate DateTime Format":{description:"Parses a datetime string in one format and re-writes it in another.<br><br>Run with no input to see the relevant format string examples.",run:DateTime.run_translate_format,input_type:"string",output_type:"html",args:[{name:"Built in formats",type:"populate_option",value:DateTime.DATETIME_FORMATS,target:1},{name:"Input format string",type:"binary_string",value:DateTime.INPUT_FORMAT_STRING},{name:"Input timezone",type:"option",value:DateTime.TIMEZONES},{name:"Output format string",type:"binary_string",value:DateTime.OUTPUT_FORMAT_STRING},{name:"Output timezone",type:"option",value:DateTime.TIMEZONES}]},"Parse DateTime":{description:"Parses a DateTime string in your specified format and displays it in whichever timezone you choose with the following information:<ul><li>Date</li><li>Time</li><li>Period (AM/PM)</li><li>Timezone</li><li>UTC offset</li><li>Daylight Saving Time</li><li>Leap year</li><li>Days in this month</li><li>Day of year</li><li>Week number</li><li>Quarter</li></ul>Run with no input to see format string examples if required.",run:DateTime.run_parse,input_type:"string",output_type:"html",args:[{name:"Built in formats",type:"populate_option",value:DateTime.DATETIME_FORMATS,target:1},{name:"Input format string",type:"binary_string",value:DateTime.INPUT_FORMAT_STRING},{name:"Input timezone",type:"option",value:DateTime.TIMEZONES}]},"Convert distance":{description:"Converts a unit of distance to another format.",run:Convert.run_distance,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.DISTANCE_UNITS},{name:"Output units",type:"option",value:Convert.DISTANCE_UNITS}]},"Convert area":{description:"Converts a unit of area to another format.",run:Convert.run_area,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.AREA_UNITS},{name:"Output units",type:"option",value:Convert.AREA_UNITS}]},"Convert mass":{description:"Converts a unit of mass to another format.",run:Convert.run_mass,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.MASS_UNITS},{name:"Output units",type:"option",value:Convert.MASS_UNITS}]},"Convert speed":{description:"Converts a unit of speed to another format.",run:Convert.run_speed,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.SPEED_UNITS},{name:"Output units",type:"option",value:Convert.SPEED_UNITS}]},"Convert data units":{description:"Converts a unit of data to another format.",run:Convert.run_data_size,input_type:"number",output_type:"number",args:[{name:"Input units",type:"option",value:Convert.DATA_UNITS},{name:"Output units",type:"option",value:Convert.DATA_UNITS}]},"Raw Deflate":{description:"Compresses data using the deflate algorithm with no headers.",run:Compress.run_raw_deflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},"Raw Inflate":{description:"Decompresses data which has been compressed using the deflate algorithm with no headers.",run:Compress.run_raw_inflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start index",type:"number",value:Compress.INFLATE_INDEX},{name:"Initial output buffer size",type:"number",value:Compress.INFLATE_BUFFER_SIZE},{name:"Buffer expansion type",type:"option",value:Compress.INFLATE_BUFFER_TYPE},{name:"Resize buffer after decompression",type:"boolean",value:Compress.INFLATE_RESIZE},{name:"Verify result",type:"boolean",value:Compress.INFLATE_VERIFY}]},"Zlib Deflate":{description:"Compresses data using the deflate algorithm adding zlib headers.",run:Compress.run_zlib_deflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},"Zlib Inflate":{description:"Decompresses data which has been compressed using the deflate algorithm with zlib headers.",run:Compress.run_zlib_inflate,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start index",type:"number",value:Compress.INFLATE_INDEX},{name:"Initial output buffer size",type:"number",value:Compress.INFLATE_BUFFER_SIZE},{name:"Buffer expansion type",type:"option",value:Compress.INFLATE_BUFFER_TYPE},{name:"Resize buffer after decompression",type:"boolean",value:Compress.INFLATE_RESIZE},{name:"Verify result",type:"boolean",value:Compress.INFLATE_VERIFY}]},Gzip:{description:"Compresses data using the deflate algorithm with gzip headers.",run:Compress.run_gzip,input_type:"byte_array",output_type:"byte_array",args:[{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE},{name:"Filename (optional)",type:"string",value:""},{name:"Comment (optional)",type:"string",value:""},{name:"Include file checksum",type:"boolean",value:Compress.GZIP_CHECKSUM}]},Gunzip:{description:"Decompresses data which has been compressed using the deflate algorithm with gzip headers.",run:Compress.run_gunzip,input_type:"byte_array",output_type:"byte_array",args:[]},Zip:{description:"Compresses data using the PKZIP algorithm with the given filename.<br><br>No support for multiple files at this time.",run:Compress.run_pkzip,input_type:"byte_array",output_type:"byte_array",args:[{name:"Filename",type:"string",value:Compress.PKZIP_FILENAME},{name:"Comment",type:"string",value:""},{name:"Password",type:"binary_string",value:""},{name:"Compression method",type:"option",value:Compress.COMPRESSION_METHOD},{name:"Operating system",type:"option",value:Compress.OS},{name:"Compression type",type:"option",value:Compress.COMPRESSION_TYPE}]},Unzip:{description:"Decompresses data using the PKZIP algorithm and displays it per file, with support for passwords.",run:Compress.run_pkunzip,input_type:"byte_array",output_type:"html",args:[{name:"Password",type:"binary_string",value:""},{name:"Verify result",type:"boolean",value:Compress.PKUNZIP_VERIFY}]},"Bzip2 Decompress":{description:"Decompresses data using the Bzip2 algorithm.",run:Compress.run_bzip2_decompress,input_type:"byte_array",output_type:"string",args:[]},"Generic Code Beautify":{description:"Attempts to pretty print C-style languages such as C, C++, C#, Java, PHP, JavaScript etc.<br><br>This will not do a perfect job, and the resulting code may not work any more. This operation is designed purely to make obfuscated or minified code more easy to read and understand.<br><br>Things which will not work properly:<ul><li>For loop formatting</li><li>Do-While loop formatting</li><li>Switch/Case indentation</li><li>Certain bit shift operators</li></ul>",run:Code.run_generic_beautify,input_type:"string",output_type:"string",args:[]},"JavaScript Parser":{description:"Returns an Abstract Syntax Tree for valid JavaScript code.",run:JS.run_parse,input_type:"string",output_type:"string",args:[{name:"Location info",type:"boolean",value:JS.PARSE_LOC},{name:"Range info",type:"boolean",value:JS.PARSE_RANGE},{name:"Include tokens array",type:"boolean",value:JS.PARSE_TOKENS},{name:"Include comments array",type:"boolean",value:JS.PARSE_COMMENT},{name:"Report errors and try to continue",type:"boolean",value:JS.PARSE_TOLERANT}]},"JavaScript Beautify":{description:"Parses and pretty prints valid JavaScript code. Also works with JavaScript Object Notation (JSON).",run:JS.run_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:JS.BEAUTIFY_INDENT},{name:"Quotes",type:"option",value:JS.BEAUTIFY_QUOTES},{name:"Semicolons before closing braces",type:"boolean",value:JS.BEAUTIFY_SEMICOLONS},{name:"Include comments",type:"boolean",value:JS.BEAUTIFY_COMMENT}]},"JavaScript Minify":{description:"Compresses JavaScript code.",run:JS.run_minify,input_type:"string",output_type:"string",args:[]},"XML Beautify":{description:"Indents and prettifies eXtensible Markup Language (XML) code.",run:Code.run_xml_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"JSON Beautify":{description:"Indents and prettifies JavaScript Object Notation (JSON) code.",run:Code.run_json_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"CSS Beautify":{description:"Indents and prettifies Cascading Style Sheets (CSS) code.",run:Code.run_css_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"SQL Beautify":{description:"Indents and prettifies Structured Query Language (SQL) code.",run:Code.run_sql_beautify,input_type:"string",output_type:"string",args:[{name:"Indent string",type:"binary_short_string",value:Code.BEAUTIFY_INDENT}]},"XML Minify":{description:"Compresses eXtensible Markup Language (XML) code.",run:Code.run_xml_minify,input_type:"string",output_type:"string",args:[{name:"Preserve comments",type:"boolean",value:Code.PRESERVE_COMMENTS}]},"JSON Minify":{description:"Compresses JavaScript Object Notation (JSON) code.",run:Code.run_json_minify,input_type:"string",output_type:"string",args:[]},"CSS Minify":{description:"Compresses Cascading Style Sheets (CSS) code.",run:Code.run_css_minify,input_type:"string",output_type:"string",args:[{name:"Preserve comments",type:"boolean",value:Code.PRESERVE_COMMENTS}]},"SQL Minify":{description:"Compresses Structured Query Language (SQL) code.",run:Code.run_sql_minify,input_type:"string",output_type:"string",args:[]},"Analyse hash":{description:"Tries to determine information about a given hash and suggests which algorithm may have been used to generate it based on its length.",run:Hash.run_analyse,input_type:"string",output_type:"string",args:[]},MD5:{description:"MD5 (Message-Digest 5) is a widely used hash function. It has been used in a variety of security applications and is also commonly used to check the integrity of files.<br><br>However, MD5 is not collision resistant and it isn't suitable for applications like SSL/TLS certificates or digital signatures that rely on this property.",run:Hash.run_md5,input_type:"string",output_type:"string",args:[]},SHA1:{description:"The SHA (Secure Hash Algorithm) hash functions were designed by the NSA. SHA-1 is the most established of the existing SHA hash functions and it is used in a variety of security applications and protocols.<br><br>However, SHA-1's collision resistance has been weakening as new attacks are discovered or improved.",run:Hash.run_sha1,input_type:"string",output_type:"string",args:[]},SHA224:{description:"SHA-224 is largely identical to SHA-256 but is truncated to 224 bytes.",run:Hash.run_sha224,input_type:"string",output_type:"string",args:[]},SHA256:{description:"SHA-256 is one of the four variants in the SHA-2 set. It isn't as widely used as SHA-1, though it provides much better security.",run:Hash.run_sha256,input_type:"string",output_type:"string",args:[]},SHA384:{description:"SHA-384 is largely identical to SHA-512 but is truncated to 384 bytes.",run:Hash.run_sha384,input_type:"string",output_type:"string",args:[]},SHA512:{description:"SHA-512 is largely identical to SHA-256 but operates on 64-bit words rather than 32.",run:Hash.run_sha512,input_type:"string",output_type:"string",args:[]},SHA3:{description:"This is an implementation of Keccak[c=2d]. SHA3 functions based on different implementations of Keccak will give different results.",run:Hash.run_sha3,input_type:"string",output_type:"string",args:[{name:"Output length",type:"option",value:Hash.SHA3_LENGTH}]},"RIPEMD-160":{description:"RIPEMD (RACE Integrity Primitives Evaluation Message Digest) is a family of cryptographic hash functions developed in Leuven, Belgium, by Hans Dobbertin, Antoon Bosselaers and Bart Preneel at the COSIC research group at the Katholieke Universiteit Leuven, and first published in 1996.<br><br>RIPEMD was based upon the design principles used in MD4, and is similar in performance to the more popular SHA-1.<br><br>RIPEMD-160 is an improved, 160-bit version of the original RIPEMD, and the most common version in the family.",run:Hash.run_ripemd160,input_type:"string",output_type:"string",args:[]},HMAC:{description:"Keyed-Hash Message Authentication Codes (HMAC) are a mechanism for message authentication using cryptographic hash functions.",run:Hash.run_hmac,input_type:"string",output_type:"string",args:[{name:"Password",type:"binary_string",value:""},{name:"Hashing function",type:"option",value:Hash.HMAC_FUNCTIONS}]},"Fletcher-16 Checksum":{description:"The Fletcher checksum is an algorithm for computing a position-dependent checksum devised by John Gould Fletcher at Lawrence Livermore Labs in the late 1970s.<br><br>The objective of the Fletcher checksum was to provide error-detection properties approaching those of a cyclic redundancy check but with the lower computational effort associated with summation techniques.",run:Checksum.run_fletcher16,input_type:"byte_array",output_type:"string",args:[]},"Adler-32 Checksum":{description:"Adler-32 is a checksum algorithm which was invented by Mark Adler in 1995, and is a modification of the Fletcher checksum. Compared to a cyclic redundancy check of the same length, it trades reliability for speed (preferring the latter).<br><br>Adler-32 is more reliable than Fletcher-16, and slightly less reliable than Fletcher-32.",run:Checksum.run_adler32,input_type:"byte_array",output_type:"string",args:[]},"CRC-32 Checksum":{description:"A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.<br><br>The CRC was invented by W. Wesley Peterson in 1961; the 32-bit CRC function of Ethernet and many other standards is the work of several researchers and was published in 1975.",run:Checksum.run_crc32,input_type:"byte_array",output_type:"string",args:[]},"Generate all hashes":{description:"Generates all available hashes and checksums for the input.",run:Hash.run_all,input_type:"string",output_type:"string",args:[]},Entropy:{description:"Calculates the Shannon entropy of the input data which gives an idea of its randomness. 8 is the maximum.",run:Entropy.run_entropy,input_type:"byte_array",output_type:"html",args:[{name:"Chunk size",type:"number",value:Entropy.CHUNK_SIZE}]},"Frequency distribution":{description:"Displays the distribution of bytes in the data as a graph.",run:Entropy.run_freq_distrib,input_type:"byte_array",output_type:"html",args:[{name:"Show 0%'s",type:"boolean",value:Entropy.FREQ_ZEROS}]},Numberwang:{description:"Based on the popular gameshow by Mitchell and Webb.",run:Numberwang.run,input_type:"string",output_type:"string",args:[]},"Parse X.509 certificate":{description:"X.509 is an ITU-T standard for a public key infrastructure (PKI) and Privilege Management Infrastructure (PMI). It is commonly involved with SSL/TLS security.<br><br>This operation displays the contents of a certificate in a human readable format, similar to the openssl command line tool.",run:PublicKey.run_parse_x509,input_type:"string",output_type:"string",args:[{name:"Input format",type:"option",value:PublicKey.X509_INPUT_FORMAT}]},"PEM to Hex":{description:"Converts PEM (Privacy Enhanced Mail) format to a hexadecimal DER (Distinguished Encoding Rules) string.",run:PublicKey.run_pem_to_hex,input_type:"string",output_type:"string",args:[]},"Hex to PEM":{description:"Converts a hexadecimal DER (Distinguished Encoding Rules) string into PEM (Privacy Enhanced Mail) format.",run:PublicKey.run_hex_to_pem,input_type:"string",output_type:"string",args:[{name:"Header string",type:"string",value:PublicKey.PEM_HEADER_STRING}]},"Hex to Object Identifier":{description:"Converts a hexadecimal string into an object identifier (OID).",run:PublicKey.run_hex_to_object_identifier,input_type:"string",output_type:"string",args:[]},"Object Identifier to Hex":{description:"Converts an object identifier (OID) into a hexadecimal string.",run:PublicKey.run_object_identifier_to_hex,input_type:"string",output_type:"string",args:[]},"Parse ASN.1 hex string":{description:"Abstract Syntax Notation One (ASN.1) is a standard and notation that describes rules and structures for representing, encoding, transmitting, and decoding data in telecommunications and computer networking.<br><br>This operation parses arbitrary ASN.1 data and presents the resulting tree.",run:PublicKey.run_parse_asn1_hex_string,input_type:"string",output_type:"string",args:[{name:"Starting index",type:"number",value:0},{name:"Truncate octet strings longer than",type:"number",value:PublicKey.ASN1_TRUNCATE_LENGTH}]},"Detect File Type":{description:"Attempts to guess the MIME (Multipurpose Internet Mail Extensions) type of the data based on 'magic bytes'.<br><br>Currently supports the following file types: 7z, amr, avi, bmp, bz2, class, cr2, crx, dex, dmg, doc, elf, eot, epub, exe, flac, flv, gif, gz, ico, iso, jpg, jxr, m4a, m4v, mid, mkv, mov, mp3, mp4, mpg, ogg, otf, pdf, png, ppt, ps, psd, rar, rtf, sqlite, swf, tar, tar.z, tif, ttf, utf8, vmdk, wav, webm, webp, wmv, woff, woff2, xls, xz, zip.",run:FileType.run_detect,input_type:"byte_array",output_type:"string",args:[]},"Scan for Embedded Files":{description:"Scans the data for potential embedded files by looking for magic bytes at all offsets. This operation is prone to false positives.<br><br>WARNING: Files over about 100KB in size will take a VERY long time to process.",run:FileType.run_scan_for_embedded_files,input_type:"byte_array",output_type:"string",args:[{name:"Ignore common byte sequences",type:"boolean",value:FileType.IGNORE_COMMON_BYTE_SEQUENCES}]},"Expand alphabet range":{description:"Expand an alphabet range string into a list of the characters in that range.<br><br>e.g. <code>a-z</code> becomes <code>abcdefghijklmnopqrstuvwxyz</code>.",run:SeqUtils.run_expand_alph_range,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"binary_string",value:""}]},Diff:{description:"Compares two inputs (separated by the specified delimiter) and highlights the differences between them.",run:StrUtils.run_diff,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.DIFF_SAMPLE_DELIMITER},{name:"Diff by",type:"option",value:StrUtils.DIFF_BY},{name:"Show added",type:"boolean",value:!0},{name:"Show removed",type:"boolean",value:!0},{name:"Ignore whitespace (relevant for word and line)",type:"boolean",value:!1}]},"Parse UNIX file permissions":{description:"Given a UNIX/Linux file permission string in octal or textual format, this operation explains which permissions are granted to which user groups.<br><br>Input should be in either octal (e.g. <code>755</code>) or textual (e.g. <code>drwxr-xr-x</code>) format.",run:OS.run_parse_unix_perms,input_type:"string",output_type:"string",args:[]},"Swap endianness":{description:"Switches the data from big-endian to little-endian or vice-versa. Data can be read in as hexadecimal or raw bytes. It will be returned in the same format as it is entered.",run:Endian.run_swap_endianness,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Data format",type:"option",value:Endian.DATA_FORMAT},{name:"Word length (bytes)",type:"number",value:Endian.WORD_LENGTH},{name:"Pad incomplete words",type:"boolean",value:Endian.PAD_INCOMPLETE_WORDS}]},"Syntax highlighter":{description:"Adds syntax highlighting to a range of source code languages. Note that this will not indent the code. Use one of the 'Beautify' operations for that.",run:Code.run_syntax_highlight,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"html",args:[{name:"Language/File extension",type:"option",value:Code.LANGUAGES},{name:"Display line numbers",type:"boolean",value:Code.LINE_NUMS}]},"Parse escaped string":{description:"Replaces escaped characters with the bytes they represent.<br><br>e.g.<code>Hello\\nWorld</code> becomes <code>Hello<br>World</code>",run:StrUtils.run_parse_escaped_string,input_type:"string",output_type:"string",args:[]},"TCP/IP Checksum":{description:"Calculates the checksum for a TCP (Transport Control Protocol) or IP (Internet Protocol) header from an input of raw bytes.",run:Checksum.run_tcp_ip,input_type:"byte_array",output_type:"string",args:[]},"Parse colour code":{description:"Converts a colour code in a standard format to other standard formats and displays the colour itself.<br><br><strong>Example inputs</strong><ul><li><code>#d9edf7</code></li><li><code>rgba(217,237,247,1)</code></li><li><code>hsla(200,65%,91%,1)</code></li><li><code>cmyk(0.12, 0.04, 0.00, 0.03)</code></li></ul>",run:HTML.run_parse_colour_code,input_type:"string",output_type:"html",args:[]},"Generate UUID":{description:"Generates an RFC 4122 version 4 compliant Universally Unique Identifier (UUID), also known as a Globally Unique Identifier (GUID).<br><br>A version 4 UUID relies on random numbers, in this case generated using <code>window.crypto</code> if available and falling back to <code>Math.random</code> if not.",run:UUID.run_generate_v4,input_type:"string",output_type:"string",args:[]}};var ControlsWaiter=function(a,b){this.app=a,this.manager=b; +};ControlsWaiter.prototype.adjust_width=function(){var a=document.getElementById("controls"),b=document.getElementById("step"),c=document.getElementById("clr-breaks"),d=document.querySelector("#save img"),e=document.querySelector("#load img"),f=document.querySelector("#step img"),g=document.querySelector("#clr-recipe img"),h=document.querySelector("#clr-breaks img");a.clientWidth<470?b.childNodes[1].nodeValue=" Step":b.childNodes[1].nodeValue=" Step through",a.clientWidth<400?(d.style.display="none",e.style.display="none",f.style.display="none",g.style.display="none",h.style.display="none"):(d.style.display="inline",e.style.display="inline",f.style.display="inline",g.style.display="inline",h.style.display="inline"),a.clientWidth<330?c.childNodes[1].nodeValue=" Clear breaks":c.childNodes[1].nodeValue=" Clear breakpoints"},ControlsWaiter.prototype.set_auto_bake=function(a){var b=document.getElementById("auto-bake");b.checked!==a&&b.click()},ControlsWaiter.prototype.bake_click=function(){this.app.bake(),$("#output-text").selectRange(0)},ControlsWaiter.prototype.step_click=function(){this.app.bake(!0),$("#output-text").selectRange(0)},ControlsWaiter.prototype.auto_bake_change=function(){var a=document.getElementById("auto-bake-label"),b=document.getElementById("auto-bake");this.app.auto_bake_=b.checked,b.checked?(a.classList.remove("btn-default"),a.classList.add("btn-success")):(a.classList.remove("btn-success"),a.classList.add("btn-default"))},ControlsWaiter.prototype.clear_recipe_click=function(){this.manager.recipe.clear_recipe()},ControlsWaiter.prototype.clear_breaks_click=function(){for(var a=document.querySelectorAll("#rec_list li.operation .breakpoint"),b=0;b<a.length;b++)a[b].setAttribute("break","false"),a[b].classList.remove("breakpoint-selected")},ControlsWaiter.prototype.initialise_save_link=function(a){a=a||this.app.get_recipe_config();var b=document.getElementById("save-link-recipe-checkbox").checked,c=document.getElementById("save-link-input-checkbox").checked,d=document.getElementById("save-link"),e=this.generate_state_url(b,c,a);d.innerHTML=Utils.truncate(e,120),d.setAttribute("href",e)},ControlsWaiter.prototype.generate_state_url=function(a,b,c){c=c||this.app.get_recipe_config();var d=window.location.protocol+"//"+window.location.host+window.location.pathname,e=JSON.stringify(c),f=Utils.to_base64(this.app.get_input(),"A-Za-z0-9+/");return a=a&&c.length>0,b=b&&f.length>0&&f.length<8e3,a&&(d+="?recipe="+encodeURIComponent(e)),a&&b?d+="&input="+encodeURIComponent(f):b&&(d+="?input="+encodeURIComponent(f)),d},ControlsWaiter.prototype.save_text_change=function(){try{var a=JSON.parse(document.getElementById("save-text").value);this.initialise_save_link(a)}catch(a){}},ControlsWaiter.prototype.save_click=function(){var a=this.app.get_recipe_config(),b=JSON.stringify(a).replace(/},{/g,"},\n{");document.getElementById("save-text").value=b,this.initialise_save_link(a),$("#save-modal").modal()},ControlsWaiter.prototype.slr_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.sli_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.load_click=function(){this.populate_load_recipes_list(),$("#load-modal").modal()},ControlsWaiter.prototype.save_button_click=function(){var a=document.getElementById("save-name").value,b=document.getElementById("save-text").value;if(!a)return void this.app.alert("Please enter a recipe name","danger",2e3);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=localStorage.recipe_id||0;c.push({id:++d,name:a,recipe:b}),localStorage.saved_recipes=JSON.stringify(c),localStorage.recipe_id=d,this.app.alert('Recipe saved as "'+a+'".',"success",2e3)},ControlsWaiter.prototype.populate_load_recipes_list=function(){for(var a=document.getElementById("load-name"),b=a.options.length;b--;)a.remove(b);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];for(b=0;b<c.length;b++){var d=document.createElement("option");d.value=c[b].id,d.innerHTML=c[b].name,a.appendChild(d)}document.getElementById("load-text").value=c.length?c[0].recipe:""},ControlsWaiter.prototype.load_delete_click=function(){var a=document.getElementById("load-name").value,b=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];b=b.filter(function(b){return b.id!==a}),localStorage.saved_recipes=JSON.stringify(b),this.populate_load_recipes_list()},ControlsWaiter.prototype.load_name_change=function(a){var b=a.target,c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=parseInt(b.value,10),e=c.filter(function(a){return a.id===d})[0];document.getElementById("load-text").value=e.recipe},ControlsWaiter.prototype.load_button_click=function(){try{var a=JSON.parse(document.getElementById("load-text").value);this.app.set_recipe_config(a),$("#rec_list [data-toggle=popover]").popover()}catch(a){this.app.alert("Invalid recipe","danger",2e3)}};var HTMLApp=function(a,b,c,d){this.categories=a,this.operations=b,this.dfavourites=c,this.doptions=d,this.options=Utils.extend({},d),this.chef=new Chef,this.manager=new Manager(this),this.auto_bake_=!1,this.progress=0,this.ing_id=0,window.chef=this.chef};HTMLApp.prototype.setup=function(){document.dispatchEvent(this.manager.appstart),this.initialise_splitter(),this.load_local_storage(),this.populate_operations_list(),this.manager.setup(),this.reset_layout(),this.set_compile_message(),this.load_URI_params()},HTMLApp.prototype.handle_error=function(a){console.error(a);var b=a.display_str||a.toString();this.alert(b,"danger",this.options.error_timeout,!this.options.show_errors)},HTMLApp.prototype.bake=function(a){var b;try{b=this.chef.bake(this.get_input(),this.get_recipe_config(),this.options,this.progress,a)}catch(a){this.handle_error(a)}b&&(b.error&&this.handle_error(b.error),this.options=b.options,this.dish_str="html"===b.type?Utils.strip_html_tags(b.result,!0):b.result,this.progress=b.progress,this.manager.recipe.update_breakpoint_indicator(b.progress),this.manager.output.set(b.result,b.type,b.duration),b.duration>this.options.auto_bake_threshold&&this.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.alert("Baking took longer than "+this.options.auto_bake_threshold+"ms, Auto Bake has been disabled.","warning",5e3)))},HTMLApp.prototype.auto_bake=function(){this.auto_bake_&&this.bake()},HTMLApp.prototype.silent_bake=function(){var a=(new Date).getTime(),b=this.get_recipe_config();return this.auto_bake_&&this.chef.silent_bake(b),(new Date).getTime()-a},HTMLApp.prototype.get_input=function(){var a=this.manager.input.get();return sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),a},HTMLApp.prototype.set_input=function(a){sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),this.manager.input.set(a)},HTMLApp.prototype.populate_operations_list=function(){document.body.appendChild(document.getElementById("edit-favourites"));for(var a="",b=0;b<this.categories.length;b++){for(var c=this.categories[b],d=0===b,e=new HTMLCategory(c.name,d),f=0;f<c.ops.length;f++){var g=c.ops[f],h=new HTMLOperation(g,this.operations[g],this,this.manager);e.add_operation(h)}a+=e.to_html()}document.getElementById("categories").innerHTML=a;var i=document.querySelectorAll("#categories .op_list");for(b=0;b<i.length;b++)i[b].dispatchEvent(this.manager.oplistcreate);document.querySelector("#categories a").appendChild(document.getElementById("edit-favourites"))},HTMLApp.prototype.initialise_splitter=function(){Split(["#operations","#recipe","#IO"],{sizes:[20,30,50],minSize:[240,325,500],gutterSize:4,onDrag:this.manager.controls.adjust_width.bind(this.manager.controls)}),Split(["#input","#output"],{direction:"vertical",gutterSize:4}),this.reset_layout()},HTMLApp.prototype.load_local_storage=function(){var a;void 0!==localStorage.options&&(a=JSON.parse(localStorage.options)),this.manager.options.load(a),this.load_favourites()},HTMLApp.prototype.load_favourites=function(){var a=localStorage.favourites&&localStorage.favourites.length>2?JSON.parse(localStorage.favourites):this.dfavourites;a=this.valid_favourites(a),this.save_favourites(a);var b=this.categories.filter(function(a){return"Favourites"===a.name})[0];b?b.ops=a:this.categories.unshift({name:"Favourites",ops:a})},HTMLApp.prototype.valid_favourites=function(a){for(var b=[],c=0;c<a.length;c++)this.operations.hasOwnProperty(a[c])?b.push(a[c]):this.alert('The operation "'+Utils.escape_html(a[c])+'" is no longer available. It has been removed from your favourites.',"info");return b},HTMLApp.prototype.save_favourites=function(a){localStorage.setItem("favourites",JSON.stringify(this.valid_favourites(a)))},HTMLApp.prototype.reset_favourites=function(){this.save_favourites(this.dfavourites),this.load_favourites(),this.populate_operations_list(),this.manager.recipe.initialise_operation_drag_n_drop()},HTMLApp.prototype.add_favourite=function(a){var b=JSON.parse(localStorage.favourites);return b.indexOf(a)>=0?void this.alert("'"+a+"' is already in your favourites","info",2e3):(b.push(a),this.save_favourites(b),this.load_favourites(),this.populate_operations_list(),void this.manager.recipe.initialise_operation_drag_n_drop())},HTMLApp.prototype.load_URI_params=function(){this.query_string=function(a){if(""===a)return{};for(var b={},c=0;c<a.length;c++){var d=a[c].split("=");2!==d.length?b[a[c]]=!0:b[d[0]]=decodeURIComponent(d[1].replace(/\+/g," "))}return b}(window.location.search.substr(1).split("&"));var a=this.auto_bake_;if(this.auto_bake_=!1,this.query_string.recipe)try{var b=JSON.parse(this.query_string.recipe);this.set_recipe_config(b)}catch(a){}else if(this.query_string.op){this.manager.recipe.clear_recipe();try{this.manager.recipe.add_operation(this.query_string.op)}catch(a){var c=this.manager.ops.filter_operations(this.query_string.op,!1);c.length&&this.manager.recipe.add_operation(c[0].name);var d=document.getElementById("search");d.value=this.query_string.op,d.dispatchEvent(new Event("search"))}}if(this.query_string.input)try{var e=Utils.from_base64(this.query_string.input);this.set_input(e)}catch(a){}this.auto_bake_=a,this.auto_bake()},HTMLApp.prototype.next_ing_id=function(){return this.ing_id++},HTMLApp.prototype.get_recipe_config=function(){var a=this.manager.recipe.get_config();return sessionStorage.setItem("recipe_config",JSON.stringify(a)),a},HTMLApp.prototype.set_recipe_config=function(a){sessionStorage.setItem("recipe_config",JSON.stringify(a)),document.getElementById("rec_list").innerHTML=null;for(var b=0;b<a.length;b++){for(var c=this.manager.recipe.add_operation(a[b].op),d=c.querySelectorAll(".arg"),e=0;e<d.length;e++)"checkbox"===d[e].getAttribute("type")?d[e].checked=a[b].args[e]:d[e].classList.contains("toggle-string")?(d[e].value=a[b].args[e].string,d[e].previousSibling.children[0].innerHTML=Utils.escape_html(a[b].args[e].option)+" <span class='caret'></span>"):d[e].value=a[b].args[e];a[b].disabled&&c.querySelector(".disable-icon").click(),a[b].breakpoint&&c.querySelector(".breakpoint").click(),this.progress=0}},HTMLApp.prototype.reset_layout=function(){document.getElementById("operations").style.width="calc(20% - 2px)",document.getElementById("recipe").style.width="calc(30% - 4px)",document.getElementById("IO").style.width="calc(50% - 2px)",document.getElementById("input").style.height="calc(50% - 2px)",document.getElementById("output").style.height="calc(50% - 2px)",this.manager.controls.adjust_width()},HTMLApp.prototype.set_compile_message=function(){var a=new Date,b=Utils.fuzzy_time(a.getTime()-window.compile_time),c='<span style="font-weight: normal">Last build: '+b.substr(0,1).toUpperCase()+b.substr(1)+" ago";""!==window.compile_message&&(c+=" - "+window.compile_message),c+="</span>",document.getElementById("notice").innerHTML=c},HTMLApp.prototype.alert=function(a,b,c,d){var e=new Date;if(console.log("["+e.toLocaleString()+"] "+a),!d){b=b||"danger",c=c||0;var f=document.getElementById("alert"),g=document.getElementById("alert-content");f.classList.remove("alert-danger"),f.classList.remove("alert-warning"),f.classList.remove("alert-info"),f.classList.remove("alert-success"),f.classList.add("alert-"+b),"block"===f.style.display?g.innerHTML+="<br><br>["+e.toLocaleTimeString()+"] "+a:g.innerHTML="["+e.toLocaleTimeString()+"] "+a,$("#alert").stop(),f.style.display="block",f.style.opacity=1,c>0&&(clearTimeout(this.alert_timeout),this.alert_timeout=setTimeout(function(){$("#alert").slideUp(100)},c))}},HTMLApp.prototype.confirm=function(a,b,c,d){d=d||this,document.getElementById("confirm-title").innerHTML=a,document.getElementById("confirm-body").innerHTML=b,document.getElementById("confirm-modal").style.display="block",this.confirm_closed=!1,$("#confirm-modal").modal().one("show.bs.modal",function(a){this.confirm_closed=!1}.bind(this)).one("click","#confirm-yes",function(){this.confirm_closed=!0,c.bind(d)(!0),$("#confirm-modal").modal("hide")}.bind(this)).one("hide.bs.modal",function(a){this.confirm_closed||c.bind(d)(!1),this.confirm_closed=!0}.bind(this))},HTMLApp.prototype.alert_close_click=function(){document.getElementById("alert").style.display="none"},HTMLApp.prototype.state_change=function(a){this.auto_bake(),this.options.update_url&&(this.last_state_url=this.manager.controls.generate_state_url(!0,!0),window.history.replaceState({},"CyberChef",this.last_state_url))},HTMLApp.prototype.pop_state=function(a){window.location.href.split("#")[0]!==this.last_state_url&&this.load_URI_params()},HTMLApp.prototype.call_api=function(a,b,c,d,e){b=b||"POST",c=c||{},d=d||void 0,e=e||"application/json";var f=null,g=!1;return $.ajax({url:a,async:!1,type:b,data:c,dataType:d,contentType:e,success:function(a){g=!0,f=a},error:function(a){g=!1,f=a}}),{success:g,response:f}};var HTMLCategory=function(a,b){this.name=a,this.selected=b,this.op_list=[]};HTMLCategory.prototype.add_operation=function(a){this.op_list.push(a)},HTMLCategory.prototype.to_html=function(){for(var a="cat"+this.name.replace(/[\s\/-:_]/g,""),b="<div class='panel category'> <a class='category-title' data-toggle='collapse' data-parent='#categories' href='#"+a+"'> "+this.name+" </a> <div id='"+a+"' class='panel-collapse collapse "+(this.selected?" in":"")+"'><ul class='op_list'>",c=0;c<this.op_list.length;c++)b+=this.op_list[c].to_stub_html();return b+="</ul></div></div>"};var HTMLIngredient=function(a,b,c){this.app=b,this.manager=c,this.name=a.name,this.type=a.type,this.value=a.value,this.disabled=a.disabled||!1,this.disable_args=a.disable_args||!1,this.placeholder=a.placeholder||!1,this.target=a.target,this.toggle_values=a.toggle_values,this.id="ing-"+this.app.next_ing_id()};HTMLIngredient.prototype.to_html=function(){var a,b,c="boolean"===this.type||"number"===this.type||"option"===this.type||"short_string"===this.type||"binary_short_string"===this.type,d=c?"":"<div class='clearfix'> </div>";switch(d+="<div class='arg-group"+(c?" inline-args":"")+("text"===this.type?" arg-group-text":"")+"'><label class='arg-label' for='"+this.id+"'>"+this.name+"</label>",this.type){case"string":case"binary_string":case"byte_array":d+="<input type='text' id='"+this.id+"' class='arg arg-input' arg_name='"+this.name+"' value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"short_string":case"binary_short_string":d+="<input type='text' id='"+this.id+"'class='arg arg-input short-string' arg_name='"+this.name+"'value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"toggle_string":for(d+="<div class='input-group'><div class='input-group-btn'> <button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'"+(this.disabled?" disabled='disabled'":"")+">"+this.toggle_values[0]+" <span class='caret'></span></button><ul class='dropdown-menu'>",a=0;a<this.toggle_values.length;a++)d+="<li><a href='#'>"+this.toggle_values[a]+"</a></li>";d+="</ul></div><input type='text' class='arg arg-input toggle-string'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+"></div>";break;case"number":d+="<input type='number' id='"+this.id+"'class='arg arg-input' arg_name='"+this.name+"'value='"+this.value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">";break;case"boolean":d+="<input type='checkbox' id='"+this.id+"'class='arg' arg_name='"+this.name+"'"+(this.value?" checked='checked' ":"")+(this.disabled?" disabled='disabled'":"")+">",this.disable_args&&this.manager.add_dynamic_listener("#"+this.id,"click",this.toggle_disable_args,this);break;case"option":for(d+="<select class='arg' id='"+this.id+"'arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+=(b=this.value[a].match(/\[([a-z0-9 -()^]+)\]/i))?"<optgroup label='"+b[1]+"'>":(b=this.value[a].match(/\[\/([a-z0-9 -()^]+)\]/i))?"</optgroup>":"<option>"+this.value[a]+"</option>";d+="</select>";break;case"populate_option":for(d+="<select class='arg' id='"+this.id+"'arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+=(b=this.value[a].name.match(/\[([a-z0-9 -()^]+)\]/i))?"<optgroup label='"+b[1]+"'>":(b=this.value[a].name.match(/\[\/([a-z0-9 -()^]+)\]/i))?"</optgroup>":"<option populate-value='"+this.value[a].value+"'>"+this.value[a].name+"</option>";d+="</select>",this.manager.add_dynamic_listener("#"+this.id,"change",this.populate_option_change,this);break;case"editable_option":for(d+="<div class='editable-option'>",d+="<select class='editable-option-select' id='sel-"+this.id+"'"+(this.disabled?" disabled='disabled'":"")+">",a=0;a<this.value.length;a++)d+="<option value='"+this.value[a].value+"'>"+this.value[a].name+"</option>";d+="</select>",d+="<input class='arg arg-input editable-option-input' id='"+this.id+"'arg_name='"+this.name+"' value='"+this.value[0].value+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">",d+="</div>",this.manager.add_dynamic_listener("#sel-"+this.id,"change",this.editable_option_change,this);break;case"text":d+="<textarea id='"+this.id+"' class='arg' arg_name='"+this.name+"'"+(this.disabled?" disabled='disabled'":"")+(this.placeholder?" placeholder='"+this.placeholder+"'":"")+">"+this.value+"</textarea>"}return d+="</div>"},HTMLIngredient.prototype.toggle_disable_args=function(a){for(var b,c=a.target,d=c.parentNode.parentNode,e=d.querySelectorAll(".arg-group"),f=0;f<this.disable_args.length;f++){b=e[this.disable_args[f]].querySelectorAll("input, select, button");for(var g=0;g<b.length;g++)b[g].getAttribute("disabled")?b[g].removeAttribute("disabled"):b[g].setAttribute("disabled","disabled")}this.manager.recipe.ing_change()},HTMLIngredient.prototype.populate_option_change=function(a){var b=a.target,c=b.parentNode.parentNode,d=c.querySelectorAll(".arg-group")[this.target].querySelector("input, select, textarea");d.value=b.childNodes[b.selectedIndex].getAttribute("populate-value"),this.manager.recipe.ing_change()},HTMLIngredient.prototype.editable_option_change=function(a){var b=a.target,c=b.nextSibling;c.value=b.childNodes[b.selectedIndex].value,this.manager.recipe.ing_change()};var HTMLOperation=function(a,b,c,d){this.app=c,this.manager=d,this.name=a,this.description=b.description,this.manual_bake=b.manual_bake||!1,this.config=b,this.ing_list=[];for(var e=0;e<b.args.length;e++){var f=new HTMLIngredient(b.args[e],this.app,this.manager);this.ing_list.push(f)}};HTMLOperation.INFO_ICON="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAByElEQVR4XqVTzWoaYRQ9KZJmoVaS1J1QiYTIuOgqi9lEugguQhYhdGs3hTyAi0CWJTvJIks30ZBNsimUtlqkVLoQCuJsphRriyFjabWtEyf/Rv3iWcwwymTlgQuH851z5hu43wRGkEwmXwCIA4hiGAUAmUQikQbhEHwyGCWVSglVVUW73RYmyKnxjB56ncJ6NpsVxHGrI/ZLuniVb3DIqQmCHnrNkgcggNeSJPlisRgyJR2b737j/TcDsQUPwv6H5NR4BnroZcb6Z16N2PvyX6yna9Z8qp6JQ0Uf0ughmGHWBSAuyzJqrQ7eqKewY/dzE363C71e39LoWQq5wUwul4uzIBoIBHD01RgyrkZ8eDbvwUWnj623v2DHx4qB51IAzLIAXq8XP/7W0bUVVJtXWIk8wvlN364TA+/1IDMLwmWK/Hq3axmhaBdoGLeklm73ElaBYRgIzkyifHIOO4QQJKM3oJcZq6CgaVp0OTyHw9K/kQI4FiyHfdC0n2CWe5ApFosIPZ7C2tNpXpcDOehGyD/FIbd0euhlhllzFxRzC3fydbG4XRYbB9/tQ41n9m1U7l3lyp9LkfygiZeZCoecmtMqj/+Yxn7Od3v0j50qCO3zAAAAAElFTkSuQmCC",HTMLOperation.REMOVE_ICON="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABwklEQVR42qRTPU8CQRB9K2CCMRJ6NTQajOUaqfxIbLCRghhjQixosLAgFNBQ3l8wsabxLxBJbCyVUBiMCVQEQkOEKBbCnefM3p4eohWXzM3uvHlv52b2hG3bmOWZw4yPn1/XQkCQ9wFxcgZZ0QLKpifpN8Z1n1L13griBBjHhYK0nMT4b+wom53ClAAFQacZJ/m8rNfrSOZy0vxJjPP6IJ2WzWYTO6mUwiwtILiJJSHUKVSWkchkZK1WQzQaxU2pVGUglkjIbreLUCiEx0qlStlFCpfPiPstYDtVKJH9ZFI2Gw1FGA6H6LTbCAaDeGu1FJl6UuYjpwTGzucokZW1NfnS66kyfT4fXns9RaZmlgNcuhZQU+jowLzuOK/HgwEW3E5ZlhLXVWKk11P3wNYNWw+HZdA0sUgx1zjGmD05nckx0ilGjBJdUq3fr7K5e8bGf43RdL7fOPSQb4lI8SLbrUfkUIuY32VTI1bJn5BqDnh4Dodt9ryPUDzyD7aquWoKQohl2i9sAbubwPkTcHkP3FHsg+yT+7sN7G0AF3Xg6sHB3onbdgWWKBDQg/BcTuVt51dQA/JrnIcyIu6rmPV3/hJgACPc0BMEYTg+AAAAAElFTkSuQmCC",HTMLOperation.prototype.to_stub_html=function(a){var b="<li class='operation'";return this.description&&(b+=" data-container='body' data-toggle='popover' data-placement='auto right' data-content=\""+this.description+"\" data-html='true' data-trigger='hover'"),b+=">"+this.name,a&&(b+="<img src='data:image/png;base64,"+HTMLOperation.REMOVE_ICON+"' class='op-icon remove-icon'>"),this.description&&(b+="<img src='data:image/png;base64,"+HTMLOperation.INFO_ICON+"' class='op-icon'>"),b+="</li>"},HTMLOperation.prototype.to_full_html=function(){for(var a="<div class='arg-title'>"+this.name+"</div>",b=0;b<this.ing_list.length;b++)a+=this.ing_list[b].to_html();return a+="<div class='recip-icons'> <div class='breakpoint' title='Set breakpoint' break='false'></div> <div class='disable-icon recip-icon' title='Disable operation' disabled='false'></div>",a+="</div> <div class='clearfix'> </div>"},HTMLOperation.prototype.highlight_search_string=function(a,b,c){b>=0&&(this.name=this.name.slice(0,b)+"<b><u>"+this.name.slice(b,b+a.length)+"</u></b>"+this.name.slice(b+a.length)),this.description&&c>=0&&(this.description=this.description.slice(0,c)+"<b><u>"+this.description.slice(c,c+a.length)+"</u></b>"+this.description.slice(c+a.length))};var HighlighterWaiter=function(a){this.app=a,this.mouse_button_down=!1,this.mouse_target=null};HighlighterWaiter.INPUT=0,HighlighterWaiter.OUTPUT=1,HighlighterWaiter.prototype._is_selection_backwards=function(){var a=!1,b=window.getSelection();if(!b.isCollapsed){var c=document.createRange();c.setStart(b.anchorNode,b.anchorOffset),c.setEnd(b.focusNode,b.focusOffset),a=c.collapsed,c.detach()}return a},HighlighterWaiter.prototype._get_output_html_offset=function(a,b){var c=window.getSelection(),d=document.createRange();return d.selectNodeContents(document.getElementById("output-html")),d.setEnd(a,b),c.removeAllRanges(),c.addRange(d),c.toString().length},HighlighterWaiter.prototype._get_output_html_selection_offsets=function(){var a,b=window.getSelection(),c=0,d=0,e=!1;return b.rangeCount&&(a=b.getRangeAt(b.rangeCount-1),e=this._is_selection_backwards(),c=this._get_output_html_offset(a.startContainer,a.startOffset),d=this._get_output_html_offset(a.endContainer,a.endOffset),b.removeAllRanges(),b.addRange(a),e&&(b.collapseToEnd(),b.extend(b.anchorNode,a.startOffset))),{start:c,end:d}},HighlighterWaiter.prototype.input_scroll=function(a){var b=a.target;document.getElementById("input-highlighter").scrollTop=b.scrollTop,document.getElementById("input-highlighter").scrollLeft=b.scrollLeft},HighlighterWaiter.prototype.output_scroll=function(a){var b=a.target;document.getElementById("output-highlighter").scrollTop=b.scrollTop,document.getElementById("output-highlighter").scrollLeft=b.scrollLeft},HighlighterWaiter.prototype.input_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.INPUT,this.remove_highlights();var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("input-selection-info").innerHTML=this.selection_info(c,d),this.highlight_output([{start:c,end:d}]))},HighlighterWaiter.prototype.output_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.OUTPUT,this.remove_highlights();var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("output-selection-info").innerHTML=this.selection_info(c,d),this.highlight_input([{start:c,end:d}]))},HighlighterWaiter.prototype.output_html_mousedown=function(a){this.mouse_button_down=!0,this.mouse_target=HighlighterWaiter.OUTPUT;var b=this._get_output_html_selection_offsets();0===b.start&&0===b.end||(document.getElementById("output-selection-info").innerHTML=this.selection_info(b.start,b.end))},HighlighterWaiter.prototype.input_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.output_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.output_html_mouseup=function(a){this.mouse_button_down=!1},HighlighterWaiter.prototype.input_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.INPUT){var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("input-selection-info").innerHTML=this.selection_info(c,d),this.highlight_output([{start:c,end:d}]))}},HighlighterWaiter.prototype.output_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.OUTPUT){var b=a.target,c=b.selectionStart,d=b.selectionEnd;0===c&&0===d||(document.getElementById("output-selection-info").innerHTML=this.selection_info(c,d),this.highlight_input([{start:c,end:d}]))}},HighlighterWaiter.prototype.output_html_mousemove=function(a){if(this.mouse_button_down&&1===a.which&&this.mouse_target===HighlighterWaiter.OUTPUT){var b=this._get_output_html_selection_offsets();0===b.start&&0===b.end||(document.getElementById("output-selection-info").innerHTML=this.selection_info(b.start,b.end))}},HighlighterWaiter.prototype.selection_info=function(a,b){var c=b.toString().length;c=c<2?2:c;var d=Utils.pad(a.toString(),c," ").replace(/ /g," "),e=Utils.pad(b.toString(),c," ").replace(/ /g," "),f=Utils.pad((b-a).toString(),c," ").replace(/ /g," ");return"start: "+d+"<br>end: "+e+"<br>length: "+f},HighlighterWaiter.prototype.remove_highlights=function(){document.getElementById("input-highlighter").innerHTML="",document.getElementById("output-highlighter").innerHTML="",document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML=""},HighlighterWaiter.prototype.generate_highlight_list=function(){for(var a=this.app.get_recipe_config(),b=[],c=0;c<a.length;c++)if(!a[c].disabled){if(a[c].breakpoint)return!1;var d=this.app.operations[a[c].op];if(d.highlight===!1||void 0===d.highlight)return!1;b.push({f:d.highlight,b:d.highlight_reverse,args:a[c].args})}return b},HighlighterWaiter.prototype.highlight_output=function(a){var b=this.generate_highlight_list();if(!b||!this.app.auto_bake_)return!1;for(var c=0;c<b.length;c++)a=[a[0]],"function"==typeof b[c].f&&(a=b[c].f(a,b[c].args));document.getElementById("output-selection-info").innerHTML=this.selection_info(a[0].start,a[0].end),this.highlight(document.getElementById("output-text"),document.getElementById("output-highlighter"),a)},HighlighterWaiter.prototype.highlight_input=function(a){var b=this.generate_highlight_list();if(!b||!this.app.auto_bake_)return!1;for(var c=0;c<b.length;c++)a=[a[0]],"function"==typeof b[c].b&&(a=b[c].b(a,b[c].args));document.getElementById("input-selection-info").innerHTML=this.selection_info(a[0].start,a[0].end),this.highlight(document.getElementById("input-text"),document.getElementById("input-highlighter"),a)},HighlighterWaiter.prototype.highlight=function(a,b,c){if(!this.app.options.show_highlighter)return!1;if(!this.app.options.attempt_highlight)return!1;if(!this.app.dish_str||this.app.dish_str.indexOf("\r")>=0)return!1;var d="[start_highlight]",e=/\[start_highlight\]/g,f="[end_highlight]",g=/\[end_highlight\]/g,h=a.value;if(1===c.length){if(c[0].end<c[0].start)return;h=h.slice(0,c[0].start)+d+h.slice(c[0].start,c[0].end)+f+h.slice(c[0].end,h.length)}else{for(var i="",j=!0,k=0;k<h.length;k++){for(var l=1;l<c.length;l++)c[l].end<c[l].start||(c[l].start===k&&(i+=d,j=!1),c[l].end===k&&(i+=f,j=!0));i+=h[k]}j||(i+=f),h=i}var m="hl1";h=h.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\n/g," ").replace(e,'<span class="'+m+'">').replace(g,"</span>")+" ",b.style.width=a.clientWidth+"px",b.innerHTML=h,b.scrollTop=a.scrollTop,b.scrollLeft=a.scrollLeft};var InputWaiter=function(a,b){this.app=a,this.manager=b,this.bad_keys=[16,17,18,19,20,27,33,34,35,36,37,38,39,40,44,91,92,93,112,113,114,115,116,117,118,119,120,121,122,123,144,145]};InputWaiter.prototype.get=function(){return document.getElementById("input-text").value},InputWaiter.prototype.set=function(a){document.getElementById("input-text").value=a,window.dispatchEvent(this.manager.statechange)},InputWaiter.prototype.set_input_info=function(a,b){var c=a.toString().length;c=c<2?2:c;var d=Utils.pad(a.toString(),c," ").replace(/ /g," "),e=Utils.pad(b.toString(),c," ").replace(/ /g," ");document.getElementById("input-info").innerHTML="length: "+d+"<br>lines: "+e},InputWaiter.prototype.input_change=function(a){this.manager.highlighter.remove_highlights(),this.app.progress=0;var b=this.get(),c=b.count("\n")+1;this.set_input_info(b.length,c),this.bad_keys.indexOf(a.keyCode)<0&&window.dispatchEvent(this.manager.statechange)},InputWaiter.prototype.input_dragover=function(a){return"move"!==a.dataTransfer.effectAllowed&&(a.stopPropagation(),a.preventDefault(),void a.target.classList.add("dropping-file"))},InputWaiter.prototype.input_dragleave=function(a){a.stopPropagation(),a.preventDefault(),a.target.classList.remove("dropping-file")},InputWaiter.prototype.input_drop=function(a){if("move"===a.dataTransfer.effectAllowed)return!1;a.stopPropagation(),a.preventDefault();var b=a.target,c=a.dataTransfer.files[0],d=a.dataTransfer.getData("Text"),e=new FileReader,f="",g=0,h=20480,i=function(){f.length>1e5&&this.app.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.app.alert("Turned off Auto Bake as the input is large","warning",5e3)),this.set(f);var a=this.app.get_recipe_config();a[0]&&"From Hex"===a[0].op||(a.unshift({op:"From Hex",args:["Space"]}),this.app.set_recipe_config(a)),b.classList.remove("loading_file")}.bind(this),j=function(){if(g>=c.size)return void i();b.value="Processing... "+Math.round(g/c.size*100)+"%";var a=c.slice(g,g+h);e.readAsArrayBuffer(a)};e.onload=function(a){var b=new Uint8Array(e.result);f+=Utils.to_hex_fast(b),g+=h,j()},b.classList.remove("dropping-file"),c?(b.classList.add("loading_file"),j()):d&&this.set(d)},InputWaiter.prototype.clear_io_click=function(){this.manager.highlighter.remove_highlights(),document.getElementById("input-text").value="",document.getElementById("output-text").value="",document.getElementById("input-info").innerHTML="",document.getElementById("output-info").innerHTML="",document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML="",window.dispatchEvent(this.manager.statechange)};var Manager=function(a){this.app=a,this.appstart=new CustomEvent("appstart",{bubbles:!0}),this.operationadd=new CustomEvent("operationadd",{bubbles:!0}),this.operationremove=new CustomEvent("operationremove",{bubbles:!0}),this.oplistcreate=new CustomEvent("oplistcreate",{bubbles:!0}),this.statechange=new CustomEvent("statechange",{bubbles:!0}),this.window=new WindowWaiter(this.app),this.controls=new ControlsWaiter(this.app,this),this.recipe=new RecipeWaiter(this.app,this),this.ops=new OperationsWaiter(this.app,this),this.input=new InputWaiter(this.app,this), +this.output=new OutputWaiter(this.app,this),this.options=new OptionsWaiter(this.app),this.highlighter=new HighlighterWaiter(this.app),this.seasonal=new SeasonalWaiter(this.app,this),this.dynamic_handlers={},this.initialise_event_listeners()};Manager.prototype.setup=function(){this.recipe.initialise_operation_drag_n_drop(),this.controls.auto_bake_change(),this.seasonal.load()},Manager.prototype.initialise_event_listeners=function(){window.addEventListener("resize",this.window.window_resize.bind(this.window)),window.addEventListener("blur",this.window.window_blur.bind(this.window)),window.addEventListener("focus",this.window.window_focus.bind(this.window)),window.addEventListener("statechange",this.app.state_change.bind(this.app)),window.addEventListener("popstate",this.app.pop_state.bind(this.app)),document.getElementById("bake").addEventListener("click",this.controls.bake_click.bind(this.controls)),document.getElementById("auto-bake").addEventListener("change",this.controls.auto_bake_change.bind(this.controls)),document.getElementById("step").addEventListener("click",this.controls.step_click.bind(this.controls)),document.getElementById("clr-recipe").addEventListener("click",this.controls.clear_recipe_click.bind(this.controls)),document.getElementById("clr-breaks").addEventListener("click",this.controls.clear_breaks_click.bind(this.controls)),document.getElementById("save").addEventListener("click",this.controls.save_click.bind(this.controls)),document.getElementById("save-button").addEventListener("click",this.controls.save_button_click.bind(this.controls)),document.getElementById("save-link-recipe-checkbox").addEventListener("change",this.controls.slr_check_change.bind(this.controls)),document.getElementById("save-link-input-checkbox").addEventListener("change",this.controls.sli_check_change.bind(this.controls)),document.getElementById("load").addEventListener("click",this.controls.load_click.bind(this.controls)),document.getElementById("load-delete-button").addEventListener("click",this.controls.load_delete_click.bind(this.controls)),document.getElementById("load-name").addEventListener("change",this.controls.load_name_change.bind(this.controls)),document.getElementById("load-button").addEventListener("click",this.controls.load_button_click.bind(this.controls)),this.add_multi_event_listener("#save-text","keyup paste",this.controls.save_text_change,this.controls),this.add_multi_event_listener("#search","keyup paste search",this.ops.search_operations,this.ops),this.add_dynamic_listener(".op_list li.operation","dblclick",this.ops.operation_dblclick,this.ops),document.getElementById("edit-favourites").addEventListener("click",this.ops.edit_favourites_click.bind(this.ops)),document.getElementById("save-favourites").addEventListener("click",this.ops.save_favourites_click.bind(this.ops)),document.getElementById("reset-favourites").addEventListener("click",this.ops.reset_favourites_click.bind(this.ops)),this.add_dynamic_listener(".op_list .op-icon","mouseover",this.ops.op_icon_mouseover,this.ops),this.add_dynamic_listener(".op_list .op-icon","mouseleave",this.ops.op_icon_mouseleave,this.ops),this.add_dynamic_listener(".op_list","oplistcreate",this.ops.op_list_create,this.ops),this.add_dynamic_listener("li.operation","operationadd",this.recipe.op_add.bind(this.recipe)),this.add_dynamic_listener(".arg","keyup",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".arg","change",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".disable-icon","click",this.recipe.disable_click,this.recipe),this.add_dynamic_listener(".breakpoint","click",this.recipe.breakpoint_click,this.recipe),this.add_dynamic_listener("#rec_list li.operation","dblclick",this.recipe.operation_dblclick,this.recipe),this.add_dynamic_listener("#rec_list li.operation > div","dblclick",this.recipe.operation_child_dblclick,this.recipe),this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a","click",this.recipe.dropdown_toggle_click,this.recipe),this.add_dynamic_listener("#rec_list","operationremove",this.recipe.op_remove.bind(this.recipe)),this.add_multi_event_listener("#input-text","keyup paste",this.input.input_change,this.input),document.getElementById("reset-layout").addEventListener("click",this.app.reset_layout.bind(this.app)),document.getElementById("clr-io").addEventListener("click",this.input.clear_io_click.bind(this.input)),document.getElementById("input-text").addEventListener("dragover",this.input.input_dragover.bind(this.input)),document.getElementById("input-text").addEventListener("dragleave",this.input.input_dragleave.bind(this.input)),document.getElementById("input-text").addEventListener("drop",this.input.input_drop.bind(this.input)),document.getElementById("input-text").addEventListener("scroll",this.highlighter.input_scroll.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mouseup",this.highlighter.input_mouseup.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mousemove",this.highlighter.input_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#input-text","mousedown dblclick select",this.highlighter.input_mousedown,this.highlighter),document.getElementById("save-to-file").addEventListener("click",this.output.save_click.bind(this.output)),document.getElementById("switch").addEventListener("click",this.output.switch_click.bind(this.output)),document.getElementById("undo-switch").addEventListener("click",this.output.undo_switch_click.bind(this.output)),document.getElementById("output-text").addEventListener("scroll",this.highlighter.output_scroll.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mouseup",this.highlighter.output_mouseup.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mousemove",this.highlighter.output_mousemove.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mouseup",this.highlighter.output_html_mouseup.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mousemove",this.highlighter.output_html_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#output-text","mousedown dblclick select",this.highlighter.output_mousedown,this.highlighter),this.add_multi_event_listener("#output-html","mousedown dblclick select",this.highlighter.output_html_mousedown,this.highlighter),document.getElementById("options").addEventListener("click",this.options.options_click.bind(this.options)),document.getElementById("reset-options").addEventListener("click",this.options.reset_options_click.bind(this.options)),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox",this.options.switch_change.bind(this.options)),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox",this.options.set_word_wrap.bind(this.options)),this.add_dynamic_listener(".option-item input[type=number]","keyup",this.options.number_change,this.options),this.add_dynamic_listener(".option-item input[type=number]","change",this.options.number_change,this.options),this.add_dynamic_listener(".option-item select","change",this.options.select_change,this.options),document.getElementById("alert-close").addEventListener("click",this.app.alert_close_click.bind(this.app))},Manager.prototype.add_listeners=function(a,b,c,d){d=d||this,[].forEach.call(document.querySelectorAll(a),function(a){a.addEventListener(b,c.bind(d))})},Manager.prototype.add_multi_event_listener=function(a,b,c,d){for(var e=b.split(" "),f=0;f<e.length;f++)document.querySelector(a).addEventListener(e[f],c.bind(d))},Manager.prototype.add_multi_event_listeners=function(a,b,c,d){for(var e=b.split(" "),f=0;f<e.length;f++)this.add_listeners(a,e[f],c,d)},Manager.prototype.add_dynamic_listener=function(a,b,c,d){var e={selector:a,callback:c.bind(d||this)};this.dynamic_handlers.hasOwnProperty(b)?this.dynamic_handlers[b].push(e):(this.dynamic_handlers[b]=[e],document.addEventListener(b,this.dynamic_listener_handler.bind(this)))},Manager.prototype.dynamic_listener_handler=function(a){for(var b=this.dynamic_handlers[a.type],c=a.target.matches||a.target.webkitMatchesSelector||a.target.mozMatchesSelector||a.target.msMatchesSelector||a.target.oMatchesSelector,d=0;d<b.length;d++)c&&a.target[c.name](b[d].selector)&&b[d].callback(a)};var OperationsWaiter=function(a,b){this.app=a,this.manager=b,this.options={},this.remove_intent=!1};OperationsWaiter.prototype.search_operations=function(a){var b,c;if("search"===a.type&&(a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&(this.manager.recipe.add_operation(b[c].innerHTML),this.app.auto_bake()))),13===a.keyCode)a.preventDefault();else if(40===a.keyCode)a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&b[c].classList.remove("selected-op"),c===b.length-1&&(c=-1),b[c+1].classList.add("selected-op"));else if(38===a.keyCode)a.preventDefault(),b=document.querySelectorAll("#search-results li"),b.length&&(c=this.get_selected_op(b),c>-1&&b[c].classList.remove("selected-op"),0===c&&(c=b.length),b[c-1].classList.add("selected-op"));else{for(var d=document.getElementById("search-results"),e=a.target,f=e.value;d.firstChild;)$(d.firstChild).popover("destroy"),d.removeChild(d.firstChild);if($("#categories .in").collapse("hide"),f){for(var g=this.filter_operations(f,!0),h="",i=0;i<g.length;i++)h+=g[i].to_stub_html();d.innerHTML=h,d.dispatchEvent(this.manager.oplistcreate)}}},OperationsWaiter.prototype.filter_operations=function(a,b){var c=[],d=[];a=a.toLowerCase();for(var e in this.app.operations){var f=this.app.operations[e],g=e.toLowerCase().indexOf(a),h=f.description.toLowerCase().indexOf(a);if(g>=0||h>=0){var i=new HTMLOperation(e,this.app.operations[e],this.app,this.manager);b&&i.highlight_search_string(a,g,h),g<0?c.push(i):d.push(i)}}return d.concat(c)},OperationsWaiter.prototype.get_selected_op=function(a){for(var b=0;b<a.length;b++)if(a[b].classList.contains("selected-op"))return b;return-1},OperationsWaiter.prototype.op_list_create=function(a){this.manager.recipe.create_sortable_seed_list(a.target),$("[data-toggle=popover]").popover()},OperationsWaiter.prototype.operation_dblclick=function(a){var b=a.target;this.manager.recipe.add_operation(b.textContent),this.app.auto_bake()},OperationsWaiter.prototype.edit_favourites_click=function(a){a.preventDefault(),a.stopPropagation();for(var b=this.app.categories.filter(function(a){return"Favourites"===a.name})[0],c="",d=0;d<b.ops.length;d++){var e=b.ops[d],f=new HTMLOperation(e,this.app.operations[e],this.app,this.manager);c+=f.to_stub_html(!0)}var g=document.getElementById("edit-favourites-list");g.innerHTML=c,this.remove_intent=!1;var h=Sortable.create(g,{filter:".remove-icon",onFilter:function(a){var b=h.closest(a.item);b&&($(b).popover("destroy"),b.parentNode.removeChild(b))},onEnd:function(a){this.remove_intent&&a.item.remove()}.bind(this)});Sortable.utils.on(g,"dragleave",function(){this.remove_intent=!0}.bind(this)),Sortable.utils.on(g,"dragover",function(){this.remove_intent=!1}.bind(this)),$("#edit-favourites-list [data-toggle=popover]").popover(),$("#favourites-modal").modal()},OperationsWaiter.prototype.save_favourites_click=function(){for(var a=[],b=document.querySelectorAll("#edit-favourites-list li"),c=0;c<b.length;c++)a.push(b[c].textContent);this.app.save_favourites(a),this.app.load_favourites(),this.app.populate_operations_list(),this.manager.recipe.initialise_operation_drag_n_drop()},OperationsWaiter.prototype.reset_favourites_click=function(){this.app.reset_favourites()},OperationsWaiter.prototype.op_icon_mouseover=function(a){var b=a.target.parentNode;"popover"===a.target.getAttribute("data-toggle")&&$(b).popover("hide")},OperationsWaiter.prototype.op_icon_mouseleave=function(a){var b=a.target.parentNode,c=a.toElement||a.relatedElement;"popover"===a.target.getAttribute("data-toggle")&&c===b&&$(b).popover("show")};var OptionsWaiter=function(a){this.app=a};OptionsWaiter.prototype.load=function(a){$(".option-item input:checkbox").bootstrapSwitch({size:"small",animate:!1});for(var b in a)this.app.options[b]=a[b];for(var c=document.querySelectorAll("#options-body input[type=checkbox]"),d=0;d<c.length;d++)$(c[d]).bootstrapSwitch("state",this.app.options[c[d].getAttribute("option")]);var e=document.querySelectorAll("#options-body input[type=number]");for(d=0;d<e.length;d++)e[d].value=this.app.options[e[d].getAttribute("option")],e[d].dispatchEvent(new CustomEvent("change",{bubbles:!0}));var f=document.querySelectorAll("#options-body select");for(d=0;d<f.length;d++)f[d].value=this.app.options[f[d].getAttribute("option")],f[d].dispatchEvent(new CustomEvent("change",{bubbles:!0}))},OptionsWaiter.prototype.options_click=function(){$("#options-modal").modal()},OptionsWaiter.prototype.reset_options_click=function(){this.load(this.app.doptions)},OptionsWaiter.prototype.switch_change=function(a,b){var c=a.target,d=c.getAttribute("option");this.app.options[d]=b,localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.number_change=function(a){var b=a.target,c=b.getAttribute("option");this.app.options[c]=parseInt(b.value,10),localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.select_change=function(a){var b=a.target,c=b.getAttribute("option");this.app.options[c]=b.value,localStorage.setItem("options",JSON.stringify(this.app.options))},OptionsWaiter.prototype.set_word_wrap=function(){document.getElementById("input-text").classList.remove("word-wrap"),document.getElementById("output-text").classList.remove("word-wrap"),document.getElementById("output-html").classList.remove("word-wrap"),document.getElementById("input-highlighter").classList.remove("word-wrap"),document.getElementById("output-highlighter").classList.remove("word-wrap"),this.app.options.word_wrap||(document.getElementById("input-text").classList.add("word-wrap"),document.getElementById("output-text").classList.add("word-wrap"),document.getElementById("output-html").classList.add("word-wrap"),document.getElementById("input-highlighter").classList.add("word-wrap"),document.getElementById("output-highlighter").classList.add("word-wrap"))};var OutputWaiter=function(a,b){this.app=a,this.manager=b};OutputWaiter.prototype.get=function(){return document.getElementById("output-text").value},OutputWaiter.prototype.set=function(data_str,type,duration){var output_text=document.getElementById("output-text"),output_html=document.getElementById("output-html"),output_highlighter=document.getElementById("output-highlighter"),input_highlighter=document.getElementById("input-highlighter");if("html"===type){output_text.style.display="none",output_html.style.display="block",output_highlighter.display="none",input_highlighter.display="none",output_text.value="",output_html.innerHTML=data_str;for(var script_elements=output_html.querySelectorAll("script"),i=0;i<script_elements.length;i++)try{eval(script_elements[i].innerHTML)}catch(a){console.error(a)}}else output_text.style.display="block",output_html.style.display="none",output_highlighter.display="block",input_highlighter.display="block",output_text.value=Utils.printable(data_str,!0),output_html.innerHTML="";this.manager.highlighter.remove_highlights();var lines=data_str.count("\n")+1;this.set_output_info(data_str.length,lines,duration)},OutputWaiter.prototype.set_output_info=function(a,b,c){var d=a.toString().length;d=d<4?4:d;var e=Utils.pad(a.toString(),d," ").replace(/ /g," "),f=Utils.pad(b.toString(),d," ").replace(/ /g," "),g=Utils.pad(c.toString()+"ms",d," ").replace(/ /g," ");document.getElementById("output-info").innerHTML="time: "+g+"<br>length: "+e+"<br>lines: "+f,document.getElementById("input-selection-info").innerHTML="",document.getElementById("output-selection-info").innerHTML=""},OutputWaiter.prototype.save_click=function(){var a=Utils.to_base64(this.app.dish_str),b=window.prompt("Please enter a filename:","download.dat");if(b){var c=document.createElement("a");c.setAttribute("href","data:application/octet-stream;base64;charset=utf-8,"+a),c.setAttribute("download",b),c.style.display="none",document.body.appendChild(c),c.click(),c.remove()}},OutputWaiter.prototype.switch_click=function(){this.switch_orig_data=this.manager.input.get(),document.getElementById("undo-switch").disabled=!1,this.app.set_input(this.app.dish_str)},OutputWaiter.prototype.undo_switch_click=function(){this.app.set_input(this.switch_orig_data),document.getElementById("undo-switch").disabled=!0};var RecipeWaiter=function(a,b){this.app=a,this.manager=b,this.remove_intent=!1};RecipeWaiter.prototype.initialise_operation_drag_n_drop=function(){var a=document.getElementById("rec_list");Sortable.create(a,{group:"recipe",sort:!0,animation:0,delay:0,filter:".arg-input,.arg",setData:function(a,b){a.setData("Text",b.querySelector(".arg-title").textContent)},onEnd:function(a){this.remove_intent&&(a.item.remove(),a.target.dispatchEvent(this.manager.operationremove))}.bind(this)}),Sortable.utils.on(a,"dragover",function(){this.remove_intent=!1}.bind(this)),Sortable.utils.on(a,"dragleave",function(){this.remove_intent=!0,this.app.progress=0}.bind(this)),Sortable.utils.on(a,"touchend",function(b){var c=b.changedTouches[0],d=document.elementFromPoint(c.clientX,c.clientY);this.remove_intent=!a.contains(d)}.bind(this)),document.querySelector("#categories a").addEventListener("dragover",this.fav_dragover.bind(this)),document.querySelector("#categories a").addEventListener("dragleave",this.fav_dragleave.bind(this)),document.querySelector("#categories a").addEventListener("drop",this.fav_drop.bind(this))},RecipeWaiter.prototype.create_sortable_seed_list=function(a){Sortable.create(a,{group:{name:"recipe",pull:"clone",put:!1},sort:!1,setData:function(a,b){a.setData("Text",b.textContent)},onStart:function(a){$(a.item).popover("destroy"),a.item.setAttribute("data-toggle","popover-disabled")},onEnd:this.op_sort_end.bind(this)})},RecipeWaiter.prototype.op_sort_end=function(a){return this.remove_intent?void("rec_list"===a.item.parentNode.id&&a.item.remove()):($(a.clone).popover(),$(a.clone).children("[data-toggle=popover]").popover(),void("rec_list"===a.item.parentNode.id&&(this.build_recipe_operation(a.item),a.item.dispatchEvent(this.manager.operationadd))))},RecipeWaiter.prototype.fav_dragover=function(a){return"move"===a.dataTransfer.effectAllowed&&(a.stopPropagation(),a.preventDefault(),void(a.target.className&&a.target.className.indexOf("category-title")>-1?a.target.classList.add("favourites-hover"):a.target.parentNode.className&&a.target.parentNode.className.indexOf("category-title")>-1?a.target.parentNode.classList.add("favourites-hover"):a.target.parentNode.parentNode.className&&a.target.parentNode.parentNode.className.indexOf("category-title")>-1&&a.target.parentNode.parentNode.classList.add("favourites-hover")))},RecipeWaiter.prototype.fav_dragleave=function(a){a.stopPropagation(),a.preventDefault(),document.querySelector("#categories a").classList.remove("favourites-hover")},RecipeWaiter.prototype.fav_drop=function(a){a.stopPropagation(),a.preventDefault(),a.target.classList.remove("favourites-hover");var b=a.dataTransfer.getData("Text");this.app.add_favourite(b)},RecipeWaiter.prototype.ing_change=function(){window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.disable_click=function(a){var b=a.target;"false"===b.getAttribute("disabled")?(b.setAttribute("disabled","true"),b.classList.add("disable-icon-selected"),b.parentNode.parentNode.classList.add("disabled")):(b.setAttribute("disabled","false"),b.classList.remove("disable-icon-selected"),b.parentNode.parentNode.classList.remove("disabled")),this.app.progress=0,window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.breakpoint_click=function(a){var b=a.target;"false"===b.getAttribute("break")?(b.setAttribute("break","true"),b.classList.add("breakpoint-selected")):(b.setAttribute("break","false"),b.classList.remove("breakpoint-selected")),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.operation_dblclick=function(a){a.target.remove(),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.operation_child_dblclick=function(a){a.target.parentNode.remove(),window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.get_config=function(){for(var a,b,c,d,e,f=[],g=document.querySelectorAll("#rec_list li.operation"),h=0;h<g.length;h++){a=[],c=g[h].querySelector(".disable-icon"),d=g[h].querySelector(".breakpoint"),b=g[h].querySelectorAll(".arg");for(var i=0;i<b.length;i++)"checkbox"===b[i].getAttribute("type")?a[i]=b[i].checked:b[i].classList.contains("toggle-string")?a[i]={option:b[i].previousSibling.children[0].textContent.slice(0,-1),string:b[i].value}:a[i]=b[i].value;e={op:g[h].querySelector(".arg-title").textContent,args:a},c&&"true"===c.getAttribute("disabled")&&(e.disabled=!0),d&&"true"===d.getAttribute("break")&&(e.breakpoint=!0),f.push(e)}return f},RecipeWaiter.prototype.update_breakpoint_indicator=function(a){for(var b=document.querySelectorAll("#rec_list li.operation"),c=0;c<b.length;c++)c===a?b[c].classList.add("break"):b[c].classList.remove("break")},RecipeWaiter.prototype.build_recipe_operation=function(a){var b=a.textContent,c=new HTMLOperation(b,this.app.operations[b],this.app,this.manager);a.innerHTML=c.to_full_html(),this.app.operations[b].flow_control&&a.classList.add("flow-control-op"),c.manual_bake&&this.app.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.app.alert("Auto-Bake is disabled by default when using this operation.","info",5e3))},RecipeWaiter.prototype.add_operation=function(a){var b=document.createElement("li");return b.classList.add("operation"),b.innerHTML=a,this.build_recipe_operation(b),document.getElementById("rec_list").appendChild(b),b.dispatchEvent(this.manager.operationadd),b},RecipeWaiter.prototype.clear_recipe=function(){for(var a=document.getElementById("rec_list");a.firstChild;)a.removeChild(a.firstChild);a.dispatchEvent(this.manager.operationremove)},RecipeWaiter.prototype.dropdown_toggle_click=function(a){var b=a.target,c=b.parentNode.parentNode.previousSibling;c.innerHTML=b.textContent+" <span class='caret'></span>",this.ing_change()},RecipeWaiter.prototype.op_add=function(a){window.dispatchEvent(this.manager.statechange)},RecipeWaiter.prototype.op_remove=function(a){window.dispatchEvent(this.manager.statechange)};var SeasonalWaiter=function(a,b){this.app=a,this.manager=b};SeasonalWaiter.prototype.load=function(){var a=new Date;11===a.getMonth()&&a.getDate()>12&&(this.app.options.snow=!1,this.create_snow_option(),$(document).on("switchChange.bootstrapSwitch",".option-item input:checkbox[option='snow']",this.let_it_snow.bind(this)),window.addEventListener("resize",this.let_it_snow.bind(this)),this.manager.add_listeners(".btn","click",this.shake_off_snow,this),25===a.getDate()&&this.let_it_snow()),this.kkeys=[],window.addEventListener("keydown",this.konami_code_listener.bind(this))},SeasonalWaiter.prototype.insert_spider_icons=function(){var a="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB3UlEQVQ4y2NgGJaAmYGBgVnf0oKJgYGBobWtXamqqoYTn2I4CI+LTzM2NTulpKbu+vPHz2dV5RWlluZmi3j5+KqFJSSEzpw8uQPdAEYYIzo5Kfjrl28rWFlZzjAzMYuEBQao3Lh+g+HGvbsMzExMDN++fWf4/PXLBzY2tqYNK1f2+4eHM2xcuRLigsT09Igf3384MTExbf767etBI319jU8fPsi+//jx/72HDxh5uLkZ7ty7y/Dz1687Avz8n2UUFR3Z2NjOySoqfmdhYGBg+PbtuwI7O8e5H79+8X379t357PnzYo+ePP7y6cuXc9++f69nYGRsvf/w4XdtLS2R799/bBUWFHr57sP7Jbs3b/ZkzswvUP3165fZ7z9//r988WIVAyPDr8tXr576+u3bpb9//7YwMjKeV1dV41NWVGoVEhDgPH761DJREeHaz1+/lqlpafUx6+jrRfz4+fPy+w8fTu/fsf3uw7t3L39+//4cv7DwGQYGhpdPbt9m4BcRFlNWVJC4fuvWASszs4C379792Ldt2xZBUdEdDP5hYSqQGIjDGa965uYKCalpZQwMDAxhMTG9DAwMDLaurhIkJY7A8IgGBgYGBgd3Dz2yUpeFo6O4rasrA9T24ZRxAAMTwMpgEJwLAAAAAElFTkSuQmCC",b="iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACYVBMVEUAAAAcJSU2Pz85QkM9RUWEhIWMjI2MkJEcJSU2Pz85QkM9RUWWlpc9RUVXXl4cJSU2Pz85QkM8REU9RUVRWFh6ens9RUVCSkpNVFRdY2McJSU5QkM7REQ9RUVGTk5KUlJQVldcY2Rla2uTk5WampscJSVUWltZX2BrcHF1e3scJSUjLCw9RUVASEhFTU1HTk9bYWJeZGRma2xudHV1eHiZmZocJSUyOjpJUFFQVldSWlpTWVpXXl5YXl5rb3B9fX6RkZIcJSUmLy8tNTU9RUVFTU1IT1BOVldRV1hTWlp0enocJSUfKChJUFBWXV1hZ2hnbGwcJSVETExLUlJLU1NNVVVPVlZYXl9cY2RiaGlobW5rcXFyd3h0eHgcJSUpMTFDS0tQV1dRV1hSWFlWXF1bYWJma2tobW5uc3SsrK0cJSVJUFBMVFROVlZVW1xZX2BdYmNhZ2hjaGhla2tqcHBscHE4Pz9KUlJRWVlSWVlXXF1aYGFbYWFfZWZlampqbW4cJSUgKSkiKysuNjY0PD01PT07QkNES0tHTk5JUFBMUlNMU1NOU1ROVVVPVVZRVlZRV1dSWVlWXFxXXV5aX2BbYWFbYWJcYmJcYmNcY2RdYmNgZmZhZmdkaWpkampkamtlamtla2tma2tma2xnbG1obW5pbG1pb3Bqb3Brb3BtcXJudHVvcHFvcXJvc3NwcXNwdXVxc3RzeXl1eXp2eXl3ent6e3x+gYKAhISBg4SKi4yLi4yWlpeampudnZ6fn6CkpaanqKiur6+vr7C4uLm6urq6u7u8vLy9vb3Av8DR0dL2b74UAAAAgHRSTlMAEBAQEBAQECAgICAgMDBAQEBAQEBAUFBQUGBgYGBgYGBgYGBgcHBwcHCAgICAgICAgICAgICPj4+Pj4+Pj4+Pj5+fn5+fn5+fn5+vr6+vr6+/v7+/v7+/v7+/v7+/z8/Pz8/Pz8/Pz8/P39/f39/f39/f39/f7+/v7+/v7+/v78x6RlYAAAGBSURBVDjLY2AYWUCSgUGAk4GBTdlUhQebvP7yjIgCPQbWzBMnjx5wwJSX37Rwfm1isqj9/iPHTuxYlyeMJi+yunfptBkZOw/uWj9h3vatcycu8eRGlldb3Vsts3ph/cFTh7fN3bCoe2Vf8+TZoQhTvBa6REozVC7cuPvQnmULJm1e2z+308eyJieEBSLPXbKQIUqQIczk+N6eNaumtnZMaWhaHM89m8XVCqJA02Y5w0xmga6yfVsamtrN4xoXNzS0JTHkK3CXy4EVFMumcxUy2LbENTVkZfEzMDAudtJyTmNwS2XQreAFyvOlK9louDNVaXurmjkGgnTMkWDgXswtNouFISEX6Awv+RihQi5OcYY4DtVARpCCFCMGhiJ1hjwFBpagEAaWEpFoC0WQOCOjFMRRwXYMDB4BDLJ+QLYsg7GBGjtasLnEMjCIrWBgyAZ7058FI9x1SoFEnTCDsCyIhynPILYYSFgbYpUDA5bpQBluXzxpI1yYAbd2sCMYRhwAAHB9ZPztbuMUAAAAAElFTkSuQmCC",c="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";document.querySelector("link[rel=icon]").setAttribute("href","data:image/png;base64,"+a),document.querySelector("#bake img").setAttribute("src","data:image/png;base64,"+b),document.querySelector(".about-img-left").setAttribute("src","data:image/png;base64,"+c)},SeasonalWaiter.prototype.insert_spider_text=function(){document.title=document.title.replace(/Cyber/g,"Spider"),SeasonalWaiter.tree_walk(document.body,function(a){3===a.nodeType&&(a.nodeValue=a.nodeValue.replace(/Cyber/g,"Spider"))},!0),SeasonalWaiter.tree_walk(document.getElementById("bake-group"),function(a){3===a.nodeType&&(a.nodeValue=a.nodeValue.replace(/Bake/g,"Spin"))},!0),document.querySelector("#recipe .title").innerHTML="Web"},SeasonalWaiter.prototype.create_snow_option=function(){var a=document.getElementById("options-body"),b=document.createElement("div");b.className="option-item",b.innerHTML="<input type='checkbox' option='snow' checked /> Let it snow",a.appendChild(b),this.manager.options.load()},SeasonalWaiter.prototype.let_it_snow=function(){if($(document).snowfall("clear"),this.app.options.snow){var a={},b=navigator.userAgent.match(/Firefox\/(\d\d?)/);a=b&&parseInt(b[1],10)<30?{flakeCount:10,flakeColor:"#fff",flakePosition:"absolute",minSize:1,maxSize:2,minSpeed:1,maxSpeed:5,round:!1,shadow:!1,collection:!1,collectionHeight:20,deviceorientation:!0}:{flakeCount:35,flakeColor:"#fff",flakePosition:"absolute",minSize:5,maxSize:8,minSpeed:1,maxSpeed:5,round:!0,shadow:!0,collection:".btn",collectionHeight:20,deviceorientation:!0},$(document).snowfall(a)}},SeasonalWaiter.prototype.shake_off_snow=function(a){for(var b=a.target,c=b.getBoundingClientRect(),d=document.querySelectorAll("canvas.snowfall-canvas"),e=null,f=function(){h.clearRect(0,0,e.width,e.height),$(this).fadeIn()},g=0;g<d.length;g++)if(e=d[g],e.style.left===c.left+"px"&&e.style.top===c.top-20+"px"){var h=e.getContext("2d");$(e).fadeOut("slow",f);break}},SeasonalWaiter.prototype.konami_code_listener=function(a){this.kkeys.push(a.keyCode);for(var b=[38,38,40,40,37,39,37,39,66,65],c=0;c<this.kkeys.length;c++){if(this.kkeys[c]!==b[c]){this.kkeys=[];break}c===b.length-1&&($("body").children().toggleClass("konami"),this.kkeys=[])}},SeasonalWaiter.tree_walk=function(){var a={SCRIPT:!0,IFRAME:!0,OBJECT:!0,EMBED:!0,STYLE:!0,LINK:!0,META:!0};return function(b,c,d){for(var e=b.firstChild;e&&e!==b;){if((d||1===e.nodeType)&&c(e)===!1)return!1;if(1!==e.nodeType||!e.firstChild||e.tagName&&a[e.tagName]){if(e.nextSibling)e=e.nextSibling;else for(;(e=e.parentNode)!==b;)if(e.nextSibling){e=e.nextSibling;break}}else e=e.firstChild}}}();var WindowWaiter=function(a){this.app=a};WindowWaiter.prototype.window_resize=function(){clearTimeout(this.reset_layout_timeout),this.reset_layout_timeout=setTimeout(this.app.reset_layout.bind(this.app),200)},WindowWaiter.prototype.window_blur=function(){this.window_blur_time=(new Date).getTime()},WindowWaiter.prototype.window_focus=function(){var a=(new Date).getTime()-this.window_blur_time;a>6e4&&this.app.silent_bake()};var main=function(){var a=["To Base64","From Base64","To Hex","From Hex","To Hexdump","From Hexdump","URL Decode","Regular expression","Entropy","Fork"],b={ +update_url:!0,show_highlighter:!0,treat_as_utf8:!0,word_wrap:!0,show_errors:!0,error_timeout:4e3,auto_bake_threshold:200,attempt_highlight:!0,snow:!1};document.removeEventListener("DOMContentLoaded",main,!1),window.app=new HTMLApp(Categories,OperationConfig,a,b),window.app.setup()};window.console=console||{log:function(){},error:function(){}},window.compile_time=moment.tz("Tue Dec 20 2016 18:47:37","ddd MMM D YYYY HH:mm:ss","UTC").valueOf(),window.compile_message="Merry Christmas! Have a look in the options panel for some festive flavour.",document.addEventListener("DOMContentLoaded",main,!1); \ No newline at end of file diff --git a/src/js/config/Categories.js b/src/js/config/Categories.js index 7f55eef5..f4828279 100755 --- a/src/js/config/Categories.js +++ b/src/js/config/Categories.js @@ -243,6 +243,8 @@ const Categories = [ "SQL Minify", "CSS Beautify", "CSS Minify", + "XPath expression", + "CSS selector", "Strip HTML tags", "Diff", ] diff --git a/src/js/config/OperationConfig.js b/src/js/config/OperationConfig.js index 9e7a68e4..97759ebe 100755 --- a/src/js/config/OperationConfig.js +++ b/src/js/config/OperationConfig.js @@ -1939,38 +1939,38 @@ const OperationConfig = { ] }, "XPath expression": { - description: "Extract information from an xml document with an XPath query", - run: Extract.run_xpath, + description: "Extract information from an XML document with an XPath query", + run: Code.run_xpath, input_type: "string", output_type: "string", args: [ { name: "XPath", type: "string", - value: Extract.XPATH_INITIAL + value: Code.XPATH_INITIAL }, { name: "Result delimiter", type: "binary_short_string", - value: Extract.XPATH_DELIMITER + value: Code.XPATH_DELIMITER } ] }, "CSS selector": { - description: "Extract information from an HTML document with an CSS selector", - run: Extract.run_css_query, + description: "Extract information from an HTML document with a CSS selector", + run: Code.run_css_query, input_type: "string", output_type: "string", args: [ { name: "CSS selector", type: "string", - value: Extract.SELECTOR_INITIAL + value: Code.CSS_SELECTOR_INITIAL }, { name: "Delimiter", type: "binary_short_string", - value: Extract.CSS_QUERY_DELIMITER + value: Code.CSS_QUERY_DELIMITER }, ] }, diff --git a/src/js/lib/xpath.js b/src/js/lib/xpath.js old mode 100644 new mode 100755 index 4a1e3d7d..89542670 --- a/src/js/lib/xpath.js +++ b/src/js/lib/xpath.js @@ -1,11 +1,11 @@ -(function(){/* - * XPath.js - Pure JavaScript implementation of XPath 2.0 parser and evaluator - * - * Copyright (c) 2012 Sergey Ilinsky - * Dual licensed under the MIT and GPL licenses. - * - * - */ +/** @license +======================================================================== + XPath.js - Pure JavaScript implementation of XPath 2.0 parser and evaluator + + Copyright (c) 2012 Sergey Ilinsky + Dual licensed under the MIT and GPL licenses. +*/ +(function(){ // Javascript objects var cString = window.String, diff --git a/src/js/operations/Code.js b/src/js/operations/Code.js index b6771f34..1509485b 100755 --- a/src/js/operations/Code.js +++ b/src/js/operations/Code.js @@ -1,4 +1,4 @@ -/* globals prettyPrintOne, vkbeautify */ +/* globals prettyPrintOne, vkbeautify, xpath */ /** * Code operations. @@ -304,4 +304,119 @@ var Code = { } }, + + /** + * @constant + * @default + */ + XPATH_INITIAL: "", + + /** + * @constant + * @default + */ + XPATH_DELIMITER: "\\n", + + /** + * XPath expression operation. + * + * @author Mikescher (https://github.com/Mikescher | https://mikescher.com) + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run_xpath:function(input, args) { + const query = args[0], + delimiter = args[1]; + + var xml; + try { + xml = $.parseXML(input); + } catch (err) { + return "Invalid input XML."; + } + + var result; + try { + result = xpath.evaluate(xml, query); + } catch (err) { + return "Invalid XPath. Details:\n" + err.message; + } + + const serializer = new XMLSerializer(); + const node_to_string = function(node) { + switch (node.nodeType) { + case Node.ELEMENT_NODE: return serializer.serializeToString(node); + case Node.ATTRIBUTE_NODE: return node.value; + case Node.COMMENT_NODE: return node.data; + case Node.DOCUMENT_NODE: return serializer.serializeToString(node); + default: throw new Error("Unknown Node Type: " + node.nodeType); + } + }; + + return Object.keys(result).map(function(key) { + return result[key]; + }).slice(0, -1) // all values except last (length) + .map(node_to_string) + .join(delimiter); + }, + + + /** + * @constant + * @default + */ + CSS_SELECTOR_INITIAL: "", + + /** + * @constant + * @default + */ + CSS_QUERY_DELIMITER: "\\n", + + /** + * CSS selector operation. + * + * @author Mikescher (https://github.com/Mikescher | https://mikescher.com) + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run_css_query: function(input, args) { + const query = args[0], + delimiter = args[1]; + + var html; + try { + html = $.parseHTML(input); + } catch (err) { + return "Invalid input HTML."; + } + + var result; + try { + result = $(html).find(query); + } catch (err) { + return "Invalid CSS Selector. Details:\n" + err.message; + } + + const node_to_string = function(node) { + switch (node.nodeType) { + case Node.ELEMENT_NODE: return node.outerHTML; + case Node.ATTRIBUTE_NODE: return node.value; + case Node.COMMENT_NODE: return node.data; + case Node.TEXT_NODE: return node.wholeText; + case Node.DOCUMENT_NODE: return node.outerHTML; + default: throw new Error("Unknown Node Type: " + node.nodeType); + } + }; + + return Array.apply(null, Array(result.length)) + .map(function(_, i) { + return result[i]; + }) + .map(node_to_string) + .join(delimiter); + }, + }; diff --git a/src/js/operations/Extract.js b/src/js/operations/Extract.js index 470b43c2..4af520bf 100755 --- a/src/js/operations/Extract.js +++ b/src/js/operations/Extract.js @@ -1,5 +1,3 @@ -/* globals xpath */ - /** * Identifier extraction operations. * @@ -296,117 +294,4 @@ var Extract = { return output; }, - /** - * @constant - * @default - */ - XPATH_INITIAL: "", - - /** - * @constant - * @default - */ - XPATH_DELIMITER: "\\n", - - /** - * Extract information (from an xml document) with an XPath query - * - * @author Mikescher (https://github.com/Mikescher | https://mikescher.com) - * - * @param {string} input - * @param {Object[]} args - * @returns {string} - */ - run_xpath:function(input, args) { - const query = args[0]; - const delimiter = args[1]; - - var xml; - try { - xml = $.parseXML(input); - } catch (err) { - return "Invalid input XML."; - } - - var result; - try { - result = xpath.evaluate(xml, query); - } catch (err) { - return "Invalid XPath. Details:\n" + err.message; - } - - const serializer = new XMLSerializer(); - const nodeToString = function(node) { - switch (node.nodeType) { - case Node.ELEMENT_NODE: return serializer.serializeToString(node); - case Node.ATTRIBUTE_NODE: return node.value; - case Node.COMMENT_NODE: return node.data; - case Node.DOCUMENT_NODE: return serializer.serializeToString(node); - default: throw new Error("Unknown Node Type: " + node.nodeType); - } - }; - - return Object.values(result).slice(0, -1) // all values except last (length) - .map(nodeToString) - .join(delimiter); - }, - - - /** - * @constant - * @default - */ - SELECTOR_INITIAL: "", - /** - * @constant - * @default - */ - CSS_QUERY_DELIMITER: "\\n", - - /** - * Extract information (from an hmtl document) with an css selector - * - * @author Mikescher (https://github.com/Mikescher | https://mikescher.com) - * - * @param {string} input - * @param {Object[]} args - * @returns {string} - */ - run_css_query: function(input, args) { - const query = args[0]; - const delimiter = args[1]; - - var html; - try { - html = $.parseHTML(input); - } catch (err) { - return "Invalid input HTML."; - } - - var result; - try { - result = $(html).find(query); - } catch (err) { - return "Invalid CSS Selector. Details:\n" + err.message; - } - - const nodeToString = function(node) { - switch (node.nodeType) { - case Node.ELEMENT_NODE: return node.outerHTML; - case Node.ATTRIBUTE_NODE: return node.value; - case Node.COMMENT_NODE: return node.data; - case Node.TEXT_NODE: return node.wholeText; - case Node.DOCUMENT_NODE: return node.outerHTML; - default: throw new Error("Unknown Node Type: " + node.nodeType); - } - }; - - return Array.apply(null, Array(result.length)) - .map(function(_, i) { - return result[i]; - }) - .map(nodeToString) - .join(delimiter); - }, - }; diff --git a/src/static/stats.txt b/src/static/stats.txt index 1b8753ee..d57461ad 100644 --- a/src/static/stats.txt +++ b/src/static/stats.txt @@ -1,21 +1,21 @@ -203 source files -104466 lines -4.0M size +204 source files +113086 lines +4.2M size -136 JavaScript source files -95316 lines -3.4M size +137 JavaScript source files +103936 lines +3.7M size -78 third party JavaScript source files -76377 lines -2.7M size +79 third party JavaScript source files +84842 lines +3.0M size 58 first party JavaScript source files -18939 lines +19094 lines 724K size -3.2M uncompressed JavaScript size +3.4M uncompressed JavaScript size 1.7M compressed JavaScript size 15 categories -155 operations +157 operations