{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js??vue-loader-options!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue","mtime":499162500000},{"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:Ci8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0LCBuby1jb25zb2xlICovCmltcG9ydCBWdWUgZnJvbSAidnVlIjsKaW1wb3J0IFByaW1pdGl2ZUNvbnRyb2xzIGZyb20gIi4vUHJpbWl0aXZlQ29udHJvbHMiOwppbXBvcnQgU2NhZmZvbGRUb29sdGlwIGZyb20gIi4vU2NhZmZvbGRUb29sdGlwIjsKaW1wb3J0IFRyZWVDb250cm9scyBmcm9tICIuL1RyZWVDb250cm9scyI7CmltcG9ydCB7IE1hcFN2Z0ljb24sIE1hcFN2Z1Nwcml0ZUNvbG9yIH0gZnJvbSAiQGFiaS1zb2Z0d2FyZS9zdmctc3ByaXRlIjsKaW1wb3J0IHsgZmluZE9iamVjdHNXaXRoTmFtZXMsIGdldE9iamVjdHNGcm9tQW5ub3RhdGlvbnMgfSBmcm9tICIuLi9zY3JpcHRzL3V0aWxpdGllcy5qcyI7CmltcG9ydCB7IFNlYXJjaEluZGV4IH0gZnJvbSAiLi4vc2NyaXB0cy9zZWFyY2guanMiOwppbXBvcnQgewogIEJ1dHRvbiwKICBDb2wsCiAgTG9hZGluZywKICBPcHRpb24sCiAgUG9wb3ZlciwKICBSb3csCiAgU2VsZWN0LAogIFNsaWRlciwKICBUYWJQYW5lLAogIFRhYnMsCn0gZnJvbSAiZWxlbWVudC11aSI7CmltcG9ydCBsYW5nIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZS9sYW5nL2VuIjsKaW1wb3J0IGxvY2FsZSBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2NhbGUiOwoKbG9jYWxlLnVzZShsYW5nKTsKVnVlLnVzZShCdXR0b24pOwpWdWUudXNlKENvbCk7ClZ1ZS51c2UoTG9hZGluZy5kaXJlY3RpdmUpOwpWdWUudXNlKE9wdGlvbik7ClZ1ZS51c2UoUG9wb3Zlcik7ClZ1ZS51c2UoUm93KTsKVnVlLnVzZShTZWxlY3QpOwpWdWUudXNlKFNsaWRlcik7ClZ1ZS51c2UoVGFiUGFuZSk7ClZ1ZS51c2UoVGFicyk7Cgpjb25zdCBPcmdhbnNWaWV3ZXIgPSByZXF1aXJlKCIuLi9zY3JpcHRzL29yZ2Fuc1JlbmRlcmVyIikuT3JnYW5zVmlld2VyOwpjb25zdCBFdmVudE5vdGlmaWVyID0gcmVxdWlyZSgiLi4vc2NyaXB0cy9ldmVudE5vdGlmaWVyIikuRXZlbnROb3RpZmllcjsKCi8qKgogKiBBIHZ1ZSBjb21wb25lbnQgb2YgdGhlIHNjYWZmb2xkIHZpZXdlci4KICoKICogQHJlcXVpcmVzIC4vUHJpbWl0dmVDb250cm9scy52dWUKICogQHJlcXVpcmVzIC4vVHJlZUNvbnRyb2xzLnZ1ZQogKi8KZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJTY2FmZm9sZFZ1ZXIiLAogIGNvbXBvbmVudHM6IHsKICAgIE1hcFN2Z0ljb24sCiAgICBNYXBTdmdTcHJpdGVDb2xvciwKICAgIFByaW1pdGl2ZUNvbnRyb2xzLAogICAgU2NhZmZvbGRUb29sdGlwLAogICAgVHJlZUNvbnRyb2xzLAogIH0sCiAgcHJvcHM6IHsKICAgIC8qKgogICAgICogVVJMIG9mIHRoZSB6aW5janMgbWV0YWRhdGEuIFRoaXMgdmFsdWUgd2lsbCBiZSBpZ25vcmVkIGlmIGEgdmFsaWQKICAgICAqIHN0YXRlIHByb3AgaXMgYWxzbyBwcm92aWRlZC4KICAgICAqIElmIHRoZSB1cmwgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aXRoIHN0YXRlIHByZXNlbnQsIHBsZWFzZSB1c2UKICAgICAqIHRoZSBzZXRVUkwgbWV0aG9kLgogICAgICovCiAgICB1cmw6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiIiwKICAgIH0sCiAgICAvKioKICAgICAqIFNob3cgdGhlIGNvbG91ciBjb250cm9sIG9mIHNldCB0byB0cnVlLgogICAgICovCiAgICBzaG93Q29sb3VyUGlja2VyOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlLAogICAgfSwKICAgIC8qKgogICAgICogRmxhZyB0byBzaG93L2hpZGUgdGhlIFVJLgogICAgICovCiAgICBkaXNwbGF5VUk6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgIH0sCiAgICAvKioKICAgICAqIERpc3BsYXkgYWxsIGdyYXBoaWNzIGF0IHN0YXJ0LgogICAgICoKICAgICAqIFRoaXMgc2V0dGluZyBvbmx5IHdvcmtzIHdoZW4gdHJhZGl0aW9uYWwgaXMgc2V0IHRvIGZhbHNlLgogICAgICovCiAgICBkaXNwbGF5QXRTdGFydFVwOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUsCiAgICB9LAogICAgLyoqCiAgICAgKiBVc2UgZm9yIHRvZ2dsaW5nIHRoZSBoZWxwIHRvb2x0aXBzLgogICAgICovCiAgICBoZWxwTW9kZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgIH0sCiAgICAvKioKICAgICAqIFVzZSBmb3Igc2hvdy9kaXNwbGF5IGJldGEgd2FybmluZyBpY29uLgogICAgICovCiAgICBkaXNwbGF5V2FybmluZzogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlLAogICAgfSwKICAgIC8qKgogICAgICogV2FybmluZyBtZXNzYWdlIGZvciB0aGUgaG92ZXJlZCBvdmVyIHRleHQKICAgICAqIG9uIHRoZSB3YXJuaW5nIGljb24uCiAgICAgKi8KICAgIHdhcm5pbmdNZXNzYWdlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIkJldGEgZmVhdHVyZSAtIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCIsCiAgICB9LAogICAgZGlzcGxheUxhdGVzdENoYW5nZXM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICB9LAogICAgbGF0ZXN0Q2hhbmdlc01lc3NhZ2U6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiTmV3IGZlYXR1cmUgLSBMb2NhbCBzZWFyY2ggaXMgbm93IGF2YWlsYWJsZSIsCiAgICB9LAogICAgLyoqCiAgICAgKiBTaG93L2hpZGUgcGlja2FibGUgbWFya2VycyBmb3IgcmVnaW9ucy4KICAgICAqLwogICAgZGlzcGxheU1hcmtlcnM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICB9LAogICAgbWFya2VyTGFiZWxzIDogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBbXQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTaG93L2hpZGUgbWluaW1hcC4KICAgICAqLwogICAgZGlzcGxheU1pbmltYXA6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICB9LAogICAgLyoqCiAgICAgKiBGb3JtYXQgb2YgdGhlIGlucHV0IFVSTAogICAgICovCiAgICBmb3JtYXQ6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAibWV0YWRhdGEiLAogICAgfSwKICAgIC8qKgogICAgICogU2V0dGluZ3MgZm9yIG1pbmltYXAgcG9zaXRpb24sIHNpemUgYW5kIGFsaWdubWVudC4KICAgICAqLwogICAgbWluaW1hcFNldHRpbmdzOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICB4X29mZnNldDogMTYsCiAgICAgICAgICB5X29mZnNldDogMTYsCiAgICAgICAgICB3aWR0aDogMTI4LAogICAgICAgICAgaGVpZ2h0OiAxMjgsCiAgICAgICAgICBhbGlnbjogInRvcC1yaWdodCIsCiAgICAgICAgfTsKICAgICAgfSwKICAgIH0sCiAgICAvKioKICAgICAqIEZsYWcgdG8gZGV0ZXJtaW5lIHJhdGhlciBvcGVuIG1hcCBVSSBzaG91bGQgYmUKICAgICAqIHByZXNlbnRlZCBvciBub3QuCiAgICAgKi8KICAgIGVuYWJsZU9wZW5NYXBVSTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgIH0sCiAgICBvcGVuTWFwT3B0aW9uczogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIEFDIE1hcCIsCiAgICAgICAgICAgIGtleTogIkFDIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgZGlzcGxheTogIk9wZW4gRkMgTWFwIiwKICAgICAgICAgICAga2V5OiAiRkMiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBkaXNwbGF5OiAiT3BlbiAzRCBIdW1hbiBNYXAiLAogICAgICAgICAgICBrZXk6ICIzRCIKICAgICAgICAgIH0sCiAgICAgICAgXQogICAgICB9LAogICAgfSwKICAgIC8qKgogICAgICogU3RhdGUgY29udGFpbmluZyBzdGF0ZSBvZiB0aGUgc2NhZmZvbGQuCiAgICAgKi8KICAgIHN0YXRlOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLAogICAgfSwKICAgIC8qKgogICAgICogT3B0aW9uYWwgcHJvcCBmb3IgdGhlIG5hbWUgb2YgdGhlIHJlZ2lvbiB0byBmb2N1cyBvbiwKICAgICAqIHRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaWYgc3RhdGUgb3Igdmlld1VSTCBpcyBhbHNvIHByb3ZpZGVkLgogICAgICovCiAgICByZWdpb246IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiIiwKICAgIH0sCiAgICAvKioKICAgICAqIE9wdGlvbmFsIHByb3AgZm9yIGFuIFVSTCBvZiBjb250YWluaW5nIGluZm9ybWF0aW9uIG9mIGEgdmlld3BvcnQuCiAgICAgKiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHN0YXRlIGlzIGFsc28gcHJvdmlkZWQuCiAgICAgKiBJdCB3aWxsIHVzZSB0aGUgcHJvdmlkZWQgVVJMIGFzIGJhc2UgaWYgYSByZWxhdGl2ZSBwYXJ0aCBpcyBwcm92aWRlZC4KICAgICAqLwogICAgdmlld1VSTDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICIiLAogICAgfSwKICAgIC8qKgogICAgICogU2V0dGluZ3MgZm9yIHR1cm5pbmcgb24vb2ZmIHJlbmRlcmluZwogICAgICovCiAgICByZW5kZXI6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgIH0sCiAgfSwKICBkYXRhOiBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gewogICAgICBzY2VuZURhdGE6IHRoaXMuJG1vZHVsZS5zY2VuZURhdGEsCiAgICAgIGlzUGxheWluZzogZmFsc2UsCiAgICAgIGlzUmVhZHk6IGZhbHNlLAogICAgICAvKioKICAgICAgICogVGhpcyBpcyBzZXQgd2hlbiBzY2VuZSBpcyB0cmFuc2l0aW9uaW5nLgogICAgICAgKi8KICAgICAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZSwKICAgICAgdG9vbHRpcEFwcGVuZFRvQm9keTogZmFsc2UsCiAgICAgIGhvdmVyVmlzaWJpbGl0aWVzOiBbCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwKICAgICAgICB7IHZhbHVlOiBmYWxzZSB9LAogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwKICAgICAgICB7IHZhbHVlOiBmYWxzZSB9LAogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwKICAgICAgICB7IHZhbHVlOiBmYWxzZSB9LAogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sCiAgICAgIF0sCiAgICAgIGluSGVscDogZmFsc2UsCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICBkdXJhdGlvbjogMzAwMCwKICAgICAgZHJhd2VyT3BlbjogdHJ1ZSwKICAgICAgY3VycmVudEJhY2tncm91bmQ6ICJ3aGl0ZSIsCiAgICAgIGF2YWlsYWJsZUJhY2tncm91bmQ6IFsid2hpdGUiLCAibGlnaHRza3libHVlIiwgImJsYWNrIl0sCiAgICAgIG1pbmltaXNlZFNsaWRlcjogZmFsc2UsCiAgICAgIHNsaWRlclBvc2l0aW9uOiAiIiwKICAgICAgdGltZU1heDogMTAwLAogICAgICBvcmdpbmFsRHVyYXRpb246ICIiLAogICAgICBhbmltYXRlRHVyYXRpb246ICI2c2VjcyIsCiAgICAgIHBsYXlTcGVlZDogWwogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAwLjEsCiAgICAgICAgICBsYWJlbDogIjAuMXgiLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDAuNSwKICAgICAgICAgIGxhYmVsOiAiMC41eCIsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMSwKICAgICAgICAgIGxhYmVsOiAiMXgiLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDIsCiAgICAgICAgICBsYWJlbDogIjJ4IiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiA1LAogICAgICAgICAgbGFiZWw6ICI1eCIsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMTAsCiAgICAgICAgICBsYWJlbDogIjEweCIsCiAgICAgICAgfSwKICAgICAgXSwKICAgICAgY3VycmVudFNwZWVkOiAxLAogICAgICB0aW1lU3RhbXBzOiB7fSwKICAgICAgZGVmYXVsdENoZWNrZWRLZXlzOiBbXSwKICAgICAgdERhdGE6IHsKICAgICAgICBsYWJlbDogIiIsCiAgICAgICAgcmVnaW9uOiAiIiwKICAgICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgICB4OiAyMDAsCiAgICAgICAgeTogMjAwLAogICAgICB9LAogICAgICBmaWxlRm9ybWF0OiAibWV0YWRhdGEiLAogICAgICBwcmV2aW91c01hcmtlckxhYmVsczogW10sCiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgIGZvcm1hdDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICB0aGlzLmZpbGVGb3JtYXQgPSB2YWx1ZTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlLAogICAgfSwKICAgIHVybDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiAobmV3VmFsdWUpIHsKICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc3RhdGUudXJsID09PSB1bmRlZmluZWQpCiAgICAgICAgICB0aGlzLnNldFVSTChuZXdWYWx1ZSk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwKICAgIH0sCiAgICByZWdpb246IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gKHJlZ2lvbikgewogICAgICAgIGlmICghKHRoaXMuc3RhdGUgfHwgdGhpcy52aWV3VVJMKSkgdGhpcy5zZXRGb2N1c2VkUmVnaW9uKHJlZ2lvbik7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwKICAgIH0sCiAgICBzdGF0ZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiAoc3RhdGUpIHsKICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlLAogICAgICBkZWVwOiB0cnVlLAogICAgfSwKICAgIHZpZXdVUkw6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gKHZpZXdVUkwpIHsKICAgICAgICB0aGlzLnVwZGF0ZVZpZXdVUkwodmlld1VSTCk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwKICAgIH0sCiAgICBoZWxwTW9kZTogZnVuY3Rpb24gKHZhbCkgewogICAgICB0aGlzLnNldEhlbHBNb2RlKHZhbCk7CiAgICB9LAogICAgZGlzcGxheU1hcmtlcnM6IGZ1bmN0aW9uICh2YWwpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNYXJrZXJzID0gdmFsOwogICAgICAvL1VwZGF0ZSBwaWNrYWJsZSBvYmplY3RzCiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5mb3JjZVBpY2thYmxlT2JqZWN0c1VwZGF0ZSA9IHRydWU7CiAgICB9LAogICAgZGlzcGxheU1pbmltYXA6IGZ1bmN0aW9uICh2YWwpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNaW5pbWFwID0gdmFsOwogICAgfSwKICAgICJzY2VuZURhdGEuY3VycmVudFRpbWUiOiBmdW5jdGlvbiAoKSB7CiAgICAgIC8qKgogICAgICAgKiBUcmlnZ2VycyB3aGVuIHNjZW5lIHRpbWUgY2hhbmdlcy4KICAgICAgICoKICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHRpbWUgQ3VycmVudCBidWlsZC1pbiB0aW1lIG9mIHNjZW5lLgogICAgICAgKiBvZiBzZWxlY3RlZCBvYmplY3QuCiAgICAgICAqLwogICAgICB0aGlzLiRlbWl0KCJ0aW1lQ2hhbmdlZCIsIHRoaXMuc2NlbmVEYXRhLmN1cnJlbnRUaW1lKTsKICAgIH0sCiAgICBkdXJhdGlvbjogZnVuY3Rpb24gKCkgewogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuc2V0RHVyYXRpb24odGhpcy5kdXJhdGlvbik7CiAgICB9LAogICAgbWluaW1hcFNldHRpbmdzOiB7CiAgICAgIGRlZXA6IHRydWUsCiAgICAgIGhhbmRsZXI6ICJ1cGRhdGVNaW5pbWFwU2Npc3NvciIsCiAgICB9LAogICAgcmVuZGVyOiBmdW5jdGlvbiAodmFsKSB7CiAgICAgIHRoaXMudG9nZ2xlUmVuZGVyaW5nKHZhbCk7CiAgICB9LAogICAgbWFya2VyTGFiZWxzOiBmdW5jdGlvbihsYWJlbHMpIHsKICAgICAgdGhpcy5wcmV2aW91c01hcmtlckxhYmVscy5mb3JFYWNoKChwbWwpPT57CiAgICAgICAgdGhpcy5zZXRNYXJrZXJNb2RlRm9yT2JqZWN0c1dpdGhOYW1lKHBtbCwgIm9mZiIpOwogICAgICB9KQogICAgICBsYWJlbHMuZm9yRWFjaCgobCk9PnsKICAgICAgICB0aGlzLnNldE1hcmtlck1vZGVGb3JPYmplY3RzV2l0aE5hbWUobCwgIm9uIik7CiAgICAgIH0pCiAgICAgIHRoaXMucHJldmlvdXNNYXJrZXJMYWJlbHMgPSBsYWJlbHM7CiAgICB9CiAgfSwKICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuJG1vZHVsZSA9IG5ldyBPcmdhbnNWaWV3ZXIoKTsKICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzID0gW107CiAgICB0aGlzLmhvdmVyZWRPYmplY3RzID0gW107CiAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gIndoaXRlIjsKICAgIHRoaXMuX2N1cnJlbnRVUkwgPSB1bmRlZmluZWQ7CiAgICB0aGlzLmF2YWlsYWJsZUJhY2tncm91bmQgPSBbIndoaXRlIiwgImJsYWNrIiwgImxpZ2h0c2t5Ymx1ZSJdOwogICAgdGhpcy4kX3NlYXJjaEluZGV4ID0gbmV3IFNlYXJjaEluZGV4KCk7CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiAoKSB7CiAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5zZXRNb2R1bGUodGhpcy4kbW9kdWxlKTsKICAgIGxldCBldmVudE5vdGlmaWVyID0gbmV3IEV2ZW50Tm90aWZpZXIoKTsKICAgIGV2ZW50Tm90aWZpZXIuc3Vic2NyaWJlKHRoaXMsIHRoaXMuZXZlbnROb3RpZmllckNhbGxiYWNrKTsKICAgIHRoaXMuJG1vZHVsZS5hZGROb3RpZmllcihldmVudE5vdGlmaWVyKTsKICAgIHRoaXMuJG1vZHVsZS5hZGRPcmdhblBhcnRBZGRlZENhbGxiYWNrKHRoaXMuemluY09iamVjdEFkZGVkKTsKICAgIHRoaXMuJG1vZHVsZS5pbml0aWFsaXNlUmVuZGVyZXIodGhpcy4kcmVmcy5kaXNwbGF5KTsKICAgIHRoaXMudG9nZ2xlUmVuZGVyaW5nKHRoaXMucmVuZGVyKTsKICAgIHRoaXMucm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIodGhpcy5hZGp1c3RMYXlvdXQpLm9ic2VydmUoCiAgICAgIHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIKICAgICk7CiAgICB0aGlzLmRlZmF1bHRSYXRlID0gdGhpcy4kbW9kdWxlLmdldFBsYXlSYXRlKCk7CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7CiAgICBpZiAodGhpcy5ybykgdGhpcy5yby5kaXNjb25uZWN0KCk7CiAgICB0aGlzLiRtb2R1bGUuZGVzdHJveSgpOwogICAgdGhpcy4kbW9kdWxlID0gdW5kZWZpbmVkOwogIH0sCiAgbWV0aG9kczogewogICAgYWRkWmluY09iamVjdDogZnVuY3Rpb24gKHppbmNPYmplY3QpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5hZGRaaW5jT2JqZWN0KHppbmNPYmplY3QpOwogICAgICAgIHRoaXMuemluY09iamVjdEFkZGVkKHppbmNPYmplY3QpOwogICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuemluY09iamVjdEFkZGVkKHppbmNPYmplY3QpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgbmV3IHppbmMgb2JqZWN0IGlzIHJlYWQgaW50byB0aGUgc2NlbmUuCiAgICAgKi8KICAgIHppbmNPYmplY3RBZGRlZDogZnVuY3Rpb24gKHppbmNPYmplY3QpIHsKICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5hZGRaaW5jT2JqZWN0KHppbmNPYmplY3QsIHppbmNPYmplY3QudXVpZCk7CiAgICAgIHRoaXMuJGVtaXQoInppbmMtb2JqZWN0LWFkZGVkIiwgemluY09iamVjdCk7CiAgICB9LAogICAgLyoqCiAgICAgKiAKICAgICAqLwogICAgYWRkUmVnaW9uc1RvU2VhcmNoSW5kZXg6IGZ1bmN0aW9uICgpIHsKICAgICAgY29uc3Qgcm9vdFJlZ2lvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRSb290UmVnaW9uKCk7CiAgICAgIGNvbnN0IHJlZ2lvbnMgPSByb290UmVnaW9uLmdldENoaWxkUmVnaW9ucyh0cnVlKTsKICAgICAgcmVnaW9ucy5mb3JFYWNoKHJlZ2lvbiA9PiB7CiAgICAgICAgdGhpcy4kX3NlYXJjaEluZGV4LmFkZFJlZ2lvbihyZWdpb24sIHJlZ2lvbi51dWlkKTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIENoYW5nZSBiYWNrZ3NwZWVkcm91bmQgY29sb3VyIGJ1dHRvbgogICAgICogaXMgcHJlc3NlZCBhbiBjYXVzZXMgdGhlIGJhY2tncm91Q29sb3JuZCBjb2xvdXIgdG8gYmUgY2hhbmdlZAogICAgICogdG8gb25lIG9mIHRoZSB0aHJlZSBwcmVzZXQgY29sb3VyOiB3aGl0ZSwgYmxhY2sgYW5kCiAgICAgKiBsaWdodHNreWJsdWUuCiAgICAgKi8KICAgIGJhY2tncm91bmRDaGFuZ2VDYWxsYmFjazogZnVuY3Rpb24gKGNvbG91cikgewogICAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gY29sb3VyOwogICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyCiAgICAgICAgLmdldFRocmVlSlNSZW5kZXJlcigpCiAgICAgICAgLnNldENsZWFyQ29sb3IodGhpcy5jdXJyZW50QmFja2dyb3VuZCwgMSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCBieSBjYXB0dWVlU2NyZWVuc2hvdCBhbmQgYWZ0ZXIgdGhlIGxhc3QgcmVuZGVyCiAgICAgKiBsb29wLCBpdCBkb3dubG9hZCBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgc2NlbmUgd2l0aCBubyBVSS4KICAgICAqLwogICAgY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjazogZnVuY3Rpb24gKCkgewogICAgICAvL1JlbW92ZSB0aGUgY2FsbGJhY2ssIG9ubHkgbmVlZHMgdG8gaGFwcGVuIG9uY2UKICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbigKICAgICAgICB0aGlzLmNhcHR1cmVJRAogICAgICApOwogICAgICBsZXQgc2NyZWVuc2hvdCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIKICAgICAgICAuZ2V0VGhyZWVKU1JlbmRlcmVyKCkKICAgICAgICAuZG9tRWxlbWVudC50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICBsZXQgaHJlZkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGhyZWZFbGVtZW50KTsKICAgICAgaWYgKCF0aGlzLmNhcHR1cmVGaWxlbmFtZSkgaHJlZkVsZW1lbnQuZG93bmxvYWQgPSBgc2NyZWVuc2hvdC5wbmdgOwogICAgICBlbHNlIGhyZWZFbGVtZW50LmRvd25sb2FkID0gdGhpcy5jYXB0dXJlRmlsZW5hbWU7CiAgICAgIGhyZWZFbGVtZW50LmhyZWYgPSBzY3JlZW5zaG90OwogICAgICBocmVmRWxlbWVudC5jbGljaygpOwogICAgICBocmVmRWxlbWVudC5yZW1vdmUoKTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIGZvciBjYXB0dXJpbmcgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHJlbmRlcmluZy4KICAgICAqCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZmlsZW5hbWUgZmlsZW5hbWUgZ2l2ZW4gdG8gdGhlIHNjcmVlbnNob3QuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBjYXB0dXJlU2NyZWVuc2hvdDogZnVuY3Rpb24gKGZpbGVuYW1lKSB7CiAgICAgIHRoaXMuY2FwdHVyZUZpbGVuYW1lID0gZmlsZW5hbWU7CiAgICAgIHRoaXMuY2FwdHVyZUlEID0gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hZGRQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbigKICAgICAgICB0aGlzLmNhcHR1cmVTY3JlZW5zaG90Q2FsbGJhY2sKICAgICAgKTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIGNsZWFyIGN1cnJlbnQgc2NlbmUsIHRoZSB0cmVlIGNvbnRyb2xzIGFuZCB0aGUgc2VhcmNoIGluZGV4LgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgY2xlYXJTY2VuZTogZnVuY3Rpb24gKCkgewogICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNsZWFyKCk7CiAgICAgIGlmICh0aGlzLiRfc2VhcmNoSW5kZXgpIHRoaXMuJF9zZWFyY2hJbmRleC5yZW1vdmVBbGwoKTsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgdGhpcy4kbW9kdWxlLnNjZW5lLmNsZWFyQWxsKCk7CiAgICB9LAogICAgZm9ybWF0VG9vbHRpcCh2YWwpIHsKICAgICAgaWYgKHRoaXMudGltZU1heCA+PSAxMDAwKSB7CiAgICAgICAgaWYgKHZhbCkgewogICAgICAgICAgbGV0IHNlYyA9ICgodmFsICUgNjAwMDApIC8gMTAwMCkudG9GaXhlZCgyKSArICJzIjsKICAgICAgICAgIGxldCBtaW4gPSB2YWwgPiA2MDAwMCA/ICh2YWwgLyA2MDAwMCkudG9GaXhlZCgwKSArICJtICIgOiAiIjsKICAgICAgICAgIHJldHVybiBtaW4gKyBzZWM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB2YWwgPyB2YWwudG9GaXhlZCgyKSArICIgbXMiIDogIjAgbXMiOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gcmVzZXQgdGhlIHZpZXcgdG8gZGVmYXVsdC4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBmaXRXaW5kb3c6IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsKCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHpvb20gaW4uCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgem9vbUluOiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2hhbmdlWm9vbUJ5U2Nyb2xsUmF0ZVVuaXQoLTEpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIG91dC4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICB6b29tT3V0OiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2hhbmdlWm9vbUJ5U2Nyb2xsUmF0ZVVuaXQoMSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIGNoYW5nZSB0aGUgY3VycmVudCBwbGF5IHNwZWVkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc3BlZWRDaGFuZ2VkOiBmdW5jdGlvbiAoc3BlZWQpIHsKICAgICAgdGhpcy5jdXJyZW50U3BlZWQgPSBzcGVlZDsKICAgICAgdGhpcy4kbW9kdWxlLnNldFBsYXlSYXRlKHRoaXMuZGVmYXVsdFJhdGUgKiB0aGlzLmN1cnJlbnRTcGVlZCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIHN0b3AgdGhlIGZyZWUgc3BpbgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc3RvcEZyZWVTcGluOiBmdW5jdGlvbiAoKSB7CiAgICAgIGxldCBjYW1lcmFjb250cm9sID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICBjYW1lcmFjb250cm9sLnN0b3BBdXRvVHVtYmxlKCk7CiAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7CiAgICB9LAogICAgZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lOiBmdW5jdGlvbiAobmFtZSkgewogICAgICBsZXQgb2JqZWN0cyA9IFtdOwogICAgICBpZiAobmFtZSAmJiBuYW1lICE9ICIiICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIG9iamVjdHMgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lKG5hbWUpOwogICAgICB9CiAgICAgIHJldHVybiBvYmplY3RzOwogICAgfSwKICAgIC8qKgogICAgICogRm9jdXMgb24gbmFtZWQgcmVnaW9uCiAgICAgKi8KICAgIHZpZXdSZWdpb246IGZ1bmN0aW9uIChuYW1lcykgewogICAgICBjb25zdCByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsKICAgICAgY29uc3QgZ3JvdXBzID0gQXJyYXkuaXNBcnJheShuYW1lcykgPyBuYW1lcyA6IFtuYW1lc107CiAgICAgIGNvbnN0IG9iamVjdHMgPSBmaW5kT2JqZWN0c1dpdGhOYW1lcyhyb290UmVnaW9uLCBncm91cHMsICIiLCB0cnVlKTsKICAgICAgbGV0IGJveCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRCb3VuZGluZ0JveE9mWmluY09iamVjdHMob2JqZWN0cyk7CiAgICAgIGlmIChib3gpIHsKICAgICAgICBpZiAodGhpcy4kbW9kdWxlLmlzU3luY0NvbnRyb2woKSkgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnNldFN5bmNDb250cm9sWm9vbVRvQm94KGJveCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNvbnN0IGRpc3QgPQogICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLmZhciAtIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEubmVhcjsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsV2l0aEJvdW5kaW5nQm94KGJveCk7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLmZhciA9IHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEubmVhciArIGRpc3Q7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIHNldEZvY3VzZWRSZWdpb246IGZ1bmN0aW9uIChuYW1lKSB7CiAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgewogICAgICAgICAgdGhpcy52aWV3UmVnaW9uKG5hbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjaygKICAgICAgICAgICAgdGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7IHJlZ2lvbjogbmFtZSB9KQogICAgICAgICAgKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB1cGRhdGVWaWV3VVJMOiBmdW5jdGlvbiAodmlld1VSTCkgewogICAgICBpZiAodmlld1VSTCkgewogICAgICAgIGlmICh0aGlzLmlzUmVhZHkpIHsKICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodmlld1VSTCwgdGhpcy51cmwpOwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmxvYWRWaWV3VVJMKHVybCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKAogICAgICAgICAgICB0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsgdmlld1VSTDogdmlld1VSTCB9KQogICAgICAgICAgKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBnZXRSZW5kZXJlckluZm86IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIpIHsKICAgICAgICByZXR1cm4gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5nZXRUaHJlZUpTUmVuZGVyZXIoKS5pbmZvOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIHJvdGF0ZSB0aGUgc2NlbmUuCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZnJlZVNwaW46IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIGxldCBjYW1lcmFjb250cm9sID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTsKICAgICAgICBjYW1lcmFjb250cm9sLmVuYWJsZUF1dG9UdW1ibGUoKTsKICAgICAgICBjYW1lcmFjb250cm9sLmF1dG9UdW1ibGUoWzEuMCwgMC4wXSwgTWF0aC5QSSwgdHJ1ZSk7CiAgICAgICAgc2V0VGltZW91dCh0aGlzLnN0b3BGcmVlU3BpbiwgNDAwMCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gYSByZWdpb24gaXMgc2VsZWN0ZWQvaGlnaGxpZ2h0ZWQuCiAgICAgKiBJdCB3aWxsIGFsc28gdXBkYXRlIG90aGVyIGNvbnRyb2xzLgogICAgICoKICAgICAqLwogICAgZXZlbnROb3RpZmllckNhbGxiYWNrOiBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgY29uc3QgbmFtZXMgPSBbXTsKICAgICAgbGV0IHppbmNPYmplY3RzID0gW107CiAgICAgIGNvbnN0IHJlZ2lvbiA9IHVuZGVmaW5lZDsKICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAxIHx8IGV2ZW50LmV2ZW50VHlwZSA9PSAyKSB7CiAgICAgICAgZXZlbnQuaWRlbnRpZmllcnMuZm9yRWFjaCgoaWRlbnRpZmllcikgPT4gewogICAgICAgICAgaWYgKGlkZW50aWZpZXIpIHsKICAgICAgICAgICAgbGV0IGlkID0gaWRlbnRpZmllci5kYXRhLmlkCiAgICAgICAgICAgICAgPyBpZGVudGlmaWVyLmRhdGEuaWQKICAgICAgICAgICAgICA6IGlkZW50aWZpZXIuZGF0YS5ncm91cDsKICAgICAgICAgICAgbmFtZXMucHVzaChpZCk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgemluY09iamVjdHMgPSBldmVudC56aW5jT2JqZWN0czsKICAgICAgfQogICAgICAvKgogICAgICAgKiBFdmVudCBUeXBlIDE6IFNlbGVjdGVkCiAgICAgICAqIEV2ZW50IFR5cGUgMjogSGlnaGxpZ2h0ZWQKICAgICAgICogRXZlbnQgVHlwZSAxOiBNb3ZlCiAgICAgICAqLwogICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDEpIHsKICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHsKICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIC8vdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2hhbmdlQWN0aXZlQnlOYW1lcyhuYW1lcywgcmVnaW9uLCBmYWxzZSk7CiAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnVwZGF0ZUFjdGl2ZVVJKHppbmNPYmplY3RzKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlQWN0aXZlKHRydWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBUcmlnZ2VycyB3aGVuIGFuIG9iamVjdCBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIHRoaXMuJGVtaXQoInNjYWZmb2xkLXNlbGVjdGVkIiwgZXZlbnQuaWRlbnRpZmllcnMpOwogICAgICB9IGVsc2UgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAyKSB7CiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICAgICAgLy8gY29uc3Qgb2Zmc2V0cyA9IHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHsKICAgICAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAvL3RoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUhvdmVyQnlOYW1lcyhuYW1lcywgcmVnaW9uLCBmYWxzZSk7CiAgICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMudXBkYXRlSG92ZXJVSSh6aW5jT2JqZWN0cyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlSG92ZXIodHJ1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVycy5sZW5ndGggPiAwICYmIGV2ZW50LmlkZW50aWZpZXJzWzBdKSB7CiAgICAgICAgICAgIGxldCBpZCA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuaWQKICAgICAgICAgICAgICA/IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuaWQKICAgICAgICAgICAgICA6IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuZ3JvdXA7CiAgICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMpIHsKICAgICAgICAgICAgICB0aGlzLnREYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgIHRoaXMudERhdGEubGFiZWwgPSBpZDsKICAgICAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5yZWdpb24pCiAgICAgICAgICAgICAgICB0aGlzLnREYXRhLnJlZ2lvbiA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEucmVnaW9uOwogICAgICAgICAgICAgIGVsc2UgdGhpcy50RGF0YS5yZWdpb24gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLng7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIC8vIFRyaWdnZXJzIHdoZW4gYW4gb2JqZWN0IGhhcyBiZWVuIGhpZ2hsaWdodGVkCiAgICAgICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1oaWdobGlnaHRlZCIsIGV2ZW50LmlkZW50aWZpZXJzKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDMpIHsKICAgICAgICAvL01PVkUKICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJiBldmVudC5pZGVudGlmaWVyc1swXSkgewogICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3JkcykgewogICAgICAgICAgICBjb25zdCBvZmZzZXRzID0KICAgICAgICAgICAgICB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICB0aGlzLnREYXRhLnggPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueCAtIG9mZnNldHMubGVmdDsKICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnkgLSBvZmZzZXRzLnRvcDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEdldCB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcmVnaW9uLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZ2V0Q29vcmRpbmF0ZXNPZlNlbGVjdGVkOiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cyAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRPYmplY3RzU2NyZWVuWFkodGhpcy5zZWxlY3RlZE9iamVjdHMpOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9LAogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHdpbmRvdyBjb29yZGluYXRlcyBvZiB0aGUKICAgICAqIGN1cnJlbnQgc2VsZWN0ZWQgcmVnaW9uIHdoaWNoIHdpbGwgYmUgdXBkYXRlZCBhZnRlciBlYWNoIHJlbmRlcgogICAgICogbG9vcC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGdldER5bmFtaWNTZWxlY3RlZENvb3JkaW5hdGVzOiBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2VsZWN0ZWRTY3JlZW5Db29yZGluYXRlczsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gdGltZSBpcyBjaGFuZ2VkIHRocm91Z2ggdGhlIFVJLgogICAgICovCiAgICB0aW1lQ2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgbGV0IG5vcm1hbGl6ZWRUaW1lID0gKGV2ZW50IC8gdGhpcy50aW1lTWF4KSAqIDEwMDsKICAgICAgaWYgKG5vcm1hbGl6ZWRUaW1lICE9IHRoaXMuc2NlbmVEYXRhLmN1cnJlbnRUaW1lKQogICAgICAgIHRoaXMuJG1vZHVsZS51cGRhdGVUaW1lKG5vcm1hbGl6ZWRUaW1lKTsKICAgIH0sCiAgICAvKioKICAgICAqIEEgY2FsbGJhY2sgdXNlZCBieSBjaGlsZHJlbiBjb21wb25lbnRzLiBTZXQgdGhlIHNlbGVjdGVkIHppbmMgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBaaW5jIG9iamVjdAogICAgICovCiAgICBvYmplY3RTZWxlY3RlZDogZnVuY3Rpb24gKG9iamVjdHMsIHByb3BhZ2F0ZSkgewogICAgICB0aGlzLnNlbGVjdGVkT2JqZWN0cyA9IG9iamVjdHM7CiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cyAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy4kcmVmcy5wcmltaXRpdmVDb250cm9scy5zZXRPYmplY3QodGhpcy5zZWxlY3RlZE9iamVjdHNbMF0pOwogICAgICB9CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRTZWxlY3RlZEJ5WmluY09iamVjdHMob2JqZWN0cywgdW5kZWZpbmVkLCBwcm9wYWdhdGUpOwogICAgfSwKICAgIC8qKgogICAgICogQSBjYWxsYmFjayB1c2VkIGJ5IGNoaWxkcmVuIGNvbXBvbmVudHMuIFNldCB0aGUgaGlnaGxpZ2h0ZWQgemluYyBvYmplY3QKICAgICAqCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0CiAgICAgKi8KICAgIG9iamVjdEhvdmVyZWQ6IGZ1bmN0aW9uIChvYmplY3RzLCBwcm9wYWdhdGUpIHsKICAgICAgdGhpcy5ob3ZlcmVkT2JqZWN0cyA9IG9iamVjdHM7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRIaWdobGlnaHRlZEJ5WmluY09iamVjdHMob2JqZWN0cywgdW5kZWZpbmVkLCBwcm9wYWdhdGUpOwogICAgfSwKICAgIC8qKgogICAgICogU2V0IHRoZSBzZWxlY3RlZCBieSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSB7fSBuYW1lIE5hbWUgb2YgdGhlIGdyb3VwCiAgICAgKi8KICAgIGNoYW5nZUFjdGl2ZUJ5TmFtZTogZnVuY3Rpb24gKG5hbWVzLCByZWdpb24sIHByb3BhZ2F0ZSkgewogICAgICBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShuYW1lcyk7CiAgICAgIGlmIChuYW1lcyA9PT0gdW5kZWZpbmVkIHx8IChpc0FycmF5ICYmIG5hbWVzLmxlbmd0aCA9PT0gMCkpIHsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVBY3RpdmUocHJvcGFnYXRlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgYXJyYXkgPSBuYW1lczsKICAgICAgICBpZiAoIWlzQXJyYXkpIGFycmF5ID0gW2FycmF5XTsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VBY3RpdmVCeU5hbWVzKGFycmF5LCByZWdpb24sIHByb3BhZ2F0ZSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIFNldCB0aGUgaGlnaGxpZ2h0ZWQgYnkgbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0ge25hbWV9IG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAKICAgICAqLwogICAgY2hhbmdlSGlnaGxpZ2h0ZWRCeU5hbWU6IGZ1bmN0aW9uIChuYW1lcywgcmVnaW9uLCBwcm9wYWdhdGUpIHsKICAgICAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkobmFtZXMpOwogICAgICBpZiAobmFtZXMgPT09IHVuZGVmaW5lZCB8fCAoaXNBcnJheSAmJiBuYW1lcy5sZW5ndGggPT09IDApKSB7CiAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlSG92ZXIocHJvcGFnYXRlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgYXJyYXkgPSBuYW1lczsKICAgICAgICBpZiAoIWlzQXJyYXkpIGFycmF5ID0gW2FycmF5XTsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VIb3ZlckJ5TmFtZXMoYXJyYXksIHJlZ2lvbiwgcHJvcGFnYXRlKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogU3RhcnQgdGhlIGFuaW1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0CiAgICAgKi8KICAgIHBsYXk6IGZ1bmN0aW9uIChmbGFnKSB7CiAgICAgIHRoaXMuJG1vZHVsZS5wbGF5QW5pbWF0aW9uKGZsYWcpOwogICAgICB0aGlzLmlzUGxheWluZyA9IGZsYWc7CiAgICAgIC8vSGlkZSB0b29sdGlwIGFzIGxvY2F0aW9uIG1heQogICAgICAvL3RoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHRvZ2dsZSBvbi9vZmYgb3ZlcmxheSBoZWxwLgogICAgICovCiAgICBzZXRIZWxwTW9kZTogZnVuY3Rpb24gKGhlbHBNb2RlKSB7CiAgICAgIGlmIChoZWxwTW9kZSkgewogICAgICAgIHRoaXMuaW5IZWxwID0gdHJ1ZTsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmZvckVhY2goKGl0ZW0pID0+IHsKICAgICAgICAgIGl0ZW0udmFsdWUgPSB0cnVlOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaW5IZWxwID0gZmFsc2U7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllcy5mb3JFYWNoKChpdGVtKSA9PiB7CiAgICAgICAgICBpdGVtLnZhbHVlID0gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgYnkgc2hvd1JlZ2lvblRvb2x0aXAgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgdG9vbHRpcAogICAgICogaXMgb3V0IG9mIHZpZXcuCiAgICAgKi8KICAgIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2s6IGZ1bmN0aW9uICgKICAgICAgbmFtZSwKICAgICAgb2JqZWN0cywKICAgICAgcmVnaW9uUGF0aCwKICAgICAgcmVzZXRWaWV3LAogICAgICBsaXZlVXBkYXRlcwogICAgKSB7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpczsKICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICBpbnN0YW5jZS4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbigKICAgICAgICAgIGluc3RhbmNlLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrCiAgICAgICAgKTsKICAgICAgICBpbnN0YW5jZS4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayA9IHVuZGVmaW5lZDsKICAgICAgICBpbnN0YW5jZS5kaXNwbGF5VG9vbHRpcE9mT2JqZWN0cyhuYW1lLCBvYmplY3RzLCByZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKTsKICAgICAgfTsKICAgIH0sCiAgICBsaXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uOiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2VsZWN0ZWRDZW50ZXIpIHsKICAgICAgICB0aGlzLnREYXRhLnggPSB0aGlzLiRtb2R1bGUuc2VsZWN0ZWRTY3JlZW5Db29yZGluYXRlcy54OwogICAgICAgIHRoaXMudERhdGEueSA9IHRoaXMuJG1vZHVsZS5zZWxlY3RlZFNjcmVlbkNvb3JkaW5hdGVzLnk7CiAgICAgIH0KICAgIH0sCiAgICBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0czogZnVuY3Rpb24gKG5hbWUsIG9iamVjdHMsIHJlZ2lvblBhdGgsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgaWYgKG9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgIGxldCBjb29yZHMgPSBvYmplY3RzWzBdLmdldENsb3Nlc3RWZXJ0ZXhET01FbGVtZW50Q29vcmRzKAogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lCiAgICAgICAgKTsKICAgICAgICBpZiAoY29vcmRzKSB7CiAgICAgICAgICAvL1RoZSBjb29yZHMgaXMgbm90IGluIHZpZXcsIHZpZXcgYWxsIGlmIHJlc2V0VmlldyBmbGFnIGlzIHRydWUKICAgICAgICAgIGlmICghY29vcmRzLmluVmlldykgewogICAgICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgICAgIGlmIChyZXNldFZpZXcpIHsKICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUudmlld0FsbCgpOwogICAgICAgICAgICAgIC8vVXNlIHRoZSBwb3N0IHJlbmRlciBjYWxsYmFjayB0byBtYWtlIHN1cmUgdGhlIHNjZW5lIGhhcyBiZWVuIHVwZGF0ZWQKICAgICAgICAgICAgICAvL2JlZm9yZSBnZXR0aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4KICAgICAgICAgICAgICBpZiAodGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjaykgewogICAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbigKICAgICAgICAgICAgICAgICAgdGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjawogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayA9CiAgICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKAogICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2soCiAgICAgICAgICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICAgICAgICBvYmplY3RzLAogICAgICAgICAgICAgICAgICAgIHJlZ2lvblBhdGgsCiAgICAgICAgICAgICAgICAgICAgcmVzZXRWaWV3LAogICAgICAgICAgICAgICAgICAgIGxpdmVVcGRhdGVzCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMudERhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgIHRoaXMudERhdGEubGFiZWwgPSBuYW1lOwogICAgICAgICAgICB0aGlzLnREYXRhLnggPSBjb29yZHMucG9zaXRpb24ueDsKICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gY29vcmRzLnBvc2l0aW9uLnk7CiAgICAgICAgICAgIHRoaXMudERhdGEucmVnaW9uID0gcmVnaW9uUGF0aDsKICAgICAgICAgICAgaWYgKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbigKICAgICAgICAgICAgICAgIHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobGl2ZVVwZGF0ZXMpIHsKICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0dXBMaXZlQ29vcmRpbmF0ZXMob2JqZWN0cyk7CiAgICAgICAgICAgICAgdGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQgPQogICAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hZGRQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbigKICAgICAgICAgICAgICAgICAgdGhpcy5saXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBEaXNwbGF5IHRoZSB0b29sdGlwIHVzZWQgZm9yIGRpc3BsYXlpbmcgc2VhcmNoIHJlc3VsdC4KICAgICAqIFdoZW4gcmVzZXRWaWV3IGlzIHNldCB0byB0cnVlLCBpdCB3aWxsCiAgICAgKiByZXNldCB2aWV3IGlmIHRoZSB0b29sdGlwIGlzIG5vdCBpbiB2aWV3LgogICAgICogU2V0dGluZyBsaXZlVXBkYXRlcyB0byB0cnVlIHdpbGwgdXBkYXRlIHRoZSB0b29sdGlwIGxvY2F0aW9uCiAgICAgKiBhdCBldmVyeSByZW5kZXJpbmcgbG9vcC4KICAgICAqLwogICAgc2hvd1JlZ2lvblRvb2x0aXBXaXRoT2JqZWN0czogZnVuY3Rpb24gKGxhYmVsLCB6aW5jT2JqZWN0cywgcmVnaW9uUGF0aCwgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgewogICAgICBpZiAobGFiZWwgJiYgemluY09iamVjdHMgJiYgemluY09iamVjdHMubGVuZ3RoID4gMCAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5VG9vbHRpcE9mT2JqZWN0cygKICAgICAgICAgIGxhYmVsLAogICAgICAgICAgemluY09iamVjdHMsCiAgICAgICAgICByZWdpb25QYXRoLAogICAgICAgICAgcmVzZXRWaWV3LAogICAgICAgICAgbGl2ZVVwZGF0ZXMKICAgICAgICApOwogICAgICB9CiAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIC8qKgogICAgICogRGlzcGxheSB0aGUgdG9vbHRpcC4gV2hlbiByZXNldFZpZXcgaXMgc2V0IHRvIHRydWUsIGl0IHdpbGwKICAgICAqIHJlc2V0IHZpZXcgaWYgdGhlIHRvb2x0aXAgaXMgbm90IGluIHZpZXcuCiAgICAgKiBTZXR0aW5nIGxpdmVVcGRhdGVzIHRvIHRydWUgd2lsbCB1cGRhdGUgdGhlIHRvb2x0aXAgbG9jYXRpb24KICAgICAqIGF0IGV2ZXJ5IHJlbmRlcmluZyBsb29wLgogICAgICovCiAgICBzaG93UmVnaW9uVG9vbHRpcDogZnVuY3Rpb24gKG5hbWUsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgaWYgKG5hbWUgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgY29uc3Qgcm9vdFJlZ2lvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRSb290UmVnaW9uKCk7CiAgICAgICAgY29uc3QgZ3JvdXBzID0gW25hbWVdOwogICAgICAgIGNvbnN0IG9iamVjdHMgPSBmaW5kT2JqZWN0c1dpdGhOYW1lcyhyb290UmVnaW9uLCBncm91cHMsICIiLCB0cnVlKTsKICAgICAgICBsZXQgcmVnaW9uUGF0aCA9IHVuZGVmaW5lZDsKICAgICAgICBpZiAob2JqZWN0cyAmJiBvYmplY3RzLmxlbmd0aCA+IDApIHsKICAgICAgICAgIHJlZ2lvblBhdGggPSBvYmplY3RzWzBdLmdldFJlZ2lvbigpLmdldEZ1bGxQYXRoKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLnNob3dSZWdpb25Ub29sdGlwV2l0aE9iamVjdHMoCiAgICAgICAgICBuYW1lLAogICAgICAgICAgb2JqZWN0cywKICAgICAgICAgIHJlZ2lvblBhdGgsCiAgICAgICAgICByZXNldFZpZXcsCiAgICAgICAgICBsaXZlVXBkYXRlcwogICAgICAgICk7CiAgICAgIH0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBEaXNwbGF5IHRoZSB0b29sdGlwIHVzaW5nIHRoZSBsaXN0IG9mIGFubm90YXRpb25zLgogICAgICogV2hlbiByZXNldFZpZXcgaXMgc2V0IHRvIHRydWUsIGl0IHdpbGwKICAgICAqIHJlc2V0IHZpZXcgaWYgdGhlIHRvb2x0aXAgaXMgbm90IGluIHZpZXcuCiAgICAgKiBTZXR0aW5nIGxpdmVVcGRhdGVzIHRvIHRydWUgd2lsbCB1cGRhdGUgdGhlIHRvb2x0aXAgbG9jYXRpb24KICAgICAqIGF0IGV2ZXJ5IHJlbmRlcmluZyBsb29wLgogICAgICovCiAgICBzaG93UmVnaW9uVG9vbHRpcFdpdGhBbm5vdGF0aW9uczogZnVuY3Rpb24gKGFubm90YXRpb25zLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRPYmplY3RzRnJvbUFubm90YXRpb25zKHRoaXMuJG1vZHVsZS5zY2VuZSwgYW5ub3RhdGlvbnMpOwogICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lm9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1JlZ2lvblRvb2x0aXBXaXRoT2JqZWN0cygKICAgICAgICAgICAgcmVzdWx0LmxhYmVsLAogICAgICAgICAgICByZXN1bHQub2JqZWN0cywKICAgICAgICAgICAgcmVzdWx0LnJlZ2lvblBhdGgsCiAgICAgICAgICAgIHJlc2V0VmlldywKICAgICAgICAgICAgbGl2ZVVwZGF0ZXMKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIGhpZGVSZWdpb25Ub29sdGlwOiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCkgewogICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24oCiAgICAgICAgICB0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZAogICAgICAgICk7CiAgICAgICAgLy9VbnNldCB0aGUgdHJhY2tpbmcKICAgICAgICB0aGlzLiRtb2R1bGUuc2V0dXBMaXZlQ29vcmRpbmF0ZXModW5kZWZpbmVkKTsKICAgICAgfQogICAgICB0aGlzLnREYXRhLnZpc2libGUgPSBmYWxzZTsKICAgICAgdGhpcy50RGF0YS5yZWdpb24gPSB1bmRlZmluZWQ7CiAgICB9LAogICAgLyoqCiAgICAgKiBTZXQgdGhlIG1hcmtlciBtb2RlcyBmb3Igb2JqZWN0cyB3aXRoIHRoZSBwcm92aWRlZCBuYW1lLCBtb2RlIGNhbgogICAgICogYmUgIm9uIiwgIm9mZiIgb3IgImluaGVyaXRlZCIuCiAgICAgKi8KICAgIHNldE1hcmtlck1vZGVGb3JPYmplY3RzV2l0aE5hbWU6IGZ1bmN0aW9uIChuYW1lLCBtb2RlKSB7CiAgICAgIGlmIChuYW1lICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIGNvbnN0IHJvb3RSZWdpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Um9vdFJlZ2lvbigpOwogICAgICAgIGNvbnN0IGdyb3VwcyA9IFtuYW1lXTsKICAgICAgICBjb25zdCBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7CiAgICAgICAgb2JqZWN0cy5mb3JFYWNoKG9iamVjdCA9PiBvYmplY3Quc2V0TWFya2VyTW9kZShtb2RlKSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIFNldCB0aGUgbWFya2VyIG1vZGVzIGZvciBvYmplY3RzIHNwZWNpZmllZCBieSB0aGUgbGlzdCBvZiBhbm5vdGF0aW9ucwogICAgICovCiAgICBzZXRNYXJrZXJNb2RlV2l0aEFubm90YXRpb25zOiBmdW5jdGlvbiAoYW5ub3RhdGlvbnMsIG1vZGUpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldE9iamVjdHNGcm9tQW5ub3RhdGlvbnModGhpcy4kbW9kdWxlLnNjZW5lLCBhbm5vdGF0aW9ucyk7CiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQub2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICByZXN1bHQub2JqZWN0cy5mb3JFYWNoKG9iamVjdCA9PiBvYmplY3Quc2V0TWFya2VyTW9kZShtb2RlKSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIG1vdXNlIGN1cnNvciBlbnRlcnMgc3VwcG9ydGVkIGVsZW1lbnRzCiAgICAgKiB3aXRoIGhlbHAgdG9vdGx0aXBzLgogICAgICovCiAgICBzaG93SGVscFRleHQ6IGZ1bmN0aW9uIChoZWxwVGV4dE51bWJlcikgewogICAgICBpZiAoIXRoaXMuaW5IZWxwKSB7CiAgICAgICAgdGhpcy5oZWxwVGV4dFdhaXQgPSBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXNbaGVscFRleHROdW1iZXJdLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9LCA1MDApOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIG1vdXNlIGN1cnNvciBleGl0cyBzdXBwb3J0ZWQgZWxlbWVudC4uCiAgICAgKi8KICAgIGhpZGVIZWxwVGV4dDogZnVuY3Rpb24gKGhlbHBUZXh0TnVtYmVyKSB7CiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzW2hlbHBUZXh0TnVtYmVyXS52YWx1ZSA9IGZhbHNlOwogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhlbHBUZXh0V2FpdCk7CiAgICAgIH0KICAgIH0sCiAgICBzZWFyY2g6IGZ1bmN0aW9uICh0ZXh0LCBkaXNwbGF5TGFiZWwpIHsKICAgICAgaWYgKHRoaXMuJF9zZWFyY2hJbmRleCkgewogICAgICAgIGlmICh0ZXh0ID09PSB1bmRlZmluZWQgfHwgdGV4dCA9PT0gIiIgfHwKICAgICAgICAgICgoQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Lmxlbmd0aCA9PT0gMCkpCiAgICAgICAgKSB7CiAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKFtdLCB0cnVlKTsgCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuJF9zZWFyY2hJbmRleC5zZWFyY2hBbmRQcm9jZXNzUmVzdWx0KHRleHQpOwogICAgICAgICAgY29uc3QgemluY09iamVjdHMgPSByZXN1bHQuemluY09iamVjdHM7CiAgICAgICAgICBpZiAoemluY09iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKHppbmNPYmplY3RzLCB0cnVlKTsKICAgICAgICAgICAgaWYgKGRpc3BsYXlMYWJlbCkgewogICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemluY09iamVjdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmICh6aW5jT2JqZWN0c1tpXSAmJiB6aW5jT2JqZWN0c1tpXS5ncm91cE5hbWUpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UmVnaW9uVG9vbHRpcFdpdGhPYmplY3RzKAogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sYWJlbCwKICAgICAgICAgICAgICAgICAgICB6aW5jT2JqZWN0cywKICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVnaW9uUGF0aCwKICAgICAgICAgICAgICAgICAgICB0cnVlLAogICAgICAgICAgICAgICAgICAgIHRydWUKICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKFtdLCB0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIC8qKgogICAgICogR2V0IHRoZSBsaXN0IG9mIHN1Z2dlc3RlZCB0ZXJtcwogICAgICovCiAgICBmZXRjaFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiAodGVybSkgewogICAgICBpZiAodGhpcy4kX3NlYXJjaEluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybiBbXTsKICAgICAgcmV0dXJuIHRoaXMuJF9zZWFyY2hJbmRleC5hdXRvX3N1Z2dlc3QodGVybSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsZWQgd2hlbiBtaW5pbWFwIHNldHRpbmdzIGhhcyBjaGFuZ2VkLiBQYXNzIHRoZQogICAgICogcGFyYW1ldGVycyB0byBaaW5jSlMgYW5kIG1hcmtlZCBpdCBmb3IgdXBkYXRlLgogICAgICovCiAgICB1cGRhdGVNaW5pbWFwU2Npc3NvcjogZnVuY3Rpb24gKCkgewogICAgICBPYmplY3Qua2V5cyh0aGlzLm1pbmltYXBTZXR0aW5ncykuZm9yRWFjaCgoa2V5KSA9PiB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLm1pbmltYXBTY2lzc29yW2tleV0gPSB0aGlzLm1pbmltYXBTZXR0aW5nc1trZXldOwogICAgICB9KTsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLm1pbmltYXBTY2lzc29yLnVwZGF0ZVJlcXVpcmVkID0gdHJ1ZTsKICAgIH0sCiAgICB1cGRhdGVTZXR0aW5nc2Zyb21TY2VuZTogZnVuY3Rpb24gKCkgewogICAgICB0aGlzLmN1cnJlbnRTcGVlZCA9IDE7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRQbGF5UmF0ZSh0aGlzLmRlZmF1bHRSYXRlKTsKICAgICAgdGhpcy5vcmdpbmFsRHVyYXRpb24gPQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRNZXRhZGF0YVRhZygiT3JpZ2luYWxEdXJhdGlvbiIpOwogICAgICB0aGlzLmFuaW1hdGVEdXJhdGlvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRNZXRhZGF0YVRhZygiRHVyYXRpb24iKTsKICAgICAgbGV0IHRpbWVTdGFtcHMgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0TWV0YWRhdGFUYWcoIlRpbWVTdGFtcHMiKTsKICAgICAgdGhpcy50aW1lU3RhbXBzID0ge307CiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRpbWVTdGFtcHMpIHsKICAgICAgICB0aGlzLnRpbWVTdGFtcHNbdGltZVN0YW1wc1trZXldXSA9IGtleTsKICAgICAgfQogICAgICB0aGlzLnRpbWVNYXggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0RHVyYXRpb24oKTsKICAgIH0sCiAgICBzZXRVUkxGaW5pc2hDYWxsYmFjazogZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgcmV0dXJuICgpID0+IHsKICAgICAgICBpZiAob3B0aW9ucykgewogICAgICAgICAgaWYgKG9wdGlvbnMudmlld3BvcnQpIHsKICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lCiAgICAgICAgICAgICAgLmdldFppbmNDYW1lcmFDb250cm9scygpCiAgICAgICAgICAgICAgLnNldEN1cnJlbnRDYW1lcmFTZXR0aW5ncyhvcHRpb25zLnZpZXdwb3J0KTsKICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy52aWV3VVJMICYmIG9wdGlvbnMudmlld1VSTCAhPT0gIiIpIHsKICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChvcHRpb25zLnZpZXdVUkwsIHRoaXMudXJsKTsKICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmxvYWRWaWV3VVJMKHVybCk7CiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMucmVnaW9uICYmIG9wdGlvbnMucmVnaW9uICE9PSAiIikgewogICAgICAgICAgICB0aGlzLnZpZXdSZWdpb24ob3B0aW9ucy5yZWdpb24pOwogICAgICAgICAgfQogICAgICAgICAgaWYgKG9wdGlvbnMudmlzaWJpbGl0eSkgewogICAgICAgICAgICAvLyBTb21lIFVJcyBtYXkgbm90IGJlIHJlYWR5IGF0IHRoaXMgdGltZS4KICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gewogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKG9wdGlvbnMudmlzaWJpbGl0eSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lKCk7CiAgICAgICAgdGhpcy4kbW9kdWxlLnVwZGF0ZVRpbWUoMC4wMSk7CiAgICAgICAgdGhpcy4kbW9kdWxlLnVwZGF0ZVRpbWUoMCk7CiAgICAgICAgdGhpcy4kbW9kdWxlLnVuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjaygpOwogICAgICAgIHRoaXMuYWRkUmVnaW9uc1RvU2VhcmNoSW5kZXgoKTsKICAgICAgICB0aGlzLiRlbWl0KCJvbi1yZWFkeSIpOwogICAgICAgIHRoaXMuc2V0TWFya2VycygpOwogICAgICAgIHRoaXMuaXNSZWFkeSA9IHRydWU7CiAgICAgIH07CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciBnZXR0aW5nIHRoZSBjdXJyZW50IHN0YXRlcyBvZiB0aGUgc2NlbmUuIFRoaXMgZXhwb3J0ZWQgc3RhdGVzCiAgICAgKiBjYW4gYmUgaW1wb3J0ZWQgdXNpbmcgdGhlIGltcG9ydFN0YXRlcyBtZXRob2QuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBnZXRTdGF0ZTogZnVuY3Rpb24gKCkgewogICAgICBsZXQgc3RhdGUgPSB7CiAgICAgICAgZm9ybWF0OiB0aGlzLmZpbGVGb3JtYXQsCiAgICAgICAgdXJsOiB0aGlzLl9jdXJyZW50VVJMLAogICAgICAgIHZpZXdwb3J0OiB1bmRlZmluZWQsCiAgICAgICAgdmlzaWJpbGl0eTogdW5kZWZpbmVkLAogICAgICB9OwogICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpCiAgICAgICAgc3RhdGUudmlzaWJpbGl0eSA9IHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmdldFN0YXRlKCk7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICBsZXQgemluY0NhbWVyYUNvbnRyb2xzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICAgIHN0YXRlLnZpZXdwb3J0ID0gemluY0NhbWVyYUNvbnRyb2xzLmdldEN1cnJlbnRWaWV3cG9ydCgpOwogICAgICB9CiAgICAgIHJldHVybiBzdGF0ZTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIGltcG9ydGluZyB0aGUgc3RhdGVzIG9mIHRoZSBzY2VuZS4gVGhpcyBleHBvcnRlZCBzdGF0ZXMKICAgICAqIGNhbiBiZSBpbXBvcnRlZCB1c2luZyB0aGUgcmVhZCBzdGF0ZXMgbWV0aG9kLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc2V0U3RhdGU6IGZ1bmN0aW9uIChzdGF0ZSkgewogICAgICBpZiAoc3RhdGUpIHsKICAgICAgICBpZiAoc3RhdGUudXJsICYmIHN0YXRlLnVybCAhPT0gdGhpcy5fY3VycmVudFVSTCkgewogICAgICAgICAgdGhpcy5zZXRVUkxBbmRTdGF0ZShzdGF0ZS51cmwsIHsKICAgICAgICAgICAgZmlsZUZvcm1hdDogc3RhdGUuZmlsZUZvcm1hdCwKICAgICAgICAgICAgdmlld3BvcnQ6IHN0YXRlLnZpZXdwb3J0LAogICAgICAgICAgICB2aXNpYmlsaXR5OiBzdGF0ZS52aXNpYmlsaXR5LAogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCB8fCBzdGF0ZS52aXNpYmlsaXR5KSB7CiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgICAgICAgaWYgKHN0YXRlLnZpZXdwb3J0KQogICAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lCiAgICAgICAgICAgICAgICAgIC5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKQogICAgICAgICAgICAgICAgICAuc2V0Q3VycmVudENhbWVyYVNldHRpbmdzKHN0YXRlLnZpZXdwb3J0KTsKICAgICAgICAgICAgICBpZiAoc3RhdGUudmlzaWJpbGl0eSkKICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKHN0YXRlLnZpc2liaWxpdHkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKAogICAgICAgICAgICAgICAgdGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7CiAgICAgICAgICAgICAgICAgIHZpZXdwb3J0OiBzdGF0ZS52aWV3cG9ydCwKICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogc3RhdGUudmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGV4cG9ydEdMVEY6IGZ1bmN0aW9uIChiaW5hcnkpIHsKICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zY2VuZS5leHBvcnRHTFRGKGJpbmFyeSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciByZWFkaW5nIGluIG5ldyBzY2FmZm9sZCBtZXRhZGF0YSBhbmQgYSBjdXN0b20KICAgICAqIHZpZXdwb3J0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHRoZSBzdGF0ZSBwcm9wIGFuZAogICAgICogcmVhZCBpbiB0aGUgbmV3IHVybC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHNldFVSTEFuZFN0YXRlOiBmdW5jdGlvbiAobmV3VmFsdWUsIHN0YXRlKSB7CiAgICAgIGlmIChuZXdWYWx1ZSAhPSB0aGlzLl9jdXJyZW50VVJMKSB7CiAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLmZvcm1hdCkgdGhpcy5maWxlRm9ybWF0ID0gc3RhdGUuZm9ybWF0OwogICAgICAgIGxldCB2aWV3cG9ydCA9IHN0YXRlICYmIHN0YXRlLnZpZXdwb3J0ID8gc3RhdGUudmlld3BvcnQgOiB1bmRlZmluZWQ7CiAgICAgICAgbGV0IHZpc2liaWxpdHkgPQogICAgICAgICAgc3RhdGUgJiYgc3RhdGUudmlzaWJpbGl0eSA/IHN0YXRlLnZpc2liaWxpdHkgOiB1bmRlZmluZWQ7CiAgICAgICAgdGhpcy5fY3VycmVudFVSTCA9IG5ld1ZhbHVlOwogICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2xlYXIoKTsKICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICAgIHRoaXMuaXNSZWFkeSA9IGZhbHNlOwogICAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5yZW1vdmVBbGwoKTsKICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2soCiAgICAgICAgICB0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgICAgdmlld3BvcnQ6IHZpZXdwb3J0LAogICAgICAgICAgICByZWdpb246IHRoaXMucmVnaW9uLAogICAgICAgICAgICB2aWV3VVJMOiB0aGlzLnZpZXdVUkwsCiAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHksCiAgICAgICAgICB9KQogICAgICAgICk7CiAgICAgICAgaWYgKHRoaXMuZmlsZUZvcm1hdCA9PT0gImdsdGYiKSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUubG9hZEdMVEZGcm9tVVJMKG5ld1ZhbHVlLCAic2NlbmUiLCB0cnVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kbW9kdWxlLmxvYWRPcmdhbnNGcm9tVVJMKAogICAgICAgICAgICBuZXdWYWx1ZSwKICAgICAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICAgICB1bmRlZmluZWQsCiAgICAgICAgICAgICJzY2VuZSIsCiAgICAgICAgICAgIHVuZGVmaW5lZCwKICAgICAgICAgICAgdHJ1ZQogICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNYXJrZXJzID0gdGhpcy5kaXNwbGF5TWFya2VyczsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZm9yY2VQaWNrYWJsZU9iamVjdHNVcGRhdGUgPSB0cnVlOwogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWluaW1hcCA9IHRoaXMuZGlzcGxheU1pbmltYXA7CiAgICAgICAgdGhpcy51cGRhdGVNaW5pbWFwU2Npc3NvcigpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciByZWFkaW5nIGluIG5ldyBzY2FmZm9sZCBtZXRhZGF0YS4gVGhpcyBmdW5jdGlvbiB3aWxsIGlnbm9yZQogICAgICogdGhlIHN0YXRlIHByb3AgYW5kIHJlYWQgaW4gdGhlIG5ldyB1cmwuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzZXRVUkw6IGZ1bmN0aW9uIChuZXdWYWx1ZSkgewogICAgICB0aGlzLnNldFVSTEFuZFN0YXRlKG5ld1ZhbHVlLCB1bmRlZmluZWQpOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgd2hlbiBkcmF3ZXIgaXMgdG9nZ2xlZC4KICAgICAqLwogICAgZHJhd2VyVG9nZ2xlZDogZnVuY3Rpb24gKGZsYWcpIHsKICAgICAgdGhpcy5kcmF3ZXJPcGVuID0gZmxhZzsKICAgICAgdGhpcy5hZGp1c3RMYXlvdXQoKTsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHVzaW5nIFJlc2l6ZU9ic2VydmVyLgogICAgICovCiAgICBhZGp1c3RMYXlvdXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgbGV0IHdpZHRoID0gdGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lci5jbGllbnRXaWR0aDsKICAgICAgdGhpcy5taW5pbWlzZWRTbGlkZXIgPSB3aWR0aCA8IDgxMjsKICAgICAgaWYgKHRoaXMubWluaW1pc2VkU2xpZGVyKSB7CiAgICAgICAgdGhpcy5zbGlkZXJQb3NpdGlvbiA9IHRoaXMuZHJhd2VyT3BlbiA/ICJyaWdodCIgOiAibGVmdCI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5zbGlkZXJQb3NpdGlvbiA9ICIiOwogICAgICB9CiAgICB9LAogICAgdG9nZ2xlUmVuZGVyaW5nOiBmdW5jdGlvbiAoZmxhZykgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcikgewogICAgICAgIGlmIChmbGFnKSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFuaW1hdGUoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5zdG9wQW5pbWF0ZSgpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGZvcmNlUmVzaXplOiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5vbldpbmRvd1Jlc2l6ZSgpOwogICAgICB9CiAgICB9LAogICAgc3luY0NvbnRyb2xDYWxsYmFjazogZnVuY3Rpb24gKCkgewogICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy4kbW9kdWxlLk5EQ0NhbWVyYUNvbnRyb2wuZ2V0UGFuWm9vbSgpOwogICAgICBpZiAodGhpcy50RGF0YS52aXNpYmxlKSB7CiAgICAgICAgdGhpcy5zaG93UmVnaW9uVG9vbHRpcCh0aGlzLnREYXRhLmxhYmVsLCB0cnVlLCB0cnVlKTsKICAgICAgfQogICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1uYXZpZ2F0ZWQiLCBwYXlsb2FkKTsKICAgIH0sCiAgICAvKioKICAgICAqIFJvdGF0ZSBtb2RlIC0gIm5vbmUiLCAiaG9yaXpvbnRhbCIsICJ2ZXJ0aWNhbCIsICJmcmVlIiBidXQKICAgICAqIGl0IHdpbGwgYmUgaWdub3JlZCBpZiBmbGFnIGlzIHNldCB0byBmYWxzZS4KICAgICAqLwogICAgdG9nZ2xlU3luY0NvbnRyb2w6IGZ1bmN0aW9uIChmbGFnLCByb3RhdGVNb2RlKSB7CiAgICAgIHRoaXMuJG1vZHVsZS50b2dnbGVTeW5jQ29udHJvbChmbGFnLCByb3RhdGVNb2RlKTsKICAgICAgdGhpcy4kbW9kdWxlLnNldFN5bmNDb250cm9sQ2FsbGJhY2sodGhpcy5zeW5jQ29udHJvbENhbGxiYWNrKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG1hcmtlcnMgZm9yIHRoZSBzY2VuZS4KICAgICAqLwogICAgc2V0TWFya2VyczogZnVuY3Rpb24gKCkgewogICAgICB0aGlzLm1hcmtlckxhYmVscy5mb3JFYWNoKChsKT0+ewogICAgICAgIHRoaXMuc2V0TWFya2VyTW9kZUZvck9iamVjdHNXaXRoTmFtZShsLCAib24iKTsKICAgICAgfSkKICAgIH0sCiAgfSwKfTsK"},{"version":3,"sources":["ScaffoldVuer.vue"],"names":[],"mappings":";AAuTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"ScaffoldVuer.vue","sourceRoot":"node_modules/@abi-software/scaffoldvuer/src/components","sourcesContent":["\n\n\n\n\n\n\n\n"]}]}