{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js??ref--1-0!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js??vue-loader-options!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/babel.config.js","mtime":1684261475125},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIGZyb20gIi9ob21lL2NtaXNzL0plbmtpbnMvd29ya3NwYWNlL21hcGludGVncmF0ZWR2dWVyL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiL2hvbWUvY21pc3MvSmVua2lucy93b3Jrc3BhY2UvbWFwaW50ZWdyYXRlZHZ1ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIi9ob21lL2NtaXNzL0plbmtpbnMvd29ya3NwYWNlL21hcGludGVncmF0ZWR2dWVyL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIi9ob21lL2NtaXNzL0plbmtpbnMvd29ya3NwYWNlL21hcGludGVncmF0ZWR2dWVyL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICIvaG9tZS9jbWlzcy9KZW5raW5zL3dvcmtzcGFjZS9tYXBpbnRlZ3JhdGVkdnVlci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanMiOwppbXBvcnQgX1NlbGVjdDIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvc2VsZWN0LmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1NlbGVjdCBmcm9tICJlbGVtZW50LXVpL2xpYi9zZWxlY3QiOwppbXBvcnQgX1JvdzIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvcm93LmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1JvdyBmcm9tICJlbGVtZW50LXVpL2xpYi9yb3ciOwppbXBvcnQgX1JhZGlvR3JvdXAyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL3JhZGlvLWdyb3VwLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1JhZGlvR3JvdXAgZnJvbSAiZWxlbWVudC11aS9saWIvcmFkaW8tZ3JvdXAiOwppbXBvcnQgX1JhZGlvMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9yYWRpby5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9SYWRpbyBmcm9tICJlbGVtZW50LXVpL2xpYi9yYWRpbyI7CmltcG9ydCBfTG9hZGluZzIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvbG9hZGluZy5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Mb2FkaW5nIGZyb20gImVsZW1lbnQtdWkvbGliL2xvYWRpbmciOwppbXBvcnQgX0NvbDIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvY29sLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX0NvbCBmcm9tICJlbGVtZW50LXVpL2xpYi9jb2wiOwppbXBvcnQgX0J1dHRvbjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYnV0dG9uLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX0J1dHRvbiBmcm9tICJlbGVtZW50LXVpL2xpYi9idXR0b24iOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWluZGV4LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZnJvbS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNlYXJjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qcyI7Ci8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0LCBuby1jb25zb2xlICovCmltcG9ydCBWdWUgZnJvbSAidnVlIjsKaW1wb3J0IFRvb2x0aXAgZnJvbSAiLi9Ub29sdGlwIjsKaW1wb3J0IFNlbGVjdGlvbnNHcm91cCBmcm9tICIuL1NlbGVjdGlvbnNHcm91cCI7CmltcG9ydCBUcmVlQ29udHJvbHMgZnJvbSAiLi9UcmVlQ29udHJvbHMiOwppbXBvcnQgeyBNYXBTdmdJY29uLCBNYXBTdmdTcHJpdGVDb2xvciB9IGZyb20gIkBhYmktc29mdHdhcmUvc3ZnLXNwcml0ZSI7CmltcG9ydCBTdmdMZWdlbmRzIGZyb20gIi4vbGVnZW5kcy9TdmdMZWdlbmRzIjsKaW1wb3J0IGxhbmcgZnJvbSAiZWxlbWVudC11aS9saWIvbG9jYWxlL2xhbmcvZW4iOwppbXBvcnQgbG9jYWxlIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZSI7CmltcG9ydCBmbGF0bWFwTWFya2VyIGZyb20gIi4uL2ljb25zL2ZsYXRtYXAtbWFya2VyIjsKaW1wb3J0IHsgRmxhdG1hcFF1ZXJpZXMsIGZpbmRUYXhvbm9teUxhYmVsIH0gZnJvbSAiLi4vc2VydmljZXMvZmxhdG1hcFF1ZXJpZXMuanMiOwppbXBvcnQgeWVsbG93c3RhciBmcm9tICIuLi9pY29ucy95ZWxsb3dzdGFyIjsKbG9jYWxlLnVzZShsYW5nKTsKVnVlLnVzZShfQnV0dG9uKTsKVnVlLnVzZShfQ29sKTsKVnVlLnVzZShfTG9hZGluZy5kaXJlY3RpdmUpOwpWdWUudXNlKF9SYWRpbyk7ClZ1ZS51c2UoX1JhZGlvR3JvdXApOwpWdWUudXNlKF9Sb3cpOwpWdWUudXNlKF9TZWxlY3QpOwp2YXIgUmVzaXplU2Vuc29yID0gcmVxdWlyZSgiY3NzLWVsZW1lbnQtcXVlcmllcy9zcmMvUmVzaXplU2Vuc29yIik7CnZhciBwcm9jZXNzVGF4b24gPSBmdW5jdGlvbiBwcm9jZXNzVGF4b24oZmxhdG1hcEFQSSwgdGF4b25JZGVudGlmaWVycykgewogIHZhciBwcm9jZXNzZWQgPSBbXTsKICB0YXhvbklkZW50aWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKHRheG9uKSB7CiAgICBmaW5kVGF4b25vbXlMYWJlbChmbGF0bWFwQVBJLCB0YXhvbikudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgdmFyIGl0ZW0gPSB7CiAgICAgICAgdGF4b246IHRheG9uLAogICAgICAgIGxhYmVsOiB2YWx1ZQogICAgICB9OwogICAgICBwcm9jZXNzZWQucHVzaChpdGVtKTsKICAgIH0pOwogIH0pOwogIHJldHVybiBwcm9jZXNzZWQ7Cn07CnZhciBwcm9jZXNzRlRVcyA9IGZ1bmN0aW9uIHByb2Nlc3NGVFVzKHBhcmVudCwga2V5KSB7CiAgdmFyIGZ0dXMgPSBbXTsKICB2YXIgaXRlbXMgPSBwYXJlbnQub3JnYW5zID8gcGFyZW50Lm9yZ2FucyA6IHBhcmVudC5mdHVzOwogIHZhciBjaGlsZHJlbiA9IGl0ZW1zID8gaXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChvYmosIGluZGV4KSB7CiAgICByZXR1cm4gaXRlbXMuZmluZEluZGV4KGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgIHJldHVybiBpdGVtLmxhYmVsID09PSBvYmoubGFiZWw7CiAgICB9KSA9PT0gaW5kZXg7CiAgfSkgOiB1bmRlZmluZWQ7CiAgaWYgKGNoaWxkcmVuKSB7CiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewogICAgICB2YXIgZGF0YSA9IHsKICAgICAgICBsYWJlbDogY2hpbGQubGFiZWwsCiAgICAgICAgbW9kZWxzOiBjaGlsZC5tb2RlbHMsCiAgICAgICAga2V5OiAiIi5jb25jYXQoa2V5LCAiLiIpLmNvbmNhdChjaGlsZC5sYWJlbCkKICAgICAgfTsKICAgICAgdmFyIGdyYW5kQ2hpbGRyZW4gPSBwcm9jZXNzRlRVcyhjaGlsZCwgZGF0YS5rZXkpOwogICAgICBpZiAoZ3JhbmRDaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgZGF0YS5jaGlsZHJlbiA9IGdyYW5kQ2hpbGRyZW47CiAgICAgIH0KICAgICAgZnR1cy5wdXNoKGRhdGEpOwogICAgfSk7CiAgfQogIHJldHVybiBmdHVzOwp9Owp2YXIgcHJvY2Vzc1N5c3RlbXMgPSBmdW5jdGlvbiBwcm9jZXNzU3lzdGVtcyhzeXN0ZW1zKSB7CiAgdmFyIGFsbFN5c3RlbXMgPSBbXTsKICBpZiAoc3lzdGVtcyAmJiBzeXN0ZW1zLmxlbmd0aCA+IDApIHsKICAgIHZhciBkYXRhID0gewogICAgICBsYWJlbDogIkFsbCIsCiAgICAgIGtleTogIkFsbCIsCiAgICAgIGNoaWxkcmVuOiBbXQogICAgfTsKICAgIHN5c3RlbXMuZm9yRWFjaChmdW5jdGlvbiAoc3lzdGVtKSB7CiAgICAgIHZhciBjaGlsZCA9IHsKICAgICAgICBjb2xvdXI6IHN5c3RlbS5jb2xvdXIsCiAgICAgICAgZW5hYmxlZDogc3lzdGVtLmVuYWJsZWQsCiAgICAgICAgbGFiZWw6IHN5c3RlbS5pZCwKICAgICAgICBrZXk6IHN5c3RlbS5pZAogICAgICB9OwogICAgICB2YXIgY2hpbGRyZW4gPSBwcm9jZXNzRlRVcyhzeXN0ZW0sIGNoaWxkLmtleSk7CiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSBjaGlsZC5jaGlsZHJlbiA9IGNoaWxkcmVuOwogICAgICBkYXRhLmNoaWxkcmVuLnB1c2goY2hpbGQpOwogICAgfSk7CiAgICBhbGxTeXN0ZW1zLnB1c2goZGF0YSk7CiAgfQogIHJldHVybiBhbGxTeXN0ZW1zOwp9Owp2YXIgY3JlYXRlVW5maWxsZWRUb29sdGlwRGF0YSA9IGZ1bmN0aW9uIGNyZWF0ZVVuZmlsbGVkVG9vbHRpcERhdGEoKSB7CiAgcmV0dXJuIHsKICAgIGRlc3RpbmF0aW9uczogW10sCiAgICBvcmlnaW5zOiBbXSwKICAgIGNvbXBvbmVudHM6IFtdLAogICAgZGVzdGluYXRpb25zV2l0aERhdGFzZXRzOiBbXSwKICAgIG9yaWdpbnNXaXRoRGF0YXNldHM6IFtdLAogICAgY29tcG9uZW50c1dpdGhEYXRhc2V0czogW10sCiAgICByZXNvdXJjZTogdW5kZWZpbmVkCiAgfTsKfTsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJGbGF0bWFwVnVlciIsCiAgY29tcG9uZW50czogewogICAgTWFwU3ZnSWNvbjogTWFwU3ZnSWNvbiwKICAgIE1hcFN2Z1Nwcml0ZUNvbG9yOiBNYXBTdmdTcHJpdGVDb2xvciwKICAgIFRvb2x0aXA6IFRvb2x0aXAsCiAgICBUcmVlQ29udHJvbHM6IFRyZWVDb250cm9scywKICAgIFNlbGVjdGlvbnNHcm91cDogU2VsZWN0aW9uc0dyb3VwLAogICAgU3ZnTGVnZW5kczogU3ZnTGVnZW5kcwogIH0sCiAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiBiZWZvcmVDcmVhdGUoKSB7CiAgICB0aGlzLm1hcE1hbmFnZXIgPSB1bmRlZmluZWQ7CiAgICB0aGlzLm1hcEltcCA9IHVuZGVmaW5lZDsKICAgIC8vVGhlIHN0YXRlIHdhdGNoZXIgbWF5IHRyaWdnZXJlZCBiZWZvcmUKICAgIC8vY3JlYXRlZCBjYXVzaW5nIGlzc3VlLCBUaGlzIGZsYWcgd2lsbAogICAgLy9yZXNvbHZlIHRoaXMgaXNzdWUuCiAgICB0aGlzLnNldFN0YXRlUmVxdWlyZWQgPSBmYWxzZTsKICB9LAogIG1ldGhvZHM6IHsKICAgIHZpZXdMYXRlc3RNYXA6IGZ1bmN0aW9uIHZpZXdMYXRlc3RNYXAoKSB7CiAgICAgIHZhciBiaW9sb2dpY2FsU2V4ID0gdGhpcy5iaW9sb2dpY2FsU2V4ID8gdGhpcy5iaW9sb2dpY2FsU2V4IDogdW5kZWZpbmVkOwogICAgICAvL0h1bWFuIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcKICAgICAgaWYgKHRoaXMuZW50cnkgPT09ICJOQ0JJVGF4b246OTYwNiIpIHsKICAgICAgICBiaW9sb2dpY2FsU2V4ID0gIlBBVE86MDAwMDM4NCI7CiAgICAgIH0KICAgICAgdmFyIHN0YXRlID0gewogICAgICAgIGVudHJ5OiB0aGlzLmVudHJ5LAogICAgICAgIGJpb2xvZ2ljYWxTZXg6IGJpb2xvZ2ljYWxTZXgsCiAgICAgICAgdmlld3BvcnQ6IHRoaXMubWFwSW1wLmdldFN0YXRlKCkKICAgICAgfTsKICAgICAgdGhpcy4kZW1pdCgidmlldy1sYXRlc3QtbWFwIiwgc3RhdGUpOwogICAgfSwKICAgIGJhY2tncm91bmRDaGFuZ2VDYWxsYmFjazogZnVuY3Rpb24gYmFja2dyb3VuZENoYW5nZUNhbGxiYWNrKGNvbG91cikgewogICAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gY29sb3VyOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5zZXRCYWNrZ3JvdW5kQ29sb3VyKHRoaXMuY3VycmVudEJhY2tncm91bmQsIDEpOwogICAgICB9CiAgICB9LAogICAgdG9nZ2xlRHJhd2VyOiBmdW5jdGlvbiB0b2dnbGVEcmF3ZXIoKSB7CiAgICAgIHRoaXMuZHJhd2VyT3BlbiA9ICF0aGlzLmRyYXdlck9wZW47CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB0b2dnbGUgY29sb3VyL2dyZXlzY2FsZSBvZiBvcmdhbnMuCiAgICAgKi8KICAgIHNldENvbG91cjogZnVuY3Rpb24gc2V0Q29sb3VyKGZsYWcpIHsKICAgICAgdGhpcy5jb2xvdXJSYWRpbyA9IGZsYWc7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLnNldENvbG91cih7CiAgICAgICAgICBjb2xvdXI6IGZsYWcsCiAgICAgICAgICBvdXRsaW5lOiB0aGlzLm91dGxpbmVzUmFkaW8KICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gdG9nZ2xlIG91dGxpbmVzIGYgb3JnYW5zLgogICAgICovCiAgICBzZXRPdXRsaW5lczogZnVuY3Rpb24gc2V0T3V0bGluZXMoZmxhZykgewogICAgICB0aGlzLm91dGxpbmVSYWRpbyA9IGZsYWc7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLnNldENvbG91cih7CiAgICAgICAgICBjb2xvdXI6IHRoaXMuY29sb3VyUmFkaW8sCiAgICAgICAgICBvdXRsaW5lOiBmbGFnCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHRvZ2dsZSBwYXRocyB0byBkZWZhdWx0LgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqLwogICAgcmVzZXRWaWV3OiBmdW5jdGlvbiByZXNldFZpZXcoKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLnJlc2V0TWFwKCk7CiAgICAgICAgaWYgKHRoaXMuJHJlZnMuY2VudHJlbGluZXNTZWxlY3Rpb24pIHsKICAgICAgICAgIHRoaXMuJHJlZnMuY2VudHJlbGluZXNTZWxlY3Rpb24ucmVzZXQoKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuJHJlZnMuc2tjYW5TZWxlY3Rpb24pIHsKICAgICAgICAgIHRoaXMuJHJlZnMuc2tjYW5TZWxlY3Rpb24ucmVzZXQoKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuJHJlZnMubGF5ZXJzU2VsZWN0aW9uKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLmxheWVyc1NlbGVjdGlvbi5yZXNldCgpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy4kcmVmcy5zeXN0ZW1zU2VsZWN0aW9uKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLnBhdGh3YXlzU2VsZWN0aW9uLnJlc2V0KCk7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLiRyZWZzLnBhdGh3YXlzU2VsZWN0aW9uKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLnBhdGh3YXlzU2VsZWN0aW9uLnJlc2V0KCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIGluLgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqLwogICAgem9vbUluOiBmdW5jdGlvbiB6b29tSW4oKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLnpvb21JbigpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIG91dC4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKi8KICAgIHpvb21PdXQ6IGZ1bmN0aW9uIHpvb21PdXQoKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLnpvb21PdXQoKTsKICAgICAgfQogICAgfSwKICAgIGNlbnRyZUxpbmVzU2VsZWN0ZWQ6IGZ1bmN0aW9uIGNlbnRyZUxpbmVzU2VsZWN0ZWQocGF5bG9hZCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVDZW50cmVsaW5lcyhwYXlsb2FkLnZhbHVlKTsKICAgICAgfQogICAgfSwKICAgIHNja2FuU2VsZWN0ZWQ6IGZ1bmN0aW9uIHNja2FuU2VsZWN0ZWQocGF5bG9hZCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVTY2thblBhdGgocGF5bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOwogICAgICB9CiAgICB9LAogICAgY2hlY2tBbGxTQ0tBTjogZnVuY3Rpb24gY2hlY2tBbGxTQ0tBTihwYXlsb2FkKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHBheWxvYWQua2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICAgIHJldHVybiBfdGhpcy5tYXBJbXAuZW5hYmxlU2NrYW5QYXRoKGtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBoaWdobGlnaHRDb25uZWN0ZWRQYXRoczogZnVuY3Rpb24gaGlnaGxpZ2h0Q29ubmVjdGVkUGF0aHMocGF5bG9hZCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdmFyIHBhdGhzID0gX3RvQ29uc3VtYWJsZUFycmF5KHRoaXMubWFwSW1wLnBhdGhNb2RlbE5vZGVzKHBheWxvYWQpKTsKICAgICAgICAvLyBUaGUgbGluZSBiZWxvdyBtYXRjaGVzIHRoZSBwYXRocyB0byB0aGUgYW5uSWRUb0ZlYXR1cmVJZCBtYXAgdG8gZ2V0IHRoZSBmZWF0dXJlIGlkcwoKICAgICAgICB2YXIgcGF0aEZlYXR1cmVzID0gcGF0aHMubWFwKGZ1bmN0aW9uIChwKSB7CiAgICAgICAgICByZXR1cm4gX3RoaXMyLm1hcEltcC5mZWF0dXJlUHJvcGVydGllcyhwKTsKICAgICAgICB9KTsKICAgICAgICB2YXIgdG9IaWdobGlnaHQgPSBbXTsKICAgICAgICBwYXRoRmVhdHVyZXMuZm9yRWFjaChmdW5jdGlvbiAocCkgewogICAgICAgICAgX3RoaXMyLm1hcEltcC5ub2RlUGF0aE1vZGVscyhwLmZlYXR1cmVJZCkuZm9yRWFjaChmdW5jdGlvbiAoZikgewogICAgICAgICAgICB0b0hpZ2hsaWdodC5wdXNoKGYpOwogICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgLy8gZGlzcGxheSBjb25uZWN0ZWQgcGF0aHMKICAgICAgICB0aGlzLm1hcEltcC56b29tVG9GZWF0dXJlcyh0b0hpZ2hsaWdodCwgewogICAgICAgICAgbm9ab29tSW46IHRydWUKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIHN5c3RlbVNlbGVjdGVkOiBmdW5jdGlvbiBzeXN0ZW1TZWxlY3RlZChwYXlsb2FkKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZVN5c3RlbShwYXlsb2FkLmtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBjaGVja0FsbFN5c3RlbXM6IGZ1bmN0aW9uIGNoZWNrQWxsU3lzdGVtcyhmbGFnKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLnN5c3RlbXNbMF0uY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICByZXR1cm4gX3RoaXMzLm1hcEltcC5lbmFibGVTeXN0ZW0oa2V5LmxhYmVsLCBmbGFnKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGZ0dVNlbGVjdGVkOiBmdW5jdGlvbiBmdHVTZWxlY3RlZChtb2RlbHMpIHsKICAgICAgdGhpcy5zZWFyY2hBbmRTaG93UmVzdWx0KG1vZGVscywgdHJ1ZSk7CiAgICB9LAogICAgbGF5ZXJzU2VsZWN0ZWQ6IGZ1bmN0aW9uIGxheWVyc1NlbGVjdGVkKHBheWxvYWQpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlTGF5ZXIocGF5bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOwogICAgICB9CiAgICB9LAogICAgY2hlY2tBbGxMYXllcnM6IGZ1bmN0aW9uIGNoZWNrQWxsTGF5ZXJzKHBheWxvYWQpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHBheWxvYWQua2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICAgIHJldHVybiBfdGhpczQubWFwSW1wLmVuYWJsZUxheWVyKGtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICB0YXhvbnNTZWxlY3RlZDogZnVuY3Rpb24gdGF4b25zU2VsZWN0ZWQocGF5bG9hZCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVDb25uZWN0aXZpdHlCeVRheG9uSWRzKHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKICAgICAgfQogICAgfSwKICAgIGNoZWNrQWxsVGF4b25zOiBmdW5jdGlvbiBjaGVja0FsbFRheG9ucyhwYXlsb2FkKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBwYXlsb2FkLmtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICByZXR1cm4gX3RoaXM1Lm1hcEltcC5lbmFibGVDb25uZWN0aXZpdHlCeVRheG9uSWRzKGtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBwYXRod2F5c1NlbGVjdGVkOiBmdW5jdGlvbiBwYXRod2F5c1NlbGVjdGVkKHBheWxvYWQpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlUGF0aChwYXlsb2FkLmtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBjaGVja0FsbFBhdGh3YXlzOiBmdW5jdGlvbiBjaGVja0FsbFBhdGh3YXlzKHBheWxvYWQpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHBheWxvYWQua2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICAgIHJldHVybiBfdGhpczYubWFwSW1wLmVuYWJsZVBhdGgoa2V5LCBwYXlsb2FkLnZhbHVlKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGVuYWJsZVBhblpvb21FdmVudHM6IGZ1bmN0aW9uIGVuYWJsZVBhblpvb21FdmVudHMoZmxhZykgewogICAgICB0aGlzLm1hcEltcC5lbmFibGVQYW5ab29tRXZlbnRzKGZsYWcpOwogICAgfSwKICAgIGV2ZW50Q2FsbGJhY2s6IGZ1bmN0aW9uIGV2ZW50Q2FsbGJhY2soKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50VHlwZSwgZGF0YSkgewogICAgICAgIGlmIChldmVudFR5cGUgIT09ICJwYW4tem9vbSIpIHsKICAgICAgICAgIHZhciBsYWJlbCA9IGRhdGEubGFiZWw7CiAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBbZGF0YS5tb2RlbHNdOwogICAgICAgICAgdmFyIHRheG9ub215ID0gX3RoaXM3LmVudHJ5OwogICAgICAgICAgdmFyIGJpb2xvZ2ljYWxTZXggPSBfdGhpczcuYmlvbG9naWNhbFNleDsKICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAyID8gX2xlbiAtIDIgOiAwKSwgX2tleSA9IDI7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKICAgICAgICAgICAgYXJnc1tfa2V5IC0gMl0gPSBhcmd1bWVudHNbX2tleV07CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgcGF5bG9hZCA9IHsKICAgICAgICAgICAgZGF0YXNldDogZGF0YS5kYXRhc2V0LAogICAgICAgICAgICBiaW9sb2dpY2FsU2V4OiBiaW9sb2dpY2FsU2V4LAogICAgICAgICAgICB0YXhvbm9teTogdGF4b25vbXksCiAgICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZSwKICAgICAgICAgICAgbGFiZWw6IGxhYmVsLAogICAgICAgICAgICBmZWF0dXJlOiBkYXRhLAogICAgICAgICAgICB1c2VyRGF0YTogYXJncywKICAgICAgICAgICAgZXZlbnRUeXBlOiBldmVudFR5cGUsCiAgICAgICAgICAgIHByb3ZlbmFuY2VUYXhvbm9teTogZGF0YS50YXhvbnMgPyBKU09OLnBhcnNlKGRhdGEudGF4b25zKSA6IHVuZGVmaW5lZAogICAgICAgICAgfTsKICAgICAgICAgIGlmIChldmVudFR5cGUgPT09ICJjbGljayIpIHsKICAgICAgICAgICAgaWYgKF90aGlzNy52aWV3aW5nTW9kZSA9PT0gIk5ldHdvcmsgRGlzY292ZXJ5IikgewogICAgICAgICAgICAgIF90aGlzNy5oaWdobGlnaHRDb25uZWN0ZWRQYXRocyhbZGF0YS5tb2RlbHNdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfdGhpczcuY3VycmVudEFjdGl2ZSA9IGRhdGEubW9kZWxzID8gZGF0YS5tb2RlbHMgOiAiIjsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICJtb3VzZWVudGVyIiAmJiAhKF90aGlzNy52aWV3aW5nTW9kZSA9PT0gIk5ldHdvcmsgRGlzY292ZXJ5IikpIHsKICAgICAgICAgICAgX3RoaXM3LmN1cnJlbnRIb3ZlciA9IGRhdGEubW9kZWxzID8gZGF0YS5tb2RlbHMgOiAiIjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEudHlwZSAhPT0gIm1hcmtlciIgJiYgZXZlbnRUeXBlID09PSAiY2xpY2siICYmICEoX3RoaXM3LnZpZXdpbmdNb2RlID09PSAiTmV0d29yayBEaXNjb3ZlcnkiKSkgewogICAgICAgICAgICBfdGhpczcuY2hlY2tBbmRDcmVhdGVQb3B1cHMocGF5bG9hZCk7CiAgICAgICAgICB9CiAgICAgICAgICBfdGhpczcuJGVtaXQoInJlc291cmNlLXNlbGVjdGVkIiwgcGF5bG9hZCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF90aGlzNy4kZW1pdCgicGFuLXpvb20tY2FsbGJhY2siLCBkYXRhKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9LAogICAgLy8gY2hlY2tOZXVyb25DbGlja2VkIHNob3dzIGEgbmV1cm9uIHBhdGggcG9wIHVwIGlmIGEgcGF0aCB3YXMgcmVjZW50bHkgY2xpY2tlZAogICAgY2hlY2tBbmRDcmVhdGVQb3B1cHM6IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIF9jaGVja0FuZENyZWF0ZVBvcHVwcyA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShkYXRhKSB7CiAgICAgICAgdmFyIHJlc3VsdHM7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKCEodGhpcy52aWV3aW5nTW9kZSA9PT0gIkFubm90YXRpb24iKSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGRhdGEuZmVhdHVyZSAmJiBkYXRhLmZlYXR1cmUuZmVhdHVyZUlkICYmIGRhdGEuZmVhdHVyZS5tb2RlbHMpIHsKICAgICAgICAgICAgICAgIHRoaXMuYW5ub3RhdGlvbkVudHJ5ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkYXRhLmZlYXR1cmUpLCB7fSwgewogICAgICAgICAgICAgICAgICByZXNvdXJjZUlkOiB0aGlzLnNlcnZlclVVSUQKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5VG9vbHRpcChkYXRhLmZlYXR1cmUubW9kZWxzKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5hbm5vdGF0aW9uID0ge307CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA4OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDY7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmxhdG1hcFF1ZXJpZXMucmV0cmlldmVGbGF0bWFwS25vd2xlZGdlRm9yRXZlbnQoZGF0YSk7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICByZXN1bHRzID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICAvLyBUaGUgbGluZSBiZWxvdyBvbmx5IGNyZWF0ZXMgdGhlIHRvb2x0aXAgaWYgc29tZSBkYXRhIHdhcyBmb3VuZCBvbiB0aGUgcGF0aAogICAgICAgICAgICAgIC8vIHJlc3VsdCAwIGlzIHRoZSBjb25uZWN0aW9uLCByZXN1bHQgMSBpcyB0aGUgcHVibWVkIHJlc3VsdHMgZnJvbSBmbGF0bWFwCiAgICAgICAgICAgICAgaWYgKHJlc3VsdHNbMF0gfHwgcmVzdWx0c1sxXSB8fCBkYXRhLmZlYXR1cmUuaHlwZXJsaW5rcyAmJiBkYXRhLmZlYXR1cmUuaHlwZXJsaW5rcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlRm9yVG9vbHRpcCA9IGRhdGEucmVzb3VyY2VbMF07CiAgICAgICAgICAgICAgICBkYXRhLnJlc291cmNlRm9yVG9vbHRpcCA9IHRoaXMucmVzb3VyY2VGb3JUb29sdGlwOwogICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUb29sdGlwRnJvbU5ldXJvbkN1cmF0aW9uKGRhdGEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7CiAgICAgIH0pKTsKICAgICAgZnVuY3Rpb24gY2hlY2tBbmRDcmVhdGVQb3B1cHMoX3gpIHsKICAgICAgICByZXR1cm4gX2NoZWNrQW5kQ3JlYXRlUG9wdXBzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH0KICAgICAgcmV0dXJuIGNoZWNrQW5kQ3JlYXRlUG9wdXBzOwogICAgfSgpLAogICAgcG9wVXBDc3NIYWNrczogZnVuY3Rpb24gcG9wVXBDc3NIYWNrcygpIHsKICAgICAgLy8gQmVsb3cgaXMgYSBoYWNrIHRvIHJlbW92ZSBmbGF0bWFwIHRvb2x0aXBzIHdoaWxlIHBvcHVwIGlzIG9wZW4KICAgICAgdmFyIGZ0b29sdGlwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmZsYXRtYXAtdG9vbHRpcC1wb3B1cCIpOwogICAgICBpZiAoZnRvb2x0aXApIGZ0b29sdGlwLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tYXBsaWJyZWdsLXBvcHVwLWNsb3NlLWJ1dHRvbiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICB0aGlzLiRyZWZzLnRvb2x0aXAuJGVsLnN0eWxlLmRpc3BsYXkgPSAiZmxleCI7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tYXBsaWJyZWdsLXBvcHVwLWNsb3NlLWJ1dHRvbiIpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmZsYXRtYXAtdG9vbHRpcC1wb3B1cCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICB9OwogICAgfSwKICAgIGNsb3NlVG9vbHRpcDogZnVuY3Rpb24gY2xvc2VUb29sdGlwKCkgewogICAgICB0aGlzLiRyZWZzLnRvb2x0aXAuJGVsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tYXBsaWJyZWdsLXBvcHVwIikuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIGl0ZW0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgfSk7CiAgICB9LAogICAgY3JlYXRlVG9vbHRpcEZyb21OZXVyb25DdXJhdGlvbjogZnVuY3Rpb24gKCkgewogICAgICB2YXIgX2NyZWF0ZVRvb2x0aXBGcm9tTmV1cm9uQ3VyYXRpb24gPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKGRhdGEpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsYXRtYXBRdWVyaWVzLmNyZWF0ZVRvb2x0aXBEYXRhKGRhdGEpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgdGhpcy50b29sdGlwRW50cnkgPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlUb29sdGlwKGRhdGEucmVzb3VyY2VbMF0pOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpOwogICAgICB9KSk7CiAgICAgIGZ1bmN0aW9uIGNyZWF0ZVRvb2x0aXBGcm9tTmV1cm9uQ3VyYXRpb24oX3gyKSB7CiAgICAgICAgcmV0dXJuIF9jcmVhdGVUb29sdGlwRnJvbU5ldXJvbkN1cmF0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH0KICAgICAgcmV0dXJuIGNyZWF0ZVRvb2x0aXBGcm9tTmV1cm9uQ3VyYXRpb247CiAgICB9KCksCiAgICAvLyBLZWVwaW5nIHRoaXMgYXMgYW4gQVBJCiAgICBzaG93UG9wdXA6IGZ1bmN0aW9uIHNob3dQb3B1cChmZWF0dXJlSWQsIG5vZGUsIG9wdGlvbnMpIHsKICAgICAgdmFyIG15T3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIGlmIChteU9wdGlvbnMpIHsKICAgICAgICAgIGlmICghbXlPcHRpb25zLmNsYXNzTmFtZSkgbXlPcHRpb25zLmNsYXNzTmFtZSA9ICJjdXN0b20tcG9wdXAiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBteU9wdGlvbnMgPSB7CiAgICAgICAgICAgIGNsYXNzTmFtZTogImN1c3RvbS1wb3B1cCIsCiAgICAgICAgICAgIHBvc2l0aW9uQXRMYXN0Q2xpY2s6IHRydWUKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIHRoaXMubWFwSW1wLnNob3dQb3B1cChmZWF0dXJlSWQsIG5vZGUsIG15T3B0aW9ucyk7CiAgICAgIH0KICAgIH0sCiAgICBzaG93TWFya2VyUG9wdXA6IGZ1bmN0aW9uIHNob3dNYXJrZXJQb3B1cChmZWF0dXJlSWQsIG5vZGUsIG9wdGlvbnMpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuc2hvd01hcmtlclBvcHVwKGZlYXR1cmVJZCwgbm9kZSwgb3B0aW9ucyk7CiAgICAgIH0KICAgIH0sCiAgICBjbG9zZU1pbmltYXA6IGZ1bmN0aW9uIGNsb3NlTWluaW1hcCgpIHsKICAgICAgdmFyIG1pbmltYXBFbCA9IHRoaXMuJHJlZnMuZmxhdG1hcENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIubWFwbGlicmVnbC1jdHJsLW1pbmltYXAiKTsgLy8gZmluZCBtaW5pbWFwCiAgICAgIGlmICh0aGlzLm1pbmltYXBTbWFsbCkgewogICAgICAgIC8vc3dpdGNoIHRoZSBjbGFzc2VzIG9uIHRoZSBtaW5pbWFwCiAgICAgICAgbWluaW1hcEVsLmNsYXNzTGlzdC5hZGQoImVubGFyZ2UiKTsKICAgICAgICBtaW5pbWFwRWwuY2xhc3NMaXN0LnJlbW92ZSgic2hyaW5rIik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWluaW1hcEVsLmNsYXNzTGlzdC5hZGQoInNocmluayIpOwogICAgICAgIG1pbmltYXBFbC5jbGFzc0xpc3QucmVtb3ZlKCJlbmxhcmdlIik7CiAgICAgIH0KICAgICAgdGhpcy5taW5pbWFwU21hbGwgPSAhdGhpcy5taW5pbWFwU21hbGw7CiAgICB9LAogICAgYWRkUmVzaXplQnV0dG9uVG9NaW5pbWFwOiBmdW5jdGlvbiBhZGRSZXNpemVCdXR0b25Ub01pbmltYXAoKSB7CiAgICAgIHZhciBtaW5pbWFwRWwgPSB0aGlzLiRyZWZzLmZsYXRtYXBDb250YWluZXIucXVlcnlTZWxlY3RvcigiLm1hcGxpYnJlZ2wtY3RybC1taW5pbWFwIik7CiAgICAgIGlmIChtaW5pbWFwRWwpIHsKICAgICAgICB0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUpOwogICAgICAgIG1pbmltYXBFbC5hcHBlbmRDaGlsZCh0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUpOwogICAgICAgIHRoaXMubWluaW1hcFJlc2l6ZVNob3cgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgc2V0SGVscE1vZGU6IGZ1bmN0aW9uIHNldEhlbHBNb2RlKGhlbHBNb2RlKSB7CiAgICAgIGlmIChoZWxwTW9kZSkgewogICAgICAgIHRoaXMuaW5IZWxwID0gdHJ1ZTsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGl0ZW0udmFsdWUgPSB0cnVlOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3BlbkZsYXRtYXBIZWxwUG9wdXAoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmluSGVscCA9IGZhbHNlOwogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaXRlbS52YWx1ZSA9IGZhbHNlOwogICAgICAgIH0pOwogICAgICAgIHRoaXMuY2xvc2VGbGF0bWFwSGVscFBvcHVwKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaG93VG9vbGl0aXA6IGZ1bmN0aW9uIHNob3dUb29saXRpcCh0b29sdGlwTnVtYmVyKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICBpZiAoIXRoaXMuaW5IZWxwKSB7CiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudG9vbHRpcFdhaXRbdG9vbHRpcE51bWJlcl0pOwogICAgICAgIHRoaXMudG9vbHRpcFdhaXRbdG9vbHRpcE51bWJlcl0gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzOC5ob3ZlclZpc2liaWxpdGllc1t0b29sdGlwTnVtYmVyXS52YWx1ZSA9IHRydWU7CiAgICAgICAgfSwgNTAwKTsKICAgICAgfQogICAgfSwKICAgIGhpZGVUb29saXRpcDogZnVuY3Rpb24gaGlkZVRvb2xpdGlwKHRvb2x0aXBOdW1iZXIpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsKICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b29sdGlwV2FpdFt0b29sdGlwTnVtYmVyXSk7CiAgICAgICAgdGhpcy50b29sdGlwV2FpdFt0b29sdGlwTnVtYmVyXSA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXM5LmhvdmVyVmlzaWJpbGl0aWVzW3Rvb2x0aXBOdW1iZXJdLnZhbHVlID0gZmFsc2U7CiAgICAgICAgfSwgNTAwKTsKICAgICAgfQogICAgfSwKICAgIGRpc3BsYXlUb29sdGlwOiBmdW5jdGlvbiBkaXNwbGF5VG9vbHRpcChmZWF0dXJlKSB7CiAgICAgIHRoaXMubWFwSW1wLnNob3dQb3B1cCh0aGlzLm1hcEltcC5tb2RlbEZlYXR1cmVJZHMoZmVhdHVyZSlbMF0sIHRoaXMuJHJlZnMudG9vbHRpcC4kZWwsIHsKICAgICAgICBjbGFzc05hbWU6ICJmbGF0bWFwdnVlci1wb3BvdmVyIiwKICAgICAgICBwb3NpdGlvbkF0TGFzdENsaWNrOiB0cnVlCiAgICAgIH0pOwogICAgICB0aGlzLnBvcFVwQ3NzSGFja3MoKTsKICAgIH0sCiAgICBvcGVuRmxhdG1hcEhlbHBQb3B1cDogZnVuY3Rpb24gb3BlbkZsYXRtYXBIZWxwUG9wdXAoKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHZhciBoZWFydElkID0gdGhpcy5tYXBJbXAuZmVhdHVyZUlkc0Zvck1vZGVsKCJVQkVST046MDAwMDk0OCIpWzBdOwogICAgICAgIHZhciBlbG0gPSAiQ2xpY2sgZm9yIG1vcmUgaW5mb3JtYXRpb24iOwogICAgICAgIHRoaXMubWFwSW1wLnNob3dQb3B1cChoZWFydElkLCBlbG0sIHsKICAgICAgICAgIGFuY2hvcjogInRvcCIsCiAgICAgICAgICBjbGFzc05hbWU6ICJmbGF0bWFwLXBvcHVwLXBvcHBlciIKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGNsb3NlRmxhdG1hcEhlbHBQb3B1cDogZnVuY3Rpb24gY2xvc2VGbGF0bWFwSGVscFBvcHVwKCkgewogICAgICB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCIubWFwbGlicmVnbC1wb3B1cC1jbG9zZS1idXR0b24iKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgaXRlbS5jbGljaygpOwogICAgICB9KTsKICAgIH0sCiAgICBnZXRMYWJlbHM6IGZ1bmN0aW9uIGdldExhYmVscygpIHsKICAgICAgdmFyIGxhYmVscyA9IFtdOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB2YXIgYW5ub3RhdGlvbnMgPSB0aGlzLm1hcEltcC5hbm5vdGF0aW9uczsKICAgICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoYW5ub3RhdGlvbnMudmFsdWVzKCkpLAogICAgICAgICAgX3N0ZXA7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7CiAgICAgICAgICAgIHZhciB2YWx1ZSA9IF9zdGVwLnZhbHVlOwogICAgICAgICAgICBpZiAodmFsdWUubGFiZWwpIGxhYmVscy5wdXNoKHZhbHVlLmxhYmVsKTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgIF9pdGVyYXRvci5lKGVycik7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgIF9pdGVyYXRvci5mKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQobGFiZWxzKSk7CiAgICAgIH0KICAgIH0sCiAgICBnZXRTdGF0ZTogZnVuY3Rpb24gZ2V0U3RhdGUoKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHZhciBzdGF0ZSA9IHsKICAgICAgICAgIGVudHJ5OiB0aGlzLmVudHJ5LAogICAgICAgICAgdmlld3BvcnQ6IHRoaXMubWFwSW1wLmdldFN0YXRlKCkKICAgICAgICB9OwogICAgICAgIHZhciBpZGVudGlmaWVyID0gdGhpcy5tYXBJbXAuZ2V0SWRlbnRpZmllcigpOwogICAgICAgIGlmICh0aGlzLmJpb2xvZ2ljYWxTZXgpIHN0YXRlWyJiaW9sb2dpY2FsU2V4Il0gPSB0aGlzLmJpb2xvZ2ljYWxTZXg7ZWxzZSBpZiAoaWRlbnRpZmllciAmJiBpZGVudGlmaWVyLmJpb2xvZ2ljYWxTZXgpIHN0YXRlWyJiaW9sb2dpY2FsU2V4Il0gPSBpZGVudGlmaWVyLmJpb2xvZ2ljYWxTZXg7CiAgICAgICAgaWYgKGlkZW50aWZpZXIgJiYgaWRlbnRpZmllci51dWlkKSBzdGF0ZVsidXVpZCJdID0gaWRlbnRpZmllci51dWlkOwogICAgICAgIHJldHVybiBzdGF0ZTsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfSwKICAgIHNldFN0YXRlOiBmdW5jdGlvbiBzZXRTdGF0ZShzdGF0ZSkgewogICAgICBpZiAoc3RhdGUpIHsKICAgICAgICBpZiAodGhpcy5tYXBJbXAgJiYgc3RhdGUuZW50cnkgJiYgdGhpcy5lbnRyeSA9PSBzdGF0ZS5lbnRyeSAmJiAoIXN0YXRlLmJpb2xvZ2ljYWxTZXggfHwgc3RhdGUuYmlvbG9naWNhbFNleCA9PT0gdGhpcy5iaW9sb2dpY2FsU2V4KSkgewogICAgICAgICAgaWYgKHN0YXRlLnZpZXdwb3J0KSB7CiAgICAgICAgICAgIHRoaXMubWFwSW1wLnNldFN0YXRlKHN0YXRlLnZpZXdwb3J0KTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5jcmVhdGVGbGF0bWFwKHN0YXRlKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5zZXRTdGF0ZVJlcXVpcmVkID0gZmFsc2U7CiAgICAgIH0KICAgIH0sCiAgICByZXN0b3JlTWFwU3RhdGU6IGZ1bmN0aW9uIHJlc3RvcmVNYXBTdGF0ZShzdGF0ZSkgewogICAgICBpZiAoc3RhdGUpIHsKICAgICAgICBpZiAoc3RhdGUudmlld3BvcnQpIHRoaXMubWFwSW1wLnNldFN0YXRlKHN0YXRlLnZpZXdwb3J0KTsKICAgICAgICBpZiAoc3RhdGUuc2VhcmNoVGVybSkgdGhpcy5zZWFyY2hBbmRTaG93UmVzdWx0KHN0YXRlLnNlYXJjaFRlcm0sIHRydWUpOwogICAgICB9CiAgICB9LAogICAgY3JlYXRlRmxhdG1hcDogZnVuY3Rpb24gY3JlYXRlRmxhdG1hcChzdGF0ZSkgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CiAgICAgIGlmICghdGhpcy5tYXBJbXAgJiYgIXRoaXMubG9hZGluZykgewogICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgICAgdmFyIG1pbmltYXAgPSBmYWxzZTsKICAgICAgICBpZiAodGhpcy5kaXNwbGF5TWluaW1hcCkgewogICAgICAgICAgbWluaW1hcCA9IHsKICAgICAgICAgICAgcG9zaXRpb246ICJ0b3AtcmlnaHQiCiAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgLy9BcyBmb3IgZmxhdG1hcC12aWV3ZXJAMi4yLjcsIHNlZSBiZWxvdyBmb3IgdGhlIGRvY3VtZW50YXRpb24KICAgICAgICAvL2ZvciB0aGUgaWRlbnRpZmllcjoKCiAgICAgICAgLy9AYXJnIGlkZW50aWZpZXIge3N0cmluZ3xPYmplY3R9CiAgICAgICAgLy8gQSBzdHJpbmcgb3Igb2JqZWN0IGlkZW50aWZ5aW5nIHRoZSBtYXAgdG8gbG9hZC4gSWYgYSBzdHJpbmcgaXRzCiAgICAgICAgLy8gdmFsdWUgY2FuIGJlIGVpdGhlciB0aGUgbWFwJ3MgYGB1dWlkYGAsIGFzc2lnbmVkIGF0IGdlbmVyYXRpb24gdGltZSwKICAgICAgICAvLyBvciB0YXhvbiBhbmQgYmlvbG9naWNhbCBzZXggaWRlbnRpZmllcnMgb2YgdGhlIHNwZWNpZXMgdGhhdCB0aGUgbWFwCiAgICAgICAgLy8gcmVwcmVzZW50cy4gVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGEgbWFwIGlzIGxvYWRlZCB1bmxlc3MgaXQgaGFzIGJlZW4KICAgICAgICAvLyBpZGVudGlmaWVkIHVzaW5nIGEgYGB1dWlkYGAgKHNlZSBiZWxvdykuCiAgICAgICAgLy8gQGFyZyBpZGVudGlmaWVyLnRheG9uIHtzdHJpbmd9IFRoZSB0YXhvbiBpZGVudGlmaWVyIG9mIHRoZSBzcGVjaWVzCiAgICAgICAgLy8gIHJlcHJlc2VudGVkIGJ5IHRoZSBtYXAuIFRoaXMgaXMgc3BlY2lmaWVkIGFzIG1ldGFkYXRhIGluIHRoZSBtYXAncyBzb3VyY2UgZmlsZS4KICAgICAgICAvLyBAYXJnIGlkZW50aWZpZXIuYmlvbG9naWNhbFNleCB7c3RyaW5nfSBUaGUgYmlvbG9naWNhbCBzZXggb2YgdGhlIHNwZWNpZXMKICAgICAgICAvLyByZXByZXNlbnRlZCBieSB0aGUgbWFwLiBUaGlzIGlzIHNwZWNpZmllZCBhcyBtZXRhZGF0YWluIHRoZSBtYXAncyBzb3VyY2UgZmlsZS4KICAgICAgICAvLyBAYXJnIGlkZW50aWZpZXIudXVpZCB7c3RyaW5nfSBUaGUgdW5pcXVlIHV1aWQgdGhlIGZsYXRtYXAuIElmIGdpdmVuIHRoZW4gdGhpcyBleGFjdCBtYXAgd2lsbAogICAgICAgIC8vICBiZSBsb2FkZWQsIG92ZXJyaWRpbmcgYGB0YXhvbmBgIGFuZCBgYGJpb2xvZ2ljYWxTZXhgYC4KCiAgICAgICAgdmFyIGlkZW50aWZpZXIgPSB7CiAgICAgICAgICB0YXhvbjogdGhpcy5lbnRyeQogICAgICAgIH07CiAgICAgICAgaWYgKHRoaXMudXVpZCkgewogICAgICAgICAgaWRlbnRpZmllci51dWlkID0gdGhpcy51dWlkOwogICAgICAgIH0KICAgICAgICAvL1RoaXMgbm93IGhhbmRsZSB0aGUgdXNlcyBvZiB1dWlkIHdoZW4gcmVzdW1pbmcgc3RhdGVzCiAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICBpZiAoc3RhdGUudXVpZCkgewogICAgICAgICAgICBpZGVudGlmaWVyID0gewogICAgICAgICAgICAgIHV1aWQ6IHN0YXRlLnV1aWQKICAgICAgICAgICAgfTsKICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZW50cnkpIHsKICAgICAgICAgICAgaWRlbnRpZmllci50YXhvbiA9IHN0YXRlLmVudHJ5OwogICAgICAgICAgICBpZiAoc3RhdGUuYmlvbG9naWNhbFNleCkgewogICAgICAgICAgICAgIGlkZW50aWZpZXJbImJpb2xvZ2ljYWxTZXgiXSA9IHN0YXRlLmJpb2xvZ2ljYWxTZXg7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoaWRlbnRpZmllci50YXhvbiA9PT0gIk5DQklUYXhvbjo5NjA2IikgewogICAgICAgICAgICAgIC8vRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICAgICAgICAgICAgICBpZGVudGlmaWVyWyJiaW9sb2dpY2FsU2V4Il0gPSAiUEFUTzowMDAwMzg0IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBTZXQgdGhlIGJpb2xvaWNhbFNleCBub3cgaWYgbWFwIGlzIG5vdCByZXN1bWVkIGZyb20KICAgICAgICAgIC8vIGEgc2F2ZWQgc3RhdGUKICAgICAgICAgIGlmICh0aGlzLmJpb2xvZ2ljYWxTZXgpIHsKICAgICAgICAgICAgaWRlbnRpZmllclsiYmlvbG9naWNhbFNleCJdID0gdGhpcy5iaW9sb2dpY2FsU2V4OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2YXIgcHJvbWlzZTEgPSB0aGlzLm1hcE1hbmFnZXIubG9hZE1hcChpZGVudGlmaWVyLCB0aGlzLiRyZWZzLmRpc3BsYXksIHRoaXMuZXZlbnRDYWxsYmFjaygpLCB7CiAgICAgICAgICAvL2Z1bGxzY3JlZW5Db250cm9sOiBmYWxzZSwKICAgICAgICAgIC8vYW5ub3RhdGFibGU6IGZhbHNlLAogICAgICAgICAgLy9kZWJ1ZzogdHJ1ZSwKICAgICAgICAgIGZlYXR1cmVJbmZvOiB0aGlzLmZlYXR1cmVJbmZvLAogICAgICAgICAgIm1pbi16b29tIjogdGhpcy5taW5ab29tLAogICAgICAgICAgbGF5ZXJDb250cm9sOiB0cnVlLAogICAgICAgICAgcGF0aENvbnRyb2xzOiB0cnVlLAogICAgICAgICAgc2VhcmNoYWJsZTogdGhpcy5zZWFyY2hhYmxlLAogICAgICAgICAgdG9vbHRpcHM6IHRoaXMudG9vbHRpcHMsCiAgICAgICAgICBtaW5pbWFwOiBtaW5pbWFwCiAgICAgICAgfSk7CiAgICAgICAgcHJvbWlzZTEudGhlbihmdW5jdGlvbiAocmV0dXJuZWRPYmplY3QpIHsKICAgICAgICAgIF90aGlzMTAubWFwSW1wID0gcmV0dXJuZWRPYmplY3Q7CiAgICAgICAgICBfdGhpczEwLnNlcnZlclVVSUQgPSBfdGhpczEwLm1hcEltcC5nZXRJZGVudGlmaWVyKCkudXVpZDsKICAgICAgICAgIF90aGlzMTAub25GbGF0bWFwUmVhZHkoKTsKICAgICAgICAgIGlmIChfdGhpczEwLl9zdGF0ZVRvQmVTZXQpIF90aGlzMTAucmVzdG9yZU1hcFN0YXRlKF90aGlzMTAuX3N0YXRlVG9CZVNldCk7ZWxzZSB7CiAgICAgICAgICAgIF90aGlzMTAucmVzdG9yZU1hcFN0YXRlKHN0YXRlKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSBlbHNlIGlmIChzdGF0ZSkgewogICAgICAgIHRoaXMuX3N0YXRlVG9CZVNldCA9IHsKICAgICAgICAgIHZpZXdwb3J0OiBzdGF0ZS52aWV3cG9ydCwKICAgICAgICAgIHNlYXJjaFRlcm06IHN0YXRlLnNlYXJjaFRlcm0KICAgICAgICB9OwogICAgICAgIGlmICh0aGlzLm1hcEltcCAmJiAhdGhpcy5sb2FkaW5nKSB0aGlzLnJlc3RvcmVNYXBTdGF0ZSh0aGlzLl9zdGF0ZVRvQmVTZXQpOwogICAgICB9CiAgICB9LAogICAgY29tcHV0ZVBhdGhDb250cm9sc01heGltdW1IZWlnaHQ6IGZ1bmN0aW9uIGNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0KCkgewogICAgICB2YXIgZWxlbSA9IHRoaXMuJHJlZnMuZGlzcGxheTsKICAgICAgaWYgKGVsZW0pIHsKICAgICAgICB2YXIgY29tcHV0ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW0pOwogICAgICAgIHZhciBwYWRkaW5nID0gcGFyc2VJbnQoY29tcHV0ZWQucGFkZGluZ1RvcCkgKyBwYXJzZUludChjb21wdXRlZC5wYWRkaW5nQm90dG9tKTsKICAgICAgICB2YXIgaGVpZ2h0ID0gZWxlbS5jbGllbnRIZWlnaHQgLSBwYWRkaW5nOwogICAgICAgIHRoaXMucGF0aHdheXNNYXhIZWlnaHQgPSBoZWlnaHQgLSAxNzA7CiAgICAgIH0KICAgIH0sCiAgICBtYXBSZXNpemU6IGZ1bmN0aW9uIG1hcFJlc2l6ZSgpIHsKICAgICAgdHJ5IHsKICAgICAgICB0aGlzLmNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0KCk7CiAgICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgICB0aGlzLm1hcEltcC5yZXNpemUoKTsKICAgICAgICAgIHRoaXMuc2hvd01pbmltYXAodGhpcy5kaXNwbGF5TWluaW1hcCk7CiAgICAgICAgICBpZiAodGhpcy5tYXBJbXAuX21pbmltYXApIHsKICAgICAgICAgICAgdGhpcy5tYXBJbXAuX21pbmltYXAucmVzaXplKCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIChfdW51c2VkKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigiTWFwIHJlc2l6ZSBlcnJvciIpOwogICAgICB9CiAgICB9LAogICAgb25GbGF0bWFwUmVhZHk6IGZ1bmN0aW9uIG9uRmxhdG1hcFJlYWR5KCkgewogICAgICAvLyBvbkZsYXRtYXBSZWFkeSBpcyB1c2VkIGZvciBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIHJ1biBpbW1lZGlhdGVseSBhZnRlciB0aGUgZmxhdG1hcCBpcyBsb2FkZWQKICAgICAgdGhpcy5zZW5zb3IgPSBuZXcgUmVzaXplU2Vuc29yKHRoaXMuJHJlZnMuZGlzcGxheSwgdGhpcy5tYXBSZXNpemUpOwogICAgICBpZiAodGhpcy5tYXBJbXAub3B0aW9ucyAmJiB0aGlzLm1hcEltcC5vcHRpb25zLnN0eWxlID09PSAiZnVuY3Rpb25hbCIpIHsKICAgICAgICB0aGlzLmlzRkMgPSB0cnVlOwogICAgICB9CiAgICAgIHRoaXMubWFwSW1wLnNldEJhY2tncm91bmRPcGFjaXR5KDEpOwogICAgICB0aGlzLmJhY2tncm91bmRDaGFuZ2VDYWxsYmFjayh0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kKTsKICAgICAgdGhpcy5wYXRod2F5cyA9IHRoaXMubWFwSW1wLnBhdGhUeXBlcygpOwogICAgICB0aGlzLm1hcEltcC5lbmFibGVDZW50cmVsaW5lcyhmYWxzZSk7CiAgICAgIC8vRGlzYWJsZSBsYXllcnMgZm9yIG5vdwogICAgICAvL3RoaXMubGF5ZXJzID0gdGhpcy5tYXBJbXAuZ2V0TGF5ZXJzKCk7CiAgICAgIHRoaXMuc3lzdGVtcyA9IHByb2Nlc3NTeXN0ZW1zKHRoaXMubWFwSW1wLmdldFN5c3RlbXMoKSk7CiAgICAgIHRoaXMudGF4b25Db25uZWN0aXZpdHkgPSBwcm9jZXNzVGF4b24odGhpcy5mbGF0bWFwQVBJLCB0aGlzLm1hcEltcC50YXhvbklkZW50aWZpZXJzKTsKICAgICAgdGhpcy5hZGRSZXNpemVCdXR0b25Ub01pbmltYXAoKTsKICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMuY29tcHV0ZVBhdGhDb250cm9sc01heGltdW1IZWlnaHQoKTsKICAgICAgdGhpcy5kcmF3ZXJPcGVuID0gdHJ1ZTsKICAgICAgdGhpcy5tYXBSZXNpemUoKTsKICAgICAgdGhpcy4kZW1pdCgicmVhZHkiLCB0aGlzKTsKICAgIH0sCiAgICBzaG93TWluaW1hcDogZnVuY3Rpb24gc2hvd01pbmltYXAoZmxhZykgewogICAgICBpZiAodGhpcy5tYXBJbXApIHRoaXMubWFwSW1wLnNob3dNaW5pbWFwKGZsYWcpOwogICAgfSwKICAgIHNob3dQYXRod2F5c0RyYXdlcjogZnVuY3Rpb24gc2hvd1BhdGh3YXlzRHJhd2VyKGZsYWcpIHsKICAgICAgdGhpcy5kcmF3ZXJPcGVuID0gZmxhZzsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIGRpc3BsYXkgZmVhdHVyZXMgd2l0aCBhbm5vdGF0aW9uIG1hdGNoaW5nIHRoZSBwcm92aWRlZCB0ZXJtLAogICAgICogd2l0aCB0aGUgb3B0aW9uIHRvIGRpc3BsYXkgdGhlIGxhYmVsIHVzaW5nIGRpc3BsYXlMYWJlbCBmbGFnLgogICAgICovCiAgICBzZWFyY2hBbmRTaG93UmVzdWx0OiBmdW5jdGlvbiBzZWFyY2hBbmRTaG93UmVzdWx0KHRlcm0sIGRpc3BsYXlMYWJlbCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBpZiAodGVybSA9PT0gdW5kZWZpbmVkIHx8IHRlcm0gPT09ICIiKSB7CiAgICAgICAgICB0aGlzLm1hcEltcC5jbGVhclNlYXJjaFJlc3VsdHMoKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgc2VhcmNoUmVzdWx0cyA9IHRoaXMubWFwSW1wLnNlYXJjaCh0ZXJtKTsKICAgICAgICAgIGlmIChzZWFyY2hSZXN1bHRzICYmIHNlYXJjaFJlc3VsdHMucmVzdWx0cyAmJiBzZWFyY2hSZXN1bHRzLnJlc3VsdHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICB0aGlzLm1hcEltcC5zaG93U2VhcmNoUmVzdWx0cyhzZWFyY2hSZXN1bHRzKTsKICAgICAgICAgICAgaWYgKGRpc3BsYXlMYWJlbCAmJiBzZWFyY2hSZXN1bHRzLnJlc3VsdHNbMF0uZmVhdHVyZUlkICYmIHNlYXJjaFJlc3VsdHMucmVzdWx0c1swXS50ZXh0KSB7CiAgICAgICAgICAgICAgdmFyIGFubm90YXRpb24gPSB0aGlzLm1hcEltcC5hbm5vdGF0aW9uKHNlYXJjaFJlc3VsdHMucmVzdWx0c1swXS5mZWF0dXJlSWQpOwogICAgICAgICAgICAgIHRoaXMubWFwSW1wLnNob3dQb3B1cChzZWFyY2hSZXN1bHRzLnJlc3VsdHNbMF0uZmVhdHVyZUlkLCBhbm5vdGF0aW9uLmxhYmVsLCB7CiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJjdXN0b20tcG9wdXAiLAogICAgICAgICAgICAgICAgcG9zaXRpb25BdExhc3RDbGljazogZmFsc2UsCiAgICAgICAgICAgICAgICBwcmVzZXJ2ZVNlbGVjdGlvbjogdHJ1ZQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfSBlbHNlIHRoaXMubWFwSW1wLmNsZWFyU2VhcmNoUmVzdWx0cygpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGVkIHRlcm1zCiAgICAgKi8KICAgIHNlYXJjaFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiBzZWFyY2hTdWdnZXN0aW9ucyh0ZXJtKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgcmV0dXJuIHRoaXMubWFwSW1wLnNlYXJjaCh0ZXJtKTsKICAgICAgcmV0dXJuIFtdOwogICAgfQogIH0sCiAgcHJvcHM6IHsKICAgIGVudHJ5OiBTdHJpbmcsCiAgICB1dWlkOiBTdHJpbmcsCiAgICBiaW9sb2dpY2FsU2V4OiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICBmZWF0dXJlSW5mbzogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIG1pblpvb206IHsKICAgICAgdHlwZTogTnVtYmVyLAogICAgICBkZWZhdWx0OiA0CiAgICB9LAogICAgcGF0aENvbnRyb2xzOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgc2VhcmNoYWJsZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIGxheWVyQ29udHJvbDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIHRvb2x0aXBzOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICBoZWxwTW9kZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIHJlbmRlckF0TW91bnRlZDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgZGlzcGxheU1pbmltYXA6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBkaXNwbGF5V2FybmluZzogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8qKgogICAgICogRmxhZyB0byBkZXRlcm1pbmUgcmF0aGVyIG9wZW4gbWFwIFVJIHNob3VsZCBiZQogICAgICogcHJlc2VudGVkIG9yIG5vdC4KICAgICAqLwogICAgZW5hYmxlT3Blbk1hcFVJOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgb3Blbk1hcE9wdGlvbnM6IHsKICAgICAgdHlwZTogQXJyYXksCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbewogICAgICAgICAgZGlzcGxheTogIk9wZW4gQUMgTWFwIiwKICAgICAgICAgIGtleTogIkFDIgogICAgICAgIH0sIHsKICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIEZDIE1hcCIsCiAgICAgICAgICBrZXk6ICJGQyIKICAgICAgICB9LCB7CiAgICAgICAgICBkaXNwbGF5OiAiT3BlbiAzRCBIdW1hbiBNYXAiLAogICAgICAgICAga2V5OiAiM0QiCiAgICAgICAgfV07CiAgICAgIH0KICAgIH0sCiAgICBzaG93U3RhckluTGVnZW5kOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgaXNMZWdhY3k6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBkaXNwbGF5TGF0ZXN0Q2hhbmdlczogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIGxhdGVzdENoYW5nZXNNZXNzYWdlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIidPYnNlcnZlZCBJbicgY29udHJvbHMgYW5kIGluZm9ybWF0aW9uIGFyZSBub3cgaW5jbHVkZWQgaW4gQUMgbWFwcy4gU3lzdGVtIGNvbnRyb2wgd2l0aCBGVFUgaW5mb3JtYXRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIEZDIG1hcC4iCiAgICB9LAogICAgLyoqCiAgICAgKiBTdGF0ZSBjb250YWluaW5nIHN0YXRlIG9mIHRoZSBmbGF0bWFwLgogICAgICovCiAgICBzdGF0ZTogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZAogICAgfSwKICAgIC8qKgogICAgICogU3BlY2lmeSB0aGUgZW5kcG9pbnQgb2YgdGhlIGZsYXRtYXAgc2VydmVyLgogICAgICovCiAgICBmbGF0bWFwQVBJOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogImh0dHBzOi8vbWFwY29yZS1kZW1vLm9yZy9jdXJyZW50L2ZsYXRtYXAvdjMvIgogICAgfSwKICAgIHNwYXJjQVBJOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogImh0dHBzOi8vYXBpLnNwYXJjLnNjaWVuY2UvIgogICAgfQogIH0sCiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHsKICAgIHJldHVybiB7CiAgICAgIGZsYXRtYXBBUEk6IHRoaXMuZmxhdG1hcEFQSSwKICAgICAgc3BhcmNBUEk6IHRoaXMuc3BhcmNBUEkKICAgIH07CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgYW5ub3RhdGlvbkVudHJ5OiB7fSwKICAgICAgc2VydmVyVVVJRDogdW5kZWZpbmVkLAogICAgICBsYXllcnM6IFtdLAogICAgICBwYXRod2F5czogW10sCiAgICAgIHNja2FuRGlzcGxheTogW3sKICAgICAgICBsYWJlbDogIkRpc3BsYXkgUGF0aCB3aXRoIFNDS0FOIiwKICAgICAgICBrZXk6ICJWQUxJRCIKICAgICAgfV0sCiAgICAgIGNlbnRyZUxpbmVzOiBbewogICAgICAgIGxhYmVsOiAiRGlzcGxheSBOZXJ2ZXMiLAogICAgICAgIGtleTogImNlbnRyZWxpbmVzIiwKICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgICB9XSwKICAgICAgc3lzdGVtczogW10sCiAgICAgIHRheG9uQ29ubmVjdGl2aXR5OiBbXSwKICAgICAgcGF0aHdheXNNYXhIZWlnaHQ6IDEwMDAsCiAgICAgIGhvdmVyVmlzaWJpbGl0aWVzOiBbewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9XSwKICAgICAgeWVsbG93c3RhcjogeWVsbG93c3RhciwKICAgICAgaXNGQzogZmFsc2UsCiAgICAgIGluSGVscDogZmFsc2UsCiAgICAgIGN1cnJlbnRCYWNrZ3JvdW5kOiAid2hpdGUiLAogICAgICBhdmFpbGFibGVCYWNrZ3JvdW5kOiBbIndoaXRlIiwgImxpZ2h0c2t5Ymx1ZSIsICJibGFjayJdLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgZmxhdG1hcE1hcmtlcjogZmxhdG1hcE1hcmtlciwKICAgICAgdG9vbHRpcEVudHJ5OiBjcmVhdGVVbmZpbGxlZFRvb2x0aXBEYXRhKCksCiAgICAgIGNvbm5lY3Rpdml0eVRvb2x0aXBWaXNpYmxlOiBmYWxzZSwKICAgICAgZHJhd2VyT3BlbjogZmFsc2UsCiAgICAgIGFubm90YXRpb25SYWRpbzogZmFsc2UsCiAgICAgIGNvbG91clJhZGlvOiB0cnVlLAogICAgICBvdXRsaW5lc1JhZGlvOiB0cnVlLAogICAgICBtaW5pbWFwUmVzaXplU2hvdzogZmFsc2UsCiAgICAgIG1pbmltYXBTbWFsbDogZmFsc2UsCiAgICAgIGN1cnJlbnRBY3RpdmU6ICIiLAogICAgICBjdXJyZW50SG92ZXI6ICIiLAogICAgICB2aWV3aW5nTW9kZTogIkV4cGxvcmF0aW9uIiwKICAgICAgdmlld2luZ01vZGVzOiBbIkFubm90YXRpb24iLCAiRXhwbG9yYXRpb24iLCAiTmV0d29yayBEaXNjb3ZlcnkiXQogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBlbnRyeTogZnVuY3Rpb24gZW50cnkoKSB7CiAgICAgIGlmICghdGhpcy5zdGF0ZSkgdGhpcy5jcmVhdGVGbGF0bWFwKCk7CiAgICB9LAogICAgaGVscE1vZGU6IGZ1bmN0aW9uIGhlbHBNb2RlKHZhbCkgewogICAgICB0aGlzLnNldEhlbHBNb2RlKHZhbCk7CiAgICB9LAogICAgc3RhdGU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihzdGF0ZSkgewogICAgICAgIGlmICh0aGlzLm1hcE1hbmFnZXIpIHsKICAgICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvL3RoaXMgY29tcG9uZW50IGhhcyBub3QgYmVlbiBtb3VudGVkIHlldAogICAgICAgICAgdGhpcy5zZXRTdGF0ZVJlcXVpcmVkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwKICAgICAgZGVlcDogdHJ1ZQogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBmbGF0bWFwID0gcmVxdWlyZSgiQGFiaS1zb2Z0d2FyZS9mbGF0bWFwLXZpZXdlciIpOwogICAgdGhpcy50b29sdGlwV2FpdCA9IFtdOwogICAgdGhpcy50b29sdGlwV2FpdC5sZW5ndGggPSB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmxlbmd0aDsKICAgIHRoaXMubWFwTWFuYWdlciA9IG5ldyBmbGF0bWFwLk1hcE1hbmFnZXIodGhpcy5mbGF0bWFwQVBJKTsKICAgIHRoaXMuZmxhdG1hcFF1ZXJpZXMgPSBuZXcgRmxhdG1hcFF1ZXJpZXMoKTsKICAgIHRoaXMuZmxhdG1hcFF1ZXJpZXMuaW5pdGlhbGlzZSh0aGlzLmZsYXRtYXBBUEkpOwogICAgaWYgKHRoaXMuc3RhdGUpIHsKICAgICAgLy9TdGF0ZSBpcyBzZXQgYW5kIHJlcXVpcmUgdG8gc2V0IHRoZSBzdGF0ZQogICAgICBpZiAodGhpcy5zZXRTdGF0ZVJlcXVpcmVkKSB7CiAgICAgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlKTsKICAgICAgfQogICAgfSBlbHNlIGlmICh0aGlzLnJlbmRlckF0TW91bnRlZCkgewogICAgICB0aGlzLmNyZWF0ZUZsYXRtYXAoKTsKICAgIH0KICB9Cn07"},{"version":3,"names":["Vue","Tooltip","SelectionsGroup","TreeControls","MapSvgIcon","MapSvgSpriteColor","SvgLegends","lang","locale","flatmapMarker","FlatmapQueries","findTaxonomyLabel","yellowstar","use","_Button","_Col","_Loading","directive","_Radio","_RadioGroup","_Row","_Select","ResizeSensor","require","processTaxon","flatmapAPI","taxonIdentifiers","processed","forEach","taxon","then","value","item","label","push","processFTUs","parent","key","ftus","items","organs","children","filter","obj","index","findIndex","undefined","child","data","models","concat","grandChildren","length","processSystems","systems","allSystems","system","colour","enabled","id","createUnfilledTooltipData","destinations","origins","components","destinationsWithDatasets","originsWithDatasets","componentsWithDatasets","resource","name","beforeCreate","mapManager","mapImp","setStateRequired","methods","viewLatestMap","biologicalSex","entry","state","viewport","getState","$emit","backgroundChangeCallback","currentBackground","setBackgroundColour","toggleDrawer","drawerOpen","setColour","flag","colourRadio","outline","outlinesRadio","setOutlines","outlineRadio","resetView","resetMap","$refs","centrelinesSelection","reset","skcanSelection","layersSelection","systemsSelection","pathwaysSelection","zoomIn","zoomOut","centreLinesSelected","payload","enableCentrelines","sckanSelected","enableSckanPath","checkAllSCKAN","_this","keys","highlightConnectedPaths","_this2","paths","_toConsumableArray","pathModelNodes","pathFeatures","map","p","featureProperties","toHighlight","nodePathModels","featureId","f","zoomToFeatures","noZoomIn","systemSelected","enableSystem","checkAllSystems","_this3","ftuSelected","searchAndShowResult","layersSelected","enableLayer","checkAllLayers","_this4","taxonsSelected","enableConnectivityByTaxonIds","checkAllTaxons","_this5","pathwaysSelected","enablePath","checkAllPathways","_this6","enablePanZoomEvents","eventCallback","_this7","eventType","taxonomy","_len","arguments","args","Array","_key","dataset","feature","userData","provenanceTaxonomy","taxons","JSON","parse","viewingMode","currentActive","currentHover","type","checkAndCreatePopups","_checkAndCreatePopups","_asyncToGenerator","_regeneratorRuntime","mark","_callee","results","wrap","_callee$","_context","prev","next","annotationEntry","_objectSpread","resourceId","serverUUID","displayTooltip","annotation","flatmapQueries","retrieveFlatmapKnowledgeForEvent","sent","hyperlinks","resourceForTooltip","createTooltipFromNeuronCuration","stop","_x","apply","popUpCssHacks","ftooltip","document","querySelector","style","display","tooltip","$el","onclick","closeTooltip","querySelectorAll","_createTooltipFromNeuronCuration","_callee2","_callee2$","_context2","createTooltipData","tooltipEntry","_x2","showPopup","node","options","myOptions","className","positionAtLastClick","showMarkerPopup","closeMinimap","minimapEl","flatmapContainer","minimapSmall","classList","add","remove","addResizeButtonToMinimap","minimapResize","parentNode","removeChild","appendChild","minimapResizeShow","setHelpMode","helpMode","inHelp","hoverVisibilities","openFlatmapHelpPopup","closeFlatmapHelpPopup","showToolitip","tooltipNumber","_this8","clearTimeout","tooltipWait","setTimeout","hideToolitip","_this9","modelFeatureIds","heartId","featureIdsForModel","elm","anchor","click","getLabels","labels","annotations","_iterator","_createForOfIteratorHelper","values","_step","s","n","done","err","e","from","Set","identifier","getIdentifier","uuid","setState","createFlatmap","restoreMapState","searchTerm","_this10","loading","minimap","displayMinimap","position","promise1","loadMap","featureInfo","minZoom","layerControl","pathControls","searchable","tooltips","returnedObject","onFlatmapReady","_stateToBeSet","computePathControlsMaximumHeight","elem","computed","getComputedStyle","padding","parseInt","paddingTop","paddingBottom","height","clientHeight","pathwaysMaxHeight","mapResize","resize","showMinimap","_minimap","_unused","console","error","sensor","isFC","setBackgroundOpacity","pathways","pathTypes","getSystems","taxonConnectivity","showPathwaysDrawer","term","displayLabel","clearSearchResults","searchResults","search","showSearchResults","text","preserveSelection","searchSuggestions","props","String","default","Boolean","Number","renderAtMounted","displayWarning","enableOpenMapUI","openMapOptions","_default","showStarInLegend","isLegacy","displayLatestChanges","latestChangesMessage","Object","sparcAPI","provide","layers","sckanDisplay","centreLines","availableBackground","connectivityTooltipVisible","annotationRadio","viewingModes","watch","val","handler","immediate","deep","mounted","flatmap","MapManager","initialise"],"sources":["node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"mappings":"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"}]}