diff --git a/asset-manifest.json b/asset-manifest.json index e6e484b..249fddd 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { - "main.css": "/static/css/main.5ddd6abf.chunk.css", - "main.js": "/static/js/main.80718380.chunk.js", - "main.js.map": "/static/js/main.80718380.chunk.js.map", + "main.css": "/static/css/main.41c170c8.chunk.css", + "main.js": "/static/js/main.dd14db86.chunk.js", + "main.js.map": "/static/js/main.dd14db86.chunk.js.map", "runtime~main.js": "/static/js/runtime~main.a8a9905a.js", "runtime~main.js.map": "/static/js/runtime~main.a8a9905a.js.map", "static/js/2.2a44bb2c.chunk.js": "/static/js/2.2a44bb2c.chunk.js", "static/js/2.2a44bb2c.chunk.js.map": "/static/js/2.2a44bb2c.chunk.js.map", "index.html": "/index.html", - "precache-manifest.9e2cc8e58296949e2fe61c9668d260e7.js": "/precache-manifest.9e2cc8e58296949e2fe61c9668d260e7.js", + "precache-manifest.71e0c98216dd43baf910a39f4f3bd5ae.js": "/precache-manifest.71e0c98216dd43baf910a39f4f3bd5ae.js", "service-worker.js": "/service-worker.js", - "static/css/main.5ddd6abf.chunk.css.map": "/static/css/main.5ddd6abf.chunk.css.map" + "static/css/main.41c170c8.chunk.css.map": "/static/css/main.41c170c8.chunk.css.map" } } \ No newline at end of file diff --git a/index.html b/index.html index 11b10fd..7b112e1 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -BitwiseCmd
\ No newline at end of file +BitwiseCmd
\ No newline at end of file diff --git a/precache-manifest.9e2cc8e58296949e2fe61c9668d260e7.js b/precache-manifest.71e0c98216dd43baf910a39f4f3bd5ae.js similarity index 57% rename from precache-manifest.9e2cc8e58296949e2fe61c9668d260e7.js rename to precache-manifest.71e0c98216dd43baf910a39f4f3bd5ae.js index 353097e..93a5757 100644 --- a/precache-manifest.9e2cc8e58296949e2fe61c9668d260e7.js +++ b/precache-manifest.71e0c98216dd43baf910a39f4f3bd5ae.js @@ -1,19 +1,19 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "bc76748ecfac78ec771fe3d36833047b", + "revision": "ca57ac0c36150911ff2808cfb8d57828", "url": "/index.html" }, { - "revision": "5b9fb99a3c334af642e8", - "url": "/static/css/main.5ddd6abf.chunk.css" + "revision": "2083ea5d2bec11167520", + "url": "/static/css/main.41c170c8.chunk.css" }, { "revision": "2ec295e4b311c15c63c6", "url": "/static/js/2.2a44bb2c.chunk.js" }, { - "revision": "5b9fb99a3c334af642e8", - "url": "/static/js/main.80718380.chunk.js" + "revision": "2083ea5d2bec11167520", + "url": "/static/js/main.dd14db86.chunk.js" }, { "revision": "42ac5946195a7306e2a5", diff --git a/service-worker.js b/service-worker.js index 1324481..f5dcc51 100644 --- a/service-worker.js +++ b/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/precache-manifest.9e2cc8e58296949e2fe61c9668d260e7.js" + "/precache-manifest.71e0c98216dd43baf910a39f4f3bd5ae.js" ); self.addEventListener('message', (event) => { diff --git a/static/css/main.5ddd6abf.chunk.css b/static/css/main.41c170c8.chunk.css similarity index 77% rename from static/css/main.5ddd6abf.chunk.css rename to static/css/main.41c170c8.chunk.css index a6ef752..e3f3b77 100644 --- a/static/css/main.5ddd6abf.chunk.css +++ b/static/css/main.41c170c8.chunk.css @@ -1,2 +1,2 @@ -.debug-indicators{position:absolute;top:1em;left:1em}.debug-indicators span{display:block}.top-links{position:absolute;right:2em;top:1em;list-style-type:none;margin:0}.top-links li{float:left}.top-links a{display:inline-block;padding:5px 10px}.top-links .icon{margin-right:5px;vertical-align:middle}body{padding:0;margin:0;overflow:hidden}.app-root,body,html{height:100%}.app-root{font-family:Verdana;font-size:.8em;margin:0;padding:20px 100px 0;overflow:auto}code{font-size:1.2em;font-weight:700}.header-cmd{color:#c5c5c5}.mono{font-family:monospace;font-size:1.3em}.expressionInput{width:500px;padding:3px;border:none;outline:none}.result{margin:10px 10px 30px}.result .input{margin-bottom:10px}.result .content{padding-left:10px}.result .cur{margin-right:5px}.hashLink{text-decoration:none;margin-left:5px;visibility:hidden}.hashLink:hover{text-decoration:underline;margin-left:5px}.result:hover .hashLink{visibility:visible}.expression .label{font-weight:700;padding-right:5px;text-align:right}.expression .bin{letter-spacing:3px}.expression .byte{margin:0 3px}.expression-result td{border-top:1px dotted grey}.expression{font-size:1.5em;font-family:monospace}.expression .prefix{font-weight:400;display:none;font-size:.9em}.expression .other{font-size:.9em}.expression .sign{text-align:right}.flipable{cursor:pointer;opacity:1}.flipable:hover{opacity:.8}.hex .prefix{display:inline}.help{padding:10px}.help ul{list-style-type:none;margin:0;padding:0}.help p{margin-top:0}.indicator{padding:2px 5px;font-family:monospace;font-size:1.3em;background:transparent;border:none;cursor:pointer}.error{color:maroon}.soft{opacity:.7}.small-text{font-size:.8em}#view{padding:10px}.cur{color:#d3d3d3}.light{background:#fafafa}.light a,.light a:visited{color:#222}.light .one{color:#000}.light .zero{color:#888}.light .indicator{color:#ddd}.light .expressionInput{background:#ddd}.light .on{color:#121212}.light .prefix{color:#888}.light .other{color:#bbb}.light .hashLink,.light .hashLink:visited{color:#ddd}.light .hashLink:hover{color:#888}.light ul.top-links li:hover{background:#ddd}.light .error{color:#da586d}.light button{color:#000}.light button:hover{background:#ddd}.light button:disabled{color:#888;background-color:inherit}.dark{background:#121212}.dark,.dark .expression{color:#fff}.dark .expressionInput{color:#fff;background:#555}.dark a,.dark a:visited{color:#fff}.dark .indicator{color:#555}.dark .on{color:#fff}.dark .prefix,.dark .zero{color:#999}.dark .other{color:#444}.dark .hashLink,.dark .hashLink:visited{color:#333}.dark .hashLink:hover{color:#999}.dark ul.top-links li:hover{background:#333}.dark .error{color:#da586d}.dark button{color:#fff}.dark button:hover{background:#333}.dark button:disabled{color:#999;background-color:inherit}.midnight .header-cmd{color:#85a0ad}.midnight{background:#2c3e50}.midnight,.midnight .expression{color:#fff}.midnight .expressionInput{background:#85a0ad;color:#fff}.dark a:visited,.midnight a{color:#fff}.midnight .indicator{color:#85a0ad}.midnight .on{color:#fff}.midnight .prefix,.midnight .zero{color:#85a0ad}.midnight .other{color:#9fbac7}.dark .hashLink:visited,.midnight .hashLink{color:#85a0ad}.midnight .hashLink:hover{color:#9fbac7}.midnight ul.top-links li:hover{background:#132537}.midnight .error{color:#da586d}.midnight .changelog .item-new .date{font-weight:700}.midnight button{color:#fff}.midnight button:hover{background:#132537}.midnight button:disabled{color:#85a0ad;background-color:inherit}button{border:none;background:none;cursor:pointer}button:focus{outline:0}@media (max-width:800px){.top-links .link-text{display:none}}.social-container{position:fixed;bottom:20px;right:20px}@media (max-width:700px){body{padding:10px}.expressionInput{width:500px}}@media (max-width:500px){.expressionInput{width:350px}.top-links a{display:inline-block;padding:5px 10px}}@media (max-width:350px){.expressionInput{width:200px}}.ip-address-info{padding-top:1em;font-size:.85em;vertical-align:middle;display:none}.subnet-view .description{vertical-align:middle;text-align:right}.subnet-view td{padding-right:15px}.subnet-view{margin-bottom:20px}.subnet-view .part{border-bottom:1px solid}.subnet-view button{margin:0 3px}.subnet-view .ip-address-col{min-width:8.5em}.help .section{margin-bottom:10px}.help .panel-container{overflow:hidden}.help .left-panel{float:left;margin-right:20px}.help .right-panel{float:left}.changelog .item{margin-top:2em}.changelog .item-new .date{font-weight:700;text-decoration:underline} -/*# sourceMappingURL=main.5ddd6abf.chunk.css.map */ \ No newline at end of file +.debug-indicators{position:absolute;top:1em;left:1em}.debug-indicators span{display:block}.top-links{position:absolute;right:2em;top:1em;list-style-type:none;margin:0}.top-links li{float:left}.top-links a{display:inline-block;padding:5px 10px}.top-links .icon{margin-right:5px;vertical-align:middle}body{padding:0;margin:0;overflow:hidden}.app-root,body,html{height:100%}.app-root{font-family:Verdana;font-size:.8em;margin:0;padding:20px 100px 0;overflow:auto}code{font-size:1.2em;font-weight:700}.header-cmd{color:#c5c5c5}.mono{font-family:monospace;font-size:1.3em}.expressionInput{width:500px;padding:3px;border:none;outline:none}.result{margin:10px 10px 30px}.result .input{margin-bottom:10px}.result .content{padding-left:10px}.result .cur{margin-right:5px}.hashLink{text-decoration:none;margin-left:5px;visibility:hidden}.hashLink:hover{text-decoration:underline;margin-left:5px}.result:hover .hashLink{visibility:visible}.expression .label{font-weight:700;padding-right:5px;text-align:right}.expression .bin{letter-spacing:3px}.expression .byte{margin:0 3px}.expression-result td{border-top:1px dotted grey}.expression{font-size:1.5em;font-family:monospace}.expression .prefix{font-weight:400;display:none;font-size:.9em}.expression .other{font-size:.9em}.expression .sign{text-align:right}.flipable{cursor:pointer;opacity:1}.flipable:hover{opacity:.8}.hex .prefix{display:inline}.help{padding:10px}.help ul{list-style-type:none;margin:0;padding:0}.help p{margin-top:0}.indicator{padding:2px 5px;font-family:monospace;font-size:1.3em;background:transparent;border:none;cursor:pointer}.error{color:maroon}.soft{opacity:.7}.small-text{font-size:.8em}#view{padding:10px}.cur{color:#d3d3d3}.light{background:#fafafa}.light a,.light a:visited{color:#222}.light .one{color:#000}.light .zero{color:#888}.light .indicator{color:#ddd}.light .expressionInput{background:#ddd}.light .on{color:#121212}.light .prefix{color:#888}.light .other{color:#bbb}.light .hashLink,.light .hashLink:visited{color:#ddd}.light .hashLink:hover{color:#888}.light ul.top-links li:hover{background:#ddd}.light .error{color:#da586d}.light button{color:#000}.light button:hover{background:#ddd}.light button:disabled{color:#888;background-color:inherit}.dark{background:#121212}.dark,.dark .expression{color:#fff}.dark .expressionInput{color:#fff;background:#555}.dark a,.dark a:visited{color:#fff}.dark .indicator{color:#555}.dark .on{color:#fff}.dark .prefix,.dark .zero{color:#999}.dark .other{color:#444}.dark .hashLink,.dark .hashLink:visited{color:#333}.dark .hashLink:hover{color:#999}.dark ul.top-links li:hover{background:#333}.dark .error{color:#da586d}.dark button{color:#fff}.dark button:hover{background:#333}.dark button:disabled{color:#999;background-color:inherit}.midnight .header-cmd{color:#85a0ad}.midnight{background:#2c3e50}.midnight,.midnight .expression{color:#fff}.midnight .expressionInput{background:#85a0ad;color:#fff}.dark a:visited,.midnight a{color:#fff}.midnight .indicator{color:#85a0ad}.midnight .on{color:#fff}.midnight .prefix,.midnight .zero{color:#85a0ad}.midnight .other{color:#9fbac7}.dark .hashLink:visited,.midnight .hashLink{color:#85a0ad}.midnight .hashLink:hover{color:#9fbac7}.midnight ul.top-links li:hover{background:#132537}.midnight .error{color:#da586d}.midnight .changelog .item-new .date{font-weight:700}.midnight button{color:#fff}.midnight button:hover{background:#132537}.midnight button:disabled{color:#85a0ad;background-color:inherit}button{border:none;background:none;cursor:pointer}button:focus{outline:0}@media (max-width:800px){.debug-indicators,.top-links .link-text{display:none}.app-root{padding:10px}}.social-container{position:fixed;bottom:20px;right:20px}@media (max-width:500px){.expressionInput{width:400px}.top-links a{display:inline-block;padding:5px 10px}}@media (max-width:450px){.expressionInput{width:350px}}.ip-address-info{padding-top:1em;font-size:.85em;vertical-align:middle;display:none}.subnet-view .description{vertical-align:middle;text-align:right}.subnet-view td{padding-right:15px}.subnet-view{margin-bottom:20px}.subnet-view .part{border-bottom:1px solid}.subnet-view button{margin:0 3px}.subnet-view .ip-address-col{min-width:8.5em}.help .section{margin-bottom:10px}.help .panel-container{overflow:hidden}.help .left-panel{float:left;margin-right:20px}.help .right-panel{float:left}.changelog .item{margin-top:2em}.changelog .item-new .date{font-weight:700;text-decoration:underline} +/*# sourceMappingURL=main.41c170c8.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.41c170c8.chunk.css.map b/static/css/main.41c170c8.chunk.css.map new file mode 100644 index 0000000..6053fa1 --- /dev/null +++ b/static/css/main.41c170c8.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["DebugIndicators.css","TopLinks.css","index.css","IpAddressView.css","SubnetView.css","HelpResultView.css","WhatsNewResultView.css"],"names":[],"mappings":"AAAA,kBAAoB,iBAAkB,CAAE,OAAQ,CAAE,QAAS,CAC3D,uBAAwB,aAAe,CCAvC,WAAa,iBAAkB,CAAE,SAAU,CAAE,OAAQ,CAAE,oBAAqB,CAAE,QAAU,CACxF,cAAgB,UAAa,CAC7B,aAAe,oBAAqB,CAAE,gBAAiB,CACvD,iBAAmB,gBAAiB,CAAE,qBAAwB,CCJ9D,KAAO,SAAS,CAAE,QAAQ,CAAgB,eAAkB,CAG5D,oBAH4B,WAG8F,CAA1H,UAAY,mBAAoB,CAAE,cAAgB,CAAE,QAAS,CAAE,oBAA2B,CAAgB,aAAgB,CAC1H,KAAO,eAAgB,CAAE,eAAmB,CAE5C,YAAc,aAAe,CAE7B,MAAQ,qBAAsB,CAAE,eAAiB,CACjD,iBAAmB,WAAY,CAAE,WAAY,CAAE,WAAY,CAAE,YAAe,CAE5E,QAAU,qBAAwB,CAClC,eAAiB,kBAAqB,CACtC,iBAAmB,iBAAkB,CACrC,aAAe,gBAAmB,CAElC,UAAY,oBAAqB,CAAE,eAAgB,CAAE,iBAAmB,CACxE,gBAAkB,yBAA0B,CAAE,eAAkB,CAChE,wBAA0B,kBAAoB,CAE9C,mBAAqB,eAAkB,CAAE,iBAAkB,CAAE,gBAAmB,CAChF,iBAAmB,kBAAqB,CACxC,kBAAoB,YAAe,CACnC,sBAAwB,0BAA6B,CACrD,YAAc,eAAgB,CAAE,qBAAuB,CACvD,oBAAsB,eAAmB,CAAE,YAAa,CAAE,cAAiB,CAC3E,mBAAqB,cAAgB,CACrC,kBAAoB,gBAAiB,CAGrC,UAAY,cAAe,CAAE,SAAW,CACxC,gBAAkB,UAAa,CAE/B,aAAe,cAAiB,CAEhC,MAAQ,YAAe,CACvB,SAAW,oBAAqB,CAAE,QAAS,CAAE,SAAa,CAC1D,QAAU,YAAc,CAExB,WAAa,eAAgB,CAAG,qBAAsB,CAAE,eAAgB,CAAE,sBAAuB,CAAE,WAAY,CAAE,cAAgB,CACjI,OAAS,YAAe,CAExB,MAAQ,UAAa,CACrB,YAAc,cAAiB,CAE/B,MAAQ,YAAa,CAErB,KAAO,aAAkB,CAGzB,OAAS,kBAAqB,CAC9B,0BAA6B,UAAa,CAC1C,YAAc,UAAc,CAC5B,aAAe,UAAa,CAC5B,kBAAoB,UAAa,CACjC,wBAA0B,eAAiB,CAC3C,WAAa,aAAgB,CAC7B,eAAiB,UAAW,CAC5B,cAAgB,UAAY,CAC5B,0CAA6C,UAAY,CACzD,uBAAyB,UAAY,CACrC,6BAA+B,eAAiB,CAChD,cAAgB,aAAe,CAC/B,cAAgB,UAAY,CAC5B,oBAAsB,eAAgB,CACtC,uBAAyB,UAAW,CAAE,wBAA2B,CAGjE,MAAQ,kBAAkC,CAC1C,wBAD6B,UACI,CACjC,uBAAyB,UAAY,CAAE,eAAkB,CACzD,wBAA2B,UAAc,CACzC,iBAAmB,UAAa,CAChC,UAAY,UAAc,CAE1B,0BAAgB,UAAW,CAC3B,aAAgB,UAAY,CAC5B,wCAA2C,UAAY,CACvD,sBAAwB,UAAY,CACpC,4BAA8B,eAAiB,CAC/C,aAAe,aAAc,CAC7B,aAAe,UAAY,CAC3B,mBAAqB,eAAgB,CACrC,sBAAwB,UAAW,CAAE,wBAA2B,CAKhE,sBAAwB,aAAe,CACvC,UAAY,kBAAkC,CAC9C,gCADiC,UACI,CACrC,2BAA6B,kBAAmB,CAAE,UAAa,CAC/D,4BAA+B,UAAc,CAC7C,qBAAuB,aAAgB,CACvC,cAAgB,UAAc,CAE9B,kCAAoB,aAAc,CAClC,iBAAoB,aAAe,CACnC,4CAA+C,aAAe,CAC9D,0BAA4B,aAAe,CAC3C,gCAAkC,kBAAoB,CACtD,iBAAmB,aAAa,CAChC,qCAAuC,eAAkB,CACzD,iBAAmB,UAAY,CAC/B,uBAAyB,kBAAmB,CAC5C,0BAA4B,aAAc,CAAE,wBAA2B,CAEvE,OACI,WAAY,CACZ,eAAgB,CAChB,cACJ,CAEA,aAAc,SAAU,CAGxB,yBAEI,wCAAoB,YAAc,CAClC,UAAW,YAAe,CAC9B,CAEA,kBAAmB,cAAc,CAAE,WAAW,CAAE,UAAW,CAQ3D,yBACI,iBAAmB,WAAc,CACjC,aAAe,oBAAqB,CAAE,gBAAiB,CAC3D,CAEA,yBAEI,iBAAmB,WAAc,CACrC,CC1IA,iBAAmB,eAAgB,CAAE,eAAiB,CAAE,qBAAsB,CAAE,YAAc,CCA9F,0BACI,qBAAsB,CACtB,gBACJ,CAEA,gBACI,kBACJ,CAEA,aACI,kBACJ,CAEA,mBACI,uBACJ,CAEA,oBACI,YACJ,CAEA,6BAA+B,eAAiB,CCrBhD,eAAgB,kBAAmB,CACnC,uBAAwB,eAAiB,CACzC,kBAAmB,UAAU,CAAE,iBAAmB,CAClD,mBAAoB,UAAW,CCH/B,iBAAmB,cAAiB,CACpC,2BAA6B,eAAiB,CAAE,yBAA2B","file":"main.41c170c8.chunk.css","sourcesContent":[".debug-indicators { position: absolute; top: 1em; left: 1em}\r\n.debug-indicators span {display: block;}","\r\n.top-links { position: absolute; right: 2em; top: 1em; list-style-type: none; margin: 0 }\r\n.top-links li { float: left; }\r\n.top-links a { display: inline-block; padding: 5px 10px}\r\n.top-links .icon { margin-right: 5px; vertical-align: middle; }","body { padding:0; margin:0; height: 100%; overflow: hidden; }\r\nhtml { height: 100% }\r\n\r\n.app-root { font-family: Verdana; font-size: 0.8em; margin: 0; padding: 20px 100px 0 100px; height: 100%; overflow: auto; }\r\ncode { font-size: 1.2em; font-weight: bold; }\r\n\r\n.header-cmd { color: #c5c5c5 }\r\n\r\n.mono { font-family: monospace; font-size: 1.3em }\r\n.expressionInput { width: 500px; padding: 3px; border: none; outline: none; }\r\n\r\n.result { margin: 10px 10px 30px; }\r\n.result .input { margin-bottom: 10px; }\r\n.result .content { padding-left: 10px}\r\n.result .cur { margin-right: 5px; }\r\n\r\n.hashLink { text-decoration: none; margin-left: 5px; visibility: hidden }\r\n.hashLink:hover { text-decoration: underline; margin-left: 5px; }\r\n.result:hover .hashLink { visibility: visible }\r\n\r\n.expression .label { font-weight: bold; padding-right: 5px; text-align: right; }\r\n.expression .bin { letter-spacing: 3px; }\r\n.expression .byte { margin: 0 3px; }\r\n.expression-result td { border-top: dotted 1px gray; }\r\n.expression { font-size: 1.5em; font-family: monospace }\r\n.expression .prefix { font-weight: normal; display: none; font-size: 0.9em }\r\n.expression .other { font-size: 0.9em}\r\n.expression .sign { text-align: right}\r\n\r\n.flipable { cursor: pointer; opacity: 1 }\r\n.flipable { cursor: pointer; opacity: 1 }\r\n.flipable:hover { opacity: 0.8 }\r\n\r\n.hex .prefix { display: inline; }\r\n\r\n.help { padding: 10px; }\r\n.help ul { list-style-type: none; margin: 0; padding: 0; }\r\n.help p { margin-top: 0 }\r\n\r\n.indicator { padding: 2px 5px; font-family: monospace; font-size: 1.3em; background: transparent; border: none; cursor: pointer }\r\n.error { color: maroon; }\r\n\r\n.soft { opacity: 0.7 }\r\n.small-text { font-size: 0.8em;}\r\n\r\n#view { padding: 10px}\r\n\r\n.cur { color: lightgray; }\r\n\r\n/* Light */\r\n.light { background: #fafafa; }\r\n.light a, .light a:visited { color: #222; }\r\n.light .one { color: black; }\r\n.light .zero { color: #888; }\r\n.light .indicator { color: #ddd; }\r\n.light .expressionInput { background: #ddd;}\r\n.light .on { color: #121212; }\r\n.light .prefix { color: #888}\r\n.light .other { color: #bbb }\r\n.light .hashLink, .light .hashLink:visited { color: #ddd }\r\n.light .hashLink:hover { color: #888 }\r\n.light ul.top-links li:hover { background: #ddd }\r\n.light .error { color: #da586d }\r\n.light button { color: black}\r\n.light button:hover { background: #ddd}\r\n.light button:disabled { color: #888; background-color: inherit; }\r\n\r\n/* Dark */\r\n.dark { background: #121212; color: white;}\r\n.dark .expression { color: white;}\r\n.dark .expressionInput { color: white; background: #555; }\r\n.dark a, .dark a:visited { color: white; }\r\n.dark .indicator { color: #555; }\r\n.dark .on { color: white; }\r\n.dark .zero { color: #999;}\r\n.dark .prefix { color: #999}\r\n.dark .other { color: #444;}\r\n.dark .hashLink, .dark .hashLink:visited { color: #333 }\r\n.dark .hashLink:hover { color: #999 }\r\n.dark ul.top-links li:hover { background: #333 }\r\n.dark .error { color: #da586d}\r\n.dark button { color: white}\r\n.dark button:hover { background: #333}\r\n.dark button:disabled { color: #999; background-color: inherit; }\r\n\r\n/*\r\n Midnight Theme\r\n*/\r\n.midnight .header-cmd { color: #85a0ad }\r\n.midnight { background: #2c3e50; color: white }\r\n.midnight .expression { color: white;}\r\n.midnight .expressionInput { background: #85a0ad; color: white;}\r\n.midnight a, .dark a:visited { color: white; }\r\n.midnight .indicator { color: #85a0ad; }\r\n.midnight .on { color: white; }\r\n.midnight .zero { color: #85a0ad;}\r\n.midnight .prefix { color: #85a0ad}\r\n.midnight .other { color: #9FBAC7;}\r\n.midnight .hashLink, .dark .hashLink:visited { color: #85a0ad }\r\n.midnight .hashLink:hover { color: #9FBAC7 }\r\n.midnight ul.top-links li:hover { background: #132537 }\r\n.midnight .error { color:#da586d}\r\n.midnight .changelog .item-new .date { font-weight: bold }\r\n.midnight button { color: white}\r\n.midnight button:hover { background: #132537}\r\n.midnight button:disabled { color: #85a0ad; background-color: inherit; }\r\n\r\nbutton { \r\n border: none;\r\n background: none;\r\n cursor: pointer;\r\n}\r\n\r\nbutton:focus {outline:0;}\r\n\r\n/* Top Links Shrink */\r\n@media (max-width: 800px) {\r\n .top-links .link-text { display: none }\r\n .debug-indicators { display: none;}\r\n .app-root {padding: 10px; }\r\n}\r\n\r\n.social-container{ position:fixed; bottom:20px; right:20px }\r\n\r\n/* Remove margin space on body. Inline top links with header */\r\n@media (max-width: 700px) {\r\n /*.expressionInput { width: 450px; } */\r\n}\r\n\r\n/* Further shrink */\r\n@media (max-width: 500px) {\r\n .expressionInput { width: 400px; }\r\n .top-links a { display: inline-block; padding: 5px 10px}\r\n}\r\n\r\n@media (max-width: 450px) {\r\n\r\n .expressionInput { width: 350px; }\r\n}",".ip-address-info { padding-top: 1em; font-size: 0.85em; vertical-align: middle; display: none;}",".subnet-view .description {\r\n vertical-align: middle;\r\n text-align: right;\r\n}\r\n\r\n.subnet-view td {\r\n padding-right: 15px;\r\n}\r\n\r\n.subnet-view {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.subnet-view .part {\r\n border-bottom: solid 1px;\r\n}\r\n\r\n.subnet-view button {\r\n margin:0 3px;\r\n}\r\n\r\n.subnet-view .ip-address-col { min-width: 8.5em;}",".help .section {margin-bottom:10px;}\r\n.help .panel-container {overflow: hidden;}\r\n.help .left-panel {float:left; margin-right: 20px;}\r\n.help .right-panel {float:left;}",".changelog .item { margin-top: 2em; }\r\n.changelog .item-new .date { font-weight: bold; text-decoration: underline;}"]} \ No newline at end of file diff --git a/static/css/main.5ddd6abf.chunk.css.map b/static/css/main.5ddd6abf.chunk.css.map deleted file mode 100644 index ce067da..0000000 --- a/static/css/main.5ddd6abf.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["DebugIndicators.css","TopLinks.css","index.css","IpAddressView.css","SubnetView.css","HelpResultView.css","WhatsNewResultView.css"],"names":[],"mappings":"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","file":"main.5ddd6abf.chunk.css","sourcesContent":[".debug-indicators { position: absolute; top: 1em; left: 1em}\r\n.debug-indicators span {display: block;}","\r\n.top-links { position: absolute; right: 2em; top: 1em; list-style-type: none; margin: 0 }\r\n.top-links li { float: left; }\r\n.top-links a { display: inline-block; padding: 5px 10px}\r\n.top-links .icon { margin-right: 5px; vertical-align: middle; }","body { padding:0; margin:0; height: 100%; overflow: hidden; }\r\nhtml { height: 100% }\r\n\r\n.app-root { font-family: Verdana; font-size: 0.8em; margin: 0; padding: 20px 100px 0 100px; height: 100%; overflow: auto; }\r\ncode { font-size: 1.2em; font-weight: bold; }\r\n\r\n.header-cmd { color: #c5c5c5 }\r\n\r\n.mono { font-family: monospace; font-size: 1.3em }\r\n.expressionInput { width: 500px; padding: 3px; border: none; outline: none; }\r\n\r\n.result { margin: 10px 10px 30px; }\r\n.result .input { margin-bottom: 10px; }\r\n.result .content { padding-left: 10px}\r\n.result .cur { margin-right: 5px; }\r\n\r\n.hashLink { text-decoration: none; margin-left: 5px; visibility: hidden }\r\n.hashLink:hover { text-decoration: underline; margin-left: 5px; }\r\n.result:hover .hashLink { visibility: visible }\r\n\r\n.expression .label { font-weight: bold; padding-right: 5px; text-align: right; }\r\n.expression .bin { letter-spacing: 3px; }\r\n.expression .byte { margin: 0 3px; }\r\n.expression-result td { border-top: dotted 1px gray; }\r\n.expression { font-size: 1.5em; font-family: monospace }\r\n.expression .prefix { font-weight: normal; display: none; font-size: 0.9em }\r\n.expression .other { font-size: 0.9em}\r\n.expression .sign { text-align: right}\r\n\r\n.flipable { cursor: pointer; opacity: 1 }\r\n.flipable { cursor: pointer; opacity: 1 }\r\n.flipable:hover { opacity: 0.8 }\r\n\r\n.hex .prefix { display: inline; }\r\n\r\n.help { padding: 10px; }\r\n.help ul { list-style-type: none; margin: 0; padding: 0; }\r\n.help p { margin-top: 0 }\r\n\r\n.indicator { padding: 2px 5px; font-family: monospace; font-size: 1.3em; background: transparent; border: none; cursor: pointer }\r\n.error { color: maroon; }\r\n\r\n.soft { opacity: 0.7 }\r\n.small-text { font-size: 0.8em;}\r\n\r\n#view { padding: 10px}\r\n\r\n.cur { color: lightgray; }\r\n\r\n/* Light */\r\n.light { background: #fafafa; }\r\n.light a, .light a:visited { color: #222; }\r\n.light .one { color: black; }\r\n.light .zero { color: #888; }\r\n.light .indicator { color: #ddd; }\r\n.light .expressionInput { background: #ddd;}\r\n.light .on { color: #121212; }\r\n.light .prefix { color: #888}\r\n.light .other { color: #bbb }\r\n.light .hashLink, .light .hashLink:visited { color: #ddd }\r\n.light .hashLink:hover { color: #888 }\r\n.light ul.top-links li:hover { background: #ddd }\r\n.light .error { color: #da586d }\r\n.light button { color: black}\r\n.light button:hover { background: #ddd}\r\n.light button:disabled { color: #888; background-color: inherit; }\r\n\r\n/* Dark */\r\n.dark { background: #121212; color: white;}\r\n.dark .expression { color: white;}\r\n.dark .expressionInput { color: white; background: #555; }\r\n.dark a, .dark a:visited { color: white; }\r\n.dark .indicator { color: #555; }\r\n.dark .on { color: white; }\r\n.dark .zero { color: #999;}\r\n.dark .prefix { color: #999}\r\n.dark .other { color: #444;}\r\n.dark .hashLink, .dark .hashLink:visited { color: #333 }\r\n.dark .hashLink:hover { color: #999 }\r\n.dark ul.top-links li:hover { background: #333 }\r\n.dark .error { color: #da586d}\r\n.dark button { color: white}\r\n.dark button:hover { background: #333}\r\n.dark button:disabled { color: #999; background-color: inherit; }\r\n\r\n/*\r\n Midnight Theme\r\n*/\r\n.midnight .header-cmd { color: #85a0ad }\r\n.midnight { background: #2c3e50; color: white }\r\n.midnight .expression { color: white;}\r\n.midnight .expressionInput { background: #85a0ad; color: white;}\r\n.midnight a, .dark a:visited { color: white; }\r\n.midnight .indicator { color: #85a0ad; }\r\n.midnight .on { color: white; }\r\n.midnight .zero { color: #85a0ad;}\r\n.midnight .prefix { color: #85a0ad}\r\n.midnight .other { color: #9FBAC7;}\r\n.midnight .hashLink, .dark .hashLink:visited { color: #85a0ad }\r\n.midnight .hashLink:hover { color: #9FBAC7 }\r\n.midnight ul.top-links li:hover { background: #132537 }\r\n.midnight .error { color:#da586d}\r\n.midnight .changelog .item-new .date { font-weight: bold }\r\n.midnight button { color: white}\r\n.midnight button:hover { background: #132537}\r\n.midnight button:disabled { color: #85a0ad; background-color: inherit; }\r\n\r\nbutton { \r\n border: none;\r\n background: none;\r\n cursor: pointer;\r\n}\r\n\r\nbutton:focus {outline:0;}\r\n\r\n/* Top Links Shrink */\r\n@media (max-width: 800px) {\r\n\r\n .top-links .link-text { display: none }\r\n}\r\n\r\n.social-container{ position:fixed; bottom:20px; right:20px }\r\n\r\n/* Remove margin space on body. Inline top links with header */\r\n@media (max-width: 700px) {\r\n body { padding: 10px; }\r\n .expressionInput { width: 500px; }\r\n}\r\n\r\n/* Further shrink */\r\n@media (max-width: 500px) {\r\n .expressionInput { width: 350px; }\r\n .top-links a { display: inline-block; padding: 5px 10px}\r\n}\r\n\r\n@media (max-width: 350px) {\r\n .expressionInput { width: 200px; }\r\n}",".ip-address-info { padding-top: 1em; font-size: 0.85em; vertical-align: middle; display: none;}",".subnet-view .description {\r\n vertical-align: middle;\r\n text-align: right;\r\n}\r\n\r\n.subnet-view td {\r\n padding-right: 15px;\r\n}\r\n\r\n.subnet-view {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.subnet-view .part {\r\n border-bottom: solid 1px;\r\n}\r\n\r\n.subnet-view button {\r\n margin:0 3px;\r\n}\r\n\r\n.subnet-view .ip-address-col { min-width: 8.5em;}",".help .section {margin-bottom:10px;}\r\n.help .panel-container {overflow: hidden;}\r\n.help .left-panel {float:left; margin-right: 20px;}\r\n.help .right-panel {float:left;}",".changelog .item { margin-top: 2em; }\r\n.changelog .item-new .date { font-weight: bold; text-decoration: underline;}"]} \ No newline at end of file diff --git a/static/js/main.80718380.chunk.js b/static/js/main.80718380.chunk.js deleted file mode 100644 index 4045aa9..0000000 --- a/static/js/main.80718380.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[,,,,,,,,function(e,t,n){"use strict";var a=n(1),i=n(2),r=[{regex:/^-?\d+$/,radix:10,base:"dec",prefix:"^$"},{regex:/^-?0x[0-9,a-f]+$/i,radix:16,base:"hex",prefix:/0x/i},{regex:/^-?0b[0-1]+$/i,radix:2,base:"bin",prefix:/0b/i}],s=new(function(){function e(t){Object(a.a)(this,e),this.parsers=void 0,this.parsers=t}return Object(i.a)(e,[{key:"parse",value:function(e){var t=this;return this.parsers.map(function(n){return t.applyParser(n,e)}).reduce(function(e,t){return e||t})}},{key:"parseOperator",value:function(e){var t=e.match(e);return null==t||0==t.length?null:t[0]}},{key:"applyParser",value:function(e,t){return e.regex.test(t)?{value:parseInt(t.replace(e.prefix,""),e.radix),base:e.base,input:t}:null}}]),e}())(r);n.d(t,"a",function(){return o});var l=1,o=function(){function e(t,n){Object(a.a)(this,e),this.id=void 0,this.value=void 0,this.base=void 0,this.lengthInBits=void 0,this.isExpression=void 0,this.id=l++,this.value=t,this.base=n||"dec",this.lengthInBits=e.getBitLength(this.value),this.isExpression=!1}return Object(i.a)(e,[{key:"getLengthInBits",value:function(){return this.value<0?32:Math.floor(Math.log(this.value)/Math.log(2))+1}},{key:"getOtherBase",value:function(e){switch(e||this.base){case"dec":case"bin":return"hex";case"hex":return"dec";default:throw new Error(e+" kind doesn't have opposite kind")}}},{key:"toString",value:function(t){return e.toBaseString(this.value,t||this.base)}},{key:"toOtherKindString",value:function(){return this.toString(this.getOtherBase())}},{key:"toDecimalString",value:function(){return this.toString("dec")}},{key:"toHexString",value:function(){return this.toString("hex")}},{key:"toBinaryString",value:function(){return this.toString("bin")}},{key:"setValue",value:function(t){this.value=t,this.lengthInBits=e.getBitLength(t)}},{key:"evaluate",value:function(){return this}},{key:"getUnderlyingOperand",value:function(){return this}}],[{key:"getBitLength",value:function(e){return Math.floor(Math.log(e)/Math.log(2))+1}},{key:"getBase",value:function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}}},{key:"create",value:function(t,n){return new e(t,n||"dec")}},{key:"parse",value:function(t){var n=s.parse(t);if(!n)throw new Error(t+" is not a valid number");return new e(n.value,n.base)}},{key:"toBaseString",value:function(e,t){switch(t){case"hex":var n=Math.abs(e).toString(16);return e>=0?"0x"+n:"-0x"+n;case"bin":return(e>>>0).toString(2);case"dec":return e.toString(10);default:throw new Error("Unexpected kind: "+t)}}},{key:"toHexString",value:function(e){return 0===e.indexOf("-")?"-0x"+e.substr(1):"0x"+e}}]),e}()},,function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",function(){return ExpressionOperand});var D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1),D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2),_NumericOperand__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(8),ExpressionOperand=function(){function ExpressionOperand(e,t,n){Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.a)(this,ExpressionOperand),this.expressionString=void 0,this.operand=void 0,this.sign=void 0,this.isExpression=void 0,this.isShiftExpression=void 0,this.isNotExpression=void 0,this.expressionString=e,this.operand=t,this.sign=n,this.isExpression=!0,this.isShiftExpression=this.sign.indexOf("<")>=0||this.sign.indexOf(">")>=0,this.isNotExpression="~"===this.sign}return Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__.a)(ExpressionOperand,[{key:"evaluate",value:function evaluate(operand){if(operand instanceof ExpressionOperand)throw new Error("value shouldnt be expression");var evaluatedOperand=this.operand.evaluate(),str="";if("~"==this.sign)str="~"+evaluatedOperand.value;else{if(null==operand)throw new Error("Other is required for expression: "+this.expressionString);str=operand.value+this.sign+evaluatedOperand.value}return _NumericOperand__WEBPACK_IMPORTED_MODULE_2__.a.create(eval(str),evaluatedOperand.base)}},{key:"getUnderlyingOperand",value:function(){return this.operand.getUnderlyingOperand()}},{key:"toString",value:function(){return this.sign+this.operand.toString()}}]),ExpressionOperand}()},,,,,,,,,,,function(e,t,n){e.exports=n(40)},,function(e,t,n){},,,,,,function(e,t,n){},,,,function(e,t,n){},function(e,t,n){},function(e,t,n){},,,function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var a=n(1),i=n(2),r=function(e){return"object"==typeof e&&!(e instanceof Array)&&e instanceof Object},s=function(e){return"function"==typeof e},l=function(e){return"string"==typeof e},o=n(4),u=n.n(o),c={doNotTrack:!1},d=new(function(){function e(){Object(a.a)(this,e),this.debugMode=void 0,this.handlers=void 0,this.errorHandler=void 0,this.handlers=[],this.debugMode=!1,this.errorHandler=null}return Object(i.a)(e,[{key:"execute",value:function(e,t){u.a.debug("Executing command: ".concat(e)),t=t||Object.assign({},c);var n=e.trim().toLowerCase(),a=this.findHandler(n);if(null!=a)if(this.debugMode)this.invokeHandler(n,a,t);else try{this.invokeHandler(n,a,t)}catch(i){this.handleError(n,i)}else u.a.debug("Handled is not found for command: ".concat(e)),this.handleError(n,new Error("Unsupported expression: "+n.trim()))}},{key:"onError",value:function(e){this.errorHandler=e}},{key:"command",value:function(e,t){var n=this.createHandler(e,t);null!=n?s(n.canHandle)?s(n.handle)?this.handlers.push(n):console.warn('handler is missing "handle" function. registration denied.'):console.warn('handler is missing "canHandle" function. registration denied.'):console.warn("unexpected set of arguments: ",JSON.stringify(arguments))}},{key:"createHandler",value:function(e,t){return r(e)?e:l(e)?{canHandle:function(t){return t===e},handle:t}:null}},{key:"findHandler",value:function(e){return this.handlers.filter(function(t){return t.canHandle(e)})[0]}},{key:"invokeHandler",value:function(e,t,n){var a=t.handle({input:e,options:n});null!=a&&u.a.debug(a)}},{key:"handleError",value:function(e,t){this.debugMode&&console.error(e,t),null!=this.errorHandler&&this.errorHandler(e,t)}}]),e}()),m=n(6),p=n(5),h=n(7),f=n(0),g=n.n(f),v=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(m.a)(this,Object(p.a)(t).call(this,e))).history=void 0,n.historyIndex=void 0,n.nameInput=void 0,n.nameInput=null,n.history=[],n.historyIndex=-1,n}return Object(h.a)(t,e),Object(i.a)(t,[{key:"componentDidMount",value:function(){null!=this.nameInput&&this.nameInput.focus()}},{key:"render",value:function(){var e=this;return g.a.createElement("input",{id:"in",type:"text",ref:function(t){e.nameInput=t},onKeyUp:function(t){return e.onKeyUp(t)},onKeyDown:function(t){return e.onKeyDown(t)},className:"expressionInput mono",placeholder:"type expression like '1>>2' or 'help' ",autoComplete:"off"})}},{key:"onKeyUp",value:function(e){var t=e.target;if(13==e.keyCode&&0!=t.value.trim().length){var n=t.value;this.history.unshift(n),this.historyIndex=-1,t.value="",this.props.onCommandEntered(n)}}},{key:"onKeyDown",value:function(e){if(38==e.keyCode){var t=this.historyIndex+1;return this.history.length>t&&(e.target.value=this.history[t],this.historyIndex=t),void e.preventDefault()}40==e.keyCode&&(this.historyIndex>0&&(e.target.value=this.history[--this.historyIndex]),e.preventDefault())}}]),t}(g.a.Component),b=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(h.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){return g.a.createElement("div",{className:"result"},g.a.createElement("div",{className:"input mono"},g.a.createElement("span",{className:"cur"},">"),this.props.input,g.a.createElement("a",{className:"hashLink",title:"Link for this expression",href:window.location.pathname+"#"+this.props.inputHash},"#")),g.a.createElement("div",{className:"content"},this.props.children))}}]),t}(g.a.Component);n(23);var E=function(e){var t=[],n=e.appState;return"prod"!=e.appState.env&&t.push(n.env),e.appState.debugMode&&t.push("debug"),"false"===localStorage.getItem("TrackAnalytics")&&t.push("notrack"),0==t.length?null:g.a.createElement("div",{className:"debug-indicators"},t.map(function(e){return g.a.createElement("span",{title:e},"[",e.substring(0,1),"]\xa0")}))},y={encodeHash:function(e){return encodeURIComponent(e.trim().replace(/\s/g,","))},decodeHash:function(e){return decodeURIComponent(e.replace(/^\#/,"")).replace(/,/g," ")},getArgs:function(e){var t,n=this.decodeHash(e),a=[];return(t=n,t.split("||").filter(function(e){return e.length>0})).forEach(function(e){a.push(e)}),a}};var k=n(9),B=n(13),x=n(14);n(29);var w=function(e){var t=e.icon,n=e.command,a=e.text,i=function(){return d.execute(n||a)};return null!=t?g.a.createElement("a",{href:"javascript:void(0)",onClick:i},g.a.createElement(k.a,{icon:t,className:"icon"}),a):g.a.createElement("a",{href:"javascript:void(0)",onClick:i},a)};var O=function(){return g.a.createElement("ul",{className:"top-links"},g.a.createElement("li",null,g.a.createElement(w,{text:"donate",icon:B.a})),g.a.createElement("li",null,g.a.createElement("a",{href:"https://github.com/BorisLevitskiy/BitwiseCmd"},g.a.createElement(k.a,{className:"icon",icon:x.a,size:"lg"}),"github")),g.a.createElement("li",null,g.a.createElement("a",{href:"https://twitter.com/BitwiseCmd"},g.a.createElement(k.a,{className:"icon",icon:x.b,size:"lg"}),g.a.createElement("span",{className:"link-text"},"twitter"))),g.a.createElement("li",null,g.a.createElement("a",{href:"mailto:bitwisecmd@gmail.com?subject=Feedback"},g.a.createElement(k.a,{className:"icon",icon:B.b,size:"lg"}),g.a.createElement("span",{className:"link-text"},"idea or feedback"))))},S=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(h.a)(t,e),Object(i.a)(t,[{key:"componentWillMount",value:function(){var e=this;this.refresh(),this.props.appState.onChange(function(){return e.refresh()})}},{key:"refresh",value:function(){this.setState(this.props.appState)}},{key:"getIndicator",value:function(e){return e?"on":"off"}},{key:"getResultViews",value:function(){var e=this;return this.state.commandResults.map(function(t,n){return g.a.createElement(b,{key:t.key,input:t.input,inputHash:y.encodeHash(t.input),appState:e.props.appState},t.view)})}},{key:"toggleEmphasizeBytes",value:function(){this.props.appState.toggleEmphasizeBytes()}},{key:"render",value:function(){var e=this;return g.a.createElement("div",{className:"app-root ".concat(this.state.uiTheme)},g.a.createElement(E,{appState:this.props.appState}),g.a.createElement("div",{className:"header"},g.a.createElement("h1",null,"Bitwise",g.a.createElement("span",{className:"header-cmd"},"Cmd")),g.a.createElement(O,null)),g.a.createElement("div",{className:"expressionInput-container"},g.a.createElement(v,{onCommandEntered:function(e){return d.execute(e)}}),g.a.createElement("span",{className:"configPnl"},g.a.createElement("span",{id:"emphasizeBytes","data-cmd":"em",className:"indicator "+this.getIndicator(this.state.emphasizeBytes),title:"Toggle Emphasize Bytes",onClick:function(){return e.toggleEmphasizeBytes()}},"[em]"))),g.a.createElement("div",{id:"output"},this.getResultViews()))}}]),t}(g.a.Component),_=n(18),N=n.n(_);n(33);var C=function(e){return g.a.createElement("div",{className:"result"},g.a.createElement("div",{className:"error"},e.errorMessage))},I={formatString:function(e,t){return e.toString(function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}throw new Error("Unsupported kind: "+e)}(t||"bin"))},padLeft:function(e,t,n){var a=Array.prototype.slice.call(e);n=n||"0";if(null==t)return e;for(;t>a.length;)a.unshift(n);return a.join("")},bin:function(e){return this.formatString(e,"bin")},emBin:function(e){return this.padLeft(this.bin(e),8,"0")}};var j=I,M=I.emBin,R=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(h.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){return g.a.createElement("span",{className:this.props.className},this.getChildren())}},{key:"onBitClick",value:function(e,t){if(this.props.allowFlipBits&&this.props.onFlipBit){this.props.onFlipBit;var n=this.props.binaryString.split("");n[e]="0"==n[e]?"1":"0";var a=n.join("");this.props.onFlipBit({index:e,binaryString:this.props.binaryString,$event:t,newBinaryString:a})}}},{key:"getChildren",value:function(){var e=this.createBits(this.props.binaryString.split(""));return this.props.emphasizeBytes?this.splitIntoBytes(e):e}},{key:"createBits",value:function(e){var t=this,n=this.props.allowFlipBits||!1?" flipable":"";return e.map(function(e,a){var i="1"==e?"one".concat(n):"zero".concat(n);return g.a.createElement("span",{className:i,key:a,onClick:function(e){return t.onBitClick(a,e)}},e)})}},{key:"splitIntoBytes",value:function(e){for(var t=[],n=0;e.length>0;)t.push(g.a.createElement("span",{key:n++,className:"byte"},e.splice(0,8)));return t}}]),t}(g.a.Component);n(34);var z=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(h.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){var e=this;return g.a.createElement("table",{className:"expression"},g.a.createElement("tbody",null,this.props.ipAddresses.map(function(t,n){return g.a.createElement("tr",{key:n},g.a.createElement("td",{className:"label"},g.a.createElement("strong",null,t.toString())),g.a.createElement("td",{className:"bin"},e.bin(t.firstByte,1,t),g.a.createElement("span",{className:"soft"},"."),e.bin(t.secondByte,2,t),g.a.createElement("span",{className:"soft"},"."),e.bin(t.thirdByte,3,t),g.a.createElement("span",{className:"soft"},"."),e.bin(t.fourthByte,4,t)))})))}},{key:"bin",value:function(e,t,n){var a,i=this;return g.a.createElement(R,{binaryString:(a=e,j.padLeft(j.formatString(a,"bin"),8,"0")),key:t,emphasizeBytes:!1,allowFlipBits:!0,className:"octet-".concat(t),onFlipBit:function(e){return i.onFlippedBit(e.newBinaryString,t,n)}})}},{key:"onFlippedBit",value:function(e,t,n){n.setOctet(t,parseInt(e,2)),this.forceUpdate()}}]),t}(g.a.Component),D=function(){function e(t,n){Object(a.a)(this,e),this.maskBits=void 0,this.ipAddress=void 0,this.ipAddress=t,this.maskBits=n}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.ipAddress.toString(),"/").concat(this.maskBits)}}]),e}(),A=function(){function e(t,n,i,r){Object(a.a)(this,e),this.firstByte=void 0,this.secondByte=void 0,this.thirdByte=void 0,this.fourthByte=void 0,this.firstByte=t,this.secondByte=n,this.thirdByte=i,this.fourthByte=r}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.firstByte,".").concat(this.secondByte,".").concat(this.thirdByte,".").concat(this.fourthByte)}},{key:"toBinaryString",value:function(){return"".concat(M(this.firstByte),").").concat(M(this.secondByte),".").concat(M(this.thirdByte),".").concat(M(this.fourthByte))}},{key:"clone",value:function(){return new e(this.firstByte,this.secondByte,this.thirdByte,this.fourthByte)}},{key:"setOctet",value:function(e,t){switch(e){case 1:this.firstByte=t;break;case 2:this.secondByte=t;break;case 3:this.thirdByte=t;break;case 4:this.fourthByte=t}}}]),e}(),L=function(){function e(t){Object(a.a)(this,e),this.input=void 0,this.input=t}return Object(i.a)(e,[{key:"getAdressSpaceSize",value:function(){var e=32-this.input.maskBits;return Math.pow(2,e)-2}},{key:"toString",value:function(){return this.input.toString()}}]),e}(),F={parse:function(e){var t=this,n=this.parseCommand(e),a=this.getMaches(n.nextInput),i=a.filter(function(e){return null!=e.matches}),r=a.filter(function(e){return null==e.matches});if(0==i.length)return null;if(r.length>0)return new H("Value(s) ".concat(r.map(function(e){return e.input}).join(",")," was not recognized as valid ip address or ip address with a subnet mask"));var s=a.map(function(e){return t.parseSingle(e.matches,e.input)}),l=s.filter(function(e){return e instanceof H});if(l.length>0)return l[0];if(null!=n.command){var o=this.createSubnetDefinition(s);return o}return s},parseCommand:function(e){return e.startsWith("subnet")?{command:"subnet",nextInput:e.substring("subnet".length)}:{command:null,nextInput:e}},getMaches:function(e){return e.replace(/[\t\s]+/g," ").split(" ").filter(function(e){return e.length>0}).map(function(e){var t=/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})(\/\d+)?$/.exec(e);return null==t||0===t.length?{matches:null,input:e}:{matches:t,input:e}})},parseSingle:function(e,t){var n=function(e){return e<0||e>255},a=parseInt(e[1]),i=parseInt(e[2]),r=parseInt(e[3]),s=parseInt(e[4]);if(n(a)||n(i)||n(r)||n(s))return new H("".concat(t," doesn't represent a valid IP address space"));var l=new A(a,i,r,s);if(e[5]){var o=e[5].substr(1),u=parseInt(o);return u>32?new H("Subnet mask value in ".concat(t," is out of range")):new D(l,u)}return l},createSubnetDefinition:function(e){if(1!=e.length)return new H("Incorrect network definition");var t=e[0];return t instanceof D?new L(t):new H("Network definition requires subnet mask")}},H=function e(t){Object(a.a)(this,e),this.errorMessage=void 0,this.errorMessage=t},P=F,T=n(20);n(35);function U(e,t){return 0==t?e:e&Math.pow(2,8-t)-1<=t?e:t},0)}return Object(i.a)(e,[{key:"toString",value:function(){return this.numbers.map(function(e){return e.value.toString()}).join(" ")}}]),e}(),ae=function e(t,n){Object(a.a)(this,e),this.expressionString=void 0,this.expressionItems=void 0,this.expressionString=t,this.expressionItems=n},ie=function(){function e(){Object(a.a)(this,e),this.factories=void 0,this.factories=[]}return Object(i.a)(e,[{key:"canParse",value:function(e){for(var t=e.replace(/^\s+|\s+$/,""),n=this.factories.length-1;n>=0;n--)if(!0===this.factories[n].canCreate(t))return!0;return!1}},{key:"parse",value:function(e){for(var t,n=e.replace(/^\s+|\s+$/,""),a=0,i=this.factories.length;a0&&n.push(ee.a.parse(e.trim()))}),new ne(e,n)}}]),e}(),se=function(){function e(){Object(a.a)(this,e),this.fullRegex=void 0,this.regex=void 0,this.fullRegex=/^((<<|>>|>>>|\||\&|\^)?(~?-?([b,x,a-f,0-9]+)))+$/,this.regex=/(<<|>>|>>>|\||\&|\^)?(~?-?(?:[b,x,a-f,0-9]+))/g}return Object(i.a)(e,[{key:"canCreate",value:function(e){return this.fullRegex.lastIndex=0,this.fullRegex.test(this.normalizeString(e))}},{key:"create",value:function(e){for(var t,n=[],a=this.normalizeString(e);null!=(t=this.regex.exec(a));)n.push(this.parseMatch(t));return new ae(a,n)}},{key:"parseMatch",value:function(e){var t=e[0],n=e[1],a=e[2],i=null;return i=0==a.indexOf("~")?new te.a(a,ee.a.parse(a.substring(1)),"~"):ee.a.parse(a),null==n?i:new te.a(t,i,n)}},{key:"normalizeString",value:function(e){return e.replace(/\s+/g,"")}}]),e}(),le=new ie;le.addFactory(new re),le.addFactory(new se);var oe=function(){function e(t){var n=t.emphasizeBytes,i=void 0!==n&&n,r=t.allowFlipBits,s=void 0!==r&&r;Object(a.a)(this,e),this.emphasizeBytes=void 0,this.items=void 0,this.maxNumberOfBits=void 0,this.allowFlipBits=void 0,this.emphasizeBytes=i,this.items=[],this.maxNumberOfBits=0,this.allowFlipBits=!0===s}return Object(i.a)(e,[{key:"addOperandRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"",css:"",expressionItem:e,allowFlipBits:this.allowFlipBits,label:""})}},{key:"addExpressionOperandRow",value:function(e){var t=e.isNotExpression?e.evaluate():e.getUnderlyingOperand();this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign,css:"",label:this.getLabel(t),expressionItem:e.operand,allowFlipBits:this.allowFlipBits})}},{key:"addShiftExpressionResultRow",value:function(e,t){this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign+e.operand.toString(),css:"expression-result",expressionItem:t,allowFlipBits:!1,label:""})}},{key:"addExpressionResultRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"=",css:"expression-result",expressionItem:e,allowFlipBits:!1,label:""})}},{key:"getLabel",value:function(e){return"bin"==e.base?e.toString("dec"):e.toString()}}],[{key:"buildListOfNumbers",value:function(t,n){var a=new e(n);return t.numbers.forEach(function(e){return a.addOperandRow(e)}),a.maxNumberOfBits=e.getNumberOfBits(a.maxNumberOfBits,a.emphasizeBytes),a}},{key:"buildMultiple",value:function(t,n){t.expressionItems[0];for(var a,i=0,r=t.expressionItems.length,s=new e(n),l=null;i>")," \u2014 sign propagating right shift"),g.a.createElement("li",null,g.a.createElement("code",null,">>>")," \u2014 zero-fill right shift"))),g.a.createElement("div",{className:"section"},g.a.createElement("strong",{className:"section-title soft"},"Tip"),g.a.createElement("p",null,"You can click on bits to flip them in number inputs (e.g. ",g.a.createElement(w,{text:"2 4"}),") or IP addresses (e.g. ",g.a.createElement(w,{text:"192.168.0.0/8"}),")")))))};var ge=function(e){return g.a.createElement("p",null,e.text)};n(39);var ve=function(){return g.a.createElement("div",{className:"changelog"},g.a.createElement("h3",null,"Changelog"),g.a.createElement("div",{className:"item item-new"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft date"},"Jun 16th, 2021")," ",g.a.createElement("br",null),"Added support of ",g.a.createElement("code",null,"subnet")," command to display information about subnet ip adress such. Try it out: ",g.a.createElement(w,{text:"subnet 192.168.24.1/14"}))),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft date"},"Jun 14th, 2021")," ",g.a.createElement("br",null),"Added support of ip addresses and subnet masks notatioans. Try them out:"),g.a.createElement("ul",null,g.a.createElement("li",null,"Single IP address ",g.a.createElement(w,{text:"127.0.0.1"})),g.a.createElement("li",null,"Multiple IP addresses and subnet mask notations ",g.a.createElement(w,{text:"127.0.0.1 192.168.0.0/24"})))),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft date"},"Jun 6th, 2017")," ",g.a.createElement("br",null),"Added ",g.a.createElement("code",null,g.a.createElement(w,{text:"guid"}))," command. Use it for generating v4 GUIDs ")),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft date"},"May 27th, 2017")," ",g.a.createElement("br",null),"Added support of binary number notation (e.g. ",g.a.createElement("code",null,g.a.createElement(w,{text:"0b10101"})),"). ")),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft"},"May 20th, 2017")," ",g.a.createElement("br",null),"New ",g.a.createElement(w,{text:"Midnight"})," theme added. ")),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft"},"May 16th, 2017")," ",g.a.createElement("br",null),"Complete rewrite using React. Old implementation is available at ",g.a.createElement("a",{href:"http://bitwisecmd.com/old"},"http://bitwisecmd.com/old"),". Please let me know if you have problems with this release by ",g.a.createElement("a",{href:"https://github.com/BorysLevytskyi/BitwiseCmd/issues"},"creating issue")," in Github Repo.")))},be=6,Ee=function(){function e(t,n){Object(a.a)(this,e),this.version=be,this.emphasizeBytes=void 0,this.debugMode=!1,this.uiTheme=void 0,this.changeHandlers=void 0,this.commandResults=void 0,this.persistedVersion=void 0,this.wasOldVersion=void 0,this.env=void 0,this.pageVisitsCount=void 0,this.donationClicked=void 0,this.commandResults=[],this.changeHandlers=[],this.uiTheme=t.uiTheme||"midnight",this.env=n,this.emphasizeBytes=t.emphasizeBytes||!0,this.persistedVersion=t.version||.1,this.wasOldVersion=null!=t.version&&this.version>this.persistedVersion,this.debugMode="prod"!==n||!0===t.debugMode,this.pageVisitsCount=t.pageVisistsCount||0,this.donationClicked=t.donationClicked}return Object(i.a)(e,[{key:"addCommandResult",value:function(e,t){var n=Math.ceil(1e7*Math.random())^Date.now();this.commandResults.unshift({key:n,input:e,view:t}),u.a.debug("command result added: ".concat(e)),this.triggerChanged()}},{key:"clearCommandResults",value:function(){this.commandResults=[],this.triggerChanged()}},{key:"toggleEmphasizeBytes",value:function(){this.emphasizeBytes=!this.emphasizeBytes,this.triggerChanged()}},{key:"onChange",value:function(e){this.changeHandlers.push(e)}},{key:"triggerChanged",value:function(){var e=this;this.changeHandlers.forEach(function(t){return t(e)})}},{key:"setUiTheme",value:function(e){this.uiTheme=e,this.triggerChanged()}},{key:"toggleDebugMode",value:function(){this.debugMode=!this.debugMode,this.triggerChanged()}},{key:"registerVisit",value:function(){this.pageVisitsCount++,this.triggerChanged()}},{key:"onDonationClicked",value:function(){return!0!==this.donationClicked&&(this.donationClicked=!0,this.triggerChanged(),!0)}},{key:"getPersistData",value:function(){return{emphasizeBytes:this.emphasizeBytes,uiTheme:this.uiTheme,version:this.version,debugMode:this.debugMode,pageVisistsCount:this.pageVisitsCount,donationClicked:this.donationClicked}}}]),e}();var ye={getPersistedData:function(){var e=window.localStorage.getItem("AppState");if(!e)return{};try{return JSON.parse(e)}catch(t){return console.error("Failed to parse AppState json. Json Value: \n"+e,t),{}}},watch:function(e){var t=this;e.onChange(function(){return t.persistData(e)})},persistData:function(e){localStorage.setItem("AppState",JSON.stringify(e.getPersistData()))}},ke="StartupCommand",Be=["help","127.0.0.1 192.168.0.0/8","1|2&6","4 0b1000000 0x80"];var xe={setup:function(e,t){t.debugMode=e.debugMode,e.onChange(function(){return t.debugMode=e.debugMode}),t.command("help",function(t){return e.addCommandResult(t.input,g.a.createElement(fe,null))}),t.command("clear",function(){return e.clearCommandResults()}),t.command("em",function(){return e.toggleEmphasizeBytes()}),t.command("dark",function(){return e.setUiTheme("dark")}),t.command("light",function(){return e.setUiTheme("light")}),t.command("midnight",function(){return e.setUiTheme("midnight")}),t.command("about",function(t){return e.addCommandResult(t.input,g.a.createElement(he,null))}),t.command("whatsnew",function(t){return e.addCommandResult(t.input,g.a.createElement(ve,null))}),t.command("guid",function(t){return e.addCommandResult(t.input,g.a.createElement(ge,{text:pe()()}))}),t.command("-notrack",function(){}),t.command("-debug",function(t){e.toggleDebugMode(),e.addCommandResult(t.input,g.a.createElement(ge,{text:"Debug Mode: ".concat(e.debugMode)}))}),t.command("donate",function(t){e.onDonationClicked()?X({eventCategory:"DonationButton",eventAction:"Clicked"}):X({eventCategory:"DonationButton",eventAction:"ClickedAgain"}),e.addCommandResult(t.input,g.a.createElement(ge,{text:"Thank you for your interest in donation. This feature is under constraction. I'll let you know when it will be done."}))}),t.command("track",function(e){X({eventCategory:"General",eventAction:"AnalyticsTest"})}),"prod"!==e.env&&t.command({canHandle:function(e){return 0===e.indexOf("default")},handle:function(t){var n,a=t.input.substring(7).trim(),i=(n=a,console.log(n),0===n.length?"Default comand: "+localStorage.getItem(ke):"clear"===n?(localStorage.removeItem(ke),"Default startup command cleared"):(localStorage.setItem(ke,n),"Default startup command saved: ".concat(n)));e.addCommandResult(t.input,g.a.createElement(ge,{text:i}))}}),t.onError(function(t,n){return e.addCommandResult(t,g.a.createElement(C,{errorMessage:n.toString()}))})}};var we=function(e){return g.a.createElement("div",{className:"result"},g.a.createElement("div",{className:"error"},"\xaf\\_(\u30c4)_/\xaf Sorry, i don\u2032t know what ",g.a.createElement("strong",null,e.input)," is"))},Oe=function(){var e="bitwisecmd.com"===window.location.host?"prod":"stage";!function(e){"prod"!=e?(u.a.setLevel("debug"),u.a.debug("Log level is set to debug. Env: ".concat(e))):u.a.setLevel("warn")}(e);var t=function(e){var t=ye.getPersistedData(),n=new Ee(t,e);return ye.watch(n),u.a.debug("appState initialized",n),n}(e);return{appState:t,startupCommands:function(e){var t=y.getArgs(window.location.hash),n=function(){var e=localStorage.getItem(ke);return null!=e?[e]:[]}();return 0==n.length&&(n=Be),e.wasOldVersion&&(n=["whatsnew"]),t.length>0&&(n=t),u.a.debug("Executing startup commands",n),n}(t)}}();xe.setup(Oe.appState,d),Z.setup(Oe.appState,d),de.setup(Oe.appState,d),d.command({canHandle:function(){return!0},handle:function(e){return Oe.appState.addCommandResult(e.input,g.a.createElement(we,{input:e.input}))}});var Se=g.a.createElement(S,{appState:Oe.appState});N.a.render(Se,document.getElementById("root")),u.a.debug("Executing startup commands",Oe.startupCommands),Oe.startupCommands.forEach(function(e){return d.execute(e,{doNotTrack:!0})}),Oe.appState.registerVisit(),u.a.debug("started")}],[[21,1,2]]]); -//# sourceMappingURL=main.80718380.chunk.js.map \ No newline at end of file diff --git a/static/js/main.80718380.chunk.js.map b/static/js/main.80718380.chunk.js.map deleted file mode 100644 index 5b7d88d..0000000 --- a/static/js/main.80718380.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["expression/numberParser.ts","expression/NumericOperand.ts","expression/ExpressionOperand.ts","core/is.ts","shell/cmd.ts","shell/components/InputBox.tsx","shell/components/DisplayResultView.tsx","shell/components/DebugIndicators.tsx","core/hash.ts","core/components/CommandLink.tsx","shell/components/TopLinks.tsx","shell/components/AppRoot.tsx","shell/components/ErrorResultView.tsx","core/formatter.ts","core/components/BinaryString.tsx","networking/components/IpAddressView.tsx","networking/models.ts","networking/ip-parser.ts","core/byte.ts","networking/subnet-utils.tsx","networking/components/IpAddressBinaryString.tsx","networking/components/SubnetView.tsx","shell/analytics.ts","networking/module.tsx","expression/ListOfNumbersExpression.ts","expression/BitwiseOperationExpression.ts","expression/expression.ts","expression/components/BitwiseExpressionModel.ts","expression/components/BitwiseOperationExpressionView.tsx","expression/module.tsx","shell/components/AboutResultView.tsx","shell/components/HelpResultView.tsx","shell/components/TextResultView.tsx","shell/components/WhatsNewResultView.tsx","shell/AppState.ts","shell/appStateStore.ts","shell/startup.ts","shell/module.tsx","shell/components/UnknownInputResultView.tsx","index.tsx"],"names":["knownParsers","regex","radix","base","prefix","numberParser","NumberParser","parsers","Object","classCallCheck","this","input","_this","map","p","applyParser","reduce","c","n","m","match","length","parser","rawInput","test","value","parseInt","replace","globalId","NumericOperand","id","lengthInBits","isExpression","getBitLength","Math","floor","log","kind","Error","toBaseString","toString","getOtherBase","num","parsed","parse","hexVal","abs","hex","indexOf","substr","ExpressionOperand","expressionString","operand","sign","D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","isShiftExpression","isNotExpression","evaluatedOperand","evaluate","str","create","eval","getUnderlyingOperand","is","obj","Array","DEFUALT_COMMAND_OPTIONS","doNotTrack","shell_cmd","CmdShell","debugMode","handlers","errorHandler","createClass","key","ops","debug","concat","assign","trim","toLowerCase","handler","findHandler","invokeHandler","e","handleError","h","cmd","createHandler","canHandle","handle","push","console","warn","JSON","stringify","arguments","filter","options","cmdResult","err","error","InputBox","props","possibleConstructorReturn","getPrototypeOf","call","history","historyIndex","nameInput","focus","_this2","react_default","a","createElement","type","ref","onKeyUp","onKeyDown","className","placeholder","autoComplete","target","keyCode","commandInput","unshift","onCommandEntered","args","newIndex","preventDefault","React","Component","DisplayResultView","title","href","window","location","pathname","inputHash","children","DebugIndicators","list","state","appState","env","localStorage","getItem","i","substring","hash","encodeHash","encodeURIComponent","decodeHash","hashValue","decodeURIComponent","getArgs","decodedHash","split","s","forEach","CommandLink","_ref","icon","command","text","onClick","execute","index_es","TopLinks","components_CommandLink","faDonate","faGithub","size","faTwitter","faEnvelope","AppRoot","refresh","onChange","setState","commandResults","r","DisplayResultView_DisplayResultView","view","toggleEmphasizeBytes","_this3","uiTheme","components_DebugIndicators","components_TopLinks","InputBox_InputBox","data-cmd","getIndicator","emphasizeBytes","getResultViews","ErrorResultView","errorMessage","formatter","formatString","getBase","padLeft","symbol","sb","prototype","slice","join","bin","number","emBin","BinaryStringView","getChildren","index","allowFlipBits","onFlipBit","arr","binaryString","newBinaryString","$event","bits","createBits","splitIntoBytes","bitChars","css","onBitClick","bytes","splice","IpAddressView","_React$Component","apply","inherits","ipAddresses","ip","firstByte","secondByte","thirdByte","fourthByte","octetNumber","BinaryString_BinaryStringView","onFlippedBit","setOctet","forceUpdate","IpAddressWithSubnetMask","ipAddress","maskBits","IpAddress","octet","SubnetCommand","definition","spaceLengthInBits","pow","ipAddressParser","result","parseCommand","matches","getMaches","nextInput","correctInputs","incorrectInputs","ParsingError","v","parsedObjects","parseSingle","parsingErrors","createSubnetDefinition","startsWith","exec","invalid","first","second","third","fourth","maskPart","items","message","flipBitsToZero","byte","numberOfBits","flipBitsToOne","createSubnetMaskByte","createSubnetMaskIp","ipm","mask","getBroadCastAddress","flipSubnetMaskBits","flipper","fullByte","flip","IpAddressBinaryString","Fragment","SubnetRow","descr","data-test-name","components_IpAddressBinaryString","SubnetView","_useState","useState","subnet","_useState2","slicedToArray","setSubnet","getAdressSpaceSize","newInput","disabled","sendAnalyticsEvent","evt","bitwiseCmdAnalyticsHandler","delivered","trackCommand","action","eventCategory","eventAction","networkingAppModule","setup","addCommandResult","components_ErrorResultView","components_SubnetView","networking_components_IpAddressView","ListOfNumbersExpression","numbers","maxBitsLength","BitwiseOperationExpression","expressions","expressionItems","ExpressionParser","factories","trimmed","canCreate","factory","l","ListOfNumbersExpressionFactory","BitwiseOperationExpressionFactory","fullRegex","lastIndex","normalizeString","operands","normalizedString","parseMatch","addFactory","BitwiseExpressionViewModel","_ref$emphasizeBytes","_ref$allowFlipBits","maxNumberOfBits","max","getLengthInBits","expressionItem","label","expression","resultNumber","getLabel","resultOperand","op","expr","config","model","addOperandRow","getNumberOfBits","ex","len","prev","eo","addExpressionOperandRow","notResult","addExpressionResultRow","addShiftExpressionResultRow","buildListOfNumbers","buildMultiple","BitwiseOperationExpressionView","rows","getRows","createModel","itm","BitwiseOperationExpressionView_ExpressionRow","onBitFlipped","ExpressionRow","_this4","_this$props","getBinaryString","flipBit","getOther","toBinaryString","getLabelString","toOtherKindString","newValue","setValue","expressionAppModule","canParse","BitwiseOperationExpressionView_BitwiseOperationExpressionView","AboutResultView","data-result-type","HelpResultView","TextResultView","WhatsnewResultView","APP_VERSION","AppState","persistData","version","changeHandlers","persistedVersion","wasOldVersion","pageVisitsCount","donationClicked","pageVisistsCount","ceil","random","Date","now","triggerChanged","theme","appStateStore","getPersistedData","json","watch","setItem","getPersistData","STARTUP_COMMAND_KEY","DEFAULT_COMMANDS","bootstrapAppData","shellModule","components_HelpResultView","clearCommandResults","setUiTheme","components_AboutResultView","components_WhatsNewResultView","components_TextResultView","uuid","toggleDebugMode","onDonationClicked","removeItem","onError","UnknownInputResultView","appData","host","setLevel","setupLogger","stateData","createAppState","startupCommands","hashArgs","loadStoredCommands","getStartupCommands","components_UnknownInputResultView","root","AppRoot_AppRoot","ReactDOM","render","document","getElementById","registerVisit"],"mappings":"gHAoBIA,EAAgC,CAChC,CAAEC,MAnBe,UAmBMC,MAAO,GAAIC,KAAM,MAAOC,OAAQ,MACvD,CAAEH,MAnBW,oBAmBMC,MAAO,GAAIC,KAAM,MAAOC,OAAO,OAClD,CAAEH,MAnBW,gBAmBMC,MAAO,EAAGC,KAAM,MAAOC,OAAO,QA0C/CC,EAAe,eAnCjB,SAAAC,EAAYC,GACXC,OAAAC,EAAA,EAAAD,CAAAE,KAAAJ,GAAAI,KAHDH,aAGA,EACIG,KAAKH,QAAUA,oDAGZI,GAAsC,IAAAC,EAAAF,KACzC,OAAOA,KAAKH,QAAQM,IAAI,SAAAC,GAAC,OAAIF,EAAKG,YAAYD,EAAGH,KAAQK,OAAO,SAACC,EAAGC,GAAJ,OAAUD,GAAKC,0CAGpEP,GACX,IAAIQ,EAAIR,EAAMS,MAAMT,GAEpB,OAAQ,MAALQ,GAAyB,GAAZA,EAAEE,OACP,KAGJF,EAAE,uCAGDG,EAAuBC,GAE/B,OAAID,EAAOrB,MAAMuB,KAAKD,GAMd,CACJE,MAHQC,SAASH,EAASI,QAAQL,EAAOlB,OAAQ,IAAKkB,EAAOpB,OAI7DC,KAAMmB,EAAOnB,KACbQ,MAAOY,GARA,cAaE,CAAiBvB,mCC9DtC,IAAI4B,EAAoB,EAGHC,aAOjB,SAAAA,EAAYJ,EAAgBtB,GAAoBK,OAAAC,EAAA,EAAAD,CAAAE,KAAAmB,GAAAnB,KANhDoB,QAM+C,EAAApB,KAL/Ce,WAK+C,EAAAf,KAJ/CP,UAI+C,EAAAO,KAH/CqB,kBAG+C,EAAArB,KAF/CsB,kBAE+C,EAC3CtB,KAAKoB,GAAKF,IACVlB,KAAKe,MAAQA,EACbf,KAAKP,KAAOA,GAAQ,MACpBO,KAAKqB,aAAeF,EAAeI,aAAavB,KAAKe,OACrDf,KAAKsB,cAAe,gEAIpB,OAAGtB,KAAKe,MAAQ,EACL,GAEJS,KAAKC,MAAMD,KAAKE,IAAI1B,KAAKe,OAASS,KAAKE,IAAI,IAAM,uCAG/CC,GACT,OAAOA,GAAQ3B,KAAKP,MAChB,IAAK,MACL,IAAK,MACD,MAAO,MACX,IAAK,MAAO,MAAO,MACnB,QAAU,MAAM,IAAImC,MAAMD,EAAO,sEAIhClC,GACL,OAAO0B,EAAeU,aAAa7B,KAAKe,MAAOtB,GAAQO,KAAKP,kDAI5D,OAAOO,KAAK8B,SAAS9B,KAAK+B,0DAI1B,OAAO/B,KAAK8B,SAAS,6CAIrB,OAAO9B,KAAK8B,SAAS,gDAIrB,OAAO9B,KAAK8B,SAAS,wCAGhBf,GACLf,KAAKe,MAAQA,EACbf,KAAKqB,aAAeF,EAAeI,aAAaR,sCAIhD,OAAOf,oDAIP,OAAOA,4CAGSgC,GAChB,OAAOR,KAAKC,MAAMD,KAAKE,IAAIM,GAAOR,KAAKE,IAAI,IAAM,kCAGtCC,GACX,OAAQA,GACJ,IAAK,MAAO,OAAO,EACnB,IAAK,MAAO,OAAO,GACnB,IAAK,MAAO,OAAO,mCAIbZ,EAAgBtB,GAC1B,OAAO,IAAI0B,EAAeJ,EAAOtB,GAAQ,qCAGhCQ,GAET,IAAIgC,EAAStC,EAAauC,MAAMjC,GAEhC,IAAIgC,EACA,MAAM,IAAIL,MAAM3B,EAAQ,0BAG5B,OAAO,IAAIkB,EAAec,EAAOlB,MAAOkB,EAAOxC,2CAG/BsB,EAAgBtB,GAChC,OAAOA,GACH,IAAK,MACD,IAAI0C,EAASX,KAAKY,IAAIrB,GAAOe,SAAS,IACtC,OAAOf,GAAS,EAAI,KAAOoB,EAAS,MAAQA,EAChD,IAAK,MACD,OAAQpB,IAAQ,GAAGe,SAAS,GAChC,IAAK,MACD,OAAOf,EAAMe,SAAS,IAC1B,QACI,MAAM,IAAIF,MAAM,oBAAsBnC,wCAI7B4C,GACb,OAA4B,IAArBA,EAAIC,QAAQ,KAAa,MAAQD,EAAIE,OAAO,GAAK,KAAOF,kfC9GtDG,6BAQjB,SAAAA,kBAAYC,EAA2BC,EAA+BC,GAAgB7C,OAAA8C,4GAAA,EAAA9C,CAAAE,KAAAwC,mBAAAxC,KAPtFyC,sBAOqF,EAAAzC,KANrF0C,aAMqF,EAAA1C,KALrF2C,UAKqF,EAAA3C,KAJrFsB,kBAIqF,EAAAtB,KAHrF6C,uBAGqF,EAAA7C,KAFrF8C,qBAEqF,EACjF9C,KAAKyC,iBAAmBA,EACxBzC,KAAK0C,QAAUA,EACf1C,KAAK2C,KAAOA,EACZ3C,KAAKsB,cAAe,EACpBtB,KAAK6C,kBAAoB7C,KAAK2C,KAAKL,QAAQ,MAAQ,GAAKtC,KAAK2C,KAAKL,QAAQ,MAAO,EACjFtC,KAAK8C,gBAAgC,MAAd9C,KAAK2C,0LAGvBD,SACL,GAAIA,mBAAmBF,kBACnB,MAAM,IAAIZ,MAAM,gCAGpB,IAAImB,iBAAmB/C,KAAK0C,QAAQM,WAEhCC,IAAM,GACV,GAAgB,KAAbjD,KAAK2C,KACJM,IAAM,IAAMF,iBAAiBhC,UAC1B,CACH,GAAc,MAAX2B,QACH,MAAM,IAAId,MAAM,qCAAuC5B,KAAKyC,kBAE5DQ,IAAMP,QAAQ3B,MAAQf,KAAK2C,KAAOI,iBAAiBhC,MAGvD,OAAOI,+CAAe+B,OAAOC,KAAKF,KAAMF,iBAAiBtD,qDAIzD,OAAOO,KAAK0C,QAAQU,0DAIpB,OAAOpD,KAAK2C,KAAO3C,KAAK0C,QAAQZ,+QC7CzBuB,EACE,SAASC,GAClB,MAAqB,iBAAPA,KAAqBA,aAAeC,QAAUD,aAAexD,QAFpEuD,EAKA,SAASC,GAChB,MAAqB,mBAAPA,GANPD,EASH,SAASC,GACb,MAAqB,iBAAPA,mBCKhBE,EAA2C,CAC7CC,YAAY,GAqGDC,EAAA,IA7Ff,WAII,SAAAC,IAAe7D,OAAAC,EAAA,EAAAD,CAAAE,KAAA2D,GAAA3D,KAHf4D,eAGc,EAAA5D,KAFd6D,cAEc,EAAA7D,KADd8D,kBACc,EACV9D,KAAK6D,SAAW,GAChB7D,KAAK4D,WAAY,EACjB5D,KAAK8D,aAAe,KAP5B,OAAAhE,OAAAiE,EAAA,EAAAjE,CAAA6D,EAAA,EAAAK,IAAA,UAAAjD,MAAA,SAUaF,EAAkBoD,GAEvBvC,IAAIwC,MAAJ,sBAAAC,OAAgCtD,IAEhCoD,EAAMA,GAAOnE,OAAOsE,OAAO,GAAIZ,GAE/B,IAAIvD,EAAQY,EAASwD,OAAOC,cACxBC,EAAUvE,KAAKwE,YAAYvE,GAE/B,GAAc,MAAXsE,EACC,GAAGvE,KAAK4D,UACJ5D,KAAKyE,cAAcxE,EAAOsE,EAASN,QAEnC,IACIjE,KAAKyE,cAAcxE,EAAOsE,EAASN,GACrC,MAAOS,GACJ1E,KAAK2E,YAAY1E,EAAOyE,QAKjChD,IAAIwC,MAAJ,qCAAAC,OAA+CtD,IAC/Cb,KAAK2E,YAAY1E,EAAO,IAAI2B,MAAM,2BAA6B3B,EAAMoE,WAhCjF,CAAAL,IAAA,UAAAjD,MAAA,SAoCY6D,GACJ5E,KAAK8D,aAAec,IArC5B,CAAAZ,IAAA,UAAAjD,MAAA,SAwCa8D,EAAuBN,GAC5B,IAAIK,EAAI5E,KAAK8E,cAAcD,EAAKN,GACxB,MAALK,EAKCvB,EAAauB,EAAEG,WAKf1B,EAAauB,EAAEI,QAKnBhF,KAAK6D,SAASoB,KAAKL,GAJfM,QAAQC,KAAK,8DALbD,QAAQC,KAAK,iEALbD,QAAQC,KAAK,gCAAiCC,KAAKC,UAAUC,cA3CzE,CAAAtB,IAAA,gBAAAjD,MAAA,SA4DmB8D,EAAuBN,GAClC,OAAGlB,EAAewB,GACPA,EAGRxB,EAAUwB,GACF,CAAEE,UAAW,SAAU9E,GAAS,OAAOA,IAAU4E,GAAQG,OAAQT,GAGrE,OArEf,CAAAP,IAAA,cAAAjD,MAAA,SAwEiBd,GACT,OAAOD,KAAK6D,SAAS0B,OAAO,SAAAX,GAAC,OAAIA,EAAEG,UAAU9E,KAAQ,KAzE7D,CAAA+D,IAAA,gBAAAjD,MAAA,SA4EmBd,EAAgBsE,EAA2BiB,GAEtD,IAAIC,EAAYlB,EAAQS,OAAO,CAAE/E,MAAOA,EAAOuF,YAC/B,MAAbC,GACC/D,IAAIwC,MAAMuB,KAhFtB,CAAAzB,IAAA,cAAAjD,MAAA,SAoFiBd,EAAeyF,GACrB1F,KAAK4D,WACJsB,QAAQS,MAAM1F,EAAOyF,GAED,MAArB1F,KAAK8D,cACJ9D,KAAK8D,aAAa7D,EAAOyF,OAzFrC/B,EAAA,yCChBqBiC,cAKjB,SAAAA,EAAYC,GAAuB,IAAA3F,EAAA,OAAAJ,OAAAC,EAAA,EAAAD,CAAAE,KAAA4F,IAC/B1F,EAAAJ,OAAAgG,EAAA,EAAAhG,CAAAE,KAAAF,OAAAiG,EAAA,EAAAjG,CAAA8F,GAAAI,KAAAhG,KAAM6F,KALVI,aAImC,EAAA/F,EAHnCgG,kBAGmC,EAAAhG,EAFnCiG,eAEmC,EAE/BjG,EAAKiG,UAAY,KACjBjG,EAAK+F,QAAU,GACf/F,EAAKgG,cAAgB,EAJUhG,mFAQV,MAAlBF,KAAKmG,WACJnG,KAAKmG,UAAUC,yCAGd,IAAAC,EAAArG,KACL,OAAOsG,EAAAC,EAAAC,cAAA,SAAOpF,GAAG,KAAKqF,KAAK,OACbC,IAAK,SAACzG,GAAYoG,EAAKF,UAAYlG,GACnC0G,QAAS,SAAAjC,GAAC,OAAI2B,EAAKM,QAAQjC,IAC3BkC,UAAW,SAAAlC,GAAC,OAAI2B,EAAKO,UAAUlC,IAC/BmC,UAAU,uBACVC,YAAY,yCACZC,aAAa,wCAGvBrC,GACJ,IAAIzE,EAAQyE,EAAEsC,OACd,GAAiB,IAAbtC,EAAEuC,SAA8C,GAA7BhH,EAAMc,MAAMsD,OAAO1D,OAA1C,CAIA,IAAIuG,EAAejH,EAAMc,MACzBf,KAAKiG,QAAQkB,QAAQD,GACrBlH,KAAKkG,cAAgB,EAErBjG,EAAMc,MAAQ,GACdf,KAAK6F,MAAMuB,iBAAiBF,sCAGtBG,GAEN,GAAmB,IAAhBA,EAAKJ,QAAe,CACnB,IAAIK,EAAWtH,KAAKkG,aAAa,EAQjC,OANIlG,KAAKiG,QAAQtF,OAAS2G,IACtBD,EAAKL,OAAOjG,MAAQf,KAAKiG,QAAQqB,GACjCtH,KAAKkG,aAAeoB,QAGxBD,EAAKE,iBAIU,IAAhBF,EAAKJ,UACDjH,KAAKkG,aAAe,IACnBmB,EAAKL,OAAOjG,MAAQf,KAAKiG,UAAUjG,KAAKkG,eAG5CmB,EAAKE,yBA5DqBC,IAAMC,WCIvBC,mLAGb,OAAOpB,EAAAC,EAAAC,cAAA,OAAKK,UAAU,UACNP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,cACPP,EAAAC,EAAAC,cAAA,QAAMK,UAAU,OAAhB,KACgB7G,KAAK6F,MAAM5F,MACvBqG,EAAAC,EAAAC,cAAA,KAAGK,UAAU,WAAWc,MAAM,2BAA2BC,KAAMC,OAAOC,SAASC,SAAW,IAAM/H,KAAK6F,MAAMmC,WAA3G,MAEZ1B,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACV7G,KAAK6F,MAAMoC,kBAVOT,IAAMC,iBCiBtCS,MAzBf,SAAyBrC,GAErB,IAAMsC,EAAO,GACPC,EAAQvC,EAAMwC,SAcpB,MAZyB,QAAtBxC,EAAMwC,SAASC,KACdH,EAAKlD,KAAKmD,EAAME,KAGjBzC,EAAMwC,SAASzE,WACduE,EAAKlD,KAAK,SAGgC,UAA3CsD,aAAaC,QAAQ,mBACpBL,EAAKlD,KAAK,WAGI,GAAfkD,EAAKxH,OACG,KAEJ2F,EAAAC,EAAAC,cAAA,OAAKK,UAAU,oBACbsB,EAAKhI,IAAI,SAAAsI,GAAC,OAAInC,EAAAC,EAAAC,cAAA,QAAMmB,MAAOc,GAAb,IAAkBA,EAAEC,UAAU,EAAE,GAAhC,aCzBZC,EAAA,CACXC,WAAY,SAAS3I,GACjB,OAAO4I,mBAAmB5I,EAAMoE,OAAOpD,QAAQ,MAAM,OAEzD6H,WAAY,SAASC,GACjB,OAAOC,mBAAmBD,EAAU9H,QAAQ,MAAO,KAAKA,QAAQ,KAAK,MAEzEgI,QAAS,SAAUF,GAEf,IAWe9F,EAXXiG,EAAclJ,KAAK8I,WAAWC,GAC9B1B,EAAkB,GAMtB,OAIepE,EARDiG,EAUXjG,EAAIkG,MAAM,MAAM5D,OAAO,SAAA6D,GAAC,OAAIA,EAAEzI,OAAS,KAVf0I,QAAQ,SAAStI,GACxCsG,EAAKpC,KAAKlE,KAGPsG,qCCKAiC,MAVf,SAAAC,GAA8D,IAAxCC,EAAwCD,EAAxCC,KAAMC,EAAkCF,EAAlCE,QAASC,EAAyBH,EAAzBG,KAE3BC,EAAU,kBAAM9E,EAAI+E,QAAQH,GAAWC,IAE7C,OAAW,MAARF,EACQlD,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,qBAAqB+B,QAASA,GAASrD,EAAAC,EAAAC,cAACqD,EAAA,EAAD,CAAiBL,KAAMA,EAAM3C,UAAU,SAAU6C,GAEpGpD,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,qBAAqB+B,QAASA,GAAUD,ICM5CI,MAjBf,WACI,OAAOxD,EAAAC,EAAAC,cAAA,MAAIK,UAAU,aACTP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,SAASF,KAAMQ,OAErC1D,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,gDAA+CtB,EAAAC,EAAAC,cAACqD,EAAA,EAAD,CAAiBhD,UAAU,OAAO2C,KAAMS,IAAUC,KAAK,OAA9G,WAEJ5D,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,kCAAiCtB,EAAAC,EAAAC,cAACqD,EAAA,EAAD,CAAiBhD,UAAU,OAAO2C,KAAMW,IAAWD,KAAK,OAAO5D,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,aAE5GP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,gDAAmJtB,EAAAC,EAAAC,cAACqD,EAAA,EAAD,CAAiBhD,UAAU,OAAO2C,KAAMY,IAAYF,KAAK,OAAO5D,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,wBCE1NwD,+LAEI,IAAAnK,EAAAF,KACjBA,KAAKsK,UACLtK,KAAK6F,MAAMwC,SAASkC,SAAS,kBAAMrK,EAAKoK,8CAIxCtK,KAAKwK,SAASxK,KAAK6F,MAAMwC,+CAGhBtH,GACT,OAAOA,EAAQ,KAAO,+CAGO,IAAAsF,EAAArG,KAM7B,OAJcA,KAAKoI,MAAMqC,eAAetK,IAAI,SAACuK,EAAGjC,GAAJ,OACxCnC,EAAAC,EAAAC,cAACmE,EAAD,CAAmB3G,IAAK0G,EAAE1G,IAAM/D,MAAOyK,EAAEzK,MAAO+H,UAAWW,EAAKC,WAAW8B,EAAEzK,OAAQoI,SAAUhC,EAAKR,MAAMwC,UACrGqC,EAAEE,uDAMX5K,KAAK6F,MAAMwC,SAASwC,wDAGf,IAAAC,EAAA9K,KACL,OAAOsG,EAAAC,EAAAC,cAAA,OAAKK,UAAS,YAAA1C,OAAcnE,KAAKoI,MAAM2C,UAClCzE,EAAAC,EAAAC,cAACwE,EAAD,CAAiB3C,SAAUrI,KAAK6F,MAAMwC,WACtC/B,EAAAC,EAAAC,cAAA,OAAKK,UAAU,UACXP,EAAAC,EAAAC,cAAA,oBAAWF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,cAAhB,QAEZP,EAAAC,EAAAC,cAACyE,EAAD,OAGH3E,EAAAC,EAAAC,cAAA,OAAKK,UAAU,6BACXP,EAAAC,EAAAC,cAAC0E,EAAD,CAAU9D,iBAAkB,SAACnH,GAAD,OAAW4E,EAAI+E,QAAQ3J,MAEnDqG,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aACZP,EAAAC,EAAAC,cAAA,QAAMpF,GAAG,iBAAiB+J,WAAS,KAAKtE,UAAW,aAAe7G,KAAKoL,aAAapL,KAAKoI,MAAMiD,gBAAiB1D,MAAM,yBAAyBgC,QAAS,kBAAMmB,EAAKD,yBAAnK,UAIRvE,EAAAC,EAAAC,cAAA,OAAKpF,GAAG,UACPpB,KAAKsL,0BA9CW9D,IAAMC,kCCZ5B8D,MAPf,SAAyB1F,GAErB,OAAOS,EAAAC,EAAAC,cAAA,OAAKK,UAAU,UACVP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,SAAShB,EAAM2F,gBCLxCC,EAAY,CACdC,aAAc,SAAS1J,EAAaL,GAChC,OAAOK,EAAIF,SAuBnB,SAAiBH,GACb,OAAQA,GACJ,IAAK,MAAO,OAAO,EACnB,IAAK,MAAO,OAAO,GACnB,IAAK,MAAO,OAAO,GAGvB,MAAM,IAAIC,MAAM,qBAAuBD,GA9BfgK,CAAQhK,GAAQ,SAExCiK,QAAS,SAAU3I,EAAatC,EAAgBkL,GAC5C,IAAIC,EAAKvI,MAAMwI,UAAUC,MAAMhG,KAAK/C,GAAM4I,EAASA,GAAU,IAE7D,GAAa,MAAVlL,EACC,OAAOsC,EAGX,KAAMtC,EAASmL,EAAGnL,QACdmL,EAAG3E,QAAQ0E,GAGf,OAAOC,EAAGG,KAAK,KAEnBC,IAjBc,SAiBVC,GACA,OAAOnM,KAAK0L,aAAaS,EAAQ,QAErCC,MApBc,SAoBRD,GACF,OAAOnM,KAAK4L,QAAQ5L,KAAKkM,IAAIC,GAAS,EAAG,OAclCV,QACTW,EAAQX,EAAUW,MCnBHC,mLAEb,OAAO/F,EAAAC,EAAAC,cAAA,QAAMK,UAAW7G,KAAK6F,MAAMgB,WAAY7G,KAAKsM,kDAG7CC,EAAe7H,GACtB,GAAI1E,KAAK6F,MAAM2G,eAAkBxM,KAAK6F,MAAM4G,UAA5C,CAIIzM,KAAK6F,MAAM4G,UAIf,IAAMC,EAAM1M,KAAK6F,MAAM8G,aAAaxD,MAAM,IAC1CuD,EAAIH,GAAuB,KAAdG,EAAIH,GAAgB,IAAM,IACvC,IAAMK,EAAkBF,EAAIT,KAAK,IAEjCjM,KAAK6F,MAAM4G,UAAU,CAAEF,MAAOA,EAAOI,aAAc3M,KAAK6F,MAAM8G,aAAcE,OAAQnI,EAAGkI,2DAIvF,IAAIE,EAAO9M,KAAK+M,WAAW/M,KAAK6F,MAAM8G,aAAaxD,MAAM,KAEzD,OAAGnJ,KAAK6F,MAAMwF,eACHrL,KAAKgN,eAAeF,GAGxBA,qCAGAG,GAAmC,IAAA/M,EAAAF,KAEpCkN,EADgBlN,KAAK6F,MAAM2G,gBAAiB,EACtB,YAAc,GAE1C,OAAOS,EAAS9M,IAAI,SAACI,EAAGkI,GACpB,IAAI5B,EAAiB,KAALtG,EAAA,MAAA4D,OAAiB+I,GAAjB,OAAA/I,OAAgC+I,GAChD,OAAO5G,EAAAC,EAAAC,cAAA,QAAMK,UAAWA,EAAW7C,IAAKyE,EAAGkB,QAAS,SAAAjF,GAAC,OAAIxE,EAAKiN,WAAW1E,EAAG/D,KAAKnE,4CAI1EuM,GAIX,IAHA,IAAMM,EAAQ,GAEVpJ,EAAM,EACJ8I,EAAKnM,OAAS,GAChByM,EAAMnI,KAAKqB,EAAAC,EAAAC,cAAA,QAAMxC,IAAKA,IAAO6C,UAAU,QAAQiG,EAAKO,OAAO,EAAG,KAGlE,OAAOD,SAjD+B5F,IAAMC,iBCgCrC6F,MAvCf,SAAAC,GAAA,SAAAD,IAAA,OAAAxN,OAAAC,EAAA,EAAAD,CAAAE,KAAAsN,GAAAxN,OAAAgG,EAAA,EAAAhG,CAAAE,KAAAF,OAAAiG,EAAA,EAAAjG,CAAAwN,GAAAE,MAAAxN,KAAAsF,YAAA,OAAAxF,OAAA2N,EAAA,EAAA3N,CAAAwN,EAAAC,GAAAzN,OAAAiE,EAAA,EAAAjE,CAAAwN,EAAA,EAAAtJ,IAAA,SAAAjD,MAAA,WAGa,IAAAb,EAAAF,KACL,OAAOsG,EAAAC,EAAAC,cAAA,SAAOK,UAAU,cACpBP,EAAAC,EAAAC,cAAA,aACKxG,KAAK6F,MAAM6H,YAAYvN,IAAI,SAACwN,EAAIlF,GAAL,OAAWnC,EAAAC,EAAAC,cAAA,MAAIxC,IAAKyE,GACxCnC,EAAAC,EAAAC,cAAA,MAAIK,UAAU,SAAQP,EAAAC,EAAAC,cAAA,cAASmH,EAAG7L,aAClCwE,EAAAC,EAAAC,cAAA,MAAIK,UAAU,OACT3G,EAAKgM,IAAIyB,EAAGC,UAAW,EAAGD,GAAIrH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KAC9B3G,EAAKgM,IAAIyB,EAAGE,WAAY,EAAGF,GAAIrH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KAC/B3G,EAAKgM,IAAIyB,EAAGG,UAAW,EAAGH,GAAIrH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KAC9B3G,EAAKgM,IAAIyB,EAAGI,WAAY,EAAGJ,WAZxD,CAAA3J,IAAA,MAAAjD,MAAA,SAmBQA,EAAeiN,EAA0BL,GAAe,IAgBnD3L,EAhBmDqE,EAAArG,KACxD,OAAOsG,EAAAC,EAAAC,cAACyH,EAAD,CACHtB,cAcC3K,EAdiBjB,EAenB0K,EAAUG,QAAQH,EAAUC,aAAa1J,EAAK,OAAQ,EAAG,MAdxDgC,IAAKgK,EACL3C,gBAAgB,EAChBmB,eAAe,EACf3F,UAAS,SAAA1C,OAAW6J,GACpBvB,UAAW,SAAA/H,GAAC,OAAI2B,EAAK6H,aAAaxJ,EAAEkI,gBAAiBoB,EAAaL,QA1B9E,CAAA3J,IAAA,eAAAjD,MAAA,SA6BiB4L,EAAsBR,EAAqBwB,GACpDA,EAAGQ,SAAShC,EAAQnL,SAAS2L,EAAc,IAC3C3M,KAAKoO,kBA/Bbd,EAAA,CAAmC9F,IAAMC,WCL5B4G,EAAb,WAII,SAAAA,EAAYC,EAAsBC,GAAmBzO,OAAAC,EAAA,EAAAD,CAAAE,KAAAqO,GAAArO,KAHrDuO,cAGoD,EAAAvO,KAFpDsO,eAEoD,EAChDtO,KAAKsO,UAAYA,EACjBtO,KAAKuO,SAAWA,EANxB,OAAAzO,OAAAiE,EAAA,EAAAjE,CAAAuO,EAAA,EAAArK,IAAA,WAAAjD,MAAA,WAUQ,SAAAoD,OAAUnE,KAAKsO,UAAUxM,WAAzB,KAAAqC,OAAuCnE,KAAKuO,cAVpDF,EAAA,GAcaG,EAAb,WAOI,SAAAA,EAAYZ,EAAmBC,EAAoBC,EAAmBC,GAAqBjO,OAAAC,EAAA,EAAAD,CAAAE,KAAAwO,GAAAxO,KAL3F4N,eAK0F,EAAA5N,KAJ1F6N,gBAI0F,EAAA7N,KAH1F8N,eAG0F,EAAA9N,KAF1F+N,gBAE0F,EACtF/N,KAAK4N,UAAYA,EACjB5N,KAAK6N,WAAaA,EAClB7N,KAAK8N,UAAYA,EACjB9N,KAAK+N,WAAaA,EAX1B,OAAAjO,OAAAiE,EAAA,EAAAjE,CAAA0O,EAAA,EAAAxK,IAAA,WAAAjD,MAAA,WAeQ,SAAAoD,OAAUnE,KAAK4N,UAAf,KAAAzJ,OAA4BnE,KAAK6N,WAAjC,KAAA1J,OAA+CnE,KAAK8N,UAApD,KAAA3J,OAAiEnE,KAAK+N,cAf9E,CAAA/J,IAAA,iBAAAjD,MAAA,WAoBQ,SAAAoD,OAAUiI,EAAMpM,KAAK4N,WAArB,MAAAzJ,OAAoCiI,EAAMpM,KAAK6N,YAA/C,KAAA1J,OAA8DiI,EAAMpM,KAAK8N,WAAzE,KAAA3J,OAAuFiI,EAAMpM,KAAK+N,eApB1G,CAAA/J,IAAA,QAAAjD,MAAA,WAwBQ,OAAO,IAAIyN,EAAUxO,KAAK4N,UAAW5N,KAAK6N,WAAY7N,KAAK8N,UAAW9N,KAAK+N,cAxBnF,CAAA/J,IAAA,WAAAjD,MAAA,SA2Ba0N,EAAoB1N,GACzB,OAAQ0N,GACJ,KAAK,EACDzO,KAAK4N,UAAY7M,EACjB,MACJ,KAAK,EACDf,KAAK6N,WAAa9M,EAClB,MACJ,KAAK,EACDf,KAAK8N,UAAY/M,EACjB,MACJ,KAAK,EACDf,KAAK+N,WAAahN,OAvClCyN,EAAA,GA6CaE,EAAb,WAEI,SAAAA,EAAYC,GAAsC7O,OAAAC,EAAA,EAAAD,CAAAE,KAAA0O,GAAA1O,KADlDC,WACiD,EAC7CD,KAAKC,MAAQ0O,EAHrB,OAAA7O,OAAAiE,EAAA,EAAAjE,CAAA4O,EAAA,EAAA1K,IAAA,qBAAAjD,MAAA,WAOQ,IAAM6N,EAAoB,GAAK5O,KAAKC,MAAMsO,SAC1C,OAAO/M,KAAKqN,IAAI,EAAGD,GAAqB,IARhD,CAAA5K,IAAA,WAAAjD,MAAA,WAYQ,OAAOf,KAAKC,MAAM6B,eAZ1B4M,EAAA,GC3DMI,EAAkB,CACpB5M,MAAO,SAASjC,GAAwE,IAAAC,EAAAF,KAE9E+O,EAAS/O,KAAKgP,aAAa/O,GAE3BgP,EAAUjP,KAAKkP,UAAUH,EAAOI,WAChCC,EAAgBH,EAAQ1J,OAAO,SAAA9E,GAAC,OAAiB,MAAbA,EAAEwO,UACtCI,EAAkBJ,EAAQ1J,OAAO,SAAA9E,GAAC,OAAiB,MAAbA,EAAEwO,UAE9C,GAA2B,GAAxBG,EAAczO,OACb,OAAO,KAEX,GAAG0O,EAAgB1O,OAAS,EACpB,OAAO,IAAI2O,EAAJ,YAAAnL,OAA6BkL,EAAgBlP,IAAI,SAAAoP,GAAC,OAAIA,EAAEtP,QAAOgM,KAAK,KAApE,6EAGf,IAAMuD,EAAgBP,EAAQ9O,IAAI,SAAAM,GAAC,OAAIP,EAAKuP,YAAYhP,EAAEwO,QAAUxO,EAAER,SAChEyP,EAAgBF,EAAcjK,OAAO,SAAAnF,GAAC,OAAIA,aAAakP,IAE7D,GAAGI,EAAc/O,OAAS,EACtB,OAAO+O,EAAc,GAGzB,GAAqB,MAAlBX,EAAOtF,QAAiB,CACvB,IAAMsF,EAAS/O,KAAK2P,uBAAuBH,GAE3C,OACWT,EAKf,OAAOS,GAGXR,aAnCoB,SAmCP/O,GAGT,OAAGA,EAAM2P,WADO,UAEL,CAAEnG,QAFG,SAEM0F,UAAWlP,EAAMyI,UAFvB,SAEyC/H,SAElD,CAAE8I,QAAS,KAAM0F,UAAWlP,IAGvCiP,UA5CoB,SA4CVjP,GAEN,OAAOA,EACHgB,QAAQ,WAAY,KACfkI,MAAM,KACN5D,OAAO,SAAA6D,GAAC,OAAIA,EAAEzI,OAAO,IACrBR,IAAI,SAAAiJ,GACD,IACM6F,EADY,mEACQY,KAAKzG,GAE/B,OAAc,MAAX6F,GAAsC,IAAnBA,EAAQtO,OACnB,CAACsO,QAAS,KAAMhP,MAAOmJ,GAE3B,CAAC6F,UAAShP,MAAOmJ,MAIxCqG,YA7DoB,SA6DRR,EAA2BhP,GACnC,IAAM6P,EAAU,SAACtP,GAAD,OAAeA,EAAI,GAAKA,EAAI,KAEtCuP,EAAQ/O,SAASiO,EAAQ,IACzBe,EAAShP,SAASiO,EAAQ,IAC1BgB,EAAQjP,SAASiO,EAAQ,IACzBiB,EAASlP,SAASiO,EAAQ,IAEhC,GAAGa,EAAQC,IAAUD,EAAQE,IAAWF,EAAQG,IAAUH,EAAQI,GAC9D,OAAO,IAAIZ,EAAJ,GAAAnL,OAAoBlE,EAApB,gDAEX,IAAMqO,EAAY,IAAIE,EAAUuB,EAAOC,EAAQC,EAAOC,GAEtD,GAAGjB,EAAQ,GAAI,CACX,IAAMkB,EAAWlB,EAAQ,GAAG1M,OAAO,GAC7BgM,EAAWvN,SAASmP,GAE1B,OAAG5B,EAAW,GACH,IAAIe,EAAJ,wBAAAnL,OAAyClE,EAAzC,qBAGJ,IAAIoO,EAAwBC,EAAWC,GAGlD,OAAOD,GAGXqB,uBAxFoB,SAwFGS,GACnB,GAAmB,GAAhBA,EAAMzP,OACL,OAAO,IAAI2O,EAAa,gCAE5B,IAAMS,EAAQK,EAAM,GACpB,OAAGL,aAAiB1B,EACT,IAAIK,EAAcqB,GAGtB,IAAIT,EAAa,6CAInBA,EAET,SAAAA,EAAYe,GAAkBvQ,OAAAC,EAAA,EAAAD,CAAAE,KAAAsP,GAAAtP,KAD9BwL,kBAC6B,EACzBxL,KAAKwL,aAAe6E,GAKbvB,kBClHf,SAASwB,EAAeC,EAAcC,GAClC,OAAmB,GAAhBA,EACQD,EAGIA,EADM/O,KAAKqN,IAAI,EAAG,EAAE2B,GAAc,GAAGA,EAQxD,SAASC,EAAcF,EAAeC,GAClC,OAAmB,GAAhBA,EAA0BD,EAGdA,EADM/O,KAAKqN,IAAI,EAAG2B,GAAc,EAMnD,SAASE,EAAqBF,GAC1B,OAAO,KAAM,EAAEA,EAAc,IClBjC,SAASG,EAAmBC,GAExB,IAAMC,EAAOH,EACPnC,EAAWqC,EAAIrC,SAErB,OAAIA,GAAY,EACL,IAAIC,EAAUqC,EAAKtC,GAAW,EAAG,EAAG,GAEtCA,GAAY,GACV,IAAIC,EAAU,IAAKqC,EAAKtC,EAAW,GAAI,EAAG,GAE5CA,GAAY,GACV,IAAIC,EAAU,IAAK,IAAKqC,EAAKtC,EAAW,IAAK,GAG7C,IAAIC,EAAU,IAAK,IAAK,IAAKqC,EAAKtC,EAAW,KAQ5D,SAASuC,EAAoBF,GACzB,OAAOG,EAAmBH,EAAKH,EAAe,KAGlD,SAASM,EAAmBH,EAA8BI,EAAwBC,GAE9E,IAAMC,EAAO,SAAC3C,EAAkBgC,GAAnB,OAAoCS,EAAQT,EAAM,EAAIhC,IAE7DZ,EAAKiD,EAAItC,UACTC,EAAWqC,EAAIrC,SAErB,OAAIA,GAAY,EACL,IAAIC,EAAU0C,EAAK3C,EAAUZ,EAAGC,WAAYqD,EAAUA,EAAUA,GAElE1C,GAAY,GACV,IAAIC,EAAUb,EAAGC,UAAWsD,EAAK3C,EAAW,EAAGZ,EAAGE,YAAaoD,EAAUA,GAE3E1C,GAAY,GACV,IAAIC,EAAUb,EAAGC,UAAWD,EAAGE,WAAYqD,EAAK3C,EAAW,GAAIZ,EAAGG,WAAYmD,GAI9E,IAAIzC,EAAUb,EAAGC,UAAWD,EAAGE,WAAYF,EAAGG,UAAWoD,EAAK3C,EAAW,GAAIZ,EAAGI,aC/BhFoD,MAbf,SAAA5H,GAAqD,IAArBoE,EAAqBpE,EAArBoE,GAE7B,OAAOrH,EAAAC,EAAAC,cAACF,EAAAC,EAAM6K,SAAP,KACF9K,EAAAC,EAAAC,cAACyH,EAAD,CAAkBtB,aAAclB,EAAUW,MAAMuB,EAAGC,aACvCtH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KACAP,EAAAC,EAAAC,cAACyH,EAAD,CAAkBtB,aAAclB,EAAUW,MAAMuB,EAAGE,cACnDvH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KACAP,EAAAC,EAAAC,cAACyH,EAAD,CAAkBtB,aAAclB,EAAUW,MAAMuB,EAAGG,aACnDxH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KACAP,EAAAC,EAAAC,cAACyH,EAAD,CAAkBtB,aAAclB,EAAUW,MAAMuB,EAAGI,gBCyCvE,SAASsD,EAAUxL,GAAwC,IAEhD8H,EAAa9H,EAAb8H,GAAI2D,EAASzL,EAATyL,MAEX,OAAOhL,EAAAC,EAAAC,cAAA,UACCF,EAAAC,EAAAC,cAAA,MAAIK,UAAU,OAAO0K,iBAAe,SAASD,GACzChL,EAAAC,EAAAC,cAAA,MAAI+K,iBAAe,UAAU1K,UAAU,kBACnC8G,EAAG7L,YAEPwE,EAAAC,EAAAC,cAAA,MAAI+K,iBAAe,OACfjL,EAAAC,EAAAC,cAACgL,EAAD,CAAuB7D,GAAIA,MAKhC8D,MA9Df,SAAoB5L,GAAkC,IFe3B+K,EEf2Bc,EAEtBC,mBAAS9L,EAAM+L,QAFOC,EAAA/R,OAAAgS,EAAA,EAAAhS,CAAA4R,EAAA,GAE3CE,EAF2CC,EAAA,GAEnCE,EAFmCF,EAAA,GAclD,OAAOvL,EAAAC,EAAAC,cAACF,EAAAC,EAAM6K,SAAP,KACH9K,EAAAC,EAAAC,cAAA,SAAOK,UAAU,0BACbP,EAAAC,EAAAC,cAAA,aACQF,EAAAC,EAAAC,cAAC6K,EAAD,CAAW1D,GAAIiE,EAAO3R,MAAMqO,UAAWgD,MAAM,YAC7ChL,EAAAC,EAAAC,cAAC6K,EAAD,CAAW1D,IFHJiD,EEG0BgB,EAAO3R,MFFjD8Q,EAAmBH,EAAKN,EAAgB,IEEiBgB,MAAM,YACtDhL,EAAAC,EAAAC,cAAC6K,EAAD,CAAW1D,GAAIgD,EAAmBiB,EAAO3R,OAAQqR,MAAM,aACvDhL,EAAAC,EAAAC,cAAC6K,EAAD,CAAW1D,GAAImD,EAAoBc,EAAO3R,OAAQqR,MAAM,cACxDhL,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,MAAI+K,iBAAe,QAAQ1K,UAAU,QACjCP,EAAAC,EAAAC,cAAA,6BAEJF,EAAAC,EAAAC,cAAA,MAAI+K,iBAAe,WACdK,EAAOI,uBAGhB1L,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,MAAI+K,iBAAe,QAAQ1K,UAAU,QAArC,aAGAP,EAAAC,EAAAC,cAAA,MAAI+K,iBAAe,WAEfjL,EAAAC,EAAAC,cAAA,UAAQmD,QA1BV,WAClB,IAAMsI,EAAW,IAAI5D,EAAwBuD,EAAO3R,MAAMqO,UAAWsD,EAAO3R,MAAMsO,SAAS,GAC3FwD,EAAU,IAAIrD,EAAcuD,KAwBwBC,SAAoC,IAA1BN,EAAO3R,MAAMsO,SAAgB5G,MAAM,sBAA7E,KACArB,EAAAC,EAAAC,cAAA,YAAOoL,EAAO3R,MAAMsO,UACpBjI,EAAAC,EAAAC,cAAA,UAAQmD,QAjCV,WAClB,IAAMsI,EAAW,IAAI5D,EAAwBuD,EAAO3R,MAAMqO,UAAWsD,EAAO3R,MAAMsO,SAAS,GAC3FwD,EAAU,IAAIrD,EAAcuD,KA+BwBC,SAAoC,KAA1BN,EAAO3R,MAAMsO,SAAiB5G,MAAM,sBAA9E,SAKpBrB,EAAAC,EAAAC,cAAA,cCxCR,SAAS2L,EAAmBC,GACxB,IAAM7N,EAAWsD,OAAewK,2BAClB,MAAX9N,GACC7C,IAAIwC,MAAM,6DAGd,IAAMoO,EAAa/N,EAA6B6N,GAChD1Q,IAAIwC,MAAM,4CAA8CoO,EAAWF,GCyCvE,SAASG,EAAaC,EAAgBvO,IACZ,IAAnBA,EAAIR,YACH0O,EAAmB,CACfM,cAAe,oBACfC,YAAaF,IAKVG,MAvDa,CACxBC,MAAO,SAASvK,EAAoBxD,GAGhCA,EAAI4E,QAAQ,CACR1E,UAAW,SAAC9E,GAAD,OAAkD,MAAhC6O,EAAgB5M,MAAMjC,IACnD+E,OAAQ,SAASzE,GACb,IAAIwO,EAASD,EAAgB5M,MAAM3B,EAAEN,OAErC,GAAa,MAAV8O,EAGH,GAAGA,aAAkBO,EACjBjH,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACsM,EAAD,CAAiBtH,aAAcuD,EAAOvD,oBAD7E,CAKA,GAAGuD,aAAkBL,EAGjB,OAFArG,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACuM,EAAD,CAAYnB,OAAQ7C,UACvDwD,EAAa,gBAAiBhS,EAAEiF,SAIpC,IAAMkI,EAA4B,GAEjCqB,EAA4B1F,QAAQ,SAAAqB,GAC9BA,aAAa2D,GAEZX,EAAYzI,KAAKyF,EAAE4D,WACnBZ,EAAYzI,KAAK0L,EAAmBjG,KAEhCA,aAAa8D,GACjBd,EAAYzI,KAAKyF,KAIzB6H,EAAa,mBAAoBhS,EAAEiF,SAEnC6C,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACwM,EAAD,CAAetF,YAAaA,SAIvEhM,IAAIwC,2BCnDS+O,cAKjB,SAAAA,EAAYxQ,EAA0ByQ,GAA4BpT,OAAAC,EAAA,EAAAD,CAAAE,KAAAiT,GAAAjT,KAJlEkT,aAIiE,EAAAlT,KAHjEyC,sBAGiE,EAAAzC,KAFjEmT,mBAEiE,EAC7DnT,KAAKyC,iBAAmBA,EACxBzC,KAAKkT,QAAUA,EACflT,KAAKmT,cAAgBD,EAAQ/S,IAAI,SAAAK,GAAC,OAAIA,EAAEa,eAAcf,OAAO,SAACE,EAAID,GAAL,OAAWC,GAAKD,EAAIC,EAAID,GAAG,0DAIxF,OAAOP,KAAKkT,QAAQ/S,IAAI,SAAAK,GAAC,OAAIA,EAAEO,MAAMe,aAAYmK,KAAK,cCbzCmH,GAKjB,SAAAA,EAAY3Q,EAA0B4Q,GAAqCvT,OAAAC,EAAA,EAAAD,CAAAE,KAAAoT,GAAApT,KAH3EyC,sBAG0E,EAAAzC,KAF1EsT,qBAE0E,EACtEtT,KAAKyC,iBAAmBA,EACxBzC,KAAKsT,gBAAkBD,GCOzBE,cAEF,SAAAA,IAAezT,OAAAC,EAAA,EAAAD,CAAAE,KAAAuT,GAAAvT,KADfwT,eACc,EACVxT,KAAKwT,UAAY,wDAGXvT,GAGN,IAFA,IAAIwT,EAAUxT,EAAMgB,QAAQ,YAAa,IACrCwH,EAAIzI,KAAKwT,UAAU7S,OAAO,EACzB8H,GAAG,EAAEA,IACN,IAA4C,IAAzCzI,KAAKwT,UAAU/K,GAAGiL,UAAUD,GAC3B,OAAO,EAGf,OAAO,gCAGJxT,GAIH,IAHA,IACsC0T,EADlCF,EAAUxT,EAAMgB,QAAQ,YAAa,IACrCwH,EAAI,EAAGmL,EAAI5T,KAAKwT,UAAU7S,OAEzB8H,EAAEmL,EAAEnL,IAGL,GAAiC,IAFjCkL,EAAU3T,KAAKwT,UAAU/K,IAEdiL,UAAUD,GACjB,OAAOE,EAAQzQ,OAAOuQ,GAI9B,OAAO,0CAGGxT,GACV,OAAOkB,KAAee,MAAMjC,yCAGjBkM,EAAiB1M,GAC5B,OAAO0B,KAAe+B,OAAOiJ,EAAQ1M,sCAG7BkU,GACV3T,KAAKwT,UAAUvO,KAAK0O,YAIpBE,cAIF,SAAAA,IAAe/T,OAAAC,EAAA,EAAAD,CAAAE,KAAA6T,GAAA7T,KAFfT,WAEc,EACVS,KAAKT,MAAQ,8FAGNU,GACP,OAAOD,KAAKT,MAAMuB,KAAKb,kCAGnBA,GACJ,IAAIgP,EAAUjP,KAAKT,MAAMsQ,KAAK5P,GAC1BiT,EAAU,GASd,OARIjT,EAAQgP,EAAQhP,OAEdkJ,MAAM,KAAKE,QAAQ,SAAC7I,GACnBA,EAAE6D,OAAO1D,OAAS,GACjBuS,EAAQjO,KAAK9D,KAAee,MAAM1B,EAAE6D,WAIrC,IAAI4O,GAAwBhT,EAAOiT,YAI5CY,cAIF,SAAAA,IAAehU,OAAAC,EAAA,EAAAD,CAAAE,KAAA8T,GAAA9T,KAHf+T,eAGc,EAAA/T,KAFdT,WAEc,EACVS,KAAK+T,UAAY,mDACjB/T,KAAKT,MAAQ,uGAGNU,GAEP,OADAD,KAAK+T,UAAUC,UAAY,EACpBhU,KAAK+T,UAAUjT,KAAKd,KAAKiU,gBAAgBhU,mCAG5CA,GAIJ,IAHA,IAAIQ,EAAGyT,EAAmC,GACtCC,EAAmBnU,KAAKiU,gBAAgBhU,GAEM,OAA1CQ,EAAIT,KAAKT,MAAMsQ,KAAKsE,KACxBD,EAASjP,KAAKjF,KAAKoU,WAAW3T,IAGlC,OAAO,IAAI2S,GAA2Be,EAAkBD,sCAGhDzT,GACR,IAAIR,EAAQQ,EAAE,GACVkC,EAAOlC,EAAE,GACTuB,EAAMvB,EAAE,GAERwB,EAAS,KAQb,OANIA,EADmB,GAApBD,EAAIM,QAAQ,KACF,IAAIE,KAAkBR,EAAKb,KAAee,MAAMF,EAAI0G,UAAU,IAAK,KAGnEvH,KAAee,MAAMF,GAGvB,MAARW,EACQV,EAEA,IAAIO,KAAkBvC,EAAOgC,EAA0BU,2CAIrD1C,GACb,OAAOA,EAAMgB,QAAQ,OAAO,aAIhCL,GAAS,IAAI2S,GACjB3S,GAAOyT,WAAW,IAAIR,IACtBjT,GAAOyT,WAAW,IAAIP,QC5HDQ,cAOjB,SAAAA,EAAA/K,GAAuE,IAAAgL,EAAAhL,EAAzD8B,sBAAyD,IAAAkJ,KAAAC,EAAAjL,EAAjCiD,qBAAiC,IAAAgI,KAAA1U,OAAAC,EAAA,EAAAD,CAAAE,KAAAsU,GAAAtU,KALvEqL,oBAKuE,EAAArL,KAJvEoQ,WAIuE,EAAApQ,KAHvEyU,qBAGuE,EAAAzU,KAFvEwM,mBAEuE,EACnExM,KAAKqL,eAAiBA,EACtBrL,KAAKoQ,MAAQ,GACbpQ,KAAKyU,gBAAkB,EACvBzU,KAAKwM,eAAkC,IAAlBA,4DA2DX9J,GACV1C,KAAKyU,gBAAkBjT,KAAKkT,IAAIhS,EAAQiS,kBAAmB3U,KAAKyU,iBAChEzU,KAAKoQ,MAAMnL,KAAK,CACZtC,KAAK,GACLuK,IAAK,GACL0H,eAAgBlS,EAChB8J,cAAexM,KAAKwM,cACpBqI,MAAO,qDAISC,GACpB,IAAMC,EAAeD,EAAWhS,gBAAkBgS,EAAW9R,WAAa8R,EAAW1R,uBACrFpD,KAAKyU,gBAAkBjT,KAAKkT,IAAIK,EAAaJ,kBAAmB3U,KAAKyU,iBAErEzU,KAAKoQ,MAAMnL,KAAK,CACZtC,KAAMmS,EAAWnS,KACjBuK,IAAK,GACL2H,MAAO7U,KAAKgV,SAASD,GACrBH,eAAgBE,EAAWpS,QAC3B8J,cAAexM,KAAKwM,oEAIAsI,EAAgCG,GACxDjV,KAAKyU,gBAAkBjT,KAAKkT,IAAIO,EAAcN,kBAAmB3U,KAAKyU,iBACtEzU,KAAKoQ,MAAMnL,KAAK,CACZtC,KAAMmS,EAAWnS,KAAOmS,EAAWpS,QAAQZ,WAC3CoL,IAAK,oBACL0H,eAAgBK,EAChBzI,eAAe,EACfqI,MAAO,oDAIQnS,GACnB1C,KAAKyU,gBAAkBjT,KAAKkT,IAAIhS,EAAQiS,kBAAmB3U,KAAKyU,iBAChEzU,KAAKoQ,MAAMnL,KAAK,CACZtC,KAAK,IACLuK,IAAK,oBACL0H,eAAgBlS,EAChB8J,eAAe,EACfqI,MAAO,sCAILK,GAEN,MAAc,OAAXA,EAAGzV,KACKyV,EAAGpT,SAAS,OAGhBoT,EAAGpT,wDA5GYqT,EAAgCC,GACtD,IAAIC,EAAQ,IAAIf,EAA2Bc,GAG3C,OAFAD,EAAKjC,QAAQ7J,QAAQ,SAAA6L,GAAE,OAAIG,EAAMC,cAAcJ,KAC/CG,EAAMZ,gBAAkBH,EAA2BiB,gBAAgBF,EAAMZ,gBAAiBY,EAAMhK,gBACzFgK,wCAGWF,EAAmCC,GAE5CD,EAAK7B,gBAAgB,GAM9B,IANA,IAEIkC,EADA/M,EAAI,EAAGgN,EAAMN,EAAK7B,gBAAgB3S,OAC9BF,EAAI,IAAI6T,EAA2Bc,GAEvCM,EAA+B,KAE7BjN,EAAEgN,EAAIhN,IAER,IADA+M,EAAKL,EAAK7B,gBAAgB7K,cACTtH,KACbV,EAAE6U,cAAcE,GAChBE,EAAOF,MAFX,CAMA,IAAIG,EAAKH,EAGT,GAAGG,EAAG7S,gBAAiB,CACnBrC,EAAEmV,wBAAwBD,GAC1B,IAAIE,EAAYF,EAAG3S,WACnBvC,EAAEqV,uBAAuBD,GACzBH,EAAOG,OAEHF,EAAG9S,mBACP6S,EAAOC,EAAG3S,SAAS0S,GACnBjV,EAAEsV,4BAA4BJ,EAAID,KAGlCA,EAAOC,EAAG3S,SAAS0S,GACnBjV,EAAEmV,wBAAwBD,GAC1BlV,EAAEqV,uBAAuBJ,IAKjC,OADAjV,EAAEgU,gBAAkBH,EAA2BiB,gBAAgB9U,EAAEgU,gBAAiBhU,EAAE4K,gBAC7E5K,mCAGMqU,EAA+BM,GAE5C,IAAI3U,EAAI,IAAI6T,EAA2Bc,GAIvC,OAHA3U,EAAEmV,wBAAwBd,GAC1BrU,EAAEqV,uBAAuBhB,EAAW9R,YACpCvC,EAAEgU,gBAAkBH,EAA2BiB,gBAAgB9U,EAAEgU,gBAAiBhU,EAAE4K,gBAC7E5K,sCAwEQ0U,EAAwB9J,GACvC,GAAG8J,aAAgBlC,GACf,OAAOqB,EAA2B0B,mBAAmBb,EAAM,CACvD9J,eAAgBA,EAChBmB,eAAe,IAIvB,GAAG2I,aAAgB/B,GACf,OAAOkB,EAA2B2B,cAAcd,EAAM,CAClD9J,eAAgBA,EAChBmB,eAAe,IAIvB,MAAM,IAAI5K,MAAM,6DAA+DuT,YA1JlEb,GA8HViB,gBAAkB,SAAUzI,EAAezB,GAC9C,OAAGA,GAAkByB,EAAO,GAAK,EACzBA,EAAO,EACC,EAGHA,EAAQA,EAAO,EACZ,EAGTA,OCxIMoJ,eACjB,SAAAA,EAAYrQ,GAA4C,IAAA3F,EAAA,OAAAJ,OAAAC,EAAA,EAAAD,CAAAE,KAAAkW,IACpDhW,EAAAJ,OAAAgG,EAAA,EAAAhG,CAAAE,KAAAF,OAAAiG,EAAA,EAAAjG,CAAAoW,GAAAlQ,KAAAhG,KAAM6F,KACDuC,MAAQ,GAFuClI,wEAKpD,IAAIiW,EAAOnW,KAAKoW,UAChB,OAAID,EAIG7P,EAAAC,EAAAC,cAAA,SAAOK,UAAU,cACZP,EAAAC,EAAAC,cAAA,aACS2P,IALV,uCAUkB,IAAA9P,EAAArG,KACzBqV,EAAQf,GAA2B+B,YAAYrW,KAAK6F,MAAMiP,WAAY9U,KAAK6F,MAAMwF,gBAErF,OAAOgK,EAAMjF,MAAMjQ,IAAI,SAACmW,EAAK7N,GAAN,OACnBnC,EAAAC,EAAAC,cAAC+P,GAAD,CACIvS,IAAKyE,EACL9F,KAAM2T,EAAI3T,KACVuK,IAAKoJ,EAAIpJ,IACTV,cAAe8J,EAAI9J,cACnBoI,eAAgB0B,EAAI1B,eACpBvJ,eAAgBhF,EAAKR,MAAMwF,eAC3BoJ,gBAAiBY,EAAMZ,gBACvB+B,aAAc,kBAAMnQ,EAAKmQ,2DAIjCxW,KAAKoO,qBAlC+C5G,IAAMC,WAiD5DgP,eACF,SAAAA,EAAY5Q,GAA2B,IAAAiF,EAAA,OAAAhL,OAAAC,EAAA,EAAAD,CAAAE,KAAAyW,IACpC3L,EAAAhL,OAAAgG,EAAA,EAAAhG,CAAAE,KAAAF,OAAAiG,EAAA,EAAAjG,CAAA2W,GAAAzQ,KAAAhG,KAAM6F,KACDuC,MAAQ,CAAE1F,QAAS,MAFYoI,wEAI9B,IAAA4L,EAAA1W,KAAA2W,EACiE3W,KAAK6F,MAAnElD,EADHgU,EACGhU,KAAMuK,EADTyJ,EACSzJ,IAAKuH,EADdkC,EACclC,gBAAiBpJ,EAD/BsL,EAC+BtL,eAAgBmB,EAD/CmK,EAC+CnK,cAEpD,OAAOlG,EAAAC,EAAAC,cAAA,MAAIK,UAAWqG,GACV5G,EAAAC,EAAAC,cAAA,MAAIK,UAAU,QAAQlE,GACtB2D,EAAAC,EAAAC,cAAA,MAAIK,UAAU,SAAS7G,KAAKgV,YAC5B1O,EAAAC,EAAAC,cAAA,MAAIK,UAAU,OACVP,EAAAC,EAAAC,cAACyH,EAAD,CACI5C,eAAgBA,EAChBsB,aAAclB,EAAUG,QAAQ5L,KAAK4W,kBAAmBnC,EAAiB,KACzEjI,cAAeA,EACfC,UAAW,SAAApF,GAAI,OAAIqP,EAAKG,QAAQxP,OAExCf,EAAAC,EAAAC,cAAA,MAAIK,UAAU,SAAS7G,KAAK8W,uDAKxC,OAAO9W,KAAK6F,MAAM+O,eAAe5R,WAAW+T,oDAO5C,GAAG/W,KAAK6F,MAAM+O,eAAetT,aAAc,CACvC,IAAMkU,EAAKxV,KAAK6F,MAAM+O,eACtB,OAAOY,EAAG7S,KAAO3C,KAAKgX,eAAexB,EAAGpS,wBAG5C,OAAOpD,KAAKgX,eAAehX,KAAK6F,MAAM+O,eAAexR,2DAKrD,OAAGpD,KAAK6F,MAAM+O,eAAetT,aACdtB,KAAK6F,MAAM+O,eACR5R,WAEJlB,WAGP9B,KAAK6F,MAAM+O,eAAe5R,WAAWiU,2DAGhC/B,GACZ,OAAOA,EAAGpT,SAAoB,OAAXoT,EAAGzV,KAAgB,MAAQyV,EAAGzV,sCAG5C4H,GAEL,IAAM6N,EAAMlV,KAAK6F,MAAM+O,eAAexR,uBAC9BmJ,EAAwBlF,EAAxBkF,MAEJG,EAF4BrF,EAAjBsF,aAEQxD,MAAM,IAC7BuD,EAAIH,GAAuB,KAAdG,EAAIH,GAAgB,IAAM,IACvC,IAAIL,EAAMQ,EAAIT,KAAK,IAEfiL,EAAWlW,SAASkL,EAAK,GAC7BgJ,EAAGiC,SAASD,GAEZlX,KAAK6F,MAAM2Q,sBAlEShP,IAAMC,WC7CnB2P,GAda,CACxBxE,MAAO,SAASvK,EAAoBxD,GAG9BA,EAAI4E,QAAQ,CACV1E,UAAW,SAAC9E,GAAD,OAAkBW,GAAOyW,SAASpX,IAC7C+E,OAAQ,SAASzE,GACb,IAAI4U,EAAOvU,GAAOsB,MAAM3B,EAAEN,OAC1BoI,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAAC8Q,GAAD,CAAgCxC,WAAYK,EAAO9J,eAAgBhD,EAASgD,2CCHhHkM,OATf,WAEQ,OAASjR,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WAAW2Q,mBAAiB,QACpClR,EAAAC,EAAAC,cAAA,wBAAeF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,oCAAR,mBAAf,sEACAtB,EAAAC,EAAAC,cAAA,4FAAmFF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,gDAAR,wBAAnF,gBAAuXtB,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,iCAAR,eAAvX,2CACAtB,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,gDAAR,cAAkEtB,EAAAC,EAAAC,cAAA,kCCkE9EiR,OArEf,WAEQ,OAAOnR,EAAAC,EAAAC,cAAA,OAAKK,UAAU,sBACNP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,mBACXP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,cACXP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,sBAAlB,gCACJP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,aAA5B,sGACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,WAA5B,0EAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,uBAAlB,uBACJP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,eAA5B,wGACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,mBAA5B,sDACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,4BAA5B,yFAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,uBAAlB,wBACJP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,WAA5B,iCACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,UAA5B,gCACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,cAA5B,sCAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,uBAAlB,kBACJP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,WAA5B,6BACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,UAA5B,6BACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,cAA5B,6BACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,QAA5B,uCACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,WAA5B,yBACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,UAA5B,oBAAwDpD,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,sFAAR,MAAxD,YAIRtB,EAAAC,EAAAC,cAAA,OAAKK,UAAU,eACXP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,sBAAlB,gCAA4EP,EAAAC,EAAAC,cAAA,WAC5EF,EAAAC,EAAAC,cAAA,aACIF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,8FAAR,wDAIJtB,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,iBAAJ,uBACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,iBAAJ,gCACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,iBAAJ,iCACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,iBAAJ,uBACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,kBAAJ,sBACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,kBAAJ,wCACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,mBAAJ,mCAGRF,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,uBAAlB,OACAP,EAAAC,EAAAC,cAAA,sEAC8DF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,QADhF,2BACgHpD,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,kBADlI,UC1DrBgO,OAJf,SAAwB7R,GACpB,OAAOS,EAAAC,EAAAC,cAAA,SAAIX,EAAM6D,aCuCNiO,OAtCf,WAEQ,OAAOrR,EAAAC,EAAAC,cAAA,OAAKK,UAAU,aACVP,EAAAC,EAAAC,cAAA,uBACAF,EAAAC,EAAAC,cAAA,OAAKK,UAAU,iBACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,kBAAH,IAAqDP,EAAAC,EAAAC,cAAA,WAArD,oBACqBF,EAAAC,EAAAC,cAAA,sBADrB,4EACiHF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,6BAGvIpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,kBAAH,IAAqDP,EAAAC,EAAAC,cAAA,WAArD,4EAGAF,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,+BAAsBF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,eACxCpD,EAAAC,EAAAC,cAAA,6DAAoDF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,gCAI9EpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,iBAAH,IAAoDP,EAAAC,EAAAC,cAAA,WAApD,SACMF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,UAD9B,8CAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,kBAAH,IAAqDP,EAAAC,EAAAC,cAAA,WAArD,iDAC8CF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,aADtE,QAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,kBAAH,IAAgDP,EAAAC,EAAAC,cAAA,WAAhD,OACIF,EAAAC,EAAAC,cAACuD,EAAD,CAAaL,KAAK,aADtB,mBAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,kBAAH,IAAgDP,EAAAC,EAAAC,cAAA,WAAhD,oEACiEF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,6BAAR,6BADjE,kEACiMtB,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,uDAAR,kBADjM,uBClClBgQ,GAAc,EAmBCC,cAcjB,SAAAA,EAAYC,EAAgCxP,GAAcxI,OAAAC,EAAA,EAAAD,CAAAE,KAAA6X,GAAA7X,KAZ1D+X,QAAkBH,GAYuC5X,KAXzDqL,oBAWyD,EAAArL,KAVzD4D,WAAqB,EAUoC5D,KATzD+K,aASyD,EAAA/K,KARzDgY,oBAQyD,EAAAhY,KAPzDyK,oBAOyD,EAAAzK,KANzDiY,sBAMyD,EAAAjY,KALzDkY,mBAKyD,EAAAlY,KAJzDsI,SAIyD,EAAAtI,KAHzDmY,qBAGyD,EAAAnY,KAFzDoY,qBAEyD,EACrDpY,KAAKyK,eAAiB,GACtBzK,KAAKgY,eAAiB,GACtBhY,KAAK+K,QAAU+M,EAAY/M,SAAW,WACtC/K,KAAKsI,IAAMA,EAEXtI,KAAKqL,eAAiByM,EAAYzM,iBAAkB,EACpDrL,KAAKiY,iBAAmBH,EAAYC,SAAW,GAC/C/X,KAAKkY,cAAuC,MAAvBJ,EAAYC,SAAmB/X,KAAK+X,QAAU/X,KAAKiY,iBACxEjY,KAAK4D,UAAoB,SAAR0E,IAA4C,IAA1BwP,EAAYlU,UAC/C5D,KAAKmY,gBAAkBL,EAAYO,kBAAoB,EACvDrY,KAAKoY,gBAAkBN,EAAYM,6EAGtBnY,EAAgB2K,GAC7B,IAAM5G,EA4DHxC,KAAK8W,KAAmB,IAAd9W,KAAK+W,UAAqBC,KAAKC,MA3D5CzY,KAAKyK,eAAetD,QAAQ,CAACnD,MAAK/D,QAAO2K,SACzClJ,IAAIwC,MAAJ,yBAAAC,OAAmClE,IACnCD,KAAK0Y,+DAIL1Y,KAAKyK,eAAiB,GACtBzK,KAAK0Y,gEAIL1Y,KAAKqL,gBAAkBrL,KAAKqL,eAC5BrL,KAAK0Y,kDAGAnU,GACLvE,KAAKgY,eAAe/S,KAAKV,4CAGZ,IAAArE,EAAAF,KACbA,KAAKgY,eAAe3O,QAAQ,SAAAzE,GAAC,OAAIA,EAAE1E,wCAG5ByY,GACN3Y,KAAK+K,QAAU4N,EACf3Y,KAAK0Y,2DAIN1Y,KAAK4D,WAAa5D,KAAK4D,UACvB5D,KAAK0Y,yDAIL1Y,KAAKmY,kBACLnY,KAAK0Y,6DAIL,OAA4B,IAAzB1Y,KAAKoY,kBAERpY,KAAKoY,iBAAkB,EACvBpY,KAAK0Y,kBACE,4CAIP,MAAO,CACHrN,eAAgBrL,KAAKqL,eACrBN,QAAS/K,KAAK+K,QACdgN,QAAS/X,KAAK+X,QACdnU,UAAW5D,KAAK4D,UAChByU,iBAAkBrY,KAAKmY,gBACvBC,gBAAiBpY,KAAKoY,0BCtGlC,IAEeQ,GAAA,CACXC,iBADW,WAEP,IAAIC,EAAOjR,OAAOU,aAAaC,QAJtB,YAKT,IAAIsQ,EACA,MAAO,GAGX,IACI,OAAO1T,KAAKlD,MAAM4W,GAEtB,MAAMtD,GAEF,OADAtQ,QAAQS,MAAM,gDAAkDmT,EAAMtD,GAC/D,KAIfuD,MAhBW,SAgBJ1Q,GAAoB,IAAAnI,EAAAF,KACvBqI,EAASkC,SAAS,kBAAMrK,EAAK4X,YAAYzP,MAG7CyP,YApBW,SAoBCzP,GACRE,aAAayQ,QAvBJ,WAuBsB5T,KAAKC,UAAUgD,EAAS4Q,qBCbzDC,GAAsB,iBACtBC,GAAmB,CAAC,OAAQ,0BAA2B,QAAQ,oBA6DtDC,ICWAC,GAzEK,CAChBzG,MAAO,SAASvK,EAAoBxD,GAEhCA,EAAIjB,UAAYyE,EAASzE,UACzByE,EAASkC,SAAS,kBAAM1F,EAAIjB,UAAYyE,EAASzE,YAEjDiB,EAAI4E,QAAQ,OAAQ,SAAClJ,GAAD,OAAqB8H,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAAC8S,GAAD,SAC5EzU,EAAI4E,QAAQ,QAAS,kBAAMpB,EAASkR,wBACpC1U,EAAI4E,QAAQ,KAAM,kBAAMpB,EAASwC,yBACjChG,EAAI4E,QAAQ,OAAQ,kBAAMpB,EAASmR,WAAW,UAC9C3U,EAAI4E,QAAQ,QAAS,kBAAMpB,EAASmR,WAAW,WAC/C3U,EAAI4E,QAAQ,WAAY,kBAAMpB,EAASmR,WAAW,cAClD3U,EAAI4E,QAAQ,QAAS,SAAClJ,GAAD,OAAqB8H,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACiT,GAAD,SAC7E5U,EAAI4E,QAAQ,WAAY,SAAClJ,GAAD,OAAqB8H,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACkT,GAAD,SAChF7U,EAAI4E,QAAQ,OAAQ,SAAClJ,GAAD,OAAqB8H,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACmT,GAAD,CAAgBjQ,KAAMkQ,YAClG/U,EAAI4E,QAAQ,WAAY,cACxB5E,EAAI4E,QAAQ,SAAU,SAAClJ,GACnB8H,EAASwR,kBACTxR,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACmT,GAAD,CAAgBjQ,KAAI,eAAAvF,OAAiBkE,EAASzE,gBAGrFiB,EAAI4E,QAAQ,SAAU,SAAClJ,GAEhB8H,EAASyR,oBACR3H,EAAmB,CAACM,cAAe,iBAAkBC,YAAa,YAGlEP,EAAmB,CAACM,cAAe,iBAAkBC,YAAa,iBAGtErK,EAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACmT,GAAD,CAAgBjQ,KAAI,4HAG3D7E,EAAI4E,QAAQ,QAAS,SAAClJ,GAClB4R,EAAmB,CACfM,cAAe,UACfC,YAAa,oBAID,SAAjBrK,EAASC,KAGRzD,EAAI4E,QAAQ,CACR1E,UAAW,SAACqE,GAAD,OAAwC,IAAzBA,EAAE9G,QAAQ,YACpC0C,OAAQ,SAACoE,GAEL,IAAwB7I,EAelBkJ,EAAUL,EAAEnJ,MAAMyI,UAAU,GAAGrE,OAC/B0K,GAhBkBxO,EAgBMkJ,EAf1BvE,QAAQxD,IAAInB,GAEI,IAAbA,EAAEI,OACM,mBAAqB4H,aAAaC,QAAQ0Q,IAEvC,UAAN3Y,GACJgI,aAAawR,WAAWb,IACjB,oCAGX3Q,aAAayQ,QAAQE,GAAqB3Y,GAC1C,kCAAA4D,OAAyC5D,KAK7C8H,EAASwK,iBAAiBzJ,EAAEnJ,MAAOqG,EAAAC,EAAAC,cAACmT,GAAD,CAAgBjQ,KAAMqF,QAKrElK,EAAImV,QAAQ,SAAC/Z,EAAeyF,GAAhB,OAA+B2C,EAASwK,iBAAiB5S,EAAOqG,EAAAC,EAAAC,cAACsM,EAAD,CAAiBtH,aAAc9F,EAAI5D,kBCxExGmY,OAPf,SAAgCpU,GAE5B,OAAOS,EAAAC,EAAAC,cAAA,OAAKK,UAAU,UACFP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,SAAf,uDAAgEP,EAAAC,EAAAC,cAAA,cAASX,EAAM5F,OAA/E,SCOlBia,GHGN,WACI,IAAM5R,EAA+B,mBAAzBT,OAAOC,SAASqS,KAA4B,OAAS,SAgDrE,SAAqB7R,GACP,QAAPA,GACC5G,IAAI0Y,SAAS,SACb1Y,IAAIwC,MAAJ,mCAAAC,OAA6CmE,KAE7C5G,IAAI0Y,SAAS,QAnDjBC,CAAY/R,GAEZ,IAAMD,EAUV,SAAwBC,GACpB,IAAIgS,EAAY1B,GAAcC,mBACxBxQ,EAAW,IAAIwP,GAASyC,EAAWhS,GAGzC,OAFAsQ,GAAcG,MAAM1Q,GACpB3G,IAAIwC,MAAM,uBAAwBmE,GAC3BA,EAfUkS,CAAejS,GAGhC,MAAO,CACHD,WACAmS,gBAaR,SAA4BnS,GACxB,IAAIoS,EAAW9R,EAAKM,QAAQpB,OAAOC,SAASa,MAExC6R,EAkBR,WACI,IAAM1B,EAAOvQ,aAAaC,QAAQ0Q,IAClC,OAAe,MAARJ,EAAe,CAACA,GAAQ,GApBT4B,GAetB,OAb6B,GAA1BF,EAAgB7Z,SACf6Z,EAAkBrB,IAEnB9Q,EAAS6P,gBACRsC,EAAkB,CAAC,aAGpBC,EAAS9Z,OAAS,IACjB6Z,EAAkBC,GAGtB/Y,IAAIwC,MAAM,6BAA8BsW,GAEjCA,EAnCiBG,CAAmBtS,IGT/B+Q,GAmBZC,GAAYzG,MAAMsH,GAAQ7R,SAAUxD,GACpC8N,EAAoBC,MAAMsH,GAAQ7R,SAAUxD,GAC5CuS,GAAoBxE,MAAMsH,GAAQ7R,SAAUxD,GAG5CA,EAAI4E,QAAQ,CACR1E,UAAW,kBAAM,GACjBC,OAAQ,SAACzE,GAAD,OAAqB2Z,GAAQ7R,SAASwK,iBAAiBtS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACoU,GAAD,CAAwB3a,MAAOM,EAAEN,YAtBjH,IAAI4a,GAAOvU,EAAAC,EAAAC,cAACsU,EAAD,CAASzS,SAAU6R,GAAQ7R,WACtC0S,IAASC,OAAOH,GAAMI,SAASC,eAAe,SAS1CxZ,IAAIwC,MAAM,6BAA8BgW,GAAQM,iBAChDN,GAAQM,gBAAgBnR,QAAQ,SAAA9I,GAAC,OAAIsE,EAAI+E,QAAQrJ,EAAG,CAACkD,YAAY,MANrEyW,GAAQ7R,SAAS8S,gBAEjBzZ,IAAIwC,MAAM","file":"static/js/main.80718380.chunk.js","sourcesContent":["import { NumberBase } from \"./expression-interfaces\";\r\n\r\nconst decimalRegex = /^-?\\d+$/;\r\nconst hexRegex = /^-?0x[0-9,a-f]+$/i;\r\nconst binRegex = /^-?0b[0-1]+$/i;\r\nconst operatorRegex = /^<<|>>|<<<|\\&|\\|\\^|~$/;\r\n\r\ninterface ParserConfig {\r\n regex: RegExp,\r\n radix: number,\r\n base: NumberBase,\r\n prefix: string|RegExp\r\n}\r\n\r\nexport interface ParsedNumber {\r\n value: number;\r\n base: NumberBase;\r\n input: string;\r\n}\r\n\r\nvar knownParsers : ParserConfig[] = [\r\n { regex: decimalRegex, radix: 10, base: 'dec', prefix: '^$' },\r\n { regex: hexRegex, radix: 16, base: 'hex', prefix:/0x/i },\r\n { regex: binRegex, radix: 2, base: 'bin', prefix:/0b/i }];\r\n\r\n\r\nclass NumberParser {\r\n\r\n parsers: ParserConfig[];\r\n\r\n constructor(parsers: ParserConfig[])\r\n {\r\n this.parsers = parsers;\r\n }\r\n\r\n parse (input : string) : ParsedNumber | null {\r\n return this.parsers.map(p => this.applyParser(p, input)).reduce((c, n) => c || n);\r\n };\r\n\r\n parseOperator (input: string) : string | null {\r\n var m = input.match(input);\r\n \r\n if(m == null || m.length == 0) {\r\n return null;\r\n }\r\n\r\n return m[0];\r\n };\r\n\r\n applyParser(parser : ParserConfig, rawInput: string) : ParsedNumber | null {\r\n \r\n if(!parser.regex.test(rawInput)) {\r\n return null;\r\n }\r\n \r\n var value = parseInt(rawInput.replace(parser.prefix, ''), parser.radix);\r\n \r\n return {\r\n value: value,\r\n base: parser.base,\r\n input: rawInput\r\n } \r\n }\r\n}\r\n\r\nconst numberParser = new NumberParser(knownParsers);\r\n\r\nexport {numberParser};","import {numberParser} from './numberParser';\r\nimport { ExpressionInputItem, NumberBase } from './expression-interfaces';\r\n\r\nvar globalId : number = 1;\r\n\r\n// Represents numeric value\r\nexport default class NumericOperand implements ExpressionInputItem {\r\n id: number;\r\n value: number;\r\n base: NumberBase;\r\n lengthInBits: number;\r\n isExpression: boolean;\r\n\r\n constructor(value : number, base?: NumberBase) {\r\n this.id = globalId++;\r\n this.value = value;\r\n this.base = base || \"dec\";\r\n this.lengthInBits = NumericOperand.getBitLength(this.value);\r\n this.isExpression = false;\r\n }\r\n \r\n getLengthInBits() {\r\n if(this.value < 0) {\r\n return 32;\r\n }\r\n return Math.floor(Math.log(this.value) / Math.log(2)) + 1;\r\n };\r\n\r\n getOtherBase(kind?: NumberBase) : NumberBase {\r\n switch(kind || this.base) {\r\n case 'dec': \r\n case 'bin':\r\n return 'hex';\r\n case 'hex': return 'dec';\r\n default : throw new Error(kind + \" kind doesn't have opposite kind\")\r\n }\r\n };\r\n\r\n toString(base?: NumberBase) : string {\r\n return NumericOperand.toBaseString(this.value, base || this.base);\r\n }\r\n\r\n toOtherKindString() : string {\r\n return this.toString(this.getOtherBase());\r\n }\r\n\r\n toDecimalString() {\r\n return this.toString('dec');\r\n }\r\n\r\n toHexString() {\r\n return this.toString('hex');\r\n }\r\n\r\n toBinaryString() : string {\r\n return this.toString('bin');\r\n }\r\n\r\n setValue(value : number) {\r\n this.value = value;\r\n this.lengthInBits = NumericOperand.getBitLength(value);\r\n }\r\n\r\n evaluate() : NumericOperand {\r\n return this;\r\n }\r\n\r\n getUnderlyingOperand() : NumericOperand {\r\n return this\r\n }\r\n \r\n static getBitLength(num : number) {\r\n return Math.floor(Math.log(num) / Math.log(2)) + 1;\r\n } \r\n \r\n static getBase(kind : string){\r\n switch (kind){\r\n case 'bin': return 2;\r\n case 'hex': return 16;\r\n case 'dec': return 10;\r\n }\r\n };\r\n\r\n static create(value : number, base? : NumberBase) {\r\n return new NumericOperand(value, base || \"dec\");\r\n };\r\n\r\n static parse(input: string) : NumericOperand {\r\n \r\n var parsed = numberParser.parse(input);\r\n\r\n if(!parsed) {\r\n throw new Error(input + \" is not a valid number\");\r\n }\r\n\r\n return new NumericOperand(parsed.value, parsed.base);\r\n }\r\n\r\n static toBaseString(value : number, base : NumberBase) : string {\r\n switch(base) {\r\n case 'hex':\r\n var hexVal = Math.abs(value).toString(16);\r\n return value >= 0 ? '0x' + hexVal : '-0x' + hexVal;\r\n case 'bin':\r\n return (value>>>0).toString(2);\r\n case 'dec':\r\n return value.toString(10);\r\n default:\r\n throw new Error(\"Unexpected kind: \" + base)\r\n }\r\n };\r\n\r\n static toHexString (hex : string) {\r\n return hex.indexOf('-') === 0 ? '-0x' + hex.substr(1) : '0x' + hex;\r\n };\r\n}","import NumericOperand from './NumericOperand';\r\nimport { ExpressionInputItem } from './expression-interfaces';\r\n\r\nexport default class ExpressionOperand implements ExpressionInputItem {\r\n expressionString: string;\r\n operand: ExpressionInputItem;\r\n sign: string;\r\n isExpression: boolean;\r\n isShiftExpression: boolean;\r\n isNotExpression: boolean;\r\n\r\n constructor(expressionString : string, operand : ExpressionInputItem, sign : string) {\r\n this.expressionString = expressionString;\r\n this.operand = operand;\r\n this.sign = sign;\r\n this.isExpression = true;\r\n this.isShiftExpression = this.sign.indexOf('<') >= 0 || this.sign.indexOf('>')>= 0;\r\n this.isNotExpression = this.sign === '~';\r\n }\r\n \r\n evaluate(operand?: NumericOperand) : NumericOperand {\r\n if (operand instanceof ExpressionOperand) {\r\n throw new Error('value shouldnt be expression'); \r\n }\r\n\r\n var evaluatedOperand = this.operand.evaluate();\r\n\r\n var str = '';\r\n if(this.sign == '~'){\r\n str = '~' + evaluatedOperand.value;\r\n } else {\r\n if(operand == null)\r\n throw new Error(\"Other is required for expression: \" + this.expressionString)\r\n\r\n str = operand.value + this.sign + evaluatedOperand.value;\r\n }\r\n\r\n return NumericOperand.create(eval(str), evaluatedOperand.base);\r\n }\r\n\r\n getUnderlyingOperand() : NumericOperand {\r\n return this.operand.getUnderlyingOperand();\r\n }\r\n\r\n toString(): string {\r\n return this.sign + this.operand.toString();\r\n }\r\n}","export default {\r\n plainObject: function(obj : any) : boolean {\r\n return typeof obj == \"object\" && !(obj instanceof Array) && obj instanceof Object;\r\n },\r\n\r\n aFunction: function(obj : any) : boolean {\r\n return typeof obj == \"function\";\r\n },\r\n\r\n string: function(obj : any) : boolean {\r\n return typeof obj == \"string\";\r\n },\r\n\r\n array: function(obj : any) : boolean {\r\n return obj instanceof Array;\r\n },\r\n\r\n number: function(obj : any) : boolean {\r\n return typeof obj == \"number\" && !isNaN(obj)\r\n }\r\n}","import is from '../core/is';\r\nimport log from 'loglevel';\r\n\r\nexport type CommandInput = {\r\n input: string;\r\n options: CommandOptions\r\n}\r\n\r\nexport type CommandOptions = {\r\n doNotTrack: boolean;\r\n}\r\n\r\ntype HandleFunction = (input: CommandInput) => void;\r\ntype InputErrorHandler = (input:string, error: Error) => void;\r\n\r\nconst DEFUALT_COMMAND_OPTIONS : CommandOptions = {\r\n doNotTrack: false\r\n};\r\n\r\nexport interface ICommandHandler {\r\n canHandle (input:string) : boolean;\r\n handle: HandleFunction;\r\n}\r\n\r\nexport class CmdShell {\r\n debugMode: boolean;\r\n handlers: ICommandHandler[];\r\n errorHandler: InputErrorHandler | null; \r\n constructor() {\r\n this.handlers = [];\r\n this.debugMode = false;\r\n this.errorHandler = null;\r\n };\r\n\r\n execute (rawInput: string, ops?: CommandOptions ) {\r\n\r\n log.debug(`Executing command: ${rawInput}`);\r\n\r\n ops = ops || Object.assign({}, DEFUALT_COMMAND_OPTIONS);\r\n\r\n var input = rawInput.trim().toLowerCase();\r\n var handler = this.findHandler(input);\r\n\r\n if(handler != null) {\r\n if(this.debugMode) {\r\n this.invokeHandler(input, handler, ops);\r\n } else {\r\n try {\r\n this.invokeHandler(input, handler, ops);\r\n } catch (e) {\r\n this.handleError(input, e);\r\n }\r\n }\r\n }\r\n else {\r\n log.debug(`Handled is not found for command: ${rawInput}`)\r\n this.handleError(input, new Error(\"Unsupported expression: \" + input.trim()));\r\n }\r\n };\r\n\r\n onError(h: InputErrorHandler) {\r\n this.errorHandler = h;\r\n }\r\n \r\n command (cmd : string | object, handler? : any) {\r\n var h = this.createHandler(cmd, handler);\r\n if(h == null){\r\n console.warn('unexpected set of arguments: ', JSON.stringify(arguments));\r\n return;\r\n }\r\n\r\n if(!is.aFunction(h.canHandle)) {\r\n console.warn('handler is missing \"canHandle\" function. registration denied.');\r\n return;\r\n }\r\n\r\n if(!is.aFunction(h.handle)) {\r\n console.warn('handler is missing \"handle\" function. registration denied.');\r\n return;\r\n }\r\n\r\n this.handlers.push(h);\r\n };\r\n\r\n createHandler (cmd : string | object, handler : HandleFunction) : ICommandHandler | null {\r\n if(is.plainObject(cmd)) {\r\n return cmd as ICommandHandler;\r\n }\r\n\r\n if(is.string(cmd)) {\r\n return { canHandle: function (input) { return input === cmd; }, handle: handler };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n findHandler (input: string) : ICommandHandler | null {\r\n return this.handlers.filter(h => h.canHandle(input))[0];\r\n };\r\n\r\n invokeHandler (input : string, handler : ICommandHandler, options: CommandOptions) {\r\n\r\n var cmdResult = handler.handle({ input: input, options });\r\n if(cmdResult != null) {\r\n log.debug(cmdResult);\r\n }\r\n };\r\n\r\n handleError (input: string, err: Error) {\r\n if(this.debugMode)\r\n console.error(input, err);\r\n\r\n if(this.errorHandler != null)\r\n this.errorHandler(input, err);\r\n }\r\n}\r\n\r\nexport default new CmdShell();","import React from 'react';\r\nimport log from 'loglevel';\r\n\r\nexport interface IInputBoxProps\r\n{\r\n onCommandEntered: (input :string) => void;\r\n}\r\n\r\nexport default class InputBox extends React.Component {\r\n history: string[];\r\n historyIndex: number;\r\n nameInput: HTMLInputElement | null;\r\n\r\n constructor(props: IInputBoxProps) {\r\n super(props);\r\n this.nameInput = null;\r\n this.history = [];\r\n this.historyIndex = -1;\r\n }\r\n\r\n componentDidMount(){\r\n if(this.nameInput != null)\r\n this.nameInput.focus();\r\n }\r\n\r\n render() {\r\n return { this.nameInput = input; }} \r\n onKeyUp={e => this.onKeyUp(e)}\r\n onKeyDown={e => this.onKeyDown(e)}\r\n className=\"expressionInput mono\"\r\n placeholder=\"type expression like '1>>2' or 'help' \"\r\n autoComplete=\"off\"/>;\r\n }\r\n\r\n onKeyUp(e: any) {\r\n var input = e.target;\r\n if (e.keyCode != 13 || input.value.trim().length == 0) {\r\n return;\r\n }\r\n \r\n var commandInput = input.value;\r\n this.history.unshift(commandInput);\r\n this.historyIndex = -1;\r\n\r\n input.value = ''; \r\n this.props.onCommandEntered(commandInput);\r\n }\r\n\r\n onKeyDown(args: any) {\r\n\r\n if(args.keyCode == 38) {\r\n var newIndex = this.historyIndex+1;\r\n\r\n if (this.history.length > newIndex) { // up\r\n args.target.value = this.history[newIndex];\r\n this.historyIndex = newIndex;\r\n }\r\n\r\n args.preventDefault();\r\n return;\r\n }\r\n\r\n if(args.keyCode == 40) {\r\n if(this.historyIndex > 0) { // down\r\n args.target.value = this.history[--this.historyIndex];\r\n }\r\n\r\n args.preventDefault();\r\n }\r\n }\r\n}","import React from 'react';\r\nimport AppState from '../AppState';\r\n\r\n\r\ntype DisplayResultProps = {\r\n appState: AppState,\r\n inputHash: string,\r\n input: string,\r\n key: number,\r\n onRemove?: (i: number) => void;\r\n}\r\n\r\nexport default class DisplayResultView extends React.Component {\r\n render() {\r\n\r\n return
\r\n
\r\n \r\n >{this.props.input}\r\n #\r\n
\r\n
\r\n {this.props.children}\r\n
\r\n
;\r\n }\r\n}\r\n\r\n","import AppState from \"../AppState\";\r\nimport React from \"react\";\r\nimport './DebugIndicators.css';\r\n\r\nfunction DebugIndicators(props: {appState: AppState}) {\r\n\r\n const list = [];\r\n const state = props.appState;\r\n\r\n if(props.appState.env != 'prod') {\r\n list.push(state.env);\r\n }\r\n\r\n if(props.appState.debugMode) {\r\n list.push(\"debug\");\r\n }\r\n\r\n if(localStorage.getItem('TrackAnalytics') === 'false') {\r\n list.push(\"notrack\");\r\n }\r\n\r\n if(list.length == 0)\r\n return null;\r\n\r\n return
\r\n {list.map(i => [{i.substring(0,1)}] )}\r\n
\r\n}\r\n\r\nexport default DebugIndicators;","export default {\r\n encodeHash: function(input:string):string {\r\n return encodeURIComponent(input.trim().replace(/\\s/g,','));\r\n },\r\n decodeHash: function(hashValue:string):string {\r\n return decodeURIComponent(hashValue.replace(/^\\#/, '')).replace(/,/g,' ');\r\n },\r\n getArgs: function (hashValue:string) : string[] {\r\n\r\n var decodedHash = this.decodeHash(hashValue);\r\n var args : string[] = [];\r\n\r\n splitHashList(decodedHash).forEach(function(value) {\r\n args.push(value);\r\n });\r\n\r\n return args;\r\n }\r\n};\r\n\r\nfunction splitHashList(str: string) : string[] {\r\n\r\n return str.split('||').filter(s => s.length > 0);\r\n}","import { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React from 'react';\r\nimport cmd from '../../shell/cmd';\r\n\r\ntype CommandLinkProps = {\r\n command?:string;\r\n text:string;\r\n icon?: IconDefinition\r\n}\r\n\r\nfunction CommandLink({icon, command, text}: CommandLinkProps) {\r\n \r\n const onClick = () => cmd.execute(command || text);\r\n\r\n if(icon != null)\r\n return {text};\r\n\r\n return {text};\r\n}\r\n\r\nexport default CommandLink;","import React from 'react';\r\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\r\nimport { faEnvelope, faDonate } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { faTwitter, faGithub} from \"@fortawesome/free-brands-svg-icons\";\r\nimport './TopLinks.css';\r\nimport CommandLink from '../../core/components/CommandLink';\r\n\r\nfunction TopLinks() {\r\n return ;\r\n}\r\n\r\nexport default TopLinks;","import React from 'react';\r\nimport InputBox from './InputBox';\r\nimport DisplayResultView from './DisplayResultView';\r\nimport AppState, { CommandResultView } from '../AppState';\r\nimport cmd from '../cmd';\r\nimport log from 'loglevel';\r\nimport DebugIndicators from './DebugIndicators';\r\nimport hash from '../../core/hash';\r\nimport TopLinks from './TopLinks';\r\n\r\n\r\ntype AppRootProps = {\r\n appState: AppState, \r\n};\r\n\r\ntype AppRootState = {\r\n uiTheme: string,\r\n emphasizeBytes: boolean,\r\n commandResults: CommandResultView[]\r\n}\r\n\r\nexport default class AppRoot extends React.Component {\r\n \r\n componentWillMount() {\r\n this.refresh();\r\n this.props.appState.onChange(() => this.refresh());\r\n }\r\n\r\n refresh() {\r\n this.setState(this.props.appState);\r\n }\r\n \r\n getIndicator(value : boolean) {\r\n return value ? 'on' : 'off';\r\n }\r\n\r\n getResultViews() : JSX.Element[] {\r\n\r\n var results = this.state.commandResults.map((r, i) => \r\n \r\n {r.view}\r\n );\r\n return results;\r\n }\r\n\r\n toggleEmphasizeBytes() {\r\n this.props.appState.toggleEmphasizeBytes();\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n

BitwiseCmd\r\n

\r\n \r\n
\r\n\r\n
\r\n cmd.execute(input)} />\r\n\r\n \r\n this.toggleEmphasizeBytes()}>[em]\r\n \r\n
\r\n\r\n
\r\n {this.getResultViews()}\r\n
\r\n
;\r\n }\r\n}","import React from 'react';\r\n\r\nfunction ErrorResultView(props : {errorMessage:string}) {\r\n \r\n return
\r\n
{props.errorMessage}
\r\n
;\r\n}\r\n\r\nexport default ErrorResultView;\r\n","const formatter = {\r\n formatString: function(num: number, kind: string) : string {\r\n return num.toString(getBase(kind || \"bin\"));\r\n },\r\n padLeft: function (str: string, length: number, symbol: string) : string {\r\n var sb = Array.prototype.slice.call(str), symbol = symbol || \"0\";\r\n\r\n if(length == null) {\r\n return str;\r\n }\r\n\r\n while(length > sb.length) {\r\n sb.unshift(symbol);\r\n }\r\n\r\n return sb.join('');\r\n },\r\n bin(number: number) {\r\n return this.formatString(number, 'bin');\r\n },\r\n emBin(number: number) {\r\n return this.padLeft(this.bin(number), 8, '0');\r\n }\r\n};\r\n\r\nfunction getBase(kind:string) : number {\r\n switch (kind){\r\n case 'bin': return 2;\r\n case 'hex': return 16;\r\n case 'dec': return 10;\r\n }\r\n\r\n throw new Error(\"Unsupported kind: \" + kind);\r\n}\r\n\r\nexport default formatter;\r\nconst emBin = formatter.emBin;\r\nexport {emBin};","import React from 'react';\r\n\r\nexport type BinaryStringViewProps = {\r\n allowFlipBits?: boolean;\r\n binaryString: string;\r\n onFlipBit?: (input: FlipBitEventArg) => void;\r\n emphasizeBytes?: boolean;\r\n className?:string\r\n};\r\n\r\nexport type FlipBitEventArg = {\r\n index: number;\r\n binaryString: string;\r\n $event: any;\r\n newBinaryString: string, \r\n};\r\n\r\nexport default class BinaryStringView extends React.Component {\r\n render() {\r\n return {this.getChildren()}\r\n }\r\n\r\n onBitClick(index: number, e : any) {\r\n if(!this.props.allowFlipBits || !this.props.onFlipBit) {\r\n return;\r\n }\r\n\r\n if(!this.props.onFlipBit) {\r\n \r\n }\r\n\r\n const arr = this.props.binaryString.split('');\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n const newBinaryString = arr.join('');\r\n\r\n this.props.onFlipBit({ index: index, binaryString: this.props.binaryString, $event: e, newBinaryString }); \r\n }\r\n\r\n getChildren() {\r\n var bits = this.createBits(this.props.binaryString.split(''));\r\n \r\n if(this.props.emphasizeBytes) {\r\n return this.splitIntoBytes(bits);\r\n }\r\n\r\n return bits;\r\n }\r\n\r\n createBits(bitChars:string[]) : JSX.Element[] {\r\n const allowFlipBits = this.props.allowFlipBits || false;\r\n const css = allowFlipBits ? ' flipable' : ''\r\n\r\n return bitChars.map((c, i) => {\r\n var className = c == '1' ? `one${css}` : `zero${css}`;\r\n return this.onBitClick(i, e)}>{c}\r\n });\r\n }\r\n\r\n splitIntoBytes(bits: JSX.Element[]) {\r\n const bytes = [];\r\n\r\n var key = 0;\r\n while(bits.length > 0) {\r\n bytes.push({bits.splice(0, 8)});\r\n }\r\n \r\n return bytes;\r\n }\r\n}","import React from 'react';\r\nimport formatter from '../../core/formatter'\r\nimport BinaryStringView from '../../core/components/BinaryString';\r\nimport './IpAddressView.css';\r\nimport { IpAddress, OctetNumber } from '../models';\r\n\r\ntype IpAddressViewProps = {\r\n ipAddresses: IpAddress[]\r\n};\r\n\r\nexport class IpAddressView extends React.Component \r\n{\r\n \r\n render() { \r\n return \r\n \r\n {this.props.ipAddresses.map((ip, i) => \r\n \r\n \r\n )}\r\n \r\n
{ip.toString()}\r\n {this.bin(ip.firstByte, 1, ip)}.\r\n {this.bin(ip.secondByte, 2, ip)}.\r\n {this.bin(ip.thirdByte, 3, ip)}.\r\n {this.bin(ip.fourthByte, 4, ip)}\r\n
;\r\n }\r\n\r\n bin(value: number, octetNumber: OctetNumber, ip: IpAddress) {\r\n return this.onFlippedBit(e.newBinaryString, octetNumber, ip)} />;\r\n }\r\n \r\n onFlippedBit(binaryString: string, number: OctetNumber, ip : IpAddress) {\r\n ip.setOctet(number, parseInt(binaryString, 2));\r\n this.forceUpdate();\r\n }\r\n};\r\n\r\nfunction fmt(num: number) : string {\r\n return formatter.padLeft(formatter.formatString(num, 'bin'), 8, '0');\r\n}\r\n\r\nexport default IpAddressView;","import {emBin} from \"../core/formatter\";\r\n\r\nexport type OctetNumber = 1 | 2 | 3 | 4;\r\nexport type NetworkClass = 'a' | 'b' | 'c' | 'd' | 'e';\r\n\r\nexport class IpAddressWithSubnetMask {\r\n maskBits: number;\r\n ipAddress: IpAddress;\r\n\r\n constructor(ipAddress: IpAddress, maskBits: number) {\r\n this.ipAddress = ipAddress;\r\n this.maskBits = maskBits;\r\n }\r\n\r\n toString() {\r\n return `${this.ipAddress.toString()}/${this.maskBits}`;\r\n }\r\n}\r\n\r\nexport class IpAddress {\r\n\r\n firstByte: number;\r\n secondByte: number;\r\n thirdByte: number;\r\n fourthByte: number;\r\n\r\n constructor(firstByte: number, secondByte: number, thirdByte: number, fourthByte: number) {\r\n this.firstByte = firstByte;\r\n this.secondByte = secondByte;\r\n this.thirdByte = thirdByte;\r\n this.fourthByte = fourthByte;\r\n }\r\n\r\n toString(): string {\r\n return `${this.firstByte}.${this.secondByte}.${this.thirdByte}.${this.fourthByte}`;\r\n }\r\n\r\n toBinaryString() {\r\n \r\n return `${emBin(this.firstByte)}).${emBin(this.secondByte)}.${emBin(this.thirdByte)}.${emBin(this.fourthByte)}`;\r\n }\r\n\r\n clone(): IpAddress {\r\n return new IpAddress(this.firstByte, this.secondByte, this.thirdByte, this.fourthByte);\r\n }\r\n\r\n setOctet(octet: OctetNumber, value: number) {\r\n switch (octet) {\r\n case 1:\r\n this.firstByte = value;\r\n break;\r\n case 2:\r\n this.secondByte = value;\r\n break;\r\n case 3:\r\n this.thirdByte = value;\r\n break;\r\n case 4:\r\n this.fourthByte = value;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport class SubnetCommand {\r\n input: IpAddressWithSubnetMask;\r\n constructor(definition: IpAddressWithSubnetMask) {\r\n this.input = definition;\r\n }\r\n\r\n getAdressSpaceSize(): number {\r\n const spaceLengthInBits = 32 - this.input.maskBits;\r\n return Math.pow(2, spaceLengthInBits) - 2; // 0 - network address, 1 - multicast address\r\n }\r\n\r\n toString() {\r\n return this.input.toString();\r\n }\r\n}\r\n\r\n","import { IpAddress, IpAddressWithSubnetMask, SubnetCommand } from './models';\r\n\r\nexport type ParsedIpObject = IpAddress | IpAddressWithSubnetMask;\r\n\r\n\r\nconst ipAddressParser = {\r\n parse: function(input: string) : ParsedIpObject[] | SubnetCommand | ParsingError | null {\r\n\r\n const result = this.parseCommand(input);\r\n\r\n const matches = this.getMaches(result.nextInput);\r\n const correctInputs = matches.filter(m => m.matches != null);\r\n const incorrectInputs = matches.filter(m => m.matches == null);\r\n \r\n if(correctInputs.length == 0)\r\n return null;\r\n\r\n if(incorrectInputs.length > 0) {\r\n return new ParsingError(`Value(s) ${incorrectInputs.map(v => v.input).join(',')} was not recognized as valid ip address or ip address with a subnet mask`);\r\n }\r\n\r\n const parsedObjects = matches.map(m => this.parseSingle(m.matches!, m.input));\r\n const parsingErrors = parsedObjects.filter(p => p instanceof ParsingError);\r\n\r\n if(parsingErrors.length > 0) {\r\n return parsingErrors[0] as ParsingError;\r\n }\r\n\r\n if(result.command != null) {\r\n const result = this.createSubnetDefinition(parsedObjects as ParsedIpObject[]);\r\n \r\n if(result instanceof ParsingError)\r\n return result;\r\n\r\n return result;\r\n } \r\n\r\n return parsedObjects as ParsedIpObject[];\r\n },\r\n\r\n parseCommand(input : string) : { command: null | string, nextInput: string } {\r\n\r\n const command = 'subnet';\r\n if(input.startsWith(command)) \r\n return { command, nextInput: input.substring(command.length)}\r\n\r\n return { command: null, nextInput: input };\r\n },\r\n\r\n getMaches(input : string) : { matches: RegExpExecArray | null, input: string }[] {\r\n\r\n return input.\r\n replace(/[\\t\\s]+/g, ' ')\r\n .split(' ')\r\n .filter(s => s.length>0)\r\n .map(s => {\r\n const ipV4Regex = /^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})(\\/\\d+)?$/;\r\n const matches = ipV4Regex.exec(s);\r\n \r\n if(matches == null || matches.length === 0)\r\n return {matches: null, input: s};\r\n \r\n return {matches, input: s};\r\n });\r\n },\r\n\r\n parseSingle(matches : RegExpExecArray, input: string) : ParsedIpObject | ParsingError {\r\n const invalid = (n: number) => n < 0 || n > 255;\r\n \r\n const first = parseInt(matches[1]);\r\n const second = parseInt(matches[2]);\r\n const third = parseInt(matches[3]);\r\n const fourth = parseInt(matches[4]);\r\n\r\n if(invalid(first) || invalid(second) || invalid(third) || invalid(fourth))\r\n return new ParsingError(`${input} doesn't represent a valid IP address space`);\r\n\r\n const ipAddress = new IpAddress(first, second, third, fourth);\r\n\r\n if(matches[5]) {\r\n const maskPart = matches[5].substr(1);\r\n const maskBits = parseInt(maskPart);\r\n\r\n if(maskBits > 32) {\r\n return new ParsingError(`Subnet mask value in ${input} is out of range`);\r\n }\r\n\r\n return new IpAddressWithSubnetMask(ipAddress, maskBits);\r\n }\r\n\r\n return ipAddress;\r\n },\r\n\r\n createSubnetDefinition(items: ParsedIpObject[]) : SubnetCommand | ParsingError {\r\n if(items.length != 1)\r\n return new ParsingError(\"Incorrect network definition\");\r\n \r\n const first = items[0];\r\n if(first instanceof IpAddressWithSubnetMask) {\r\n return new SubnetCommand(first);\r\n }\r\n\r\n return new ParsingError(\"Network definition requires subnet mask\");\r\n }\r\n}\r\n\r\nexport class ParsingError {\r\n errorMessage: string;\r\n constructor(message: string) {\r\n this.errorMessage = message;\r\n }\r\n}\r\n\r\n\r\nexport default ipAddressParser;","function flipBitsToZero(byte: number, numberOfBits : number) : number {\r\n if(numberOfBits == 0)\r\n return byte;\r\n \r\n const zerouOutMask = Math.pow(2, 8-numberOfBits)-1< flipper(byte, 8 - maskBits);\r\n\r\n const ip = ipm.ipAddress;\r\n const maskBits = ipm.maskBits;\r\n\r\n if (maskBits <= 8) {\r\n return new IpAddress(flip(maskBits, ip.firstByte), fullByte, fullByte, fullByte);\r\n }\r\n else if (maskBits <= 16) {\r\n return new IpAddress(ip.firstByte, flip(maskBits - 8, ip.secondByte), fullByte, fullByte);\r\n }\r\n else if (maskBits <= 24) {\r\n return new IpAddress(ip.firstByte, ip.secondByte, flip(maskBits - 16, ip.thirdByte), fullByte);\r\n }\r\n\r\n else\r\n return new IpAddress(ip.firstByte, ip.secondByte, ip.thirdByte, flip(maskBits - 24, ip.fourthByte));\r\n}\r\n\r\nfunction getNetworkClass (ipAddress: IpAddress) : NetworkClass {\r\n const byte = ipAddress.firstByte;\r\n\r\n const firstBitOne = (byte & 128) === 128;\r\n const firstBitZero = (byte & 128) === 0;\r\n const secondBitOne = (byte & 64) === 64;\r\n\r\n const thirdBitOne = (byte & 32) === 32;\r\n const thirdBitZero = (byte & 32) === 0;\r\n\r\n const forthBitZero = (byte & 16) === 0;\r\n const forthBitOne = (byte & 16) === 16;\r\n\r\n // e: 1111\r\n\r\n if(firstBitOne && secondBitOne && thirdBitOne && forthBitOne)\r\n return 'e';\r\n\r\n if(firstBitOne && secondBitOne && thirdBitOne && forthBitZero) // Start bits: 1110;\r\n return 'd';\r\n\r\n if(firstBitOne && secondBitOne && thirdBitZero) // Start bits: 110;\r\n return 'c';\r\n \r\n return firstBitOne ? 'b' : 'a';\r\n};\r\n\r\n\r\ntype FlipFunction = (byte: number, numberOfBits: number) => number; \r\n\r\nexport {createSubnetMaskIp, getBroadCastAddress, getNetworkAddress, getNetworkClass};","import React from 'react';\r\nimport BinaryStringView from '../../core/components/BinaryString';\r\nimport formatter from '../../core/formatter';\r\nimport { IpAddress } from '../models';\r\n\r\nfunction IpAddressBinaryString({ip}: {ip:IpAddress}) {\r\n\r\n return \r\n \r\n .\r\n \r\n .\r\n \r\n .\r\n \r\n ;\r\n}\r\n\r\nexport default IpAddressBinaryString;","import React, { useState } from 'react';\r\nimport BinaryStringView from '../../core/components/BinaryString';\r\nimport './SubnetView.css';\r\nimport { getNetworkAddress, getBroadCastAddress, createSubnetMaskIp } from '../subnet-utils';\r\nimport { chunkifyString } from '../../core/utils';\r\nimport IpAddressBinaryString from './IpAddressBinaryString';\r\nimport { IpAddress, IpAddressWithSubnetMask, SubnetCommand } from '../models';\r\n\r\nfunction SubnetView(props : {subnet : SubnetCommand}) {\r\n\r\n const [subnet, setSubnet] = useState(props.subnet);\r\n\r\n const incrementMask = () => {\r\n const newInput = new IpAddressWithSubnetMask(subnet.input.ipAddress, subnet.input.maskBits+1);\r\n setSubnet(new SubnetCommand(newInput));\r\n };\r\n\r\n const decrementMask = () => {\r\n const newInput = new IpAddressWithSubnetMask(subnet.input.ipAddress, subnet.input.maskBits-1);\r\n setSubnet(new SubnetCommand(newInput));\r\n }\r\n\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Network Size\r\n \r\n {subnet.getAdressSpaceSize()}\r\n
\r\n Mask Size\r\n \r\n \r\n \r\n {subnet.input.maskBits}\r\n \r\n
\r\n
\r\n
\r\n
;\r\n}\r\n\r\nfunction SubnetRow(props: { ip: IpAddress, descr: string}) {\r\n\r\n const {ip, descr} = props;\r\n\r\n return \r\n {descr}\r\n \r\n {ip.toString()}\r\n \r\n \r\n \r\n \r\n ;\r\n}\r\n\r\nexport default SubnetView;","import log from 'loglevel';\r\n\r\nexport type AnalyticsEvent = {\r\n eventCategory: string,\r\n eventAction: string,\r\n eventLabel?: string\r\n};\r\n\r\nexport type AnalyticsHandler = (evt: AnalyticsEvent) => boolean;\r\n\r\nfunction sendAnalyticsEvent(evt : AnalyticsEvent) {\r\n const handler = (window as any).bitwiseCmdAnalyticsHandler;\r\n if(handler == null) {\r\n log.debug('ERROR!!!: Analytics event was not sent. Handler not found');\r\n }\r\n\r\n const delivered = (handler as AnalyticsHandler)(evt);\r\n log.debug('Analytics event sent. Delivery response: ' + delivered, evt)\r\n}\r\n\r\nexport {sendAnalyticsEvent};\r\n","import React from 'react';\r\nimport AppState from '../shell/AppState';\r\nimport { CmdShell, CommandInput, CommandOptions } from '../shell/cmd';\r\nimport ErrorResultView from '../shell/components/ErrorResultView';\r\nimport IpAddressView from './components/IpAddressView';\r\nimport ipAddressParser, {ParsingError, ParsedIpObject} from './ip-parser';\r\nimport { IpAddress, IpAddressWithSubnetMask, SubnetCommand } from \"./models\";\r\nimport log from 'loglevel';\r\nimport SubnetView from './components/SubnetView';\r\nimport { createSubnetMaskIp } from './subnet-utils';\r\nimport {sendAnalyticsEvent} from '../shell/analytics';\r\n\r\nconst networkingAppModule = {\r\n setup: function(appState: AppState, cmd: CmdShell) {\r\n \r\n // Add Ip Address commands\r\n cmd.command({\r\n canHandle: (input:string) => ipAddressParser.parse(input) != null,\r\n handle: function(c: CommandInput) {\r\n var result = ipAddressParser.parse(c.input);\r\n\r\n if(result == null)\r\n return;\r\n\r\n if(result instanceof ParsingError) {\r\n appState.addCommandResult(c.input, );\r\n return;\r\n }\r\n\r\n if(result instanceof SubnetCommand) {\r\n appState.addCommandResult(c.input, );\r\n trackCommand('SubnetCommand', c.options);\r\n return;\r\n }\r\n\r\n const ipAddresses : IpAddress[] = [];\r\n \r\n (result as ParsedIpObject[]).forEach(r => {\r\n if(r instanceof IpAddressWithSubnetMask)\r\n {\r\n ipAddresses.push(r.ipAddress);\r\n ipAddresses.push(createSubnetMaskIp(r));\r\n }\r\n else if(r instanceof IpAddress) {\r\n ipAddresses.push(r);\r\n }\r\n });\r\n\r\n trackCommand(\"IpAddressesInput\", c.options);\r\n \r\n appState.addCommandResult(c.input, );\r\n }\r\n });\r\n\r\n log.debug();\r\n }\r\n}\r\n\r\nfunction trackCommand(action: string, ops: CommandOptions) {\r\n if(ops.doNotTrack !== true) {\r\n sendAnalyticsEvent({\r\n eventCategory: \"NetworkingCommand\",\r\n eventAction: action\r\n });\r\n }\r\n}\r\n\r\nexport default networkingAppModule;","import NumericOperand from \"./NumericOperand\";\r\nimport { ExpressionInput, ExpressionInputItem } from \"./expression-interfaces\";\r\n\r\nexport default class ListOfNumbersExpression implements ExpressionInput {\r\n numbers: NumericOperand[];\r\n expressionString: string;\r\n maxBitsLength: number;\r\n\r\n constructor(expressionString: string, numbers: NumericOperand[]) {\r\n this.expressionString = expressionString;\r\n this.numbers = numbers;\r\n this.maxBitsLength = numbers.map(n => n.lengthInBits).reduce((n , c) => n >= c ? n : c, 0);\r\n }\r\n\r\n toString() {\r\n return this.numbers.map(n => n.value.toString()).join(' ');\r\n }\r\n}","import { ExpressionInput, ExpressionInputItem } from \"./expression-interfaces\";\r\n\r\nexport default class BitwiseOperationExpression implements ExpressionInput {\r\n \r\n expressionString: string;\r\n expressionItems: ExpressionInputItem[];\r\n\r\n constructor(expressionString: string, expressions: ExpressionInputItem[]) {\r\n this.expressionString = expressionString;\r\n this.expressionItems = expressions;\r\n }\r\n}","import NumericOperand from './NumericOperand';\r\nimport ExpressionOperand from './ExpressionOperand'\r\nimport ListOfNumbersExpression from './ListOfNumbersExpression';\r\nimport BitwiseOperationExpression from './BitwiseOperationExpression';\r\nimport { ExpressionInput, ExpressionInputItem, NumberBase } from './expression-interfaces';\r\n\r\nexport { default as NumericOperand } from './NumericOperand';\r\nexport { default as ExpressionOperand } from './ExpressionOperand';\r\nexport { default as ListOfNumbersExpression } from './ListOfNumbersExpression';\r\nexport { default as BitwiseOperationExpression } from './BitwiseOperationExpression';\r\n\r\ninterface IExpressionParserFactory {\r\n canCreate: (input: string) => boolean;\r\n create: (input: string) => ExpressionInput;\r\n};\r\n\r\nclass ExpressionParser {\r\n factories: IExpressionParserFactory[];\r\n constructor() {\r\n this.factories = [];\r\n };\r\n\r\n canParse (input: string) : boolean {\r\n var trimmed = input.replace(/^\\s+|\\s+$/, '');\r\n var i = this.factories.length-1;\r\n for(;i>=0;i--) {\r\n if(this.factories[i].canCreate(trimmed) === true){\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n parse (input: string) : ExpressionInput | null {\r\n var trimmed = input.replace(/^\\s+|\\s+$/, '');\r\n var i = 0, l = this.factories.length, factory;\r\n\r\n for(;i {\r\n if(n.trim().length > 0) {\r\n numbers.push(NumericOperand.parse(n.trim()));\r\n }\r\n });\r\n\r\n return new ListOfNumbersExpression(input, numbers);\r\n }\r\n}\r\n\r\nclass BitwiseOperationExpressionFactory implements IExpressionParserFactory {\r\n fullRegex: RegExp;\r\n regex: RegExp;\r\n\r\n constructor() {\r\n this.fullRegex = /^((<<|>>|>>>|\\||\\&|\\^)?(~?-?([b,x,a-f,0-9]+)))+$/;\r\n this.regex = /(<<|>>|>>>|\\||\\&|\\^)?(~?-?(?:[b,x,a-f,0-9]+))/g;\r\n }\r\n\r\n canCreate (input: string) : boolean {\r\n this.fullRegex.lastIndex = 0;\r\n return this.fullRegex.test(this.normalizeString(input));\r\n };\r\n\r\n create (input: string) : ExpressionInput {\r\n var m, operands : ExpressionInputItem[] = [],\r\n normalizedString = this.normalizeString(input);\r\n\r\n while ((m = this.regex.exec(normalizedString)) != null) {\r\n operands.push(this.parseMatch(m));\r\n }\r\n\r\n return new BitwiseOperationExpression(normalizedString, operands)\r\n };\r\n\r\n parseMatch (m:any): ExpressionInputItem {\r\n var input = m[0],\r\n sign = m[1],\r\n num = m[2];\r\n\r\n var parsed = null;\r\n if(num.indexOf('~') == 0) {\r\n parsed = new ExpressionOperand(num, NumericOperand.parse(num.substring(1)), '~');\r\n }\r\n else {\r\n parsed = NumericOperand.parse(num);\r\n }\r\n\r\n if(sign == null) {\r\n return parsed as ExpressionOperand;\r\n } else {\r\n return new ExpressionOperand(input, parsed as NumericOperand, sign);\r\n }\r\n };\r\n\r\n normalizeString (input : string): string {\r\n return input.replace(/\\s+/g,'');\r\n };\r\n}\r\n\r\nvar parser = new ExpressionParser();\r\nparser.addFactory(new ListOfNumbersExpressionFactory());\r\nparser.addFactory(new BitwiseOperationExpressionFactory());\r\n\r\nexport {parser};\r\n","import { NumericOperand, ListOfNumbersExpression, BitwiseOperationExpression, ExpressionOperand } from '../expression';\r\nimport { ExpressionInputItem, ExpressionInput } from '../expression-interfaces';\r\n\r\ntype Config = {\r\n emphasizeBytes: boolean;\r\n allowFlipBits: boolean;\r\n}\r\n\r\ntype ExpressionItemModel = {\r\n sign: string;\r\n css: string;\r\n expressionItem: ExpressionInputItem;\r\n allowFlipBits: boolean;\r\n label: string;\r\n}\r\n\r\nexport default class BitwiseExpressionViewModel {\r\n\r\n emphasizeBytes: boolean;\r\n items: ExpressionItemModel[];\r\n maxNumberOfBits: number;\r\n allowFlipBits: boolean;\r\n\r\n constructor({ emphasizeBytes = false, allowFlipBits = false} : Config) {\r\n this.emphasizeBytes = emphasizeBytes;\r\n this.items = [];\r\n this.maxNumberOfBits = 0;\r\n this.allowFlipBits = allowFlipBits === true;\r\n }\r\n\r\n static buildListOfNumbers(expr : ListOfNumbersExpression, config : Config) {\r\n var model = new BitwiseExpressionViewModel(config);\r\n expr.numbers.forEach(op => model.addOperandRow(op));\r\n model.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(model.maxNumberOfBits, model.emphasizeBytes);\r\n return model;\r\n }\r\n\r\n static buildMultiple (expr : BitwiseOperationExpression, config : Config) {\r\n\r\n var op = expr.expressionItems[0],\r\n i = 0, len = expr.expressionItems.length,\r\n ex, m = new BitwiseExpressionViewModel(config);\r\n\r\n var prev : NumericOperand | null = null;\r\n\r\n for (;i {\r\n constructor(props: BitwiseOperationExpressionViewProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n render() {\r\n var rows = this.getRows();\r\n if(!rows) {\r\n return null;\r\n }\r\n\r\n return \r\n \r\n {rows}\r\n \r\n
\r\n }\r\n\r\n getRows() : JSX.Element[] | null {\r\n var model = BitwiseExpressionViewModel.createModel(this.props.expression, this.props.emphasizeBytes);\r\n\r\n return model.items.map((itm, i) => \r\n this.onBitFlipped()} />);\r\n }\r\n\r\n onBitFlipped() {\r\n this.forceUpdate();\r\n //this.setState({d:new Date()});\r\n }\r\n}\r\n\r\ntype ExpressionRowProps = {\r\n sign: string, \r\n css: string, \r\n maxNumberOfBits: number, \r\n emphasizeBytes: boolean, \r\n allowFlipBits: boolean, \r\n expressionItem: ExpressionInputItem,\r\n onBitFlipped: any\r\n}\r\n\r\nclass ExpressionRow extends React.Component {\r\n constructor(props: ExpressionRowProps) {\r\n super(props);\r\n this.state = { operand: null };\r\n }\r\n render() {\r\n const { sign, css, maxNumberOfBits, emphasizeBytes, allowFlipBits } = this.props;\r\n \r\n return \r\n {sign}\r\n {this.getLabel()}\r\n \r\n this.flipBit(args)}/>\r\n \r\n {this.getOther()}\r\n ;;\r\n }\r\n\r\n getBinaryString() : string { \r\n return this.props.expressionItem.evaluate().toBinaryString();\r\n }\r\n\r\n getLabel(): string {\r\n\r\n // For expressions like |~2 \r\n // TODO: find a better way...\r\n if(this.props.expressionItem.isExpression) {\r\n const ex = this.props.expressionItem as ExpressionOperand;\r\n return ex.sign + this.getLabelString(ex.getUnderlyingOperand());\r\n }\r\n\r\n return this.getLabelString(this.props.expressionItem.getUnderlyingOperand()); \r\n }\r\n\r\n getOther() {\r\n\r\n if(this.props.expressionItem.isExpression) {\r\n const ex = this.props.expressionItem as ExpressionOperand;\r\n const op = ex.evaluate();\r\n\r\n return op.toString();\r\n }\r\n\r\n return this.props.expressionItem.evaluate().toOtherKindString();\r\n }\r\n\r\n getLabelString (op: NumericOperand) : string {\r\n return op.toString(op.base == 'bin' ? 'dec' : op.base);\r\n }\r\n\r\n flipBit(args: FlipBitEventArg) { \r\n\r\n const op = this.props.expressionItem.getUnderlyingOperand();\r\n const { index, binaryString } = args;\r\n\r\n var arr = binaryString.split('');\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n var bin = arr.join('');\r\n\r\n var newValue = parseInt(bin, 2);\r\n op.setValue(newValue);\r\n\r\n this.props.onBitFlipped();\r\n }\r\n}","import React from 'react';\r\nimport AppState from '../shell/AppState';\r\nimport { CmdShell, CommandInput } from '../shell/cmd';\r\nimport BitwiseOperationExpressionView from './components/BitwiseOperationExpressionView';\r\nimport {parser} from './expression';\r\n\r\nconst expressionAppModule = {\r\n setup: function(appState: AppState, cmd: CmdShell) {\r\n \r\n // Bitwise Expressions\r\n cmd.command({\r\n canHandle: (input:string) => parser.canParse(input),\r\n handle: function(c: CommandInput) {\r\n var expr = parser.parse(c.input);\r\n appState.addCommandResult(c.input, );\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default expressionAppModule;","import React from 'react'\r\n\r\nfunction AboutResultView() {\r\n\r\n return
\r\n

Created by Borys Levytskyi. Please give it a like if BitwiseCmd has helped you in your work.

\r\n

If you have an idea, suggestion or you've spotted a bug here, please send it to bitwisecmd@gmail.com or tweet on @BitwiseCmd. Your feedback is greatly appreciated.

\r\n

Project on GitHub

\r\n
;\r\n};\r\n\r\nexport default AboutResultView;","import React from 'react';\r\nimport CommandLink from '../../core/components/CommandLink';\r\nimport './HelpResultView.css';\r\n\r\nfunction HelpResultView() {\r\n \r\n return
\r\n
\r\n
\r\n
\r\n Bitiwse Calculation Commands\r\n
    \r\n
  • — type bitwise expression to see result in binary (only positive integers are supported now)
  • \r\n
  • — type one or more numbers to see their binary representations
  • \r\n
\r\n
\r\n
\r\n IP Address Commands\r\n
    \r\n
  • — enter single or multiple ip addresses (separated by space) to see their binary represenation
  • \r\n
  • — subnet mask notiations are support as well
  • \r\n
  • — display information about subnet (network address, broadcast address, etc.)
  • \r\n
\r\n
\r\n
\r\n Color Theme Commands\r\n
    \r\n
  • — set Light color theme
  • \r\n
  • — set Dark color theme
  • \r\n
  • — set Midnight color theme
  • \r\n
\r\n
\r\n
\r\n Other Commands\r\n
    \r\n
  • — clear output pane
  • \r\n
  • — display this help
  • \r\n
  • — display changelog
  • \r\n
  • — turn On/Off Emphasize Bytes
  • \r\n
  • — about the app
  • \r\n
  • — generate v4 GUID
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Supported Bitwise Operations
\r\n \r\n \r\n as implemented in JavaScript engine of your browser\r\n \r\n \r\n
    \r\n
  • & — bitwise AND
  • \r\n
  • | — bitwise inclusive OR
  • \r\n
  • ^ — bitwise exclusive XOR
  • \r\n
  • ~ — bitwise NOT
  • \r\n
  • << — left shift
  • \r\n
  • >> — sign propagating right shift
  • \r\n
  • >>> — zero-fill right shift
  • \r\n
\r\n
\r\n
\r\n Tip\r\n

\r\n You can click on bits to flip them in number inputs (e.g. ) or IP addresses (e.g. )\r\n

\r\n
\r\n
\r\n
\r\n
;\r\n}\r\n\r\nexport default HelpResultView;\r\n","import React from 'react';\r\n\r\nfunction TextResultView(props : { text: string }) {\r\n return

{props.text}

;\r\n}\r\n\r\nexport default TextResultView;","import React from 'react';\r\nimport CommandLink from '../../core/components/CommandLink';\r\nimport './WhatsNewResultView.css';\r\n\r\nfunction WhatsnewResultView() {\r\n \r\n return
\r\n

Changelog

\r\n
\r\n

Jun 16th, 2021
\r\n Added support of subnet command to display information about subnet ip adress such. Try it out: \r\n

\r\n
\r\n
\r\n

Jun 14th, 2021
\r\n Added support of ip addresses and subnet masks notatioans. Try them out: \r\n

\r\n
    \r\n
  • Single IP address
  • \r\n
  • Multiple IP addresses and subnet mask notations
  • \r\n
\r\n \r\n
\r\n
\r\n

Jun 6th, 2017
\r\n Added command. Use it for generating v4 GUIDs

\r\n
\r\n
\r\n

May 27th, 2017
\r\n Added support of binary number notation (e.g. ).

\r\n
\r\n
\r\n

May 20th, 2017
\r\n New theme added.

\r\n
\r\n
\r\n

May 16th, 2017
\r\n Complete rewrite using React. Old implementation is available at http://bitwisecmd.com/old. Please let me know if you have problems with this release by creating issue in Github Repo.

\r\n
\r\n
;\r\n}\r\n\r\nexport default WhatsnewResultView;","import log from 'loglevel';\r\n\r\nconst APP_VERSION = 6;\r\n\r\nexport type PersistedAppData = {\r\n emphasizeBytes: boolean;\r\n uiTheme: string;\r\n version: number;\r\n debugMode: boolean | null;\r\n pageVisistsCount: number;\r\n donationClicked: boolean\r\n}\r\n\r\nexport type CommandResultView = {\r\n key: number,\r\n input: string,\r\n view: JSX.Element\r\n};\r\n\r\nexport type AppStateChangeHandler = (state: AppState) => void;\r\n\r\nexport default class AppState {\r\n \r\n version: number = APP_VERSION;\r\n emphasizeBytes: boolean;\r\n debugMode: boolean = false;\r\n uiTheme: string;\r\n changeHandlers: AppStateChangeHandler[];\r\n commandResults: CommandResultView[];\r\n persistedVersion: number;\r\n wasOldVersion: boolean;\r\n env: string;\r\n pageVisitsCount: number;\r\n donationClicked: boolean;\r\n\r\n constructor(persistData : PersistedAppData, env: string) {\r\n this.commandResults = [];\r\n this.changeHandlers = [];\r\n this.uiTheme = persistData.uiTheme || 'midnight';\r\n this.env = env;\r\n\r\n this.emphasizeBytes = persistData.emphasizeBytes || true;\r\n this.persistedVersion = persistData.version || 0.1;\r\n this.wasOldVersion = persistData.version != null && this.version > this.persistedVersion;\r\n this.debugMode = env !== 'prod' || persistData.debugMode === true;\r\n this.pageVisitsCount = persistData.pageVisistsCount || 0;\r\n this.donationClicked = persistData.donationClicked;\r\n }\r\n\r\n addCommandResult(input : string, view : JSX.Element) {\r\n const key = generateKey();\r\n this.commandResults.unshift({key, input, view});\r\n log.debug(`command result added: ${input}`);\r\n this.triggerChanged();\r\n }\r\n\r\n clearCommandResults() {\r\n this.commandResults = [];\r\n this.triggerChanged();\r\n }\r\n\r\n toggleEmphasizeBytes() {\r\n this.emphasizeBytes = !this.emphasizeBytes;\r\n this.triggerChanged();\r\n }\r\n\r\n onChange(handler : AppStateChangeHandler) {\r\n this.changeHandlers.push(handler);\r\n }\r\n\r\n triggerChanged() {\r\n this.changeHandlers.forEach(h => h(this));\r\n }\r\n\r\n setUiTheme(theme: string) {\r\n this.uiTheme = theme;\r\n this.triggerChanged(); \r\n }\r\n\r\n toggleDebugMode() {\r\n this.debugMode = !this.debugMode;\r\n this.triggerChanged();\r\n }\r\n\r\n registerVisit() {\r\n this.pageVisitsCount++;\r\n this.triggerChanged();\r\n }\r\n\r\n onDonationClicked() : boolean{\r\n if(this.donationClicked === true) return false;\r\n\r\n this.donationClicked = true;\r\n this.triggerChanged();\r\n return true;\r\n }\r\n\r\n getPersistData() : PersistedAppData {\r\n return {\r\n emphasizeBytes: this.emphasizeBytes,\r\n uiTheme: this.uiTheme,\r\n version: this.version,\r\n debugMode: this.debugMode,\r\n pageVisistsCount: this.pageVisitsCount,\r\n donationClicked: this.donationClicked\r\n }\r\n }\r\n};\r\n\r\nfunction generateKey() : number {\r\n return Math.ceil(Math.random()*10000000) ^ Date.now(); // Because why the hell not...\r\n}","import AppState, { PersistedAppData } from \"./AppState\";\r\n\r\nconst storeKey = 'AppState';\r\n\r\nexport default {\r\n getPersistedData() : PersistedAppData {\r\n var json = window.localStorage.getItem(storeKey);\r\n if(!json) {\r\n return {} as PersistedAppData;\r\n }\r\n\r\n try {\r\n return JSON.parse(json) as PersistedAppData;\r\n }\r\n catch(ex) {\r\n console.error('Failed to parse AppState json. Json Value: \\n' + json, ex);\r\n return {} as PersistedAppData;;\r\n }\r\n },\r\n\r\n watch (appState: AppState) {\r\n appState.onChange(() => this.persistData(appState));\r\n },\r\n\r\n persistData(appState: AppState) {\r\n localStorage.setItem(storeKey, JSON.stringify(appState.getPersistData()));\r\n }\r\n}","import log from 'loglevel';\r\nimport hash from '../core/hash';\r\nimport AppState from './AppState';\r\nimport { Env } from './interfaces';\r\nimport appStateStore from './appStateStore';\r\nimport CommandLink from '../core/components/CommandLink';\r\n\r\nexport type StartupAppData = {\r\n appState: AppState,\r\n startupCommands: string[]\r\n}\r\n\r\nconst STARTUP_COMMAND_KEY = 'StartupCommand';\r\nconst DEFAULT_COMMANDS = ['help', '127.0.0.1 192.168.0.0/8', '1|2&6','4 0b1000000 0x80'];\r\n\r\nfunction bootstrapAppData() : StartupAppData {\r\n const env = window.location.host === \"bitwisecmd.com\" ? 'prod' : 'stage';\r\n\r\n setupLogger(env);\r\n\r\n const appState = createAppState(env);\r\n const startupCommands = getStartupCommands(appState);\r\n\r\n return {\r\n appState,\r\n startupCommands\r\n }\r\n}\r\n\r\n\r\nfunction createAppState(env:string) {\r\n var stateData = appStateStore.getPersistedData();\r\n const appState = new AppState(stateData, env);\r\n appStateStore.watch(appState);\r\n log.debug(\"appState initialized\", appState);\r\n return appState;\r\n}\r\n\r\nfunction getStartupCommands(appState : AppState) : string[] {\r\n var hashArgs = hash.getArgs(window.location.hash);\r\n\r\n var startupCommands = loadStoredCommands();\r\n\r\n if(startupCommands.length == 0) \r\n startupCommands = DEFAULT_COMMANDS;\r\n\r\n if(appState.wasOldVersion) {\r\n startupCommands = [\"whatsnew\"];\r\n }\r\n\r\n if(hashArgs.length > 0) {\r\n startupCommands = hashArgs;\r\n }\r\n\r\n log.debug('Executing startup commands', startupCommands);\r\n\r\n return startupCommands;\r\n}\r\n\r\nfunction loadStoredCommands() : string[] {\r\n const json = localStorage.getItem(STARTUP_COMMAND_KEY);\r\n return json != null ? [json] : []; \r\n}\r\n\r\nfunction setupLogger(env: Env) {\r\n if(env != 'prod'){\r\n log.setLevel(\"debug\");\r\n log.debug(`Log level is set to debug. Env: ${env}`)\r\n } else {\r\n log.setLevel(\"warn\");\r\n }\r\n}\r\n\r\nexport {STARTUP_COMMAND_KEY};\r\nexport default bootstrapAppData;","import React from 'react';\r\nimport uuid from 'uuid';\r\nimport { sendAnalyticsEvent } from './analytics';\r\nimport AppState from './AppState';\r\nimport { CmdShell, CommandInput } from './cmd';\r\nimport AboutResultView from './components/AboutResultView';\r\nimport ErrorResultView from './components/ErrorResultView';\r\nimport HelpResultView from './components/HelpResultView';\r\nimport TextResultView from './components/TextResultView';\r\nimport WhatsnewResultView from './components/WhatsNewResultView';\r\nimport {STARTUP_COMMAND_KEY} from './startup';\r\n\r\nconst shellModule = {\r\n setup: function(appState: AppState, cmd: CmdShell) {\r\n \r\n cmd.debugMode = appState.debugMode;\r\n appState.onChange(() => cmd.debugMode = appState.debugMode);\r\n \r\n cmd.command(\"help\", (c: CommandInput) => appState.addCommandResult(c.input, ));\r\n cmd.command(\"clear\", () => appState.clearCommandResults());\r\n cmd.command(\"em\", () => appState.toggleEmphasizeBytes());\r\n cmd.command(\"dark\", () => appState.setUiTheme('dark'));\r\n cmd.command(\"light\", () => appState.setUiTheme('light'));\r\n cmd.command(\"midnight\", () => appState.setUiTheme('midnight'));\r\n cmd.command(\"about\", (c: CommandInput) => appState.addCommandResult(c.input, ));\r\n cmd.command(\"whatsnew\", (c: CommandInput) => appState.addCommandResult(c.input, ));\r\n cmd.command(\"guid\", (c: CommandInput) => appState.addCommandResult(c.input, ));\r\n cmd.command(\"-notrack\", () => {});\r\n cmd.command(\"-debug\", (c: CommandInput) => {\r\n appState.toggleDebugMode();\r\n appState.addCommandResult(c.input, );\r\n }); \r\n\r\n cmd.command(\"donate\", (c:CommandInput) => {\r\n\r\n if(appState.onDonationClicked()) {\r\n sendAnalyticsEvent({eventCategory: \"DonationButton\", eventAction: \"Clicked\"})\r\n }\r\n else {\r\n sendAnalyticsEvent({eventCategory: \"DonationButton\", eventAction: \"ClickedAgain\"})\r\n }\r\n\r\n appState.addCommandResult(c.input, );\r\n });\r\n\r\n cmd.command(\"track\", (c:CommandInput) => {\r\n sendAnalyticsEvent({\r\n eventCategory: 'General',\r\n eventAction: 'AnalyticsTest'\r\n });\r\n });\r\n\r\n if(appState.env !== 'prod') {\r\n \r\n // Default command for development purposes\r\n cmd.command({\r\n canHandle: (s: string) => s.indexOf('default') === 0,\r\n handle: (s: CommandInput) => {\r\n\r\n const executeCommand = (c: string) => {\r\n console.log(c);\r\n\r\n if(c.length === 0) {\r\n return \"Default comand: \" + localStorage.getItem(STARTUP_COMMAND_KEY);\r\n }\r\n else if(c === 'clear') {\r\n localStorage.removeItem(STARTUP_COMMAND_KEY);\r\n return \"Default startup command cleared\";\r\n }\r\n \r\n localStorage.setItem(STARTUP_COMMAND_KEY, c);\r\n return `Default startup command saved: ${c}`;\r\n };\r\n\r\n const command = s.input.substring(7).trim();\r\n const result = executeCommand(command);\r\n appState.addCommandResult(s.input, );\r\n } \r\n });\r\n };\r\n\r\n cmd.onError((input: string, err: Error) => appState.addCommandResult(input, ));\r\n }\r\n}\r\n\r\nexport default shellModule;","import React from 'react';\r\n\r\nfunction UnknownInputResultView(props : {input:string}) {\r\n \r\n return
\r\n
¯\\_(ツ)_/¯ Sorry, i don′t know what {props.input} is
\r\n
;\r\n}\r\n\r\nexport default UnknownInputResultView;\r\n","import cmd, { CommandInput } from './shell/cmd';\r\nimport AppRoot from './shell/components/AppRoot';\r\nimport log from 'loglevel';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport networkingAppModule from './networking/module';\r\nimport expressionAppModule from './expression/module';\r\nimport shellModule from './shell/module';\r\nimport bootstrapAppData from './shell/startup';\r\nimport UnknownInputResultView from './shell/components/UnknownInputResultView';\r\n\r\nconst appData = bootstrapAppData();\r\n\r\ninitializeModules();\r\n\r\nvar root = ;\r\nReactDOM.render(root, document.getElementById('root'));\r\n\r\nexecuteStartupCommands();\r\n\r\nappData.appState.registerVisit();\r\n\r\nlog.debug(\"started\");\r\n\r\nfunction executeStartupCommands() {\r\n log.debug(\"Executing startup commands\", appData.startupCommands);\r\n appData.startupCommands.forEach(c => cmd.execute(c, {doNotTrack: true}));\r\n}\r\n\r\nfunction initializeModules() {\r\n shellModule.setup(appData.appState, cmd);\r\n networkingAppModule.setup(appData.appState, cmd);\r\n expressionAppModule.setup(appData.appState, cmd);\r\n\r\n // Last command handler reports that input is unknown\r\n cmd.command({\r\n canHandle: () => true,\r\n handle: (c: CommandInput) => appData.appState.addCommandResult(c.input, )\r\n });\r\n}\r\n\r\n\r\n\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.dd14db86.chunk.js b/static/js/main.dd14db86.chunk.js new file mode 100644 index 0000000..e5da834 --- /dev/null +++ b/static/js/main.dd14db86.chunk.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[,,,,,,,,function(e,t,n){"use strict";var a=n(1),i=n(2),r=[{regex:/^-?\d+$/,radix:10,base:"dec",prefix:"^$"},{regex:/^-?0x[0-9,a-f]+$/i,radix:16,base:"hex",prefix:/0x/i},{regex:/^-?0b[0-1]+$/i,radix:2,base:"bin",prefix:/0b/i}],s=new(function(){function e(t){Object(a.a)(this,e),this.parsers=void 0,this.parsers=t}return Object(i.a)(e,[{key:"parse",value:function(e){var t=this;return this.parsers.map(function(n){return t.applyParser(n,e)}).reduce(function(e,t){return e||t})}},{key:"parseOperator",value:function(e){var t=e.match(e);return null==t||0==t.length?null:t[0]}},{key:"applyParser",value:function(e,t){return e.regex.test(t)?{value:parseInt(t.replace(e.prefix,""),e.radix),base:e.base,input:t}:null}}]),e}())(r);n.d(t,"a",function(){return o});var l=1,o=function(){function e(t,n){Object(a.a)(this,e),this.id=void 0,this.value=void 0,this.base=void 0,this.lengthInBits=void 0,this.isExpression=void 0,this.id=l++,this.value=t,this.base=n||"dec",this.lengthInBits=e.getBitLength(this.value),this.isExpression=!1}return Object(i.a)(e,[{key:"getLengthInBits",value:function(){return this.value<0?32:Math.floor(Math.log(this.value)/Math.log(2))+1}},{key:"getOtherBase",value:function(e){switch(e||this.base){case"dec":case"bin":return"hex";case"hex":return"dec";default:throw new Error(e+" kind doesn't have opposite kind")}}},{key:"toString",value:function(t){return e.toBaseString(this.value,t||this.base)}},{key:"toOtherKindString",value:function(){return this.toString(this.getOtherBase())}},{key:"toDecimalString",value:function(){return this.toString("dec")}},{key:"toHexString",value:function(){return this.toString("hex")}},{key:"toBinaryString",value:function(){return this.toString("bin")}},{key:"setValue",value:function(t){this.value=t,this.lengthInBits=e.getBitLength(t)}},{key:"evaluate",value:function(){return this}},{key:"getUnderlyingOperand",value:function(){return this}}],[{key:"getBitLength",value:function(e){return Math.floor(Math.log(e)/Math.log(2))+1}},{key:"getBase",value:function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}}},{key:"create",value:function(t,n){return new e(t,n||"dec")}},{key:"parse",value:function(t){var n=s.parse(t);if(!n)throw new Error(t+" is not a valid number");return new e(n.value,n.base)}},{key:"toBaseString",value:function(e,t){switch(t){case"hex":var n=Math.abs(e).toString(16);return e>=0?"0x"+n:"-0x"+n;case"bin":return(e>>>0).toString(2);case"dec":return e.toString(10);default:throw new Error("Unexpected kind: "+t)}}},{key:"toHexString",value:function(e){return 0===e.indexOf("-")?"-0x"+e.substr(1):"0x"+e}}]),e}()},,function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",function(){return ExpressionOperand});var D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1),D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2),_NumericOperand__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(8),ExpressionOperand=function(){function ExpressionOperand(e,t,n){Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.a)(this,ExpressionOperand),this.expressionString=void 0,this.operand=void 0,this.sign=void 0,this.isExpression=void 0,this.isShiftExpression=void 0,this.isNotExpression=void 0,this.expressionString=e,this.operand=t,this.sign=n,this.isExpression=!0,this.isShiftExpression=this.sign.indexOf("<")>=0||this.sign.indexOf(">")>=0,this.isNotExpression="~"===this.sign}return Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__.a)(ExpressionOperand,[{key:"evaluate",value:function evaluate(operand){if(operand instanceof ExpressionOperand)throw new Error("value shouldnt be expression");var evaluatedOperand=this.operand.evaluate(),str="";if("~"==this.sign)str="~"+evaluatedOperand.value;else{if(null==operand)throw new Error("Other is required for expression: "+this.expressionString);str=operand.value+this.sign+evaluatedOperand.value}return _NumericOperand__WEBPACK_IMPORTED_MODULE_2__.a.create(eval(str),evaluatedOperand.base)}},{key:"getUnderlyingOperand",value:function(){return this.operand.getUnderlyingOperand()}},{key:"toString",value:function(){return this.sign+this.operand.toString()}}]),ExpressionOperand}()},,,,,,,,,,,function(e,t,n){e.exports=n(40)},,function(e,t,n){},,,,,,function(e,t,n){},,,,function(e,t,n){},function(e,t,n){},function(e,t,n){},,,function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var a=n(1),i=n(2),r=function(e){return"object"==typeof e&&!(e instanceof Array)&&e instanceof Object},s=function(e){return"function"==typeof e},l=function(e){return"string"==typeof e},o=n(4),u=n.n(o),c={doNotTrack:!1},d=new(function(){function e(){Object(a.a)(this,e),this.debugMode=void 0,this.handlers=void 0,this.errorHandler=void 0,this.handlers=[],this.debugMode=!1,this.errorHandler=null}return Object(i.a)(e,[{key:"execute",value:function(e,t){u.a.debug("Executing command: ".concat(e)),t=t||Object.assign({},c);var n=e.trim().toLowerCase(),a=this.findHandler(n);if(null!=a)if(this.debugMode)this.invokeHandler(n,a,t);else try{this.invokeHandler(n,a,t)}catch(i){this.handleError(n,i)}else u.a.debug("Handled is not found for command: ".concat(e)),this.handleError(n,new Error("Unsupported expression: "+n.trim()))}},{key:"onError",value:function(e){this.errorHandler=e}},{key:"command",value:function(e,t){var n=this.createHandler(e,t);null!=n?s(n.canHandle)?s(n.handle)?this.handlers.push(n):console.warn('handler is missing "handle" function. registration denied.'):console.warn('handler is missing "canHandle" function. registration denied.'):console.warn("unexpected set of arguments: ",JSON.stringify(arguments))}},{key:"createHandler",value:function(e,t){return r(e)?e:l(e)?{canHandle:function(t){return t===e},handle:t}:null}},{key:"findHandler",value:function(e){return this.handlers.filter(function(t){return t.canHandle(e)})[0]}},{key:"invokeHandler",value:function(e,t,n){var a=t.handle({input:e,options:n});null!=a&&u.a.debug(a)}},{key:"handleError",value:function(e,t){this.debugMode&&console.error(e,t),null!=this.errorHandler&&this.errorHandler(e,t)}}]),e}()),m=n(6),p=n(5),h=n(7),f=n(0),g=n.n(f),v=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(m.a)(this,Object(p.a)(t).call(this,e))).history=void 0,n.historyIndex=void 0,n.nameInput=void 0,n.nameInput=null,n.history=[],n.historyIndex=-1,n}return Object(h.a)(t,e),Object(i.a)(t,[{key:"componentDidMount",value:function(){null!=this.nameInput&&this.nameInput.focus()}},{key:"render",value:function(){var e=this;return g.a.createElement("input",{id:"in",type:"text",ref:function(t){e.nameInput=t},onKeyUp:function(t){return e.onKeyUp(t)},onKeyDown:function(t){return e.onKeyDown(t)},className:"expressionInput mono",placeholder:"type expression like '1>>2' or 'help' ",autoComplete:"off"})}},{key:"onKeyUp",value:function(e){var t=e.target;if(13==e.keyCode&&0!=t.value.trim().length){var n=t.value;this.history.unshift(n),this.historyIndex=-1,t.value="",this.props.onCommandEntered(n)}}},{key:"onKeyDown",value:function(e){if(38==e.keyCode){var t=this.historyIndex+1;return this.history.length>t&&(e.target.value=this.history[t],this.historyIndex=t),void e.preventDefault()}40==e.keyCode&&(this.historyIndex>0&&(e.target.value=this.history[--this.historyIndex]),e.preventDefault())}}]),t}(g.a.Component),b=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(h.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){return g.a.createElement("div",{className:"result"},g.a.createElement("div",{className:"input mono"},g.a.createElement("span",{className:"cur"},">"),this.props.input,g.a.createElement("a",{className:"hashLink",title:"Link for this expression",href:window.location.pathname+"#"+this.props.inputHash},"#")),g.a.createElement("div",{className:"content"},this.props.children))}}]),t}(g.a.Component);n(23);var E=function(e){var t=[],n=e.appState;return"prod"!=e.appState.env&&t.push(n.env),e.appState.debugMode&&t.push("debug"),"false"===localStorage.getItem("TrackAnalytics")&&t.push("notrack"),0==t.length?null:g.a.createElement("div",{className:"debug-indicators"},t.map(function(e){return g.a.createElement("span",{title:e},"[",e.substring(0,1),"]\xa0")}))},y={encodeHash:function(e){return encodeURIComponent(e.trim().replace(/\s/g,","))},decodeHash:function(e){return decodeURIComponent(e.replace(/^\#/,"")).replace(/,/g," ")},getArgs:function(e){var t,n=this.decodeHash(e),a=[];return(t=n,t.split("||").filter(function(e){return e.length>0})).forEach(function(e){a.push(e)}),a}};var k=n(9),x=n(13),B=n(14);n(29);var w=function(e){var t=e.icon,n=e.command,a=e.text,i=e.textClassName,r=function(){return d.execute(n||a)};return null!=t?g.a.createElement("a",{href:"javascript:void(0)",onClick:r},g.a.createElement(k.a,{icon:t,className:"icon"}),g.a.createElement("span",{className:i},a)):g.a.createElement("a",{href:"javascript:void(0)",onClick:r},g.a.createElement("span",{className:i},a))};var O=function(){return g.a.createElement("ul",{className:"top-links"},g.a.createElement("li",null,g.a.createElement(w,{text:"donate",icon:x.a,textClassName:"link-text"})),g.a.createElement("li",null,g.a.createElement("a",{href:"https://github.com/BorisLevitskiy/BitwiseCmd"},g.a.createElement(k.a,{className:"icon",icon:B.a,size:"lg"}),g.a.createElement("span",{className:"link-text"},"github"))),g.a.createElement("li",null,g.a.createElement("a",{href:"https://twitter.com/BitwiseCmd"},g.a.createElement(k.a,{className:"icon",icon:B.b,size:"lg"}),g.a.createElement("span",{className:"link-text"},"twitter"))),g.a.createElement("li",null,g.a.createElement("a",{href:"mailto:bitwisecmd@gmail.com?subject=Feedback"},g.a.createElement(k.a,{className:"icon",icon:x.b,size:"lg"}),g.a.createElement("span",{className:"link-text"},"idea or feedback"))))},N=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(h.a)(t,e),Object(i.a)(t,[{key:"componentWillMount",value:function(){var e=this;this.refresh(),this.props.appState.onChange(function(){return e.refresh()})}},{key:"refresh",value:function(){this.setState(this.props.appState)}},{key:"getIndicator",value:function(e){return e?"on":"off"}},{key:"getResultViews",value:function(){var e=this;return this.state.commandResults.map(function(t,n){return g.a.createElement(b,{key:t.key,input:t.input,inputHash:y.encodeHash(t.input),appState:e.props.appState},t.view)})}},{key:"toggleEmphasizeBytes",value:function(){this.props.appState.toggleEmphasizeBytes()}},{key:"render",value:function(){var e=this;return g.a.createElement("div",{className:"app-root ".concat(this.state.uiTheme)},g.a.createElement(E,{appState:this.props.appState}),g.a.createElement("div",{className:"header"},g.a.createElement("h1",null,"Bitwise",g.a.createElement("span",{className:"header-cmd"},"Cmd")),g.a.createElement(O,null)),g.a.createElement("div",{className:"expressionInput-container"},g.a.createElement(v,{onCommandEntered:function(e){return d.execute(e)}}),g.a.createElement("span",{className:"configPnl"},g.a.createElement("span",{id:"emphasizeBytes","data-cmd":"em",className:"indicator "+this.getIndicator(this.state.emphasizeBytes),title:"Toggle Emphasize Bytes",onClick:function(){return e.toggleEmphasizeBytes()}},"[em]"))),g.a.createElement("div",{id:"output"},this.getResultViews()))}}]),t}(g.a.Component),S=n(18),_=n.n(S);n(33);var C=function(e){return g.a.createElement("div",{className:"result"},g.a.createElement("div",{className:"error"},e.errorMessage))},I={formatString:function(e,t){return e.toString(function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}throw new Error("Unsupported kind: "+e)}(t||"bin"))},padLeft:function(e,t,n){var a=Array.prototype.slice.call(e);n=n||"0";if(null==t)return e;for(;t>a.length;)a.unshift(n);return a.join("")},bin:function(e){return this.formatString(e,"bin")},emBin:function(e){return this.padLeft(this.bin(e),8,"0")}};var j=I,M=I.emBin,R=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(h.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){return g.a.createElement("span",{className:this.props.className},this.getChildren())}},{key:"onBitClick",value:function(e,t){if(this.props.allowFlipBits&&this.props.onFlipBit){this.props.onFlipBit;var n=this.props.binaryString.split("");n[e]="0"==n[e]?"1":"0";var a=n.join("");this.props.onFlipBit({index:e,binaryString:this.props.binaryString,$event:t,newBinaryString:a})}}},{key:"getChildren",value:function(){var e=this.createBits(this.props.binaryString.split(""));return this.props.emphasizeBytes?this.splitIntoBytes(e):e}},{key:"createBits",value:function(e){var t=this,n=this.props.allowFlipBits||!1?" flipable":"";return e.map(function(e,a){var i="1"==e?"one".concat(n):"zero".concat(n);return g.a.createElement("span",{className:i,key:a,onClick:function(e){return t.onBitClick(a,e)}},e)})}},{key:"splitIntoBytes",value:function(e){for(var t=[],n=0;e.length>0;)t.push(g.a.createElement("span",{key:n++,className:"byte"},e.splice(0,8)));return t}}]),t}(g.a.Component);n(34);var z=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(h.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){var e=this;return g.a.createElement("table",{className:"expression"},g.a.createElement("tbody",null,this.props.ipAddresses.map(function(t,n){return g.a.createElement("tr",{key:n},g.a.createElement("td",{className:"label"},g.a.createElement("strong",null,t.toString())),g.a.createElement("td",{className:"bin"},e.bin(t.firstByte,1,t),g.a.createElement("span",{className:"soft"},"."),e.bin(t.secondByte,2,t),g.a.createElement("span",{className:"soft"},"."),e.bin(t.thirdByte,3,t),g.a.createElement("span",{className:"soft"},"."),e.bin(t.fourthByte,4,t)))})))}},{key:"bin",value:function(e,t,n){var a,i=this;return g.a.createElement(R,{binaryString:(a=e,j.padLeft(j.formatString(a,"bin"),8,"0")),key:t,emphasizeBytes:!1,allowFlipBits:!0,className:"octet-".concat(t),onFlipBit:function(e){return i.onFlippedBit(e.newBinaryString,t,n)}})}},{key:"onFlippedBit",value:function(e,t,n){n.setOctet(t,parseInt(e,2)),this.forceUpdate()}}]),t}(g.a.Component),D=function(){function e(t,n){Object(a.a)(this,e),this.maskBits=void 0,this.ipAddress=void 0,this.ipAddress=t,this.maskBits=n}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.ipAddress.toString(),"/").concat(this.maskBits)}}]),e}(),A=function(){function e(t,n,i,r){Object(a.a)(this,e),this.firstByte=void 0,this.secondByte=void 0,this.thirdByte=void 0,this.fourthByte=void 0,this.firstByte=t,this.secondByte=n,this.thirdByte=i,this.fourthByte=r}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.firstByte,".").concat(this.secondByte,".").concat(this.thirdByte,".").concat(this.fourthByte)}},{key:"toBinaryString",value:function(){return"".concat(M(this.firstByte),").").concat(M(this.secondByte),".").concat(M(this.thirdByte),".").concat(M(this.fourthByte))}},{key:"clone",value:function(){return new e(this.firstByte,this.secondByte,this.thirdByte,this.fourthByte)}},{key:"setOctet",value:function(e,t){switch(e){case 1:this.firstByte=t;break;case 2:this.secondByte=t;break;case 3:this.thirdByte=t;break;case 4:this.fourthByte=t}}}]),e}(),L=function(){function e(t){Object(a.a)(this,e),this.input=void 0,this.input=t}return Object(i.a)(e,[{key:"getAdressSpaceSize",value:function(){var e=32-this.input.maskBits;return Math.pow(2,e)-2}},{key:"toString",value:function(){return this.input.toString()}}]),e}(),F={parse:function(e){var t=this,n=this.parseCommand(e),a=this.getMaches(n.nextInput),i=a.filter(function(e){return null!=e.matches}),r=a.filter(function(e){return null==e.matches});if(0==i.length)return null;if(r.length>0)return new H("Value(s) ".concat(r.map(function(e){return e.input}).join(",")," was not recognized as valid ip address or ip address with a subnet mask"));var s=a.map(function(e){return t.parseSingle(e.matches,e.input)}),l=s.filter(function(e){return e instanceof H});if(l.length>0)return l[0];if(null!=n.command){var o=this.createSubnetDefinition(s);return o}return s},parseCommand:function(e){return e.startsWith("subnet")?{command:"subnet",nextInput:e.substring("subnet".length)}:{command:null,nextInput:e}},getMaches:function(e){return e.replace(/[\t\s]+/g," ").split(" ").filter(function(e){return e.length>0}).map(function(e){var t=/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})(\/\d+)?$/.exec(e);return null==t||0===t.length?{matches:null,input:e}:{matches:t,input:e}})},parseSingle:function(e,t){var n=function(e){return e<0||e>255},a=parseInt(e[1]),i=parseInt(e[2]),r=parseInt(e[3]),s=parseInt(e[4]);if(n(a)||n(i)||n(r)||n(s))return new H("".concat(t," doesn't represent a valid IP address space"));var l=new A(a,i,r,s);if(e[5]){var o=e[5].substr(1),u=parseInt(o);return u>32?new H("Subnet mask value in ".concat(t," is out of range")):new D(l,u)}return l},createSubnetDefinition:function(e){if(1!=e.length)return new H("Incorrect network definition");var t=e[0];return t instanceof D?new L(t):new H("Network definition requires subnet mask")}},H=function e(t){Object(a.a)(this,e),this.errorMessage=void 0,this.errorMessage=t},P=F,T=n(20);n(35);function U(e,t){return 0==t?e:e&Math.pow(2,8-t)-1<=t?e:t},0)}return Object(i.a)(e,[{key:"toString",value:function(){return this.numbers.map(function(e){return e.value.toString()}).join(" ")}}]),e}(),ae=function e(t,n){Object(a.a)(this,e),this.expressionString=void 0,this.expressionItems=void 0,this.expressionString=t,this.expressionItems=n},ie=function(){function e(){Object(a.a)(this,e),this.factories=void 0,this.factories=[]}return Object(i.a)(e,[{key:"canParse",value:function(e){for(var t=e.replace(/^\s+|\s+$/,""),n=this.factories.length-1;n>=0;n--)if(!0===this.factories[n].canCreate(t))return!0;return!1}},{key:"parse",value:function(e){for(var t,n=e.replace(/^\s+|\s+$/,""),a=0,i=this.factories.length;a0&&n.push(ee.a.parse(e.trim()))}),new ne(e,n)}}]),e}(),se=function(){function e(){Object(a.a)(this,e),this.fullRegex=void 0,this.regex=void 0,this.fullRegex=/^((<<|>>|>>>|\||\&|\^)?(~?-?([b,x,a-f,0-9]+)))+$/,this.regex=/(<<|>>|>>>|\||\&|\^)?(~?-?(?:[b,x,a-f,0-9]+))/g}return Object(i.a)(e,[{key:"canCreate",value:function(e){return this.fullRegex.lastIndex=0,this.fullRegex.test(this.normalizeString(e))}},{key:"create",value:function(e){for(var t,n=[],a=this.normalizeString(e);null!=(t=this.regex.exec(a));)n.push(this.parseMatch(t));return new ae(a,n)}},{key:"parseMatch",value:function(e){var t=e[0],n=e[1],a=e[2],i=null;return i=0==a.indexOf("~")?new te.a(a,ee.a.parse(a.substring(1)),"~"):ee.a.parse(a),null==n?i:new te.a(t,i,n)}},{key:"normalizeString",value:function(e){return e.replace(/\s+/g,"")}}]),e}(),le=new ie;le.addFactory(new re),le.addFactory(new se);var oe=function(){function e(t){var n=t.emphasizeBytes,i=void 0!==n&&n,r=t.allowFlipBits,s=void 0!==r&&r;Object(a.a)(this,e),this.emphasizeBytes=void 0,this.items=void 0,this.maxNumberOfBits=void 0,this.allowFlipBits=void 0,this.emphasizeBytes=i,this.items=[],this.maxNumberOfBits=0,this.allowFlipBits=!0===s}return Object(i.a)(e,[{key:"addOperandRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"",css:"",expressionItem:e,allowFlipBits:this.allowFlipBits,label:""})}},{key:"addExpressionOperandRow",value:function(e){var t=e.isNotExpression?e.evaluate():e.getUnderlyingOperand();this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign,css:"",label:this.getLabel(t),expressionItem:e.operand,allowFlipBits:this.allowFlipBits})}},{key:"addShiftExpressionResultRow",value:function(e,t){this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign+e.operand.toString(),css:"expression-result",expressionItem:t,allowFlipBits:!1,label:""})}},{key:"addExpressionResultRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"=",css:"expression-result",expressionItem:e,allowFlipBits:!1,label:""})}},{key:"getLabel",value:function(e){return"bin"==e.base?e.toString("dec"):e.toString()}}],[{key:"buildListOfNumbers",value:function(t,n){var a=new e(n);return t.numbers.forEach(function(e){return a.addOperandRow(e)}),a.maxNumberOfBits=e.getNumberOfBits(a.maxNumberOfBits,a.emphasizeBytes),a}},{key:"buildMultiple",value:function(t,n){t.expressionItems[0];for(var a,i=0,r=t.expressionItems.length,s=new e(n),l=null;i>")," \u2014 sign propagating right shift"),g.a.createElement("li",null,g.a.createElement("code",null,">>>")," \u2014 zero-fill right shift"))),g.a.createElement("div",{className:"section"},g.a.createElement("strong",{className:"section-title soft"},"Tip"),g.a.createElement("p",null,"You can click on bits to flip them in number inputs (e.g. ",g.a.createElement(w,{text:"2 4"}),") or IP addresses (e.g. ",g.a.createElement(w,{text:"192.168.0.0/8"}),")")))))};var ge=function(e){return g.a.createElement("p",null,e.text)};n(39);var ve=function(){return g.a.createElement("div",{className:"changelog"},g.a.createElement("h3",null,"Changelog"),g.a.createElement("div",{className:"item item-new"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft date"},"Jun 16th, 2021")," ",g.a.createElement("br",null),"Added support of ",g.a.createElement("code",null,"subnet")," command to display information about subnet ip adress such. Try it out: ",g.a.createElement(w,{text:"subnet 192.168.24.1/14"}))),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft date"},"Jun 14th, 2021")," ",g.a.createElement("br",null),"Added support of ip addresses and subnet masks notatioans. Try them out:"),g.a.createElement("ul",null,g.a.createElement("li",null,"Single IP address ",g.a.createElement(w,{text:"127.0.0.1"})),g.a.createElement("li",null,"Multiple IP addresses and subnet mask notations ",g.a.createElement(w,{text:"127.0.0.1 192.168.0.0/24"})))),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft date"},"Jun 6th, 2017")," ",g.a.createElement("br",null),"Added ",g.a.createElement("code",null,g.a.createElement(w,{text:"guid"}))," command. Use it for generating v4 GUIDs ")),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft date"},"May 27th, 2017")," ",g.a.createElement("br",null),"Added support of binary number notation (e.g. ",g.a.createElement("code",null,g.a.createElement(w,{text:"0b10101"})),"). ")),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft"},"May 20th, 2017")," ",g.a.createElement("br",null),"New ",g.a.createElement(w,{text:"Midnight"})," theme added. ")),g.a.createElement("div",{className:"item"},g.a.createElement("p",null,g.a.createElement("span",{className:"soft"},"May 16th, 2017")," ",g.a.createElement("br",null),"Complete rewrite using React. Old implementation is available at ",g.a.createElement("a",{href:"http://bitwisecmd.com/old"},"http://bitwisecmd.com/old"),". Please let me know if you have problems with this release by ",g.a.createElement("a",{href:"https://github.com/BorysLevytskyi/BitwiseCmd/issues"},"creating issue")," in Github Repo.")))},be=6,Ee=function(){function e(t,n){Object(a.a)(this,e),this.version=be,this.emphasizeBytes=void 0,this.debugMode=!1,this.uiTheme=void 0,this.changeHandlers=void 0,this.commandResults=void 0,this.persistedVersion=void 0,this.wasOldVersion=void 0,this.env=void 0,this.pageVisitsCount=void 0,this.donationClicked=void 0,this.commandResults=[],this.changeHandlers=[],this.uiTheme=t.uiTheme||"midnight",this.env=n,this.emphasizeBytes=t.emphasizeBytes||!0,this.persistedVersion=t.version||.1,this.wasOldVersion=null!=t.version&&this.version>this.persistedVersion,this.debugMode="prod"!==n||!0===t.debugMode,this.pageVisitsCount=t.pageVisistsCount||0,this.donationClicked=t.donationClicked}return Object(i.a)(e,[{key:"addCommandResult",value:function(e,t){var n=Math.ceil(1e7*Math.random())^Date.now();this.commandResults.unshift({key:n,input:e,view:t}),u.a.debug("command result added: ".concat(e)),this.triggerChanged()}},{key:"clearCommandResults",value:function(){this.commandResults=[],this.triggerChanged()}},{key:"toggleEmphasizeBytes",value:function(){this.emphasizeBytes=!this.emphasizeBytes,this.triggerChanged()}},{key:"onChange",value:function(e){this.changeHandlers.push(e)}},{key:"triggerChanged",value:function(){var e=this;this.changeHandlers.forEach(function(t){return t(e)})}},{key:"setUiTheme",value:function(e){this.uiTheme=e,this.triggerChanged()}},{key:"toggleDebugMode",value:function(){this.debugMode=!this.debugMode,this.triggerChanged()}},{key:"registerVisit",value:function(){this.pageVisitsCount++,this.triggerChanged()}},{key:"onDonationClicked",value:function(){return!0!==this.donationClicked&&(this.donationClicked=!0,this.triggerChanged(),!0)}},{key:"getPersistData",value:function(){return{emphasizeBytes:this.emphasizeBytes,uiTheme:this.uiTheme,version:this.version,debugMode:this.debugMode,pageVisistsCount:this.pageVisitsCount,donationClicked:this.donationClicked}}}]),e}();var ye={getPersistedData:function(){var e=window.localStorage.getItem("AppState");if(!e)return{};try{return JSON.parse(e)}catch(t){return console.error("Failed to parse AppState json. Json Value: \n"+e,t),{}}},watch:function(e){var t=this;e.onChange(function(){return t.persistData(e)})},persistData:function(e){localStorage.setItem("AppState",JSON.stringify(e.getPersistData()))}},ke="StartupCommand",xe=["help","127.0.0.1 192.168.0.0/8","1|2&6","4 0b1000000 0x80"];var Be={setup:function(e,t){t.debugMode=e.debugMode,e.onChange(function(){return t.debugMode=e.debugMode}),t.command("help",function(t){return e.addCommandResult(t.input,g.a.createElement(fe,null))}),t.command("clear",function(){return e.clearCommandResults()}),t.command("em",function(){return e.toggleEmphasizeBytes()}),t.command("dark",function(){return e.setUiTheme("dark")}),t.command("light",function(){return e.setUiTheme("light")}),t.command("midnight",function(){return e.setUiTheme("midnight")}),t.command("about",function(t){return e.addCommandResult(t.input,g.a.createElement(he,null))}),t.command("whatsnew",function(t){return e.addCommandResult(t.input,g.a.createElement(ve,null))}),t.command("guid",function(t){return e.addCommandResult(t.input,g.a.createElement(ge,{text:pe()()}))}),t.command("-notrack",function(){}),t.command("-debug",function(t){e.toggleDebugMode(),e.addCommandResult(t.input,g.a.createElement(ge,{text:"Debug Mode: ".concat(e.debugMode)}))}),t.command("donate",function(t){e.onDonationClicked()?X({eventCategory:"DonationButton",eventAction:"Clicked"}):X({eventCategory:"DonationButton",eventAction:"ClickedAgain"}),e.addCommandResult(t.input,g.a.createElement(ge,{text:"Thank you for your interest in donation. This feature is under constraction. I'll let you know when it will be done."}))}),t.command("track",function(e){X({eventCategory:"General",eventAction:"AnalyticsTest"})}),"prod"!==e.env&&t.command({canHandle:function(e){return 0===e.indexOf("default")},handle:function(t){var n,a=t.input.substring(7).trim(),i=(n=a,console.log(n),0===n.length?"Default comand: "+localStorage.getItem(ke):"clear"===n?(localStorage.removeItem(ke),"Default startup command cleared"):(localStorage.setItem(ke,n),"Default startup command saved: ".concat(n)));e.addCommandResult(t.input,g.a.createElement(ge,{text:i}))}}),t.onError(function(t,n){return e.addCommandResult(t,g.a.createElement(C,{errorMessage:n.toString()}))})}};var we=function(e){return g.a.createElement("div",{className:"result"},g.a.createElement("div",{className:"error"},"\xaf\\_(\u30c4)_/\xaf Sorry, i don\u2032t know what ",g.a.createElement("strong",null,e.input)," is"))},Oe=function(){var e="bitwisecmd.com"===window.location.host?"prod":"stage";!function(e){"prod"!=e?(u.a.setLevel("debug"),u.a.debug("Log level is set to debug. Env: ".concat(e))):u.a.setLevel("warn")}(e);var t=function(e){var t=ye.getPersistedData(),n=new Ee(t,e);return ye.watch(n),u.a.debug("appState initialized",n),n}(e);return{appState:t,startupCommands:function(e){var t=y.getArgs(window.location.hash),n=function(){var e=localStorage.getItem(ke);return null!=e?[e]:[]}();return 0==n.length&&(n=xe),e.wasOldVersion&&(n=["whatsnew"]),t.length>0&&(n=t),u.a.debug("Executing startup commands",n),n}(t)}}();Be.setup(Oe.appState,d),Z.setup(Oe.appState,d),de.setup(Oe.appState,d),d.command({canHandle:function(){return!0},handle:function(e){return Oe.appState.addCommandResult(e.input,g.a.createElement(we,{input:e.input}))}});var Ne=g.a.createElement(N,{appState:Oe.appState});_.a.render(Ne,document.getElementById("root")),u.a.debug("Executing startup commands",Oe.startupCommands),Oe.startupCommands.forEach(function(e){return d.execute(e,{doNotTrack:!0})}),Oe.appState.registerVisit(),u.a.debug("started")}],[[21,1,2]]]); +//# sourceMappingURL=main.dd14db86.chunk.js.map \ No newline at end of file diff --git a/static/js/main.dd14db86.chunk.js.map b/static/js/main.dd14db86.chunk.js.map new file mode 100644 index 0000000..35fc2c3 --- /dev/null +++ b/static/js/main.dd14db86.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["expression/numberParser.ts","expression/NumericOperand.ts","expression/ExpressionOperand.ts","core/is.ts","shell/cmd.ts","shell/components/InputBox.tsx","shell/components/DisplayResultView.tsx","shell/components/DebugIndicators.tsx","core/hash.ts","core/components/CommandLink.tsx","shell/components/TopLinks.tsx","shell/components/AppRoot.tsx","shell/components/ErrorResultView.tsx","core/formatter.ts","core/components/BinaryString.tsx","networking/components/IpAddressView.tsx","networking/models.ts","networking/ip-parser.ts","core/byte.ts","networking/subnet-utils.tsx","networking/components/IpAddressBinaryString.tsx","networking/components/SubnetView.tsx","shell/analytics.ts","networking/module.tsx","expression/ListOfNumbersExpression.ts","expression/BitwiseOperationExpression.ts","expression/expression.ts","expression/components/BitwiseExpressionModel.ts","expression/components/BitwiseOperationExpressionView.tsx","expression/module.tsx","shell/components/AboutResultView.tsx","shell/components/HelpResultView.tsx","shell/components/TextResultView.tsx","shell/components/WhatsNewResultView.tsx","shell/AppState.ts","shell/appStateStore.ts","shell/startup.ts","shell/module.tsx","shell/components/UnknownInputResultView.tsx","index.tsx"],"names":["knownParsers","regex","radix","base","prefix","numberParser","NumberParser","parsers","Object","classCallCheck","this","input","_this","map","p","applyParser","reduce","c","n","m","match","length","parser","rawInput","test","value","parseInt","replace","globalId","NumericOperand","id","lengthInBits","isExpression","getBitLength","Math","floor","log","kind","Error","toBaseString","toString","getOtherBase","num","parsed","parse","hexVal","abs","hex","indexOf","substr","ExpressionOperand","expressionString","operand","sign","D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","isShiftExpression","isNotExpression","evaluatedOperand","evaluate","str","create","eval","getUnderlyingOperand","is","obj","Array","DEFUALT_COMMAND_OPTIONS","doNotTrack","shell_cmd","CmdShell","debugMode","handlers","errorHandler","createClass","key","ops","debug","concat","assign","trim","toLowerCase","handler","findHandler","invokeHandler","e","handleError","h","cmd","createHandler","canHandle","handle","push","console","warn","JSON","stringify","arguments","filter","options","cmdResult","err","error","InputBox","props","possibleConstructorReturn","getPrototypeOf","call","history","historyIndex","nameInput","focus","_this2","react_default","a","createElement","type","ref","onKeyUp","onKeyDown","className","placeholder","autoComplete","target","keyCode","commandInput","unshift","onCommandEntered","args","newIndex","preventDefault","React","Component","DisplayResultView","title","href","window","location","pathname","inputHash","children","DebugIndicators","list","state","appState","env","localStorage","getItem","i","substring","hash","encodeHash","encodeURIComponent","decodeHash","hashValue","decodeURIComponent","getArgs","decodedHash","split","s","forEach","CommandLink","_ref","icon","command","text","textClassName","onClick","execute","index_es","TopLinks","components_CommandLink","faDonate","faGithub","size","faTwitter","faEnvelope","AppRoot","refresh","onChange","setState","commandResults","r","DisplayResultView_DisplayResultView","view","toggleEmphasizeBytes","_this3","uiTheme","components_DebugIndicators","components_TopLinks","InputBox_InputBox","data-cmd","getIndicator","emphasizeBytes","getResultViews","ErrorResultView","errorMessage","formatter","formatString","getBase","padLeft","symbol","sb","prototype","slice","join","bin","number","emBin","BinaryStringView","getChildren","index","allowFlipBits","onFlipBit","arr","binaryString","newBinaryString","$event","bits","createBits","splitIntoBytes","bitChars","css","onBitClick","bytes","splice","IpAddressView","_React$Component","apply","inherits","ipAddresses","ip","firstByte","secondByte","thirdByte","fourthByte","octetNumber","BinaryString_BinaryStringView","onFlippedBit","setOctet","forceUpdate","IpAddressWithSubnetMask","ipAddress","maskBits","IpAddress","octet","SubnetCommand","definition","spaceLengthInBits","pow","ipAddressParser","result","parseCommand","matches","getMaches","nextInput","correctInputs","incorrectInputs","ParsingError","v","parsedObjects","parseSingle","parsingErrors","createSubnetDefinition","startsWith","exec","invalid","first","second","third","fourth","maskPart","items","message","flipBitsToZero","byte","numberOfBits","flipBitsToOne","createSubnetMaskByte","createSubnetMaskIp","ipm","mask","getBroadCastAddress","flipSubnetMaskBits","flipper","fullByte","flip","IpAddressBinaryString","Fragment","SubnetRow","descr","data-test-name","components_IpAddressBinaryString","SubnetView","_useState","useState","subnet","_useState2","slicedToArray","setSubnet","getAdressSpaceSize","newInput","disabled","sendAnalyticsEvent","evt","bitwiseCmdAnalyticsHandler","delivered","trackCommand","action","eventCategory","eventAction","networkingAppModule","setup","addCommandResult","components_ErrorResultView","components_SubnetView","networking_components_IpAddressView","ListOfNumbersExpression","numbers","maxBitsLength","BitwiseOperationExpression","expressions","expressionItems","ExpressionParser","factories","trimmed","canCreate","factory","l","ListOfNumbersExpressionFactory","BitwiseOperationExpressionFactory","fullRegex","lastIndex","normalizeString","operands","normalizedString","parseMatch","addFactory","BitwiseExpressionViewModel","_ref$emphasizeBytes","_ref$allowFlipBits","maxNumberOfBits","max","getLengthInBits","expressionItem","label","expression","resultNumber","getLabel","resultOperand","op","expr","config","model","addOperandRow","getNumberOfBits","ex","len","prev","eo","addExpressionOperandRow","notResult","addExpressionResultRow","addShiftExpressionResultRow","buildListOfNumbers","buildMultiple","BitwiseOperationExpressionView","rows","getRows","createModel","itm","BitwiseOperationExpressionView_ExpressionRow","onBitFlipped","ExpressionRow","_this4","_this$props","getBinaryString","flipBit","getOther","toBinaryString","getLabelString","toOtherKindString","newValue","setValue","expressionAppModule","canParse","BitwiseOperationExpressionView_BitwiseOperationExpressionView","AboutResultView","data-result-type","HelpResultView","TextResultView","WhatsnewResultView","APP_VERSION","AppState","persistData","version","changeHandlers","persistedVersion","wasOldVersion","pageVisitsCount","donationClicked","pageVisistsCount","ceil","random","Date","now","triggerChanged","theme","appStateStore","getPersistedData","json","watch","setItem","getPersistData","STARTUP_COMMAND_KEY","DEFAULT_COMMANDS","bootstrapAppData","shellModule","components_HelpResultView","clearCommandResults","setUiTheme","components_AboutResultView","components_WhatsNewResultView","components_TextResultView","uuid","toggleDebugMode","onDonationClicked","removeItem","onError","UnknownInputResultView","appData","host","setLevel","setupLogger","stateData","createAppState","startupCommands","hashArgs","loadStoredCommands","getStartupCommands","components_UnknownInputResultView","root","AppRoot_AppRoot","ReactDOM","render","document","getElementById","registerVisit"],"mappings":"gHAoBIA,EAAgC,CAChC,CAAEC,MAnBe,UAmBMC,MAAO,GAAIC,KAAM,MAAOC,OAAQ,MACvD,CAAEH,MAnBW,oBAmBMC,MAAO,GAAIC,KAAM,MAAOC,OAAO,OAClD,CAAEH,MAnBW,gBAmBMC,MAAO,EAAGC,KAAM,MAAOC,OAAO,QA0C/CC,EAAe,eAnCjB,SAAAC,EAAYC,GACXC,OAAAC,EAAA,EAAAD,CAAAE,KAAAJ,GAAAI,KAHDH,aAGA,EACIG,KAAKH,QAAUA,oDAGZI,GAAsC,IAAAC,EAAAF,KACzC,OAAOA,KAAKH,QAAQM,IAAI,SAAAC,GAAC,OAAIF,EAAKG,YAAYD,EAAGH,KAAQK,OAAO,SAACC,EAAGC,GAAJ,OAAUD,GAAKC,0CAGpEP,GACX,IAAIQ,EAAIR,EAAMS,MAAMT,GAEpB,OAAQ,MAALQ,GAAyB,GAAZA,EAAEE,OACP,KAGJF,EAAE,uCAGDG,EAAuBC,GAE/B,OAAID,EAAOrB,MAAMuB,KAAKD,GAMd,CACJE,MAHQC,SAASH,EAASI,QAAQL,EAAOlB,OAAQ,IAAKkB,EAAOpB,OAI7DC,KAAMmB,EAAOnB,KACbQ,MAAOY,GARA,cAaE,CAAiBvB,mCC9DtC,IAAI4B,EAAoB,EAGHC,aAOjB,SAAAA,EAAYJ,EAAgBtB,GAAoBK,OAAAC,EAAA,EAAAD,CAAAE,KAAAmB,GAAAnB,KANhDoB,QAM+C,EAAApB,KAL/Ce,WAK+C,EAAAf,KAJ/CP,UAI+C,EAAAO,KAH/CqB,kBAG+C,EAAArB,KAF/CsB,kBAE+C,EAC3CtB,KAAKoB,GAAKF,IACVlB,KAAKe,MAAQA,EACbf,KAAKP,KAAOA,GAAQ,MACpBO,KAAKqB,aAAeF,EAAeI,aAAavB,KAAKe,OACrDf,KAAKsB,cAAe,gEAIpB,OAAGtB,KAAKe,MAAQ,EACL,GAEJS,KAAKC,MAAMD,KAAKE,IAAI1B,KAAKe,OAASS,KAAKE,IAAI,IAAM,uCAG/CC,GACT,OAAOA,GAAQ3B,KAAKP,MAChB,IAAK,MACL,IAAK,MACD,MAAO,MACX,IAAK,MAAO,MAAO,MACnB,QAAU,MAAM,IAAImC,MAAMD,EAAO,sEAIhClC,GACL,OAAO0B,EAAeU,aAAa7B,KAAKe,MAAOtB,GAAQO,KAAKP,kDAI5D,OAAOO,KAAK8B,SAAS9B,KAAK+B,0DAI1B,OAAO/B,KAAK8B,SAAS,6CAIrB,OAAO9B,KAAK8B,SAAS,gDAIrB,OAAO9B,KAAK8B,SAAS,wCAGhBf,GACLf,KAAKe,MAAQA,EACbf,KAAKqB,aAAeF,EAAeI,aAAaR,sCAIhD,OAAOf,oDAIP,OAAOA,4CAGSgC,GAChB,OAAOR,KAAKC,MAAMD,KAAKE,IAAIM,GAAOR,KAAKE,IAAI,IAAM,kCAGtCC,GACX,OAAQA,GACJ,IAAK,MAAO,OAAO,EACnB,IAAK,MAAO,OAAO,GACnB,IAAK,MAAO,OAAO,mCAIbZ,EAAgBtB,GAC1B,OAAO,IAAI0B,EAAeJ,EAAOtB,GAAQ,qCAGhCQ,GAET,IAAIgC,EAAStC,EAAauC,MAAMjC,GAEhC,IAAIgC,EACA,MAAM,IAAIL,MAAM3B,EAAQ,0BAG5B,OAAO,IAAIkB,EAAec,EAAOlB,MAAOkB,EAAOxC,2CAG/BsB,EAAgBtB,GAChC,OAAOA,GACH,IAAK,MACD,IAAI0C,EAASX,KAAKY,IAAIrB,GAAOe,SAAS,IACtC,OAAOf,GAAS,EAAI,KAAOoB,EAAS,MAAQA,EAChD,IAAK,MACD,OAAQpB,IAAQ,GAAGe,SAAS,GAChC,IAAK,MACD,OAAOf,EAAMe,SAAS,IAC1B,QACI,MAAM,IAAIF,MAAM,oBAAsBnC,wCAI7B4C,GACb,OAA4B,IAArBA,EAAIC,QAAQ,KAAa,MAAQD,EAAIE,OAAO,GAAK,KAAOF,kfC9GtDG,6BAQjB,SAAAA,kBAAYC,EAA2BC,EAA+BC,GAAgB7C,OAAA8C,4GAAA,EAAA9C,CAAAE,KAAAwC,mBAAAxC,KAPtFyC,sBAOqF,EAAAzC,KANrF0C,aAMqF,EAAA1C,KALrF2C,UAKqF,EAAA3C,KAJrFsB,kBAIqF,EAAAtB,KAHrF6C,uBAGqF,EAAA7C,KAFrF8C,qBAEqF,EACjF9C,KAAKyC,iBAAmBA,EACxBzC,KAAK0C,QAAUA,EACf1C,KAAK2C,KAAOA,EACZ3C,KAAKsB,cAAe,EACpBtB,KAAK6C,kBAAoB7C,KAAK2C,KAAKL,QAAQ,MAAQ,GAAKtC,KAAK2C,KAAKL,QAAQ,MAAO,EACjFtC,KAAK8C,gBAAgC,MAAd9C,KAAK2C,0LAGvBD,SACL,GAAIA,mBAAmBF,kBACnB,MAAM,IAAIZ,MAAM,gCAGpB,IAAImB,iBAAmB/C,KAAK0C,QAAQM,WAEhCC,IAAM,GACV,GAAgB,KAAbjD,KAAK2C,KACJM,IAAM,IAAMF,iBAAiBhC,UAC1B,CACH,GAAc,MAAX2B,QACH,MAAM,IAAId,MAAM,qCAAuC5B,KAAKyC,kBAE5DQ,IAAMP,QAAQ3B,MAAQf,KAAK2C,KAAOI,iBAAiBhC,MAGvD,OAAOI,+CAAe+B,OAAOC,KAAKF,KAAMF,iBAAiBtD,qDAIzD,OAAOO,KAAK0C,QAAQU,0DAIpB,OAAOpD,KAAK2C,KAAO3C,KAAK0C,QAAQZ,+QC7CzBuB,EACE,SAASC,GAClB,MAAqB,iBAAPA,KAAqBA,aAAeC,QAAUD,aAAexD,QAFpEuD,EAKA,SAASC,GAChB,MAAqB,mBAAPA,GANPD,EASH,SAASC,GACb,MAAqB,iBAAPA,mBCKhBE,EAA2C,CAC7CC,YAAY,GAqGDC,EAAA,IA7Ff,WAII,SAAAC,IAAe7D,OAAAC,EAAA,EAAAD,CAAAE,KAAA2D,GAAA3D,KAHf4D,eAGc,EAAA5D,KAFd6D,cAEc,EAAA7D,KADd8D,kBACc,EACV9D,KAAK6D,SAAW,GAChB7D,KAAK4D,WAAY,EACjB5D,KAAK8D,aAAe,KAP5B,OAAAhE,OAAAiE,EAAA,EAAAjE,CAAA6D,EAAA,EAAAK,IAAA,UAAAjD,MAAA,SAUaF,EAAkBoD,GAEvBvC,IAAIwC,MAAJ,sBAAAC,OAAgCtD,IAEhCoD,EAAMA,GAAOnE,OAAOsE,OAAO,GAAIZ,GAE/B,IAAIvD,EAAQY,EAASwD,OAAOC,cACxBC,EAAUvE,KAAKwE,YAAYvE,GAE/B,GAAc,MAAXsE,EACC,GAAGvE,KAAK4D,UACJ5D,KAAKyE,cAAcxE,EAAOsE,EAASN,QAEnC,IACIjE,KAAKyE,cAAcxE,EAAOsE,EAASN,GACrC,MAAOS,GACJ1E,KAAK2E,YAAY1E,EAAOyE,QAKjChD,IAAIwC,MAAJ,qCAAAC,OAA+CtD,IAC/Cb,KAAK2E,YAAY1E,EAAO,IAAI2B,MAAM,2BAA6B3B,EAAMoE,WAhCjF,CAAAL,IAAA,UAAAjD,MAAA,SAoCY6D,GACJ5E,KAAK8D,aAAec,IArC5B,CAAAZ,IAAA,UAAAjD,MAAA,SAwCa8D,EAAuBN,GAC5B,IAAIK,EAAI5E,KAAK8E,cAAcD,EAAKN,GACxB,MAALK,EAKCvB,EAAauB,EAAEG,WAKf1B,EAAauB,EAAEI,QAKnBhF,KAAK6D,SAASoB,KAAKL,GAJfM,QAAQC,KAAK,8DALbD,QAAQC,KAAK,iEALbD,QAAQC,KAAK,gCAAiCC,KAAKC,UAAUC,cA3CzE,CAAAtB,IAAA,gBAAAjD,MAAA,SA4DmB8D,EAAuBN,GAClC,OAAGlB,EAAewB,GACPA,EAGRxB,EAAUwB,GACF,CAAEE,UAAW,SAAU9E,GAAS,OAAOA,IAAU4E,GAAQG,OAAQT,GAGrE,OArEf,CAAAP,IAAA,cAAAjD,MAAA,SAwEiBd,GACT,OAAOD,KAAK6D,SAAS0B,OAAO,SAAAX,GAAC,OAAIA,EAAEG,UAAU9E,KAAQ,KAzE7D,CAAA+D,IAAA,gBAAAjD,MAAA,SA4EmBd,EAAgBsE,EAA2BiB,GAEtD,IAAIC,EAAYlB,EAAQS,OAAO,CAAE/E,MAAOA,EAAOuF,YAC/B,MAAbC,GACC/D,IAAIwC,MAAMuB,KAhFtB,CAAAzB,IAAA,cAAAjD,MAAA,SAoFiBd,EAAeyF,GACrB1F,KAAK4D,WACJsB,QAAQS,MAAM1F,EAAOyF,GAED,MAArB1F,KAAK8D,cACJ9D,KAAK8D,aAAa7D,EAAOyF,OAzFrC/B,EAAA,yCChBqBiC,cAKjB,SAAAA,EAAYC,GAAuB,IAAA3F,EAAA,OAAAJ,OAAAC,EAAA,EAAAD,CAAAE,KAAA4F,IAC/B1F,EAAAJ,OAAAgG,EAAA,EAAAhG,CAAAE,KAAAF,OAAAiG,EAAA,EAAAjG,CAAA8F,GAAAI,KAAAhG,KAAM6F,KALVI,aAImC,EAAA/F,EAHnCgG,kBAGmC,EAAAhG,EAFnCiG,eAEmC,EAE/BjG,EAAKiG,UAAY,KACjBjG,EAAK+F,QAAU,GACf/F,EAAKgG,cAAgB,EAJUhG,mFAQV,MAAlBF,KAAKmG,WACJnG,KAAKmG,UAAUC,yCAGd,IAAAC,EAAArG,KACL,OAAOsG,EAAAC,EAAAC,cAAA,SAAOpF,GAAG,KAAKqF,KAAK,OACbC,IAAK,SAACzG,GAAYoG,EAAKF,UAAYlG,GACnC0G,QAAS,SAAAjC,GAAC,OAAI2B,EAAKM,QAAQjC,IAC3BkC,UAAW,SAAAlC,GAAC,OAAI2B,EAAKO,UAAUlC,IAC/BmC,UAAU,uBACVC,YAAY,yCACZC,aAAa,wCAGvBrC,GACJ,IAAIzE,EAAQyE,EAAEsC,OACd,GAAiB,IAAbtC,EAAEuC,SAA8C,GAA7BhH,EAAMc,MAAMsD,OAAO1D,OAA1C,CAIA,IAAIuG,EAAejH,EAAMc,MACzBf,KAAKiG,QAAQkB,QAAQD,GACrBlH,KAAKkG,cAAgB,EAErBjG,EAAMc,MAAQ,GACdf,KAAK6F,MAAMuB,iBAAiBF,sCAGtBG,GAEN,GAAmB,IAAhBA,EAAKJ,QAAe,CACnB,IAAIK,EAAWtH,KAAKkG,aAAa,EAQjC,OANIlG,KAAKiG,QAAQtF,OAAS2G,IACtBD,EAAKL,OAAOjG,MAAQf,KAAKiG,QAAQqB,GACjCtH,KAAKkG,aAAeoB,QAGxBD,EAAKE,iBAIU,IAAhBF,EAAKJ,UACDjH,KAAKkG,aAAe,IACnBmB,EAAKL,OAAOjG,MAAQf,KAAKiG,UAAUjG,KAAKkG,eAG5CmB,EAAKE,yBA5DqBC,IAAMC,WCIvBC,mLAGb,OAAOpB,EAAAC,EAAAC,cAAA,OAAKK,UAAU,UACNP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,cACPP,EAAAC,EAAAC,cAAA,QAAMK,UAAU,OAAhB,KACgB7G,KAAK6F,MAAM5F,MACvBqG,EAAAC,EAAAC,cAAA,KAAGK,UAAU,WAAWc,MAAM,2BAA2BC,KAAMC,OAAOC,SAASC,SAAW,IAAM/H,KAAK6F,MAAMmC,WAA3G,MAEZ1B,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACV7G,KAAK6F,MAAMoC,kBAVOT,IAAMC,iBCiBtCS,MAzBf,SAAyBrC,GAErB,IAAMsC,EAAO,GACPC,EAAQvC,EAAMwC,SAcpB,MAZyB,QAAtBxC,EAAMwC,SAASC,KACdH,EAAKlD,KAAKmD,EAAME,KAGjBzC,EAAMwC,SAASzE,WACduE,EAAKlD,KAAK,SAGgC,UAA3CsD,aAAaC,QAAQ,mBACpBL,EAAKlD,KAAK,WAGI,GAAfkD,EAAKxH,OACG,KAEJ2F,EAAAC,EAAAC,cAAA,OAAKK,UAAU,oBACbsB,EAAKhI,IAAI,SAAAsI,GAAC,OAAInC,EAAAC,EAAAC,cAAA,QAAMmB,MAAOc,GAAb,IAAkBA,EAAEC,UAAU,EAAE,GAAhC,aCzBZC,EAAA,CACXC,WAAY,SAAS3I,GACjB,OAAO4I,mBAAmB5I,EAAMoE,OAAOpD,QAAQ,MAAM,OAEzD6H,WAAY,SAASC,GACjB,OAAOC,mBAAmBD,EAAU9H,QAAQ,MAAO,KAAKA,QAAQ,KAAK,MAEzEgI,QAAS,SAAUF,GAEf,IAWe9F,EAXXiG,EAAclJ,KAAK8I,WAAWC,GAC9B1B,EAAkB,GAMtB,OAIepE,EARDiG,EAUXjG,EAAIkG,MAAM,MAAM5D,OAAO,SAAA6D,GAAC,OAAIA,EAAEzI,OAAS,KAVf0I,QAAQ,SAAStI,GACxCsG,EAAKpC,KAAKlE,KAGPsG,qCCMAiC,MAVf,SAAAC,GAA6E,IAAvDC,EAAuDD,EAAvDC,KAAMC,EAAiDF,EAAjDE,QAASC,EAAwCH,EAAxCG,KAAMC,EAAkCJ,EAAlCI,cAEjCC,EAAU,kBAAM/E,EAAIgF,QAAQJ,GAAWC,IAE7C,OAAW,MAARF,EACQlD,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,qBAAqBgC,QAASA,GAAStD,EAAAC,EAAAC,cAACsD,EAAA,EAAD,CAAiBN,KAAMA,EAAM3C,UAAU,SAASP,EAAAC,EAAAC,cAAA,QAAMK,UAAW8C,GAAgBD,IAEpIpD,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,qBAAqBgC,QAASA,GAAStD,EAAAC,EAAAC,cAAA,QAAMK,UAAW8C,GAAgBD,KCK5EK,MAjBf,WACI,OAAOzD,EAAAC,EAAAC,cAAA,MAAIK,UAAU,aACTP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,SAASF,KAAMS,IAAUN,cAAc,eAE7DrD,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,gDAA+CtB,EAAAC,EAAAC,cAACsD,EAAA,EAAD,CAAiBjD,UAAU,OAAO2C,KAAMU,IAAUC,KAAK,OAAO7D,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,YAEzHP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,kCAAiCtB,EAAAC,EAAAC,cAACsD,EAAA,EAAD,CAAiBjD,UAAU,OAAO2C,KAAMY,IAAWD,KAAK,OAAO7D,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,aAE5GP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,gDAAmJtB,EAAAC,EAAAC,cAACsD,EAAA,EAAD,CAAiBjD,UAAU,OAAO2C,KAAMa,IAAYF,KAAK,OAAO7D,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,wBCE1NyD,+LAEI,IAAApK,EAAAF,KACjBA,KAAKuK,UACLvK,KAAK6F,MAAMwC,SAASmC,SAAS,kBAAMtK,EAAKqK,8CAIxCvK,KAAKyK,SAASzK,KAAK6F,MAAMwC,+CAGhBtH,GACT,OAAOA,EAAQ,KAAO,+CAGO,IAAAsF,EAAArG,KAM7B,OAJcA,KAAKoI,MAAMsC,eAAevK,IAAI,SAACwK,EAAGlC,GAAJ,OACxCnC,EAAAC,EAAAC,cAACoE,EAAD,CAAmB5G,IAAK2G,EAAE3G,IAAM/D,MAAO0K,EAAE1K,MAAO+H,UAAWW,EAAKC,WAAW+B,EAAE1K,OAAQoI,SAAUhC,EAAKR,MAAMwC,UACrGsC,EAAEE,uDAMX7K,KAAK6F,MAAMwC,SAASyC,wDAGf,IAAAC,EAAA/K,KACL,OAAOsG,EAAAC,EAAAC,cAAA,OAAKK,UAAS,YAAA1C,OAAcnE,KAAKoI,MAAM4C,UAClC1E,EAAAC,EAAAC,cAACyE,EAAD,CAAiB5C,SAAUrI,KAAK6F,MAAMwC,WACtC/B,EAAAC,EAAAC,cAAA,OAAKK,UAAU,UACXP,EAAAC,EAAAC,cAAA,oBAAWF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,cAAhB,QAEZP,EAAAC,EAAAC,cAAC0E,EAAD,OAGH5E,EAAAC,EAAAC,cAAA,OAAKK,UAAU,6BACXP,EAAAC,EAAAC,cAAC2E,EAAD,CAAU/D,iBAAkB,SAACnH,GAAD,OAAW4E,EAAIgF,QAAQ5J,MAEnDqG,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aACZP,EAAAC,EAAAC,cAAA,QAAMpF,GAAG,iBAAiBgK,WAAS,KAAKvE,UAAW,aAAe7G,KAAKqL,aAAarL,KAAKoI,MAAMkD,gBAAiB3D,MAAM,yBAAyBiC,QAAS,kBAAMmB,EAAKD,yBAAnK,UAIRxE,EAAAC,EAAAC,cAAA,OAAKpF,GAAG,UACPpB,KAAKuL,0BA9CW/D,IAAMC,kCCZ5B+D,MAPf,SAAyB3F,GAErB,OAAOS,EAAAC,EAAAC,cAAA,OAAKK,UAAU,UACVP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,SAAShB,EAAM4F,gBCLxCC,EAAY,CACdC,aAAc,SAAS3J,EAAaL,GAChC,OAAOK,EAAIF,SAuBnB,SAAiBH,GACb,OAAQA,GACJ,IAAK,MAAO,OAAO,EACnB,IAAK,MAAO,OAAO,GACnB,IAAK,MAAO,OAAO,GAGvB,MAAM,IAAIC,MAAM,qBAAuBD,GA9BfiK,CAAQjK,GAAQ,SAExCkK,QAAS,SAAU5I,EAAatC,EAAgBmL,GAC5C,IAAIC,EAAKxI,MAAMyI,UAAUC,MAAMjG,KAAK/C,GAAM6I,EAASA,GAAU,IAE7D,GAAa,MAAVnL,EACC,OAAOsC,EAGX,KAAMtC,EAASoL,EAAGpL,QACdoL,EAAG5E,QAAQ2E,GAGf,OAAOC,EAAGG,KAAK,KAEnBC,IAjBc,SAiBVC,GACA,OAAOpM,KAAK2L,aAAaS,EAAQ,QAErCC,MApBc,SAoBRD,GACF,OAAOpM,KAAK6L,QAAQ7L,KAAKmM,IAAIC,GAAS,EAAG,OAclCV,QACTW,EAAQX,EAAUW,MCnBHC,mLAEb,OAAOhG,EAAAC,EAAAC,cAAA,QAAMK,UAAW7G,KAAK6F,MAAMgB,WAAY7G,KAAKuM,kDAG7CC,EAAe9H,GACtB,GAAI1E,KAAK6F,MAAM4G,eAAkBzM,KAAK6F,MAAM6G,UAA5C,CAII1M,KAAK6F,MAAM6G,UAIf,IAAMC,EAAM3M,KAAK6F,MAAM+G,aAAazD,MAAM,IAC1CwD,EAAIH,GAAuB,KAAdG,EAAIH,GAAgB,IAAM,IACvC,IAAMK,EAAkBF,EAAIT,KAAK,IAEjClM,KAAK6F,MAAM6G,UAAU,CAAEF,MAAOA,EAAOI,aAAc5M,KAAK6F,MAAM+G,aAAcE,OAAQpI,EAAGmI,2DAIvF,IAAIE,EAAO/M,KAAKgN,WAAWhN,KAAK6F,MAAM+G,aAAazD,MAAM,KAEzD,OAAGnJ,KAAK6F,MAAMyF,eACHtL,KAAKiN,eAAeF,GAGxBA,qCAGAG,GAAmC,IAAAhN,EAAAF,KAEpCmN,EADgBnN,KAAK6F,MAAM4G,gBAAiB,EACtB,YAAc,GAE1C,OAAOS,EAAS/M,IAAI,SAACI,EAAGkI,GACpB,IAAI5B,EAAiB,KAALtG,EAAA,MAAA4D,OAAiBgJ,GAAjB,OAAAhJ,OAAgCgJ,GAChD,OAAO7G,EAAAC,EAAAC,cAAA,QAAMK,UAAWA,EAAW7C,IAAKyE,EAAGmB,QAAS,SAAAlF,GAAC,OAAIxE,EAAKkN,WAAW3E,EAAG/D,KAAKnE,4CAI1EwM,GAIX,IAHA,IAAMM,EAAQ,GAEVrJ,EAAM,EACJ+I,EAAKpM,OAAS,GAChB0M,EAAMpI,KAAKqB,EAAAC,EAAAC,cAAA,QAAMxC,IAAKA,IAAO6C,UAAU,QAAQkG,EAAKO,OAAO,EAAG,KAGlE,OAAOD,SAjD+B7F,IAAMC,iBCgCrC8F,MAvCf,SAAAC,GAAA,SAAAD,IAAA,OAAAzN,OAAAC,EAAA,EAAAD,CAAAE,KAAAuN,GAAAzN,OAAAgG,EAAA,EAAAhG,CAAAE,KAAAF,OAAAiG,EAAA,EAAAjG,CAAAyN,GAAAE,MAAAzN,KAAAsF,YAAA,OAAAxF,OAAA4N,EAAA,EAAA5N,CAAAyN,EAAAC,GAAA1N,OAAAiE,EAAA,EAAAjE,CAAAyN,EAAA,EAAAvJ,IAAA,SAAAjD,MAAA,WAGa,IAAAb,EAAAF,KACL,OAAOsG,EAAAC,EAAAC,cAAA,SAAOK,UAAU,cACpBP,EAAAC,EAAAC,cAAA,aACKxG,KAAK6F,MAAM8H,YAAYxN,IAAI,SAACyN,EAAInF,GAAL,OAAWnC,EAAAC,EAAAC,cAAA,MAAIxC,IAAKyE,GACxCnC,EAAAC,EAAAC,cAAA,MAAIK,UAAU,SAAQP,EAAAC,EAAAC,cAAA,cAASoH,EAAG9L,aAClCwE,EAAAC,EAAAC,cAAA,MAAIK,UAAU,OACT3G,EAAKiM,IAAIyB,EAAGC,UAAW,EAAGD,GAAItH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KAC9B3G,EAAKiM,IAAIyB,EAAGE,WAAY,EAAGF,GAAItH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KAC/B3G,EAAKiM,IAAIyB,EAAGG,UAAW,EAAGH,GAAItH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KAC9B3G,EAAKiM,IAAIyB,EAAGI,WAAY,EAAGJ,WAZxD,CAAA5J,IAAA,MAAAjD,MAAA,SAmBQA,EAAekN,EAA0BL,GAAe,IAgBnD5L,EAhBmDqE,EAAArG,KACxD,OAAOsG,EAAAC,EAAAC,cAAC0H,EAAD,CACHtB,cAcC5K,EAdiBjB,EAenB2K,EAAUG,QAAQH,EAAUC,aAAa3J,EAAK,OAAQ,EAAG,MAdxDgC,IAAKiK,EACL3C,gBAAgB,EAChBmB,eAAe,EACf5F,UAAS,SAAA1C,OAAW8J,GACpBvB,UAAW,SAAAhI,GAAC,OAAI2B,EAAK8H,aAAazJ,EAAEmI,gBAAiBoB,EAAaL,QA1B9E,CAAA5J,IAAA,eAAAjD,MAAA,SA6BiB6L,EAAsBR,EAAqBwB,GACpDA,EAAGQ,SAAShC,EAAQpL,SAAS4L,EAAc,IAC3C5M,KAAKqO,kBA/Bbd,EAAA,CAAmC/F,IAAMC,WCL5B6G,EAAb,WAII,SAAAA,EAAYC,EAAsBC,GAAmB1O,OAAAC,EAAA,EAAAD,CAAAE,KAAAsO,GAAAtO,KAHrDwO,cAGoD,EAAAxO,KAFpDuO,eAEoD,EAChDvO,KAAKuO,UAAYA,EACjBvO,KAAKwO,SAAWA,EANxB,OAAA1O,OAAAiE,EAAA,EAAAjE,CAAAwO,EAAA,EAAAtK,IAAA,WAAAjD,MAAA,WAUQ,SAAAoD,OAAUnE,KAAKuO,UAAUzM,WAAzB,KAAAqC,OAAuCnE,KAAKwO,cAVpDF,EAAA,GAcaG,EAAb,WAOI,SAAAA,EAAYZ,EAAmBC,EAAoBC,EAAmBC,GAAqBlO,OAAAC,EAAA,EAAAD,CAAAE,KAAAyO,GAAAzO,KAL3F6N,eAK0F,EAAA7N,KAJ1F8N,gBAI0F,EAAA9N,KAH1F+N,eAG0F,EAAA/N,KAF1FgO,gBAE0F,EACtFhO,KAAK6N,UAAYA,EACjB7N,KAAK8N,WAAaA,EAClB9N,KAAK+N,UAAYA,EACjB/N,KAAKgO,WAAaA,EAX1B,OAAAlO,OAAAiE,EAAA,EAAAjE,CAAA2O,EAAA,EAAAzK,IAAA,WAAAjD,MAAA,WAeQ,SAAAoD,OAAUnE,KAAK6N,UAAf,KAAA1J,OAA4BnE,KAAK8N,WAAjC,KAAA3J,OAA+CnE,KAAK+N,UAApD,KAAA5J,OAAiEnE,KAAKgO,cAf9E,CAAAhK,IAAA,iBAAAjD,MAAA,WAoBQ,SAAAoD,OAAUkI,EAAMrM,KAAK6N,WAArB,MAAA1J,OAAoCkI,EAAMrM,KAAK8N,YAA/C,KAAA3J,OAA8DkI,EAAMrM,KAAK+N,WAAzE,KAAA5J,OAAuFkI,EAAMrM,KAAKgO,eApB1G,CAAAhK,IAAA,QAAAjD,MAAA,WAwBQ,OAAO,IAAI0N,EAAUzO,KAAK6N,UAAW7N,KAAK8N,WAAY9N,KAAK+N,UAAW/N,KAAKgO,cAxBnF,CAAAhK,IAAA,WAAAjD,MAAA,SA2Ba2N,EAAoB3N,GACzB,OAAQ2N,GACJ,KAAK,EACD1O,KAAK6N,UAAY9M,EACjB,MACJ,KAAK,EACDf,KAAK8N,WAAa/M,EAClB,MACJ,KAAK,EACDf,KAAK+N,UAAYhN,EACjB,MACJ,KAAK,EACDf,KAAKgO,WAAajN,OAvClC0N,EAAA,GA6CaE,EAAb,WAEI,SAAAA,EAAYC,GAAsC9O,OAAAC,EAAA,EAAAD,CAAAE,KAAA2O,GAAA3O,KADlDC,WACiD,EAC7CD,KAAKC,MAAQ2O,EAHrB,OAAA9O,OAAAiE,EAAA,EAAAjE,CAAA6O,EAAA,EAAA3K,IAAA,qBAAAjD,MAAA,WAOQ,IAAM8N,EAAoB,GAAK7O,KAAKC,MAAMuO,SAC1C,OAAOhN,KAAKsN,IAAI,EAAGD,GAAqB,IARhD,CAAA7K,IAAA,WAAAjD,MAAA,WAYQ,OAAOf,KAAKC,MAAM6B,eAZ1B6M,EAAA,GC3DMI,EAAkB,CACpB7M,MAAO,SAASjC,GAAwE,IAAAC,EAAAF,KAE9EgP,EAAShP,KAAKiP,aAAahP,GAE3BiP,EAAUlP,KAAKmP,UAAUH,EAAOI,WAChCC,EAAgBH,EAAQ3J,OAAO,SAAA9E,GAAC,OAAiB,MAAbA,EAAEyO,UACtCI,EAAkBJ,EAAQ3J,OAAO,SAAA9E,GAAC,OAAiB,MAAbA,EAAEyO,UAE9C,GAA2B,GAAxBG,EAAc1O,OACb,OAAO,KAEX,GAAG2O,EAAgB3O,OAAS,EACpB,OAAO,IAAI4O,EAAJ,YAAApL,OAA6BmL,EAAgBnP,IAAI,SAAAqP,GAAC,OAAIA,EAAEvP,QAAOiM,KAAK,KAApE,6EAGf,IAAMuD,EAAgBP,EAAQ/O,IAAI,SAAAM,GAAC,OAAIP,EAAKwP,YAAYjP,EAAEyO,QAAUzO,EAAER,SAChE0P,EAAgBF,EAAclK,OAAO,SAAAnF,GAAC,OAAIA,aAAamP,IAE7D,GAAGI,EAAchP,OAAS,EACtB,OAAOgP,EAAc,GAGzB,GAAqB,MAAlBX,EAAOvF,QAAiB,CACvB,IAAMuF,EAAShP,KAAK4P,uBAAuBH,GAE3C,OACWT,EAKf,OAAOS,GAGXR,aAnCoB,SAmCPhP,GAGT,OAAGA,EAAM4P,WADO,UAEL,CAAEpG,QAFG,SAEM2F,UAAWnP,EAAMyI,UAFvB,SAEyC/H,SAElD,CAAE8I,QAAS,KAAM2F,UAAWnP,IAGvCkP,UA5CoB,SA4CVlP,GAEN,OAAOA,EACHgB,QAAQ,WAAY,KACfkI,MAAM,KACN5D,OAAO,SAAA6D,GAAC,OAAIA,EAAEzI,OAAO,IACrBR,IAAI,SAAAiJ,GACD,IACM8F,EADY,mEACQY,KAAK1G,GAE/B,OAAc,MAAX8F,GAAsC,IAAnBA,EAAQvO,OACnB,CAACuO,QAAS,KAAMjP,MAAOmJ,GAE3B,CAAC8F,UAASjP,MAAOmJ,MAIxCsG,YA7DoB,SA6DRR,EAA2BjP,GACnC,IAAM8P,EAAU,SAACvP,GAAD,OAAeA,EAAI,GAAKA,EAAI,KAEtCwP,EAAQhP,SAASkO,EAAQ,IACzBe,EAASjP,SAASkO,EAAQ,IAC1BgB,EAAQlP,SAASkO,EAAQ,IACzBiB,EAASnP,SAASkO,EAAQ,IAEhC,GAAGa,EAAQC,IAAUD,EAAQE,IAAWF,EAAQG,IAAUH,EAAQI,GAC9D,OAAO,IAAIZ,EAAJ,GAAApL,OAAoBlE,EAApB,gDAEX,IAAMsO,EAAY,IAAIE,EAAUuB,EAAOC,EAAQC,EAAOC,GAEtD,GAAGjB,EAAQ,GAAI,CACX,IAAMkB,EAAWlB,EAAQ,GAAG3M,OAAO,GAC7BiM,EAAWxN,SAASoP,GAE1B,OAAG5B,EAAW,GACH,IAAIe,EAAJ,wBAAApL,OAAyClE,EAAzC,qBAGJ,IAAIqO,EAAwBC,EAAWC,GAGlD,OAAOD,GAGXqB,uBAxFoB,SAwFGS,GACnB,GAAmB,GAAhBA,EAAM1P,OACL,OAAO,IAAI4O,EAAa,gCAE5B,IAAMS,EAAQK,EAAM,GACpB,OAAGL,aAAiB1B,EACT,IAAIK,EAAcqB,GAGtB,IAAIT,EAAa,6CAInBA,EAET,SAAAA,EAAYe,GAAkBxQ,OAAAC,EAAA,EAAAD,CAAAE,KAAAuP,GAAAvP,KAD9ByL,kBAC6B,EACzBzL,KAAKyL,aAAe6E,GAKbvB,kBClHf,SAASwB,EAAeC,EAAcC,GAClC,OAAmB,GAAhBA,EACQD,EAGIA,EADMhP,KAAKsN,IAAI,EAAG,EAAE2B,GAAc,GAAGA,EAQxD,SAASC,EAAcF,EAAeC,GAClC,OAAmB,GAAhBA,EAA0BD,EAGdA,EADMhP,KAAKsN,IAAI,EAAG2B,GAAc,EAMnD,SAASE,EAAqBF,GAC1B,OAAO,KAAM,EAAEA,EAAc,IClBjC,SAASG,EAAmBC,GAExB,IAAMC,EAAOH,EACPnC,EAAWqC,EAAIrC,SAErB,OAAIA,GAAY,EACL,IAAIC,EAAUqC,EAAKtC,GAAW,EAAG,EAAG,GAEtCA,GAAY,GACV,IAAIC,EAAU,IAAKqC,EAAKtC,EAAW,GAAI,EAAG,GAE5CA,GAAY,GACV,IAAIC,EAAU,IAAK,IAAKqC,EAAKtC,EAAW,IAAK,GAG7C,IAAIC,EAAU,IAAK,IAAK,IAAKqC,EAAKtC,EAAW,KAQ5D,SAASuC,EAAoBF,GACzB,OAAOG,EAAmBH,EAAKH,EAAe,KAGlD,SAASM,EAAmBH,EAA8BI,EAAwBC,GAE9E,IAAMC,EAAO,SAAC3C,EAAkBgC,GAAnB,OAAoCS,EAAQT,EAAM,EAAIhC,IAE7DZ,EAAKiD,EAAItC,UACTC,EAAWqC,EAAIrC,SAErB,OAAIA,GAAY,EACL,IAAIC,EAAU0C,EAAK3C,EAAUZ,EAAGC,WAAYqD,EAAUA,EAAUA,GAElE1C,GAAY,GACV,IAAIC,EAAUb,EAAGC,UAAWsD,EAAK3C,EAAW,EAAGZ,EAAGE,YAAaoD,EAAUA,GAE3E1C,GAAY,GACV,IAAIC,EAAUb,EAAGC,UAAWD,EAAGE,WAAYqD,EAAK3C,EAAW,GAAIZ,EAAGG,WAAYmD,GAI9E,IAAIzC,EAAUb,EAAGC,UAAWD,EAAGE,WAAYF,EAAGG,UAAWoD,EAAK3C,EAAW,GAAIZ,EAAGI,aC/BhFoD,MAbf,SAAA7H,GAAqD,IAArBqE,EAAqBrE,EAArBqE,GAE7B,OAAOtH,EAAAC,EAAAC,cAACF,EAAAC,EAAM8K,SAAP,KACF/K,EAAAC,EAAAC,cAAC0H,EAAD,CAAkBtB,aAAclB,EAAUW,MAAMuB,EAAGC,aACvCvH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KACAP,EAAAC,EAAAC,cAAC0H,EAAD,CAAkBtB,aAAclB,EAAUW,MAAMuB,EAAGE,cACnDxH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KACAP,EAAAC,EAAAC,cAAC0H,EAAD,CAAkBtB,aAAclB,EAAUW,MAAMuB,EAAGG,aACnDzH,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,KACAP,EAAAC,EAAAC,cAAC0H,EAAD,CAAkBtB,aAAclB,EAAUW,MAAMuB,EAAGI,gBCyCvE,SAASsD,EAAUzL,GAAwC,IAEhD+H,EAAa/H,EAAb+H,GAAI2D,EAAS1L,EAAT0L,MAEX,OAAOjL,EAAAC,EAAAC,cAAA,UACCF,EAAAC,EAAAC,cAAA,MAAIK,UAAU,OAAO2K,iBAAe,SAASD,GACzCjL,EAAAC,EAAAC,cAAA,MAAIgL,iBAAe,UAAU3K,UAAU,kBACnC+G,EAAG9L,YAEPwE,EAAAC,EAAAC,cAAA,MAAIgL,iBAAe,OACflL,EAAAC,EAAAC,cAACiL,EAAD,CAAuB7D,GAAIA,MAKhC8D,MA9Df,SAAoB7L,GAAkC,IFe3BgL,EEf2Bc,EAEtBC,mBAAS/L,EAAMgM,QAFOC,EAAAhS,OAAAiS,EAAA,EAAAjS,CAAA6R,EAAA,GAE3CE,EAF2CC,EAAA,GAEnCE,EAFmCF,EAAA,GAclD,OAAOxL,EAAAC,EAAAC,cAACF,EAAAC,EAAM8K,SAAP,KACH/K,EAAAC,EAAAC,cAAA,SAAOK,UAAU,0BACbP,EAAAC,EAAAC,cAAA,aACQF,EAAAC,EAAAC,cAAC8K,EAAD,CAAW1D,GAAIiE,EAAO5R,MAAMsO,UAAWgD,MAAM,YAC7CjL,EAAAC,EAAAC,cAAC8K,EAAD,CAAW1D,IFHJiD,EEG0BgB,EAAO5R,MFFjD+Q,EAAmBH,EAAKN,EAAgB,IEEiBgB,MAAM,YACtDjL,EAAAC,EAAAC,cAAC8K,EAAD,CAAW1D,GAAIgD,EAAmBiB,EAAO5R,OAAQsR,MAAM,aACvDjL,EAAAC,EAAAC,cAAC8K,EAAD,CAAW1D,GAAImD,EAAoBc,EAAO5R,OAAQsR,MAAM,cACxDjL,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,MAAIgL,iBAAe,QAAQ3K,UAAU,QACjCP,EAAAC,EAAAC,cAAA,6BAEJF,EAAAC,EAAAC,cAAA,MAAIgL,iBAAe,WACdK,EAAOI,uBAGhB3L,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,MAAIgL,iBAAe,QAAQ3K,UAAU,QAArC,aAGAP,EAAAC,EAAAC,cAAA,MAAIgL,iBAAe,WAEflL,EAAAC,EAAAC,cAAA,UAAQoD,QA1BV,WAClB,IAAMsI,EAAW,IAAI5D,EAAwBuD,EAAO5R,MAAMsO,UAAWsD,EAAO5R,MAAMuO,SAAS,GAC3FwD,EAAU,IAAIrD,EAAcuD,KAwBwBC,SAAoC,IAA1BN,EAAO5R,MAAMuO,SAAgB7G,MAAM,sBAA7E,KACArB,EAAAC,EAAAC,cAAA,YAAOqL,EAAO5R,MAAMuO,UACpBlI,EAAAC,EAAAC,cAAA,UAAQoD,QAjCV,WAClB,IAAMsI,EAAW,IAAI5D,EAAwBuD,EAAO5R,MAAMsO,UAAWsD,EAAO5R,MAAMuO,SAAS,GAC3FwD,EAAU,IAAIrD,EAAcuD,KA+BwBC,SAAoC,KAA1BN,EAAO5R,MAAMuO,SAAiB7G,MAAM,sBAA9E,SAKpBrB,EAAAC,EAAAC,cAAA,cCxCR,SAAS4L,EAAmBC,GACxB,IAAM9N,EAAWsD,OAAeyK,2BAClB,MAAX/N,GACC7C,IAAIwC,MAAM,6DAGd,IAAMqO,EAAahO,EAA6B8N,GAChD3Q,IAAIwC,MAAM,4CAA8CqO,EAAWF,GCyCvE,SAASG,EAAaC,EAAgBxO,IACZ,IAAnBA,EAAIR,YACH2O,EAAmB,CACfM,cAAe,oBACfC,YAAaF,IAKVG,MAvDa,CACxBC,MAAO,SAASxK,EAAoBxD,GAGhCA,EAAI4E,QAAQ,CACR1E,UAAW,SAAC9E,GAAD,OAAkD,MAAhC8O,EAAgB7M,MAAMjC,IACnD+E,OAAQ,SAASzE,GACb,IAAIyO,EAASD,EAAgB7M,MAAM3B,EAAEN,OAErC,GAAa,MAAV+O,EAGH,GAAGA,aAAkBO,EACjBlH,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACuM,EAAD,CAAiBtH,aAAcuD,EAAOvD,oBAD7E,CAKA,GAAGuD,aAAkBL,EAGjB,OAFAtG,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACwM,EAAD,CAAYnB,OAAQ7C,UACvDwD,EAAa,gBAAiBjS,EAAEiF,SAIpC,IAAMmI,EAA4B,GAEjCqB,EAA4B3F,QAAQ,SAAAsB,GAC9BA,aAAa2D,GAEZX,EAAY1I,KAAK0F,EAAE4D,WACnBZ,EAAY1I,KAAK2L,EAAmBjG,KAEhCA,aAAa8D,GACjBd,EAAY1I,KAAK0F,KAIzB6H,EAAa,mBAAoBjS,EAAEiF,SAEnC6C,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACyM,EAAD,CAAetF,YAAaA,SAIvEjM,IAAIwC,2BCnDSgP,cAKjB,SAAAA,EAAYzQ,EAA0B0Q,GAA4BrT,OAAAC,EAAA,EAAAD,CAAAE,KAAAkT,GAAAlT,KAJlEmT,aAIiE,EAAAnT,KAHjEyC,sBAGiE,EAAAzC,KAFjEoT,mBAEiE,EAC7DpT,KAAKyC,iBAAmBA,EACxBzC,KAAKmT,QAAUA,EACfnT,KAAKoT,cAAgBD,EAAQhT,IAAI,SAAAK,GAAC,OAAIA,EAAEa,eAAcf,OAAO,SAACE,EAAID,GAAL,OAAWC,GAAKD,EAAIC,EAAID,GAAG,0DAIxF,OAAOP,KAAKmT,QAAQhT,IAAI,SAAAK,GAAC,OAAIA,EAAEO,MAAMe,aAAYoK,KAAK,cCbzCmH,GAKjB,SAAAA,EAAY5Q,EAA0B6Q,GAAqCxT,OAAAC,EAAA,EAAAD,CAAAE,KAAAqT,GAAArT,KAH3EyC,sBAG0E,EAAAzC,KAF1EuT,qBAE0E,EACtEvT,KAAKyC,iBAAmBA,EACxBzC,KAAKuT,gBAAkBD,GCOzBE,cAEF,SAAAA,IAAe1T,OAAAC,EAAA,EAAAD,CAAAE,KAAAwT,GAAAxT,KADfyT,eACc,EACVzT,KAAKyT,UAAY,wDAGXxT,GAGN,IAFA,IAAIyT,EAAUzT,EAAMgB,QAAQ,YAAa,IACrCwH,EAAIzI,KAAKyT,UAAU9S,OAAO,EACzB8H,GAAG,EAAEA,IACN,IAA4C,IAAzCzI,KAAKyT,UAAUhL,GAAGkL,UAAUD,GAC3B,OAAO,EAGf,OAAO,gCAGJzT,GAIH,IAHA,IACsC2T,EADlCF,EAAUzT,EAAMgB,QAAQ,YAAa,IACrCwH,EAAI,EAAGoL,EAAI7T,KAAKyT,UAAU9S,OAEzB8H,EAAEoL,EAAEpL,IAGL,GAAiC,IAFjCmL,EAAU5T,KAAKyT,UAAUhL,IAEdkL,UAAUD,GACjB,OAAOE,EAAQ1Q,OAAOwQ,GAI9B,OAAO,0CAGGzT,GACV,OAAOkB,KAAee,MAAMjC,yCAGjBmM,EAAiB3M,GAC5B,OAAO0B,KAAe+B,OAAOkJ,EAAQ3M,sCAG7BmU,GACV5T,KAAKyT,UAAUxO,KAAK2O,YAIpBE,cAIF,SAAAA,IAAehU,OAAAC,EAAA,EAAAD,CAAAE,KAAA8T,GAAA9T,KAFfT,WAEc,EACVS,KAAKT,MAAQ,8FAGNU,GACP,OAAOD,KAAKT,MAAMuB,KAAKb,kCAGnBA,GACJ,IAAIiP,EAAUlP,KAAKT,MAAMuQ,KAAK7P,GAC1BkT,EAAU,GASd,OARIlT,EAAQiP,EAAQjP,OAEdkJ,MAAM,KAAKE,QAAQ,SAAC7I,GACnBA,EAAE6D,OAAO1D,OAAS,GACjBwS,EAAQlO,KAAK9D,KAAee,MAAM1B,EAAE6D,WAIrC,IAAI6O,GAAwBjT,EAAOkT,YAI5CY,cAIF,SAAAA,IAAejU,OAAAC,EAAA,EAAAD,CAAAE,KAAA+T,GAAA/T,KAHfgU,eAGc,EAAAhU,KAFdT,WAEc,EACVS,KAAKgU,UAAY,mDACjBhU,KAAKT,MAAQ,uGAGNU,GAEP,OADAD,KAAKgU,UAAUC,UAAY,EACpBjU,KAAKgU,UAAUlT,KAAKd,KAAKkU,gBAAgBjU,mCAG5CA,GAIJ,IAHA,IAAIQ,EAAG0T,EAAmC,GACtCC,EAAmBpU,KAAKkU,gBAAgBjU,GAEM,OAA1CQ,EAAIT,KAAKT,MAAMuQ,KAAKsE,KACxBD,EAASlP,KAAKjF,KAAKqU,WAAW5T,IAGlC,OAAO,IAAI4S,GAA2Be,EAAkBD,sCAGhD1T,GACR,IAAIR,EAAQQ,EAAE,GACVkC,EAAOlC,EAAE,GACTuB,EAAMvB,EAAE,GAERwB,EAAS,KAQb,OANIA,EADmB,GAApBD,EAAIM,QAAQ,KACF,IAAIE,KAAkBR,EAAKb,KAAee,MAAMF,EAAI0G,UAAU,IAAK,KAGnEvH,KAAee,MAAMF,GAGvB,MAARW,EACQV,EAEA,IAAIO,KAAkBvC,EAAOgC,EAA0BU,2CAIrD1C,GACb,OAAOA,EAAMgB,QAAQ,OAAO,aAIhCL,GAAS,IAAI4S,GACjB5S,GAAO0T,WAAW,IAAIR,IACtBlT,GAAO0T,WAAW,IAAIP,QC5HDQ,cAOjB,SAAAA,EAAAhL,GAAuE,IAAAiL,EAAAjL,EAAzD+B,sBAAyD,IAAAkJ,KAAAC,EAAAlL,EAAjCkD,qBAAiC,IAAAgI,KAAA3U,OAAAC,EAAA,EAAAD,CAAAE,KAAAuU,GAAAvU,KALvEsL,oBAKuE,EAAAtL,KAJvEqQ,WAIuE,EAAArQ,KAHvE0U,qBAGuE,EAAA1U,KAFvEyM,mBAEuE,EACnEzM,KAAKsL,eAAiBA,EACtBtL,KAAKqQ,MAAQ,GACbrQ,KAAK0U,gBAAkB,EACvB1U,KAAKyM,eAAkC,IAAlBA,4DA2DX/J,GACV1C,KAAK0U,gBAAkBlT,KAAKmT,IAAIjS,EAAQkS,kBAAmB5U,KAAK0U,iBAChE1U,KAAKqQ,MAAMpL,KAAK,CACZtC,KAAK,GACLwK,IAAK,GACL0H,eAAgBnS,EAChB+J,cAAezM,KAAKyM,cACpBqI,MAAO,qDAISC,GACpB,IAAMC,EAAeD,EAAWjS,gBAAkBiS,EAAW/R,WAAa+R,EAAW3R,uBACrFpD,KAAK0U,gBAAkBlT,KAAKmT,IAAIK,EAAaJ,kBAAmB5U,KAAK0U,iBAErE1U,KAAKqQ,MAAMpL,KAAK,CACZtC,KAAMoS,EAAWpS,KACjBwK,IAAK,GACL2H,MAAO9U,KAAKiV,SAASD,GACrBH,eAAgBE,EAAWrS,QAC3B+J,cAAezM,KAAKyM,oEAIAsI,EAAgCG,GACxDlV,KAAK0U,gBAAkBlT,KAAKmT,IAAIO,EAAcN,kBAAmB5U,KAAK0U,iBACtE1U,KAAKqQ,MAAMpL,KAAK,CACZtC,KAAMoS,EAAWpS,KAAOoS,EAAWrS,QAAQZ,WAC3CqL,IAAK,oBACL0H,eAAgBK,EAChBzI,eAAe,EACfqI,MAAO,oDAIQpS,GACnB1C,KAAK0U,gBAAkBlT,KAAKmT,IAAIjS,EAAQkS,kBAAmB5U,KAAK0U,iBAChE1U,KAAKqQ,MAAMpL,KAAK,CACZtC,KAAK,IACLwK,IAAK,oBACL0H,eAAgBnS,EAChB+J,eAAe,EACfqI,MAAO,sCAILK,GAEN,MAAc,OAAXA,EAAG1V,KACK0V,EAAGrT,SAAS,OAGhBqT,EAAGrT,wDA5GYsT,EAAgCC,GACtD,IAAIC,EAAQ,IAAIf,EAA2Bc,GAG3C,OAFAD,EAAKjC,QAAQ9J,QAAQ,SAAA8L,GAAE,OAAIG,EAAMC,cAAcJ,KAC/CG,EAAMZ,gBAAkBH,EAA2BiB,gBAAgBF,EAAMZ,gBAAiBY,EAAMhK,gBACzFgK,wCAGWF,EAAmCC,GAE5CD,EAAK7B,gBAAgB,GAM9B,IANA,IAEIkC,EADAhN,EAAI,EAAGiN,EAAMN,EAAK7B,gBAAgB5S,OAC9BF,EAAI,IAAI8T,EAA2Bc,GAEvCM,EAA+B,KAE7BlN,EAAEiN,EAAIjN,IAER,IADAgN,EAAKL,EAAK7B,gBAAgB9K,cACTtH,KACbV,EAAE8U,cAAcE,GAChBE,EAAOF,MAFX,CAMA,IAAIG,EAAKH,EAGT,GAAGG,EAAG9S,gBAAiB,CACnBrC,EAAEoV,wBAAwBD,GAC1B,IAAIE,EAAYF,EAAG5S,WACnBvC,EAAEsV,uBAAuBD,GACzBH,EAAOG,OAEHF,EAAG/S,mBACP8S,EAAOC,EAAG5S,SAAS2S,GACnBlV,EAAEuV,4BAA4BJ,EAAID,KAGlCA,EAAOC,EAAG5S,SAAS2S,GACnBlV,EAAEoV,wBAAwBD,GAC1BnV,EAAEsV,uBAAuBJ,IAKjC,OADAlV,EAAEiU,gBAAkBH,EAA2BiB,gBAAgB/U,EAAEiU,gBAAiBjU,EAAE6K,gBAC7E7K,mCAGMsU,EAA+BM,GAE5C,IAAI5U,EAAI,IAAI8T,EAA2Bc,GAIvC,OAHA5U,EAAEoV,wBAAwBd,GAC1BtU,EAAEsV,uBAAuBhB,EAAW/R,YACpCvC,EAAEiU,gBAAkBH,EAA2BiB,gBAAgB/U,EAAEiU,gBAAiBjU,EAAE6K,gBAC7E7K,sCAwEQ2U,EAAwB9J,GACvC,GAAG8J,aAAgBlC,GACf,OAAOqB,EAA2B0B,mBAAmBb,EAAM,CACvD9J,eAAgBA,EAChBmB,eAAe,IAIvB,GAAG2I,aAAgB/B,GACf,OAAOkB,EAA2B2B,cAAcd,EAAM,CAClD9J,eAAgBA,EAChBmB,eAAe,IAIvB,MAAM,IAAI7K,MAAM,6DAA+DwT,YA1JlEb,GA8HViB,gBAAkB,SAAUzI,EAAezB,GAC9C,OAAGA,GAAkByB,EAAO,GAAK,EACzBA,EAAO,EACC,EAGHA,EAAQA,EAAO,EACZ,EAGTA,OCxIMoJ,eACjB,SAAAA,EAAYtQ,GAA4C,IAAA3F,EAAA,OAAAJ,OAAAC,EAAA,EAAAD,CAAAE,KAAAmW,IACpDjW,EAAAJ,OAAAgG,EAAA,EAAAhG,CAAAE,KAAAF,OAAAiG,EAAA,EAAAjG,CAAAqW,GAAAnQ,KAAAhG,KAAM6F,KACDuC,MAAQ,GAFuClI,wEAKpD,IAAIkW,EAAOpW,KAAKqW,UAChB,OAAID,EAIG9P,EAAAC,EAAAC,cAAA,SAAOK,UAAU,cACZP,EAAAC,EAAAC,cAAA,aACS4P,IALV,uCAUkB,IAAA/P,EAAArG,KACzBsV,EAAQf,GAA2B+B,YAAYtW,KAAK6F,MAAMkP,WAAY/U,KAAK6F,MAAMyF,gBAErF,OAAOgK,EAAMjF,MAAMlQ,IAAI,SAACoW,EAAK9N,GAAN,OACnBnC,EAAAC,EAAAC,cAACgQ,GAAD,CACIxS,IAAKyE,EACL9F,KAAM4T,EAAI5T,KACVwK,IAAKoJ,EAAIpJ,IACTV,cAAe8J,EAAI9J,cACnBoI,eAAgB0B,EAAI1B,eACpBvJ,eAAgBjF,EAAKR,MAAMyF,eAC3BoJ,gBAAiBY,EAAMZ,gBACvB+B,aAAc,kBAAMpQ,EAAKoQ,2DAIjCzW,KAAKqO,qBAlC+C7G,IAAMC,WAiD5DiP,eACF,SAAAA,EAAY7Q,GAA2B,IAAAkF,EAAA,OAAAjL,OAAAC,EAAA,EAAAD,CAAAE,KAAA0W,IACpC3L,EAAAjL,OAAAgG,EAAA,EAAAhG,CAAAE,KAAAF,OAAAiG,EAAA,EAAAjG,CAAA4W,GAAA1Q,KAAAhG,KAAM6F,KACDuC,MAAQ,CAAE1F,QAAS,MAFYqI,wEAI9B,IAAA4L,EAAA3W,KAAA4W,EACiE5W,KAAK6F,MAAnElD,EADHiU,EACGjU,KAAMwK,EADTyJ,EACSzJ,IAAKuH,EADdkC,EACclC,gBAAiBpJ,EAD/BsL,EAC+BtL,eAAgBmB,EAD/CmK,EAC+CnK,cAEpD,OAAOnG,EAAAC,EAAAC,cAAA,MAAIK,UAAWsG,GACV7G,EAAAC,EAAAC,cAAA,MAAIK,UAAU,QAAQlE,GACtB2D,EAAAC,EAAAC,cAAA,MAAIK,UAAU,SAAS7G,KAAKiV,YAC5B3O,EAAAC,EAAAC,cAAA,MAAIK,UAAU,OACVP,EAAAC,EAAAC,cAAC0H,EAAD,CACI5C,eAAgBA,EAChBsB,aAAclB,EAAUG,QAAQ7L,KAAK6W,kBAAmBnC,EAAiB,KACzEjI,cAAeA,EACfC,UAAW,SAAArF,GAAI,OAAIsP,EAAKG,QAAQzP,OAExCf,EAAAC,EAAAC,cAAA,MAAIK,UAAU,SAAS7G,KAAK+W,uDAKxC,OAAO/W,KAAK6F,MAAMgP,eAAe7R,WAAWgU,oDAO5C,GAAGhX,KAAK6F,MAAMgP,eAAevT,aAAc,CACvC,IAAMmU,EAAKzV,KAAK6F,MAAMgP,eACtB,OAAOY,EAAG9S,KAAO3C,KAAKiX,eAAexB,EAAGrS,wBAG5C,OAAOpD,KAAKiX,eAAejX,KAAK6F,MAAMgP,eAAezR,2DAKrD,OAAGpD,KAAK6F,MAAMgP,eAAevT,aACdtB,KAAK6F,MAAMgP,eACR7R,WAEJlB,WAGP9B,KAAK6F,MAAMgP,eAAe7R,WAAWkU,2DAGhC/B,GACZ,OAAOA,EAAGrT,SAAoB,OAAXqT,EAAG1V,KAAgB,MAAQ0V,EAAG1V,sCAG5C4H,GAEL,IAAM8N,EAAMnV,KAAK6F,MAAMgP,eAAezR,uBAC9BoJ,EAAwBnF,EAAxBmF,MAEJG,EAF4BtF,EAAjBuF,aAEQzD,MAAM,IAC7BwD,EAAIH,GAAuB,KAAdG,EAAIH,GAAgB,IAAM,IACvC,IAAIL,EAAMQ,EAAIT,KAAK,IAEfiL,EAAWnW,SAASmL,EAAK,GAC7BgJ,EAAGiC,SAASD,GAEZnX,KAAK6F,MAAM4Q,sBAlESjP,IAAMC,WC7CnB4P,GAda,CACxBxE,MAAO,SAASxK,EAAoBxD,GAG9BA,EAAI4E,QAAQ,CACV1E,UAAW,SAAC9E,GAAD,OAAkBW,GAAO0W,SAASrX,IAC7C+E,OAAQ,SAASzE,GACb,IAAI6U,EAAOxU,GAAOsB,MAAM3B,EAAEN,OAC1BoI,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAAC+Q,GAAD,CAAgCxC,WAAYK,EAAO9J,eAAgBjD,EAASiD,2CCHhHkM,OATf,WAEQ,OAASlR,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WAAW4Q,mBAAiB,QACpCnR,EAAAC,EAAAC,cAAA,wBAAeF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,oCAAR,mBAAf,sEACAtB,EAAAC,EAAAC,cAAA,4FAAmFF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,gDAAR,wBAAnF,gBAAuXtB,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,iCAAR,eAAvX,2CACAtB,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,gDAAR,cAAkEtB,EAAAC,EAAAC,cAAA,kCCkE9EkR,OArEf,WAEQ,OAAOpR,EAAAC,EAAAC,cAAA,OAAKK,UAAU,sBACNP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,mBACXP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,cACXP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,sBAAlB,gCACJP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,aAA5B,sGACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,WAA5B,0EAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,uBAAlB,uBACJP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,eAA5B,wGACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,mBAA5B,sDACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,4BAA5B,yFAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,uBAAlB,wBACJP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,WAA5B,iCACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,UAA5B,gCACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,cAA5B,sCAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,uBAAlB,kBACJP,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,WAA5B,6BACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,UAA5B,6BACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,cAA5B,6BACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,QAA5B,uCACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,WAA5B,yBACApD,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,UAA5B,oBAAwDpD,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,sFAAR,MAAxD,YAIRtB,EAAAC,EAAAC,cAAA,OAAKK,UAAU,eACXP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,sBAAlB,gCAA4EP,EAAAC,EAAAC,cAAA,WAC5EF,EAAAC,EAAAC,cAAA,aACIF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,8FAAR,wDAIJtB,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,iBAAJ,uBACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,iBAAJ,gCACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,iBAAJ,iCACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,iBAAJ,uBACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,kBAAJ,sBACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,kBAAJ,wCACAF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,mBAAJ,mCAGRF,EAAAC,EAAAC,cAAA,OAAKK,UAAU,WACXP,EAAAC,EAAAC,cAAA,UAAQK,UAAU,uBAAlB,OACAP,EAAAC,EAAAC,cAAA,sEAC8DF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,QADhF,2BACgHpD,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,kBADlI,UC1DrBiO,OAJf,SAAwB9R,GACpB,OAAOS,EAAAC,EAAAC,cAAA,SAAIX,EAAM6D,aCuCNkO,OAtCf,WAEQ,OAAOtR,EAAAC,EAAAC,cAAA,OAAKK,UAAU,aACVP,EAAAC,EAAAC,cAAA,uBACAF,EAAAC,EAAAC,cAAA,OAAKK,UAAU,iBACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,kBAAH,IAAqDP,EAAAC,EAAAC,cAAA,WAArD,oBACqBF,EAAAC,EAAAC,cAAA,sBADrB,4EACiHF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,6BAGvIpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,kBAAH,IAAqDP,EAAAC,EAAAC,cAAA,WAArD,4EAGAF,EAAAC,EAAAC,cAAA,UACIF,EAAAC,EAAAC,cAAA,+BAAsBF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,eACxCpD,EAAAC,EAAAC,cAAA,6DAAoDF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,gCAI9EpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,iBAAH,IAAoDP,EAAAC,EAAAC,cAAA,WAApD,SACMF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,UAD9B,8CAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,aAAhB,kBAAH,IAAqDP,EAAAC,EAAAC,cAAA,WAArD,iDAC8CF,EAAAC,EAAAC,cAAA,YAAMF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,aADtE,QAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,kBAAH,IAAgDP,EAAAC,EAAAC,cAAA,WAAhD,OACIF,EAAAC,EAAAC,cAACwD,EAAD,CAAaN,KAAK,aADtB,mBAGJpD,EAAAC,EAAAC,cAAA,OAAKK,UAAU,QACXP,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,QAAMK,UAAU,QAAhB,kBAAH,IAAgDP,EAAAC,EAAAC,cAAA,WAAhD,oEACiEF,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,6BAAR,6BADjE,kEACiMtB,EAAAC,EAAAC,cAAA,KAAGoB,KAAK,uDAAR,kBADjM,uBClClBiQ,GAAc,EAmBCC,cAcjB,SAAAA,EAAYC,EAAgCzP,GAAcxI,OAAAC,EAAA,EAAAD,CAAAE,KAAA8X,GAAA9X,KAZ1DgY,QAAkBH,GAYuC7X,KAXzDsL,oBAWyD,EAAAtL,KAVzD4D,WAAqB,EAUoC5D,KATzDgL,aASyD,EAAAhL,KARzDiY,oBAQyD,EAAAjY,KAPzD0K,oBAOyD,EAAA1K,KANzDkY,sBAMyD,EAAAlY,KALzDmY,mBAKyD,EAAAnY,KAJzDsI,SAIyD,EAAAtI,KAHzDoY,qBAGyD,EAAApY,KAFzDqY,qBAEyD,EACrDrY,KAAK0K,eAAiB,GACtB1K,KAAKiY,eAAiB,GACtBjY,KAAKgL,QAAU+M,EAAY/M,SAAW,WACtChL,KAAKsI,IAAMA,EAEXtI,KAAKsL,eAAiByM,EAAYzM,iBAAkB,EACpDtL,KAAKkY,iBAAmBH,EAAYC,SAAW,GAC/ChY,KAAKmY,cAAuC,MAAvBJ,EAAYC,SAAmBhY,KAAKgY,QAAUhY,KAAKkY,iBACxElY,KAAK4D,UAAoB,SAAR0E,IAA4C,IAA1ByP,EAAYnU,UAC/C5D,KAAKoY,gBAAkBL,EAAYO,kBAAoB,EACvDtY,KAAKqY,gBAAkBN,EAAYM,6EAGtBpY,EAAgB4K,GAC7B,IAAM7G,EA4DHxC,KAAK+W,KAAmB,IAAd/W,KAAKgX,UAAqBC,KAAKC,MA3D5C1Y,KAAK0K,eAAevD,QAAQ,CAACnD,MAAK/D,QAAO4K,SACzCnJ,IAAIwC,MAAJ,yBAAAC,OAAmClE,IACnCD,KAAK2Y,+DAIL3Y,KAAK0K,eAAiB,GACtB1K,KAAK2Y,gEAIL3Y,KAAKsL,gBAAkBtL,KAAKsL,eAC5BtL,KAAK2Y,kDAGApU,GACLvE,KAAKiY,eAAehT,KAAKV,4CAGZ,IAAArE,EAAAF,KACbA,KAAKiY,eAAe5O,QAAQ,SAAAzE,GAAC,OAAIA,EAAE1E,wCAG5B0Y,GACN5Y,KAAKgL,QAAU4N,EACf5Y,KAAK2Y,2DAIN3Y,KAAK4D,WAAa5D,KAAK4D,UACvB5D,KAAK2Y,yDAIL3Y,KAAKoY,kBACLpY,KAAK2Y,6DAIL,OAA4B,IAAzB3Y,KAAKqY,kBAERrY,KAAKqY,iBAAkB,EACvBrY,KAAK2Y,kBACE,4CAIP,MAAO,CACHrN,eAAgBtL,KAAKsL,eACrBN,QAAShL,KAAKgL,QACdgN,QAAShY,KAAKgY,QACdpU,UAAW5D,KAAK4D,UAChB0U,iBAAkBtY,KAAKoY,gBACvBC,gBAAiBrY,KAAKqY,0BCtGlC,IAEeQ,GAAA,CACXC,iBADW,WAEP,IAAIC,EAAOlR,OAAOU,aAAaC,QAJtB,YAKT,IAAIuQ,EACA,MAAO,GAGX,IACI,OAAO3T,KAAKlD,MAAM6W,GAEtB,MAAMtD,GAEF,OADAvQ,QAAQS,MAAM,gDAAkDoT,EAAMtD,GAC/D,KAIfuD,MAhBW,SAgBJ3Q,GAAoB,IAAAnI,EAAAF,KACvBqI,EAASmC,SAAS,kBAAMtK,EAAK6X,YAAY1P,MAG7C0P,YApBW,SAoBC1P,GACRE,aAAa0Q,QAvBJ,WAuBsB7T,KAAKC,UAAUgD,EAAS6Q,qBCbzDC,GAAsB,iBACtBC,GAAmB,CAAC,OAAQ,0BAA2B,QAAQ,oBA6DtDC,ICWAC,GAzEK,CAChBzG,MAAO,SAASxK,EAAoBxD,GAEhCA,EAAIjB,UAAYyE,EAASzE,UACzByE,EAASmC,SAAS,kBAAM3F,EAAIjB,UAAYyE,EAASzE,YAEjDiB,EAAI4E,QAAQ,OAAQ,SAAClJ,GAAD,OAAqB8H,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAAC+S,GAAD,SAC5E1U,EAAI4E,QAAQ,QAAS,kBAAMpB,EAASmR,wBACpC3U,EAAI4E,QAAQ,KAAM,kBAAMpB,EAASyC,yBACjCjG,EAAI4E,QAAQ,OAAQ,kBAAMpB,EAASoR,WAAW,UAC9C5U,EAAI4E,QAAQ,QAAS,kBAAMpB,EAASoR,WAAW,WAC/C5U,EAAI4E,QAAQ,WAAY,kBAAMpB,EAASoR,WAAW,cAClD5U,EAAI4E,QAAQ,QAAS,SAAClJ,GAAD,OAAqB8H,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACkT,GAAD,SAC7E7U,EAAI4E,QAAQ,WAAY,SAAClJ,GAAD,OAAqB8H,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACmT,GAAD,SAChF9U,EAAI4E,QAAQ,OAAQ,SAAClJ,GAAD,OAAqB8H,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACoT,GAAD,CAAgBlQ,KAAMmQ,YAClGhV,EAAI4E,QAAQ,WAAY,cACxB5E,EAAI4E,QAAQ,SAAU,SAAClJ,GACnB8H,EAASyR,kBACTzR,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACoT,GAAD,CAAgBlQ,KAAI,eAAAvF,OAAiBkE,EAASzE,gBAGrFiB,EAAI4E,QAAQ,SAAU,SAAClJ,GAEhB8H,EAAS0R,oBACR3H,EAAmB,CAACM,cAAe,iBAAkBC,YAAa,YAGlEP,EAAmB,CAACM,cAAe,iBAAkBC,YAAa,iBAGtEtK,EAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACoT,GAAD,CAAgBlQ,KAAI,4HAG3D7E,EAAI4E,QAAQ,QAAS,SAAClJ,GAClB6R,EAAmB,CACfM,cAAe,UACfC,YAAa,oBAID,SAAjBtK,EAASC,KAGRzD,EAAI4E,QAAQ,CACR1E,UAAW,SAACqE,GAAD,OAAwC,IAAzBA,EAAE9G,QAAQ,YACpC0C,OAAQ,SAACoE,GAEL,IAAwB7I,EAelBkJ,EAAUL,EAAEnJ,MAAMyI,UAAU,GAAGrE,OAC/B2K,GAhBkBzO,EAgBMkJ,EAf1BvE,QAAQxD,IAAInB,GAEI,IAAbA,EAAEI,OACM,mBAAqB4H,aAAaC,QAAQ2Q,IAEvC,UAAN5Y,GACJgI,aAAayR,WAAWb,IACjB,oCAGX5Q,aAAa0Q,QAAQE,GAAqB5Y,GAC1C,kCAAA4D,OAAyC5D,KAK7C8H,EAASyK,iBAAiB1J,EAAEnJ,MAAOqG,EAAAC,EAAAC,cAACoT,GAAD,CAAgBlQ,KAAMsF,QAKrEnK,EAAIoV,QAAQ,SAACha,EAAeyF,GAAhB,OAA+B2C,EAASyK,iBAAiB7S,EAAOqG,EAAAC,EAAAC,cAACuM,EAAD,CAAiBtH,aAAc/F,EAAI5D,kBCxExGoY,OAPf,SAAgCrU,GAE5B,OAAOS,EAAAC,EAAAC,cAAA,OAAKK,UAAU,UACFP,EAAAC,EAAAC,cAAA,OAAKK,UAAU,SAAf,uDAAgEP,EAAAC,EAAAC,cAAA,cAASX,EAAM5F,OAA/E,SCOlBka,GHGN,WACI,IAAM7R,EAA+B,mBAAzBT,OAAOC,SAASsS,KAA4B,OAAS,SAgDrE,SAAqB9R,GACP,QAAPA,GACC5G,IAAI2Y,SAAS,SACb3Y,IAAIwC,MAAJ,mCAAAC,OAA6CmE,KAE7C5G,IAAI2Y,SAAS,QAnDjBC,CAAYhS,GAEZ,IAAMD,EAUV,SAAwBC,GACpB,IAAIiS,EAAY1B,GAAcC,mBACxBzQ,EAAW,IAAIyP,GAASyC,EAAWjS,GAGzC,OAFAuQ,GAAcG,MAAM3Q,GACpB3G,IAAIwC,MAAM,uBAAwBmE,GAC3BA,EAfUmS,CAAelS,GAGhC,MAAO,CACHD,WACAoS,gBAaR,SAA4BpS,GACxB,IAAIqS,EAAW/R,EAAKM,QAAQpB,OAAOC,SAASa,MAExC8R,EAkBR,WACI,IAAM1B,EAAOxQ,aAAaC,QAAQ2Q,IAClC,OAAe,MAARJ,EAAe,CAACA,GAAQ,GApBT4B,GAetB,OAb6B,GAA1BF,EAAgB9Z,SACf8Z,EAAkBrB,IAEnB/Q,EAAS8P,gBACRsC,EAAkB,CAAC,aAGpBC,EAAS/Z,OAAS,IACjB8Z,EAAkBC,GAGtBhZ,IAAIwC,MAAM,6BAA8BuW,GAEjCA,EAnCiBG,CAAmBvS,IGT/BgR,GAmBZC,GAAYzG,MAAMsH,GAAQ9R,SAAUxD,GACpC+N,EAAoBC,MAAMsH,GAAQ9R,SAAUxD,GAC5CwS,GAAoBxE,MAAMsH,GAAQ9R,SAAUxD,GAG5CA,EAAI4E,QAAQ,CACR1E,UAAW,kBAAM,GACjBC,OAAQ,SAACzE,GAAD,OAAqB4Z,GAAQ9R,SAASyK,iBAAiBvS,EAAEN,MAAOqG,EAAAC,EAAAC,cAACqU,GAAD,CAAwB5a,MAAOM,EAAEN,YAtBjH,IAAI6a,GAAOxU,EAAAC,EAAAC,cAACuU,EAAD,CAAS1S,SAAU8R,GAAQ9R,WACtC2S,IAASC,OAAOH,GAAMI,SAASC,eAAe,SAS1CzZ,IAAIwC,MAAM,6BAA8BiW,GAAQM,iBAChDN,GAAQM,gBAAgBpR,QAAQ,SAAA9I,GAAC,OAAIsE,EAAIgF,QAAQtJ,EAAG,CAACkD,YAAY,MANrE0W,GAAQ9R,SAAS+S,gBAEjB1Z,IAAIwC,MAAM","file":"static/js/main.dd14db86.chunk.js","sourcesContent":["import { NumberBase } from \"./expression-interfaces\";\r\n\r\nconst decimalRegex = /^-?\\d+$/;\r\nconst hexRegex = /^-?0x[0-9,a-f]+$/i;\r\nconst binRegex = /^-?0b[0-1]+$/i;\r\nconst operatorRegex = /^<<|>>|<<<|\\&|\\|\\^|~$/;\r\n\r\ninterface ParserConfig {\r\n regex: RegExp,\r\n radix: number,\r\n base: NumberBase,\r\n prefix: string|RegExp\r\n}\r\n\r\nexport interface ParsedNumber {\r\n value: number;\r\n base: NumberBase;\r\n input: string;\r\n}\r\n\r\nvar knownParsers : ParserConfig[] = [\r\n { regex: decimalRegex, radix: 10, base: 'dec', prefix: '^$' },\r\n { regex: hexRegex, radix: 16, base: 'hex', prefix:/0x/i },\r\n { regex: binRegex, radix: 2, base: 'bin', prefix:/0b/i }];\r\n\r\n\r\nclass NumberParser {\r\n\r\n parsers: ParserConfig[];\r\n\r\n constructor(parsers: ParserConfig[])\r\n {\r\n this.parsers = parsers;\r\n }\r\n\r\n parse (input : string) : ParsedNumber | null {\r\n return this.parsers.map(p => this.applyParser(p, input)).reduce((c, n) => c || n);\r\n };\r\n\r\n parseOperator (input: string) : string | null {\r\n var m = input.match(input);\r\n \r\n if(m == null || m.length == 0) {\r\n return null;\r\n }\r\n\r\n return m[0];\r\n };\r\n\r\n applyParser(parser : ParserConfig, rawInput: string) : ParsedNumber | null {\r\n \r\n if(!parser.regex.test(rawInput)) {\r\n return null;\r\n }\r\n \r\n var value = parseInt(rawInput.replace(parser.prefix, ''), parser.radix);\r\n \r\n return {\r\n value: value,\r\n base: parser.base,\r\n input: rawInput\r\n } \r\n }\r\n}\r\n\r\nconst numberParser = new NumberParser(knownParsers);\r\n\r\nexport {numberParser};","import {numberParser} from './numberParser';\r\nimport { ExpressionInputItem, NumberBase } from './expression-interfaces';\r\n\r\nvar globalId : number = 1;\r\n\r\n// Represents numeric value\r\nexport default class NumericOperand implements ExpressionInputItem {\r\n id: number;\r\n value: number;\r\n base: NumberBase;\r\n lengthInBits: number;\r\n isExpression: boolean;\r\n\r\n constructor(value : number, base?: NumberBase) {\r\n this.id = globalId++;\r\n this.value = value;\r\n this.base = base || \"dec\";\r\n this.lengthInBits = NumericOperand.getBitLength(this.value);\r\n this.isExpression = false;\r\n }\r\n \r\n getLengthInBits() {\r\n if(this.value < 0) {\r\n return 32;\r\n }\r\n return Math.floor(Math.log(this.value) / Math.log(2)) + 1;\r\n };\r\n\r\n getOtherBase(kind?: NumberBase) : NumberBase {\r\n switch(kind || this.base) {\r\n case 'dec': \r\n case 'bin':\r\n return 'hex';\r\n case 'hex': return 'dec';\r\n default : throw new Error(kind + \" kind doesn't have opposite kind\")\r\n }\r\n };\r\n\r\n toString(base?: NumberBase) : string {\r\n return NumericOperand.toBaseString(this.value, base || this.base);\r\n }\r\n\r\n toOtherKindString() : string {\r\n return this.toString(this.getOtherBase());\r\n }\r\n\r\n toDecimalString() {\r\n return this.toString('dec');\r\n }\r\n\r\n toHexString() {\r\n return this.toString('hex');\r\n }\r\n\r\n toBinaryString() : string {\r\n return this.toString('bin');\r\n }\r\n\r\n setValue(value : number) {\r\n this.value = value;\r\n this.lengthInBits = NumericOperand.getBitLength(value);\r\n }\r\n\r\n evaluate() : NumericOperand {\r\n return this;\r\n }\r\n\r\n getUnderlyingOperand() : NumericOperand {\r\n return this\r\n }\r\n \r\n static getBitLength(num : number) {\r\n return Math.floor(Math.log(num) / Math.log(2)) + 1;\r\n } \r\n \r\n static getBase(kind : string){\r\n switch (kind){\r\n case 'bin': return 2;\r\n case 'hex': return 16;\r\n case 'dec': return 10;\r\n }\r\n };\r\n\r\n static create(value : number, base? : NumberBase) {\r\n return new NumericOperand(value, base || \"dec\");\r\n };\r\n\r\n static parse(input: string) : NumericOperand {\r\n \r\n var parsed = numberParser.parse(input);\r\n\r\n if(!parsed) {\r\n throw new Error(input + \" is not a valid number\");\r\n }\r\n\r\n return new NumericOperand(parsed.value, parsed.base);\r\n }\r\n\r\n static toBaseString(value : number, base : NumberBase) : string {\r\n switch(base) {\r\n case 'hex':\r\n var hexVal = Math.abs(value).toString(16);\r\n return value >= 0 ? '0x' + hexVal : '-0x' + hexVal;\r\n case 'bin':\r\n return (value>>>0).toString(2);\r\n case 'dec':\r\n return value.toString(10);\r\n default:\r\n throw new Error(\"Unexpected kind: \" + base)\r\n }\r\n };\r\n\r\n static toHexString (hex : string) {\r\n return hex.indexOf('-') === 0 ? '-0x' + hex.substr(1) : '0x' + hex;\r\n };\r\n}","import NumericOperand from './NumericOperand';\r\nimport { ExpressionInputItem } from './expression-interfaces';\r\n\r\nexport default class ExpressionOperand implements ExpressionInputItem {\r\n expressionString: string;\r\n operand: ExpressionInputItem;\r\n sign: string;\r\n isExpression: boolean;\r\n isShiftExpression: boolean;\r\n isNotExpression: boolean;\r\n\r\n constructor(expressionString : string, operand : ExpressionInputItem, sign : string) {\r\n this.expressionString = expressionString;\r\n this.operand = operand;\r\n this.sign = sign;\r\n this.isExpression = true;\r\n this.isShiftExpression = this.sign.indexOf('<') >= 0 || this.sign.indexOf('>')>= 0;\r\n this.isNotExpression = this.sign === '~';\r\n }\r\n \r\n evaluate(operand?: NumericOperand) : NumericOperand {\r\n if (operand instanceof ExpressionOperand) {\r\n throw new Error('value shouldnt be expression'); \r\n }\r\n\r\n var evaluatedOperand = this.operand.evaluate();\r\n\r\n var str = '';\r\n if(this.sign == '~'){\r\n str = '~' + evaluatedOperand.value;\r\n } else {\r\n if(operand == null)\r\n throw new Error(\"Other is required for expression: \" + this.expressionString)\r\n\r\n str = operand.value + this.sign + evaluatedOperand.value;\r\n }\r\n\r\n return NumericOperand.create(eval(str), evaluatedOperand.base);\r\n }\r\n\r\n getUnderlyingOperand() : NumericOperand {\r\n return this.operand.getUnderlyingOperand();\r\n }\r\n\r\n toString(): string {\r\n return this.sign + this.operand.toString();\r\n }\r\n}","export default {\r\n plainObject: function(obj : any) : boolean {\r\n return typeof obj == \"object\" && !(obj instanceof Array) && obj instanceof Object;\r\n },\r\n\r\n aFunction: function(obj : any) : boolean {\r\n return typeof obj == \"function\";\r\n },\r\n\r\n string: function(obj : any) : boolean {\r\n return typeof obj == \"string\";\r\n },\r\n\r\n array: function(obj : any) : boolean {\r\n return obj instanceof Array;\r\n },\r\n\r\n number: function(obj : any) : boolean {\r\n return typeof obj == \"number\" && !isNaN(obj)\r\n }\r\n}","import is from '../core/is';\r\nimport log from 'loglevel';\r\n\r\nexport type CommandInput = {\r\n input: string;\r\n options: CommandOptions\r\n}\r\n\r\nexport type CommandOptions = {\r\n doNotTrack: boolean;\r\n}\r\n\r\ntype HandleFunction = (input: CommandInput) => void;\r\ntype InputErrorHandler = (input:string, error: Error) => void;\r\n\r\nconst DEFUALT_COMMAND_OPTIONS : CommandOptions = {\r\n doNotTrack: false\r\n};\r\n\r\nexport interface ICommandHandler {\r\n canHandle (input:string) : boolean;\r\n handle: HandleFunction;\r\n}\r\n\r\nexport class CmdShell {\r\n debugMode: boolean;\r\n handlers: ICommandHandler[];\r\n errorHandler: InputErrorHandler | null; \r\n constructor() {\r\n this.handlers = [];\r\n this.debugMode = false;\r\n this.errorHandler = null;\r\n };\r\n\r\n execute (rawInput: string, ops?: CommandOptions ) {\r\n\r\n log.debug(`Executing command: ${rawInput}`);\r\n\r\n ops = ops || Object.assign({}, DEFUALT_COMMAND_OPTIONS);\r\n\r\n var input = rawInput.trim().toLowerCase();\r\n var handler = this.findHandler(input);\r\n\r\n if(handler != null) {\r\n if(this.debugMode) {\r\n this.invokeHandler(input, handler, ops);\r\n } else {\r\n try {\r\n this.invokeHandler(input, handler, ops);\r\n } catch (e) {\r\n this.handleError(input, e);\r\n }\r\n }\r\n }\r\n else {\r\n log.debug(`Handled is not found for command: ${rawInput}`)\r\n this.handleError(input, new Error(\"Unsupported expression: \" + input.trim()));\r\n }\r\n };\r\n\r\n onError(h: InputErrorHandler) {\r\n this.errorHandler = h;\r\n }\r\n \r\n command (cmd : string | object, handler? : any) {\r\n var h = this.createHandler(cmd, handler);\r\n if(h == null){\r\n console.warn('unexpected set of arguments: ', JSON.stringify(arguments));\r\n return;\r\n }\r\n\r\n if(!is.aFunction(h.canHandle)) {\r\n console.warn('handler is missing \"canHandle\" function. registration denied.');\r\n return;\r\n }\r\n\r\n if(!is.aFunction(h.handle)) {\r\n console.warn('handler is missing \"handle\" function. registration denied.');\r\n return;\r\n }\r\n\r\n this.handlers.push(h);\r\n };\r\n\r\n createHandler (cmd : string | object, handler : HandleFunction) : ICommandHandler | null {\r\n if(is.plainObject(cmd)) {\r\n return cmd as ICommandHandler;\r\n }\r\n\r\n if(is.string(cmd)) {\r\n return { canHandle: function (input) { return input === cmd; }, handle: handler };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n findHandler (input: string) : ICommandHandler | null {\r\n return this.handlers.filter(h => h.canHandle(input))[0];\r\n };\r\n\r\n invokeHandler (input : string, handler : ICommandHandler, options: CommandOptions) {\r\n\r\n var cmdResult = handler.handle({ input: input, options });\r\n if(cmdResult != null) {\r\n log.debug(cmdResult);\r\n }\r\n };\r\n\r\n handleError (input: string, err: Error) {\r\n if(this.debugMode)\r\n console.error(input, err);\r\n\r\n if(this.errorHandler != null)\r\n this.errorHandler(input, err);\r\n }\r\n}\r\n\r\nexport default new CmdShell();","import React from 'react';\r\nimport log from 'loglevel';\r\n\r\nexport interface IInputBoxProps\r\n{\r\n onCommandEntered: (input :string) => void;\r\n}\r\n\r\nexport default class InputBox extends React.Component {\r\n history: string[];\r\n historyIndex: number;\r\n nameInput: HTMLInputElement | null;\r\n\r\n constructor(props: IInputBoxProps) {\r\n super(props);\r\n this.nameInput = null;\r\n this.history = [];\r\n this.historyIndex = -1;\r\n }\r\n\r\n componentDidMount(){\r\n if(this.nameInput != null)\r\n this.nameInput.focus();\r\n }\r\n\r\n render() {\r\n return { this.nameInput = input; }} \r\n onKeyUp={e => this.onKeyUp(e)}\r\n onKeyDown={e => this.onKeyDown(e)}\r\n className=\"expressionInput mono\"\r\n placeholder=\"type expression like '1>>2' or 'help' \"\r\n autoComplete=\"off\"/>;\r\n }\r\n\r\n onKeyUp(e: any) {\r\n var input = e.target;\r\n if (e.keyCode != 13 || input.value.trim().length == 0) {\r\n return;\r\n }\r\n \r\n var commandInput = input.value;\r\n this.history.unshift(commandInput);\r\n this.historyIndex = -1;\r\n\r\n input.value = ''; \r\n this.props.onCommandEntered(commandInput);\r\n }\r\n\r\n onKeyDown(args: any) {\r\n\r\n if(args.keyCode == 38) {\r\n var newIndex = this.historyIndex+1;\r\n\r\n if (this.history.length > newIndex) { // up\r\n args.target.value = this.history[newIndex];\r\n this.historyIndex = newIndex;\r\n }\r\n\r\n args.preventDefault();\r\n return;\r\n }\r\n\r\n if(args.keyCode == 40) {\r\n if(this.historyIndex > 0) { // down\r\n args.target.value = this.history[--this.historyIndex];\r\n }\r\n\r\n args.preventDefault();\r\n }\r\n }\r\n}","import React from 'react';\r\nimport AppState from '../AppState';\r\n\r\n\r\ntype DisplayResultProps = {\r\n appState: AppState,\r\n inputHash: string,\r\n input: string,\r\n key: number,\r\n onRemove?: (i: number) => void;\r\n}\r\n\r\nexport default class DisplayResultView extends React.Component {\r\n render() {\r\n\r\n return
\r\n
\r\n \r\n >{this.props.input}\r\n #\r\n
\r\n
\r\n {this.props.children}\r\n
\r\n
;\r\n }\r\n}\r\n\r\n","import AppState from \"../AppState\";\r\nimport React from \"react\";\r\nimport './DebugIndicators.css';\r\n\r\nfunction DebugIndicators(props: {appState: AppState}) {\r\n\r\n const list = [];\r\n const state = props.appState;\r\n\r\n if(props.appState.env != 'prod') {\r\n list.push(state.env);\r\n }\r\n\r\n if(props.appState.debugMode) {\r\n list.push(\"debug\");\r\n }\r\n\r\n if(localStorage.getItem('TrackAnalytics') === 'false') {\r\n list.push(\"notrack\");\r\n }\r\n\r\n if(list.length == 0)\r\n return null;\r\n\r\n return
\r\n {list.map(i => [{i.substring(0,1)}] )}\r\n
\r\n}\r\n\r\nexport default DebugIndicators;","export default {\r\n encodeHash: function(input:string):string {\r\n return encodeURIComponent(input.trim().replace(/\\s/g,','));\r\n },\r\n decodeHash: function(hashValue:string):string {\r\n return decodeURIComponent(hashValue.replace(/^\\#/, '')).replace(/,/g,' ');\r\n },\r\n getArgs: function (hashValue:string) : string[] {\r\n\r\n var decodedHash = this.decodeHash(hashValue);\r\n var args : string[] = [];\r\n\r\n splitHashList(decodedHash).forEach(function(value) {\r\n args.push(value);\r\n });\r\n\r\n return args;\r\n }\r\n};\r\n\r\nfunction splitHashList(str: string) : string[] {\r\n\r\n return str.split('||').filter(s => s.length > 0);\r\n}","import { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React from 'react';\r\nimport cmd from '../../shell/cmd';\r\n\r\ntype CommandLinkProps = {\r\n command?:string;\r\n text:string;\r\n textClassName?: string\r\n icon?: IconDefinition\r\n}\r\n\r\nfunction CommandLink({icon, command, text, textClassName}: CommandLinkProps) {\r\n \r\n const onClick = () => cmd.execute(command || text);\r\n\r\n if(icon != null)\r\n return {text};\r\n\r\n return {text};\r\n}\r\n\r\nexport default CommandLink;","import React from 'react';\r\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\r\nimport { faEnvelope, faDonate } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { faTwitter, faGithub} from \"@fortawesome/free-brands-svg-icons\";\r\nimport './TopLinks.css';\r\nimport CommandLink from '../../core/components/CommandLink';\r\n\r\nfunction TopLinks() {\r\n return ;\r\n}\r\n\r\nexport default TopLinks;","import React from 'react';\r\nimport InputBox from './InputBox';\r\nimport DisplayResultView from './DisplayResultView';\r\nimport AppState, { CommandResultView } from '../AppState';\r\nimport cmd from '../cmd';\r\nimport log from 'loglevel';\r\nimport DebugIndicators from './DebugIndicators';\r\nimport hash from '../../core/hash';\r\nimport TopLinks from './TopLinks';\r\n\r\n\r\ntype AppRootProps = {\r\n appState: AppState, \r\n};\r\n\r\ntype AppRootState = {\r\n uiTheme: string,\r\n emphasizeBytes: boolean,\r\n commandResults: CommandResultView[]\r\n}\r\n\r\nexport default class AppRoot extends React.Component {\r\n \r\n componentWillMount() {\r\n this.refresh();\r\n this.props.appState.onChange(() => this.refresh());\r\n }\r\n\r\n refresh() {\r\n this.setState(this.props.appState);\r\n }\r\n \r\n getIndicator(value : boolean) {\r\n return value ? 'on' : 'off';\r\n }\r\n\r\n getResultViews() : JSX.Element[] {\r\n\r\n var results = this.state.commandResults.map((r, i) => \r\n \r\n {r.view}\r\n );\r\n return results;\r\n }\r\n\r\n toggleEmphasizeBytes() {\r\n this.props.appState.toggleEmphasizeBytes();\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n

BitwiseCmd\r\n

\r\n \r\n
\r\n\r\n
\r\n cmd.execute(input)} />\r\n\r\n \r\n this.toggleEmphasizeBytes()}>[em]\r\n \r\n
\r\n\r\n
\r\n {this.getResultViews()}\r\n
\r\n
;\r\n }\r\n}","import React from 'react';\r\n\r\nfunction ErrorResultView(props : {errorMessage:string}) {\r\n \r\n return
\r\n
{props.errorMessage}
\r\n
;\r\n}\r\n\r\nexport default ErrorResultView;\r\n","const formatter = {\r\n formatString: function(num: number, kind: string) : string {\r\n return num.toString(getBase(kind || \"bin\"));\r\n },\r\n padLeft: function (str: string, length: number, symbol: string) : string {\r\n var sb = Array.prototype.slice.call(str), symbol = symbol || \"0\";\r\n\r\n if(length == null) {\r\n return str;\r\n }\r\n\r\n while(length > sb.length) {\r\n sb.unshift(symbol);\r\n }\r\n\r\n return sb.join('');\r\n },\r\n bin(number: number) {\r\n return this.formatString(number, 'bin');\r\n },\r\n emBin(number: number) {\r\n return this.padLeft(this.bin(number), 8, '0');\r\n }\r\n};\r\n\r\nfunction getBase(kind:string) : number {\r\n switch (kind){\r\n case 'bin': return 2;\r\n case 'hex': return 16;\r\n case 'dec': return 10;\r\n }\r\n\r\n throw new Error(\"Unsupported kind: \" + kind);\r\n}\r\n\r\nexport default formatter;\r\nconst emBin = formatter.emBin;\r\nexport {emBin};","import React from 'react';\r\n\r\nexport type BinaryStringViewProps = {\r\n allowFlipBits?: boolean;\r\n binaryString: string;\r\n onFlipBit?: (input: FlipBitEventArg) => void;\r\n emphasizeBytes?: boolean;\r\n className?:string\r\n};\r\n\r\nexport type FlipBitEventArg = {\r\n index: number;\r\n binaryString: string;\r\n $event: any;\r\n newBinaryString: string, \r\n};\r\n\r\nexport default class BinaryStringView extends React.Component {\r\n render() {\r\n return {this.getChildren()}\r\n }\r\n\r\n onBitClick(index: number, e : any) {\r\n if(!this.props.allowFlipBits || !this.props.onFlipBit) {\r\n return;\r\n }\r\n\r\n if(!this.props.onFlipBit) {\r\n \r\n }\r\n\r\n const arr = this.props.binaryString.split('');\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n const newBinaryString = arr.join('');\r\n\r\n this.props.onFlipBit({ index: index, binaryString: this.props.binaryString, $event: e, newBinaryString }); \r\n }\r\n\r\n getChildren() {\r\n var bits = this.createBits(this.props.binaryString.split(''));\r\n \r\n if(this.props.emphasizeBytes) {\r\n return this.splitIntoBytes(bits);\r\n }\r\n\r\n return bits;\r\n }\r\n\r\n createBits(bitChars:string[]) : JSX.Element[] {\r\n const allowFlipBits = this.props.allowFlipBits || false;\r\n const css = allowFlipBits ? ' flipable' : ''\r\n\r\n return bitChars.map((c, i) => {\r\n var className = c == '1' ? `one${css}` : `zero${css}`;\r\n return this.onBitClick(i, e)}>{c}\r\n });\r\n }\r\n\r\n splitIntoBytes(bits: JSX.Element[]) {\r\n const bytes = [];\r\n\r\n var key = 0;\r\n while(bits.length > 0) {\r\n bytes.push({bits.splice(0, 8)});\r\n }\r\n \r\n return bytes;\r\n }\r\n}","import React from 'react';\r\nimport formatter from '../../core/formatter'\r\nimport BinaryStringView from '../../core/components/BinaryString';\r\nimport './IpAddressView.css';\r\nimport { IpAddress, OctetNumber } from '../models';\r\n\r\ntype IpAddressViewProps = {\r\n ipAddresses: IpAddress[]\r\n};\r\n\r\nexport class IpAddressView extends React.Component \r\n{\r\n \r\n render() { \r\n return \r\n \r\n {this.props.ipAddresses.map((ip, i) => \r\n \r\n \r\n )}\r\n \r\n
{ip.toString()}\r\n {this.bin(ip.firstByte, 1, ip)}.\r\n {this.bin(ip.secondByte, 2, ip)}.\r\n {this.bin(ip.thirdByte, 3, ip)}.\r\n {this.bin(ip.fourthByte, 4, ip)}\r\n
;\r\n }\r\n\r\n bin(value: number, octetNumber: OctetNumber, ip: IpAddress) {\r\n return this.onFlippedBit(e.newBinaryString, octetNumber, ip)} />;\r\n }\r\n \r\n onFlippedBit(binaryString: string, number: OctetNumber, ip : IpAddress) {\r\n ip.setOctet(number, parseInt(binaryString, 2));\r\n this.forceUpdate();\r\n }\r\n};\r\n\r\nfunction fmt(num: number) : string {\r\n return formatter.padLeft(formatter.formatString(num, 'bin'), 8, '0');\r\n}\r\n\r\nexport default IpAddressView;","import {emBin} from \"../core/formatter\";\r\n\r\nexport type OctetNumber = 1 | 2 | 3 | 4;\r\nexport type NetworkClass = 'a' | 'b' | 'c' | 'd' | 'e';\r\n\r\nexport class IpAddressWithSubnetMask {\r\n maskBits: number;\r\n ipAddress: IpAddress;\r\n\r\n constructor(ipAddress: IpAddress, maskBits: number) {\r\n this.ipAddress = ipAddress;\r\n this.maskBits = maskBits;\r\n }\r\n\r\n toString() {\r\n return `${this.ipAddress.toString()}/${this.maskBits}`;\r\n }\r\n}\r\n\r\nexport class IpAddress {\r\n\r\n firstByte: number;\r\n secondByte: number;\r\n thirdByte: number;\r\n fourthByte: number;\r\n\r\n constructor(firstByte: number, secondByte: number, thirdByte: number, fourthByte: number) {\r\n this.firstByte = firstByte;\r\n this.secondByte = secondByte;\r\n this.thirdByte = thirdByte;\r\n this.fourthByte = fourthByte;\r\n }\r\n\r\n toString(): string {\r\n return `${this.firstByte}.${this.secondByte}.${this.thirdByte}.${this.fourthByte}`;\r\n }\r\n\r\n toBinaryString() {\r\n \r\n return `${emBin(this.firstByte)}).${emBin(this.secondByte)}.${emBin(this.thirdByte)}.${emBin(this.fourthByte)}`;\r\n }\r\n\r\n clone(): IpAddress {\r\n return new IpAddress(this.firstByte, this.secondByte, this.thirdByte, this.fourthByte);\r\n }\r\n\r\n setOctet(octet: OctetNumber, value: number) {\r\n switch (octet) {\r\n case 1:\r\n this.firstByte = value;\r\n break;\r\n case 2:\r\n this.secondByte = value;\r\n break;\r\n case 3:\r\n this.thirdByte = value;\r\n break;\r\n case 4:\r\n this.fourthByte = value;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport class SubnetCommand {\r\n input: IpAddressWithSubnetMask;\r\n constructor(definition: IpAddressWithSubnetMask) {\r\n this.input = definition;\r\n }\r\n\r\n getAdressSpaceSize(): number {\r\n const spaceLengthInBits = 32 - this.input.maskBits;\r\n return Math.pow(2, spaceLengthInBits) - 2; // 0 - network address, 1 - multicast address\r\n }\r\n\r\n toString() {\r\n return this.input.toString();\r\n }\r\n}\r\n\r\n","import { IpAddress, IpAddressWithSubnetMask, SubnetCommand } from './models';\r\n\r\nexport type ParsedIpObject = IpAddress | IpAddressWithSubnetMask;\r\n\r\n\r\nconst ipAddressParser = {\r\n parse: function(input: string) : ParsedIpObject[] | SubnetCommand | ParsingError | null {\r\n\r\n const result = this.parseCommand(input);\r\n\r\n const matches = this.getMaches(result.nextInput);\r\n const correctInputs = matches.filter(m => m.matches != null);\r\n const incorrectInputs = matches.filter(m => m.matches == null);\r\n \r\n if(correctInputs.length == 0)\r\n return null;\r\n\r\n if(incorrectInputs.length > 0) {\r\n return new ParsingError(`Value(s) ${incorrectInputs.map(v => v.input).join(',')} was not recognized as valid ip address or ip address with a subnet mask`);\r\n }\r\n\r\n const parsedObjects = matches.map(m => this.parseSingle(m.matches!, m.input));\r\n const parsingErrors = parsedObjects.filter(p => p instanceof ParsingError);\r\n\r\n if(parsingErrors.length > 0) {\r\n return parsingErrors[0] as ParsingError;\r\n }\r\n\r\n if(result.command != null) {\r\n const result = this.createSubnetDefinition(parsedObjects as ParsedIpObject[]);\r\n \r\n if(result instanceof ParsingError)\r\n return result;\r\n\r\n return result;\r\n } \r\n\r\n return parsedObjects as ParsedIpObject[];\r\n },\r\n\r\n parseCommand(input : string) : { command: null | string, nextInput: string } {\r\n\r\n const command = 'subnet';\r\n if(input.startsWith(command)) \r\n return { command, nextInput: input.substring(command.length)}\r\n\r\n return { command: null, nextInput: input };\r\n },\r\n\r\n getMaches(input : string) : { matches: RegExpExecArray | null, input: string }[] {\r\n\r\n return input.\r\n replace(/[\\t\\s]+/g, ' ')\r\n .split(' ')\r\n .filter(s => s.length>0)\r\n .map(s => {\r\n const ipV4Regex = /^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})(\\/\\d+)?$/;\r\n const matches = ipV4Regex.exec(s);\r\n \r\n if(matches == null || matches.length === 0)\r\n return {matches: null, input: s};\r\n \r\n return {matches, input: s};\r\n });\r\n },\r\n\r\n parseSingle(matches : RegExpExecArray, input: string) : ParsedIpObject | ParsingError {\r\n const invalid = (n: number) => n < 0 || n > 255;\r\n \r\n const first = parseInt(matches[1]);\r\n const second = parseInt(matches[2]);\r\n const third = parseInt(matches[3]);\r\n const fourth = parseInt(matches[4]);\r\n\r\n if(invalid(first) || invalid(second) || invalid(third) || invalid(fourth))\r\n return new ParsingError(`${input} doesn't represent a valid IP address space`);\r\n\r\n const ipAddress = new IpAddress(first, second, third, fourth);\r\n\r\n if(matches[5]) {\r\n const maskPart = matches[5].substr(1);\r\n const maskBits = parseInt(maskPart);\r\n\r\n if(maskBits > 32) {\r\n return new ParsingError(`Subnet mask value in ${input} is out of range`);\r\n }\r\n\r\n return new IpAddressWithSubnetMask(ipAddress, maskBits);\r\n }\r\n\r\n return ipAddress;\r\n },\r\n\r\n createSubnetDefinition(items: ParsedIpObject[]) : SubnetCommand | ParsingError {\r\n if(items.length != 1)\r\n return new ParsingError(\"Incorrect network definition\");\r\n \r\n const first = items[0];\r\n if(first instanceof IpAddressWithSubnetMask) {\r\n return new SubnetCommand(first);\r\n }\r\n\r\n return new ParsingError(\"Network definition requires subnet mask\");\r\n }\r\n}\r\n\r\nexport class ParsingError {\r\n errorMessage: string;\r\n constructor(message: string) {\r\n this.errorMessage = message;\r\n }\r\n}\r\n\r\n\r\nexport default ipAddressParser;","function flipBitsToZero(byte: number, numberOfBits : number) : number {\r\n if(numberOfBits == 0)\r\n return byte;\r\n \r\n const zerouOutMask = Math.pow(2, 8-numberOfBits)-1< flipper(byte, 8 - maskBits);\r\n\r\n const ip = ipm.ipAddress;\r\n const maskBits = ipm.maskBits;\r\n\r\n if (maskBits <= 8) {\r\n return new IpAddress(flip(maskBits, ip.firstByte), fullByte, fullByte, fullByte);\r\n }\r\n else if (maskBits <= 16) {\r\n return new IpAddress(ip.firstByte, flip(maskBits - 8, ip.secondByte), fullByte, fullByte);\r\n }\r\n else if (maskBits <= 24) {\r\n return new IpAddress(ip.firstByte, ip.secondByte, flip(maskBits - 16, ip.thirdByte), fullByte);\r\n }\r\n\r\n else\r\n return new IpAddress(ip.firstByte, ip.secondByte, ip.thirdByte, flip(maskBits - 24, ip.fourthByte));\r\n}\r\n\r\nfunction getNetworkClass (ipAddress: IpAddress) : NetworkClass {\r\n const byte = ipAddress.firstByte;\r\n\r\n const firstBitOne = (byte & 128) === 128;\r\n const firstBitZero = (byte & 128) === 0;\r\n const secondBitOne = (byte & 64) === 64;\r\n\r\n const thirdBitOne = (byte & 32) === 32;\r\n const thirdBitZero = (byte & 32) === 0;\r\n\r\n const forthBitZero = (byte & 16) === 0;\r\n const forthBitOne = (byte & 16) === 16;\r\n\r\n // e: 1111\r\n\r\n if(firstBitOne && secondBitOne && thirdBitOne && forthBitOne)\r\n return 'e';\r\n\r\n if(firstBitOne && secondBitOne && thirdBitOne && forthBitZero) // Start bits: 1110;\r\n return 'd';\r\n\r\n if(firstBitOne && secondBitOne && thirdBitZero) // Start bits: 110;\r\n return 'c';\r\n \r\n return firstBitOne ? 'b' : 'a';\r\n};\r\n\r\n\r\ntype FlipFunction = (byte: number, numberOfBits: number) => number; \r\n\r\nexport {createSubnetMaskIp, getBroadCastAddress, getNetworkAddress, getNetworkClass};","import React from 'react';\r\nimport BinaryStringView from '../../core/components/BinaryString';\r\nimport formatter from '../../core/formatter';\r\nimport { IpAddress } from '../models';\r\n\r\nfunction IpAddressBinaryString({ip}: {ip:IpAddress}) {\r\n\r\n return \r\n \r\n .\r\n \r\n .\r\n \r\n .\r\n \r\n ;\r\n}\r\n\r\nexport default IpAddressBinaryString;","import React, { useState } from 'react';\r\nimport BinaryStringView from '../../core/components/BinaryString';\r\nimport './SubnetView.css';\r\nimport { getNetworkAddress, getBroadCastAddress, createSubnetMaskIp } from '../subnet-utils';\r\nimport { chunkifyString } from '../../core/utils';\r\nimport IpAddressBinaryString from './IpAddressBinaryString';\r\nimport { IpAddress, IpAddressWithSubnetMask, SubnetCommand } from '../models';\r\n\r\nfunction SubnetView(props : {subnet : SubnetCommand}) {\r\n\r\n const [subnet, setSubnet] = useState(props.subnet);\r\n\r\n const incrementMask = () => {\r\n const newInput = new IpAddressWithSubnetMask(subnet.input.ipAddress, subnet.input.maskBits+1);\r\n setSubnet(new SubnetCommand(newInput));\r\n };\r\n\r\n const decrementMask = () => {\r\n const newInput = new IpAddressWithSubnetMask(subnet.input.ipAddress, subnet.input.maskBits-1);\r\n setSubnet(new SubnetCommand(newInput));\r\n }\r\n\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Network Size\r\n \r\n {subnet.getAdressSpaceSize()}\r\n
\r\n Mask Size\r\n \r\n \r\n \r\n {subnet.input.maskBits}\r\n \r\n
\r\n
\r\n
\r\n
;\r\n}\r\n\r\nfunction SubnetRow(props: { ip: IpAddress, descr: string}) {\r\n\r\n const {ip, descr} = props;\r\n\r\n return \r\n {descr}\r\n \r\n {ip.toString()}\r\n \r\n \r\n \r\n \r\n ;\r\n}\r\n\r\nexport default SubnetView;","import log from 'loglevel';\r\n\r\nexport type AnalyticsEvent = {\r\n eventCategory: string,\r\n eventAction: string,\r\n eventLabel?: string\r\n};\r\n\r\nexport type AnalyticsHandler = (evt: AnalyticsEvent) => boolean;\r\n\r\nfunction sendAnalyticsEvent(evt : AnalyticsEvent) {\r\n const handler = (window as any).bitwiseCmdAnalyticsHandler;\r\n if(handler == null) {\r\n log.debug('ERROR!!!: Analytics event was not sent. Handler not found');\r\n }\r\n\r\n const delivered = (handler as AnalyticsHandler)(evt);\r\n log.debug('Analytics event sent. Delivery response: ' + delivered, evt)\r\n}\r\n\r\nexport {sendAnalyticsEvent};\r\n","import React from 'react';\r\nimport AppState from '../shell/AppState';\r\nimport { CmdShell, CommandInput, CommandOptions } from '../shell/cmd';\r\nimport ErrorResultView from '../shell/components/ErrorResultView';\r\nimport IpAddressView from './components/IpAddressView';\r\nimport ipAddressParser, {ParsingError, ParsedIpObject} from './ip-parser';\r\nimport { IpAddress, IpAddressWithSubnetMask, SubnetCommand } from \"./models\";\r\nimport log from 'loglevel';\r\nimport SubnetView from './components/SubnetView';\r\nimport { createSubnetMaskIp } from './subnet-utils';\r\nimport {sendAnalyticsEvent} from '../shell/analytics';\r\n\r\nconst networkingAppModule = {\r\n setup: function(appState: AppState, cmd: CmdShell) {\r\n \r\n // Add Ip Address commands\r\n cmd.command({\r\n canHandle: (input:string) => ipAddressParser.parse(input) != null,\r\n handle: function(c: CommandInput) {\r\n var result = ipAddressParser.parse(c.input);\r\n\r\n if(result == null)\r\n return;\r\n\r\n if(result instanceof ParsingError) {\r\n appState.addCommandResult(c.input, );\r\n return;\r\n }\r\n\r\n if(result instanceof SubnetCommand) {\r\n appState.addCommandResult(c.input, );\r\n trackCommand('SubnetCommand', c.options);\r\n return;\r\n }\r\n\r\n const ipAddresses : IpAddress[] = [];\r\n \r\n (result as ParsedIpObject[]).forEach(r => {\r\n if(r instanceof IpAddressWithSubnetMask)\r\n {\r\n ipAddresses.push(r.ipAddress);\r\n ipAddresses.push(createSubnetMaskIp(r));\r\n }\r\n else if(r instanceof IpAddress) {\r\n ipAddresses.push(r);\r\n }\r\n });\r\n\r\n trackCommand(\"IpAddressesInput\", c.options);\r\n \r\n appState.addCommandResult(c.input, );\r\n }\r\n });\r\n\r\n log.debug();\r\n }\r\n}\r\n\r\nfunction trackCommand(action: string, ops: CommandOptions) {\r\n if(ops.doNotTrack !== true) {\r\n sendAnalyticsEvent({\r\n eventCategory: \"NetworkingCommand\",\r\n eventAction: action\r\n });\r\n }\r\n}\r\n\r\nexport default networkingAppModule;","import NumericOperand from \"./NumericOperand\";\r\nimport { ExpressionInput, ExpressionInputItem } from \"./expression-interfaces\";\r\n\r\nexport default class ListOfNumbersExpression implements ExpressionInput {\r\n numbers: NumericOperand[];\r\n expressionString: string;\r\n maxBitsLength: number;\r\n\r\n constructor(expressionString: string, numbers: NumericOperand[]) {\r\n this.expressionString = expressionString;\r\n this.numbers = numbers;\r\n this.maxBitsLength = numbers.map(n => n.lengthInBits).reduce((n , c) => n >= c ? n : c, 0);\r\n }\r\n\r\n toString() {\r\n return this.numbers.map(n => n.value.toString()).join(' ');\r\n }\r\n}","import { ExpressionInput, ExpressionInputItem } from \"./expression-interfaces\";\r\n\r\nexport default class BitwiseOperationExpression implements ExpressionInput {\r\n \r\n expressionString: string;\r\n expressionItems: ExpressionInputItem[];\r\n\r\n constructor(expressionString: string, expressions: ExpressionInputItem[]) {\r\n this.expressionString = expressionString;\r\n this.expressionItems = expressions;\r\n }\r\n}","import NumericOperand from './NumericOperand';\r\nimport ExpressionOperand from './ExpressionOperand'\r\nimport ListOfNumbersExpression from './ListOfNumbersExpression';\r\nimport BitwiseOperationExpression from './BitwiseOperationExpression';\r\nimport { ExpressionInput, ExpressionInputItem, NumberBase } from './expression-interfaces';\r\n\r\nexport { default as NumericOperand } from './NumericOperand';\r\nexport { default as ExpressionOperand } from './ExpressionOperand';\r\nexport { default as ListOfNumbersExpression } from './ListOfNumbersExpression';\r\nexport { default as BitwiseOperationExpression } from './BitwiseOperationExpression';\r\n\r\ninterface IExpressionParserFactory {\r\n canCreate: (input: string) => boolean;\r\n create: (input: string) => ExpressionInput;\r\n};\r\n\r\nclass ExpressionParser {\r\n factories: IExpressionParserFactory[];\r\n constructor() {\r\n this.factories = [];\r\n };\r\n\r\n canParse (input: string) : boolean {\r\n var trimmed = input.replace(/^\\s+|\\s+$/, '');\r\n var i = this.factories.length-1;\r\n for(;i>=0;i--) {\r\n if(this.factories[i].canCreate(trimmed) === true){\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n parse (input: string) : ExpressionInput | null {\r\n var trimmed = input.replace(/^\\s+|\\s+$/, '');\r\n var i = 0, l = this.factories.length, factory;\r\n\r\n for(;i {\r\n if(n.trim().length > 0) {\r\n numbers.push(NumericOperand.parse(n.trim()));\r\n }\r\n });\r\n\r\n return new ListOfNumbersExpression(input, numbers);\r\n }\r\n}\r\n\r\nclass BitwiseOperationExpressionFactory implements IExpressionParserFactory {\r\n fullRegex: RegExp;\r\n regex: RegExp;\r\n\r\n constructor() {\r\n this.fullRegex = /^((<<|>>|>>>|\\||\\&|\\^)?(~?-?([b,x,a-f,0-9]+)))+$/;\r\n this.regex = /(<<|>>|>>>|\\||\\&|\\^)?(~?-?(?:[b,x,a-f,0-9]+))/g;\r\n }\r\n\r\n canCreate (input: string) : boolean {\r\n this.fullRegex.lastIndex = 0;\r\n return this.fullRegex.test(this.normalizeString(input));\r\n };\r\n\r\n create (input: string) : ExpressionInput {\r\n var m, operands : ExpressionInputItem[] = [],\r\n normalizedString = this.normalizeString(input);\r\n\r\n while ((m = this.regex.exec(normalizedString)) != null) {\r\n operands.push(this.parseMatch(m));\r\n }\r\n\r\n return new BitwiseOperationExpression(normalizedString, operands)\r\n };\r\n\r\n parseMatch (m:any): ExpressionInputItem {\r\n var input = m[0],\r\n sign = m[1],\r\n num = m[2];\r\n\r\n var parsed = null;\r\n if(num.indexOf('~') == 0) {\r\n parsed = new ExpressionOperand(num, NumericOperand.parse(num.substring(1)), '~');\r\n }\r\n else {\r\n parsed = NumericOperand.parse(num);\r\n }\r\n\r\n if(sign == null) {\r\n return parsed as ExpressionOperand;\r\n } else {\r\n return new ExpressionOperand(input, parsed as NumericOperand, sign);\r\n }\r\n };\r\n\r\n normalizeString (input : string): string {\r\n return input.replace(/\\s+/g,'');\r\n };\r\n}\r\n\r\nvar parser = new ExpressionParser();\r\nparser.addFactory(new ListOfNumbersExpressionFactory());\r\nparser.addFactory(new BitwiseOperationExpressionFactory());\r\n\r\nexport {parser};\r\n","import { NumericOperand, ListOfNumbersExpression, BitwiseOperationExpression, ExpressionOperand } from '../expression';\r\nimport { ExpressionInputItem, ExpressionInput } from '../expression-interfaces';\r\n\r\ntype Config = {\r\n emphasizeBytes: boolean;\r\n allowFlipBits: boolean;\r\n}\r\n\r\ntype ExpressionItemModel = {\r\n sign: string;\r\n css: string;\r\n expressionItem: ExpressionInputItem;\r\n allowFlipBits: boolean;\r\n label: string;\r\n}\r\n\r\nexport default class BitwiseExpressionViewModel {\r\n\r\n emphasizeBytes: boolean;\r\n items: ExpressionItemModel[];\r\n maxNumberOfBits: number;\r\n allowFlipBits: boolean;\r\n\r\n constructor({ emphasizeBytes = false, allowFlipBits = false} : Config) {\r\n this.emphasizeBytes = emphasizeBytes;\r\n this.items = [];\r\n this.maxNumberOfBits = 0;\r\n this.allowFlipBits = allowFlipBits === true;\r\n }\r\n\r\n static buildListOfNumbers(expr : ListOfNumbersExpression, config : Config) {\r\n var model = new BitwiseExpressionViewModel(config);\r\n expr.numbers.forEach(op => model.addOperandRow(op));\r\n model.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(model.maxNumberOfBits, model.emphasizeBytes);\r\n return model;\r\n }\r\n\r\n static buildMultiple (expr : BitwiseOperationExpression, config : Config) {\r\n\r\n var op = expr.expressionItems[0],\r\n i = 0, len = expr.expressionItems.length,\r\n ex, m = new BitwiseExpressionViewModel(config);\r\n\r\n var prev : NumericOperand | null = null;\r\n\r\n for (;i {\r\n constructor(props: BitwiseOperationExpressionViewProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n render() {\r\n var rows = this.getRows();\r\n if(!rows) {\r\n return null;\r\n }\r\n\r\n return \r\n \r\n {rows}\r\n \r\n
\r\n }\r\n\r\n getRows() : JSX.Element[] | null {\r\n var model = BitwiseExpressionViewModel.createModel(this.props.expression, this.props.emphasizeBytes);\r\n\r\n return model.items.map((itm, i) => \r\n this.onBitFlipped()} />);\r\n }\r\n\r\n onBitFlipped() {\r\n this.forceUpdate();\r\n //this.setState({d:new Date()});\r\n }\r\n}\r\n\r\ntype ExpressionRowProps = {\r\n sign: string, \r\n css: string, \r\n maxNumberOfBits: number, \r\n emphasizeBytes: boolean, \r\n allowFlipBits: boolean, \r\n expressionItem: ExpressionInputItem,\r\n onBitFlipped: any\r\n}\r\n\r\nclass ExpressionRow extends React.Component {\r\n constructor(props: ExpressionRowProps) {\r\n super(props);\r\n this.state = { operand: null };\r\n }\r\n render() {\r\n const { sign, css, maxNumberOfBits, emphasizeBytes, allowFlipBits } = this.props;\r\n \r\n return \r\n {sign}\r\n {this.getLabel()}\r\n \r\n this.flipBit(args)}/>\r\n \r\n {this.getOther()}\r\n ;;\r\n }\r\n\r\n getBinaryString() : string { \r\n return this.props.expressionItem.evaluate().toBinaryString();\r\n }\r\n\r\n getLabel(): string {\r\n\r\n // For expressions like |~2 \r\n // TODO: find a better way...\r\n if(this.props.expressionItem.isExpression) {\r\n const ex = this.props.expressionItem as ExpressionOperand;\r\n return ex.sign + this.getLabelString(ex.getUnderlyingOperand());\r\n }\r\n\r\n return this.getLabelString(this.props.expressionItem.getUnderlyingOperand()); \r\n }\r\n\r\n getOther() {\r\n\r\n if(this.props.expressionItem.isExpression) {\r\n const ex = this.props.expressionItem as ExpressionOperand;\r\n const op = ex.evaluate();\r\n\r\n return op.toString();\r\n }\r\n\r\n return this.props.expressionItem.evaluate().toOtherKindString();\r\n }\r\n\r\n getLabelString (op: NumericOperand) : string {\r\n return op.toString(op.base == 'bin' ? 'dec' : op.base);\r\n }\r\n\r\n flipBit(args: FlipBitEventArg) { \r\n\r\n const op = this.props.expressionItem.getUnderlyingOperand();\r\n const { index, binaryString } = args;\r\n\r\n var arr = binaryString.split('');\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n var bin = arr.join('');\r\n\r\n var newValue = parseInt(bin, 2);\r\n op.setValue(newValue);\r\n\r\n this.props.onBitFlipped();\r\n }\r\n}","import React from 'react';\r\nimport AppState from '../shell/AppState';\r\nimport { CmdShell, CommandInput } from '../shell/cmd';\r\nimport BitwiseOperationExpressionView from './components/BitwiseOperationExpressionView';\r\nimport {parser} from './expression';\r\n\r\nconst expressionAppModule = {\r\n setup: function(appState: AppState, cmd: CmdShell) {\r\n \r\n // Bitwise Expressions\r\n cmd.command({\r\n canHandle: (input:string) => parser.canParse(input),\r\n handle: function(c: CommandInput) {\r\n var expr = parser.parse(c.input);\r\n appState.addCommandResult(c.input, );\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default expressionAppModule;","import React from 'react'\r\n\r\nfunction AboutResultView() {\r\n\r\n return
\r\n

Created by Borys Levytskyi. Please give it a like if BitwiseCmd has helped you in your work.

\r\n

If you have an idea, suggestion or you've spotted a bug here, please send it to bitwisecmd@gmail.com or tweet on @BitwiseCmd. Your feedback is greatly appreciated.

\r\n

Project on GitHub

\r\n
;\r\n};\r\n\r\nexport default AboutResultView;","import React from 'react';\r\nimport CommandLink from '../../core/components/CommandLink';\r\nimport './HelpResultView.css';\r\n\r\nfunction HelpResultView() {\r\n \r\n return
\r\n
\r\n
\r\n
\r\n Bitiwse Calculation Commands\r\n
    \r\n
  • — type bitwise expression to see result in binary (only positive integers are supported now)
  • \r\n
  • — type one or more numbers to see their binary representations
  • \r\n
\r\n
\r\n
\r\n IP Address Commands\r\n
    \r\n
  • — enter single or multiple ip addresses (separated by space) to see their binary represenation
  • \r\n
  • — subnet mask notiations are support as well
  • \r\n
  • — display information about subnet (network address, broadcast address, etc.)
  • \r\n
\r\n
\r\n
\r\n Color Theme Commands\r\n
    \r\n
  • — set Light color theme
  • \r\n
  • — set Dark color theme
  • \r\n
  • — set Midnight color theme
  • \r\n
\r\n
\r\n
\r\n Other Commands\r\n
    \r\n
  • — clear output pane
  • \r\n
  • — display this help
  • \r\n
  • — display changelog
  • \r\n
  • — turn On/Off Emphasize Bytes
  • \r\n
  • — about the app
  • \r\n
  • — generate v4 GUID
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Supported Bitwise Operations
\r\n \r\n \r\n as implemented in JavaScript engine of your browser\r\n \r\n \r\n
    \r\n
  • & — bitwise AND
  • \r\n
  • | — bitwise inclusive OR
  • \r\n
  • ^ — bitwise exclusive XOR
  • \r\n
  • ~ — bitwise NOT
  • \r\n
  • << — left shift
  • \r\n
  • >> — sign propagating right shift
  • \r\n
  • >>> — zero-fill right shift
  • \r\n
\r\n
\r\n
\r\n Tip\r\n

\r\n You can click on bits to flip them in number inputs (e.g. ) or IP addresses (e.g. )\r\n

\r\n
\r\n
\r\n
\r\n
;\r\n}\r\n\r\nexport default HelpResultView;\r\n","import React from 'react';\r\n\r\nfunction TextResultView(props : { text: string }) {\r\n return

{props.text}

;\r\n}\r\n\r\nexport default TextResultView;","import React from 'react';\r\nimport CommandLink from '../../core/components/CommandLink';\r\nimport './WhatsNewResultView.css';\r\n\r\nfunction WhatsnewResultView() {\r\n \r\n return
\r\n

Changelog

\r\n
\r\n

Jun 16th, 2021
\r\n Added support of subnet command to display information about subnet ip adress such. Try it out: \r\n

\r\n
\r\n
\r\n

Jun 14th, 2021
\r\n Added support of ip addresses and subnet masks notatioans. Try them out: \r\n

\r\n
    \r\n
  • Single IP address
  • \r\n
  • Multiple IP addresses and subnet mask notations
  • \r\n
\r\n \r\n
\r\n
\r\n

Jun 6th, 2017
\r\n Added command. Use it for generating v4 GUIDs

\r\n
\r\n
\r\n

May 27th, 2017
\r\n Added support of binary number notation (e.g. ).

\r\n
\r\n
\r\n

May 20th, 2017
\r\n New theme added.

\r\n
\r\n
\r\n

May 16th, 2017
\r\n Complete rewrite using React. Old implementation is available at http://bitwisecmd.com/old. Please let me know if you have problems with this release by creating issue in Github Repo.

\r\n
\r\n
;\r\n}\r\n\r\nexport default WhatsnewResultView;","import log from 'loglevel';\r\n\r\nconst APP_VERSION = 6;\r\n\r\nexport type PersistedAppData = {\r\n emphasizeBytes: boolean;\r\n uiTheme: string;\r\n version: number;\r\n debugMode: boolean | null;\r\n pageVisistsCount: number;\r\n donationClicked: boolean\r\n}\r\n\r\nexport type CommandResultView = {\r\n key: number,\r\n input: string,\r\n view: JSX.Element\r\n};\r\n\r\nexport type AppStateChangeHandler = (state: AppState) => void;\r\n\r\nexport default class AppState {\r\n \r\n version: number = APP_VERSION;\r\n emphasizeBytes: boolean;\r\n debugMode: boolean = false;\r\n uiTheme: string;\r\n changeHandlers: AppStateChangeHandler[];\r\n commandResults: CommandResultView[];\r\n persistedVersion: number;\r\n wasOldVersion: boolean;\r\n env: string;\r\n pageVisitsCount: number;\r\n donationClicked: boolean;\r\n\r\n constructor(persistData : PersistedAppData, env: string) {\r\n this.commandResults = [];\r\n this.changeHandlers = [];\r\n this.uiTheme = persistData.uiTheme || 'midnight';\r\n this.env = env;\r\n\r\n this.emphasizeBytes = persistData.emphasizeBytes || true;\r\n this.persistedVersion = persistData.version || 0.1;\r\n this.wasOldVersion = persistData.version != null && this.version > this.persistedVersion;\r\n this.debugMode = env !== 'prod' || persistData.debugMode === true;\r\n this.pageVisitsCount = persistData.pageVisistsCount || 0;\r\n this.donationClicked = persistData.donationClicked;\r\n }\r\n\r\n addCommandResult(input : string, view : JSX.Element) {\r\n const key = generateKey();\r\n this.commandResults.unshift({key, input, view});\r\n log.debug(`command result added: ${input}`);\r\n this.triggerChanged();\r\n }\r\n\r\n clearCommandResults() {\r\n this.commandResults = [];\r\n this.triggerChanged();\r\n }\r\n\r\n toggleEmphasizeBytes() {\r\n this.emphasizeBytes = !this.emphasizeBytes;\r\n this.triggerChanged();\r\n }\r\n\r\n onChange(handler : AppStateChangeHandler) {\r\n this.changeHandlers.push(handler);\r\n }\r\n\r\n triggerChanged() {\r\n this.changeHandlers.forEach(h => h(this));\r\n }\r\n\r\n setUiTheme(theme: string) {\r\n this.uiTheme = theme;\r\n this.triggerChanged(); \r\n }\r\n\r\n toggleDebugMode() {\r\n this.debugMode = !this.debugMode;\r\n this.triggerChanged();\r\n }\r\n\r\n registerVisit() {\r\n this.pageVisitsCount++;\r\n this.triggerChanged();\r\n }\r\n\r\n onDonationClicked() : boolean{\r\n if(this.donationClicked === true) return false;\r\n\r\n this.donationClicked = true;\r\n this.triggerChanged();\r\n return true;\r\n }\r\n\r\n getPersistData() : PersistedAppData {\r\n return {\r\n emphasizeBytes: this.emphasizeBytes,\r\n uiTheme: this.uiTheme,\r\n version: this.version,\r\n debugMode: this.debugMode,\r\n pageVisistsCount: this.pageVisitsCount,\r\n donationClicked: this.donationClicked\r\n }\r\n }\r\n};\r\n\r\nfunction generateKey() : number {\r\n return Math.ceil(Math.random()*10000000) ^ Date.now(); // Because why the hell not...\r\n}","import AppState, { PersistedAppData } from \"./AppState\";\r\n\r\nconst storeKey = 'AppState';\r\n\r\nexport default {\r\n getPersistedData() : PersistedAppData {\r\n var json = window.localStorage.getItem(storeKey);\r\n if(!json) {\r\n return {} as PersistedAppData;\r\n }\r\n\r\n try {\r\n return JSON.parse(json) as PersistedAppData;\r\n }\r\n catch(ex) {\r\n console.error('Failed to parse AppState json. Json Value: \\n' + json, ex);\r\n return {} as PersistedAppData;;\r\n }\r\n },\r\n\r\n watch (appState: AppState) {\r\n appState.onChange(() => this.persistData(appState));\r\n },\r\n\r\n persistData(appState: AppState) {\r\n localStorage.setItem(storeKey, JSON.stringify(appState.getPersistData()));\r\n }\r\n}","import log from 'loglevel';\r\nimport hash from '../core/hash';\r\nimport AppState from './AppState';\r\nimport { Env } from './interfaces';\r\nimport appStateStore from './appStateStore';\r\nimport CommandLink from '../core/components/CommandLink';\r\n\r\nexport type StartupAppData = {\r\n appState: AppState,\r\n startupCommands: string[]\r\n}\r\n\r\nconst STARTUP_COMMAND_KEY = 'StartupCommand';\r\nconst DEFAULT_COMMANDS = ['help', '127.0.0.1 192.168.0.0/8', '1|2&6','4 0b1000000 0x80'];\r\n\r\nfunction bootstrapAppData() : StartupAppData {\r\n const env = window.location.host === \"bitwisecmd.com\" ? 'prod' : 'stage';\r\n\r\n setupLogger(env);\r\n\r\n const appState = createAppState(env);\r\n const startupCommands = getStartupCommands(appState);\r\n\r\n return {\r\n appState,\r\n startupCommands\r\n }\r\n}\r\n\r\n\r\nfunction createAppState(env:string) {\r\n var stateData = appStateStore.getPersistedData();\r\n const appState = new AppState(stateData, env);\r\n appStateStore.watch(appState);\r\n log.debug(\"appState initialized\", appState);\r\n return appState;\r\n}\r\n\r\nfunction getStartupCommands(appState : AppState) : string[] {\r\n var hashArgs = hash.getArgs(window.location.hash);\r\n\r\n var startupCommands = loadStoredCommands();\r\n\r\n if(startupCommands.length == 0) \r\n startupCommands = DEFAULT_COMMANDS;\r\n\r\n if(appState.wasOldVersion) {\r\n startupCommands = [\"whatsnew\"];\r\n }\r\n\r\n if(hashArgs.length > 0) {\r\n startupCommands = hashArgs;\r\n }\r\n\r\n log.debug('Executing startup commands', startupCommands);\r\n\r\n return startupCommands;\r\n}\r\n\r\nfunction loadStoredCommands() : string[] {\r\n const json = localStorage.getItem(STARTUP_COMMAND_KEY);\r\n return json != null ? [json] : []; \r\n}\r\n\r\nfunction setupLogger(env: Env) {\r\n if(env != 'prod'){\r\n log.setLevel(\"debug\");\r\n log.debug(`Log level is set to debug. Env: ${env}`)\r\n } else {\r\n log.setLevel(\"warn\");\r\n }\r\n}\r\n\r\nexport {STARTUP_COMMAND_KEY};\r\nexport default bootstrapAppData;","import React from 'react';\r\nimport uuid from 'uuid';\r\nimport { sendAnalyticsEvent } from './analytics';\r\nimport AppState from './AppState';\r\nimport { CmdShell, CommandInput } from './cmd';\r\nimport AboutResultView from './components/AboutResultView';\r\nimport ErrorResultView from './components/ErrorResultView';\r\nimport HelpResultView from './components/HelpResultView';\r\nimport TextResultView from './components/TextResultView';\r\nimport WhatsnewResultView from './components/WhatsNewResultView';\r\nimport {STARTUP_COMMAND_KEY} from './startup';\r\n\r\nconst shellModule = {\r\n setup: function(appState: AppState, cmd: CmdShell) {\r\n \r\n cmd.debugMode = appState.debugMode;\r\n appState.onChange(() => cmd.debugMode = appState.debugMode);\r\n \r\n cmd.command(\"help\", (c: CommandInput) => appState.addCommandResult(c.input, ));\r\n cmd.command(\"clear\", () => appState.clearCommandResults());\r\n cmd.command(\"em\", () => appState.toggleEmphasizeBytes());\r\n cmd.command(\"dark\", () => appState.setUiTheme('dark'));\r\n cmd.command(\"light\", () => appState.setUiTheme('light'));\r\n cmd.command(\"midnight\", () => appState.setUiTheme('midnight'));\r\n cmd.command(\"about\", (c: CommandInput) => appState.addCommandResult(c.input, ));\r\n cmd.command(\"whatsnew\", (c: CommandInput) => appState.addCommandResult(c.input, ));\r\n cmd.command(\"guid\", (c: CommandInput) => appState.addCommandResult(c.input, ));\r\n cmd.command(\"-notrack\", () => {});\r\n cmd.command(\"-debug\", (c: CommandInput) => {\r\n appState.toggleDebugMode();\r\n appState.addCommandResult(c.input, );\r\n }); \r\n\r\n cmd.command(\"donate\", (c:CommandInput) => {\r\n\r\n if(appState.onDonationClicked()) {\r\n sendAnalyticsEvent({eventCategory: \"DonationButton\", eventAction: \"Clicked\"})\r\n }\r\n else {\r\n sendAnalyticsEvent({eventCategory: \"DonationButton\", eventAction: \"ClickedAgain\"})\r\n }\r\n\r\n appState.addCommandResult(c.input, );\r\n });\r\n\r\n cmd.command(\"track\", (c:CommandInput) => {\r\n sendAnalyticsEvent({\r\n eventCategory: 'General',\r\n eventAction: 'AnalyticsTest'\r\n });\r\n });\r\n\r\n if(appState.env !== 'prod') {\r\n \r\n // Default command for development purposes\r\n cmd.command({\r\n canHandle: (s: string) => s.indexOf('default') === 0,\r\n handle: (s: CommandInput) => {\r\n\r\n const executeCommand = (c: string) => {\r\n console.log(c);\r\n\r\n if(c.length === 0) {\r\n return \"Default comand: \" + localStorage.getItem(STARTUP_COMMAND_KEY);\r\n }\r\n else if(c === 'clear') {\r\n localStorage.removeItem(STARTUP_COMMAND_KEY);\r\n return \"Default startup command cleared\";\r\n }\r\n \r\n localStorage.setItem(STARTUP_COMMAND_KEY, c);\r\n return `Default startup command saved: ${c}`;\r\n };\r\n\r\n const command = s.input.substring(7).trim();\r\n const result = executeCommand(command);\r\n appState.addCommandResult(s.input, );\r\n } \r\n });\r\n };\r\n\r\n cmd.onError((input: string, err: Error) => appState.addCommandResult(input, ));\r\n }\r\n}\r\n\r\nexport default shellModule;","import React from 'react';\r\n\r\nfunction UnknownInputResultView(props : {input:string}) {\r\n \r\n return
\r\n
¯\\_(ツ)_/¯ Sorry, i don′t know what {props.input} is
\r\n
;\r\n}\r\n\r\nexport default UnknownInputResultView;\r\n","import cmd, { CommandInput } from './shell/cmd';\r\nimport AppRoot from './shell/components/AppRoot';\r\nimport log from 'loglevel';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport networkingAppModule from './networking/module';\r\nimport expressionAppModule from './expression/module';\r\nimport shellModule from './shell/module';\r\nimport bootstrapAppData from './shell/startup';\r\nimport UnknownInputResultView from './shell/components/UnknownInputResultView';\r\n\r\nconst appData = bootstrapAppData();\r\n\r\ninitializeModules();\r\n\r\nvar root = ;\r\nReactDOM.render(root, document.getElementById('root'));\r\n\r\nexecuteStartupCommands();\r\n\r\nappData.appState.registerVisit();\r\n\r\nlog.debug(\"started\");\r\n\r\nfunction executeStartupCommands() {\r\n log.debug(\"Executing startup commands\", appData.startupCommands);\r\n appData.startupCommands.forEach(c => cmd.execute(c, {doNotTrack: true}));\r\n}\r\n\r\nfunction initializeModules() {\r\n shellModule.setup(appData.appState, cmd);\r\n networkingAppModule.setup(appData.appState, cmd);\r\n expressionAppModule.setup(appData.appState, cmd);\r\n\r\n // Last command handler reports that input is unknown\r\n cmd.command({\r\n canHandle: () => true,\r\n handle: (c: CommandInput) => appData.appState.addCommandResult(c.input, )\r\n });\r\n}\r\n\r\n\r\n\r\n"],"sourceRoot":""} \ No newline at end of file