@kepler.gl/reducers 3.3.0-alpha.10 → 3.3.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/combined-updaters.js +1 -1
- package/dist/cjs/layer-utils.js +15 -7
- package/dist/cjs/map-state-updaters.js +1 -1
- package/dist/cjs/map-style-updaters.js +4 -5
- package/dist/cjs/merger-handler.js +2 -2
- package/dist/cjs/middleware.js +4 -6
- package/dist/cjs/provider-state-updaters.js +15 -16
- package/dist/cjs/root.js +2 -2
- package/dist/cjs/vis-state-merger.js +68 -26
- package/dist/cjs/vis-state-selectors.js +26 -8
- package/dist/cjs/vis-state-updaters.js +233 -167
- package/dist/esm/combined-updaters.js +1 -1
- package/dist/esm/layer-utils.js +15 -7
- package/dist/esm/map-state-updaters.js +1 -1
- package/dist/esm/map-style-updaters.js +2 -2
- package/dist/esm/merger-handler.js +2 -2
- package/dist/esm/middleware.js +4 -6
- package/dist/esm/provider-state-updaters.js +4 -4
- package/dist/esm/root.js +2 -2
- package/dist/esm/vis-state-merger.js +64 -23
- package/dist/esm/vis-state-selectors.js +25 -7
- package/dist/esm/vis-state-updaters.js +229 -162
- package/dist/layer-utils.d.ts +1 -0
- package/dist/middleware.d.ts +2 -2
- package/dist/root.d.ts +1 -1
- package/dist/vis-state-selectors.d.ts +53 -6
- package/dist/vis-state-updaters.d.ts +4 -3
- package/package.json +16 -17
|
@@ -655,4 +655,4 @@ function updateViewport(originalViewport, viewportUpdates) {
|
|
|
655
655
|
}
|
|
656
656
|
return newViewport;
|
|
657
657
|
}
|
|
658
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwiZXhwb3J0cyIsInBpdGNoIiwiYmVhcmluZyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsImRyYWdSb3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsIm1pblpvb20iLCJ1bmRlZmluZWQiLCJtYXhab29tIiwibWF4UGl0Y2giLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwibWFwVmlld01vZGUiLCJNYXBWaWV3TW9kZSIsIk1PREVfMkQiLCJnbG9iZSIsImVuYWJsZWQiLCJjb25maWciLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsIm1hcFNwbGl0TW9kZSIsIk1hcFNwbGl0TW9kZSIsIlNJTkdMRV9NQVAiLCJzd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2FjdGlvbiRwYXlsb2FkIiwicGF5bG9hZCIsImlucHV0Vmlld3BvcnQiLCJ2aWV3cG9ydCIsIl9hY3Rpb24kcGF5bG9hZCRtYXBJbiIsIm1hcEluZGV4IiwidmFsaWRhdGVWaWV3UG9ydCIsInVwZGF0ZVZpZXdwb3J0Iiwib3RoZXJWaWV3cG9ydE1hcEluZGV4IiwibWFwIiwiY3VycmVudFZpZXdwb3J0IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiZml0Qm91bmRzVXBkYXRlciIsIl9hY3Rpb24kbWV0YSIsIl9zdGF0ZSRnbG9iZSIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsInBhZGRpbmciLCJtZXRhIiwiaXNHbG9iZU1vZGUiLCJCb29sZWFuIiwiTWF0aCIsIm1pbiIsIm1heCIsIkdMT0JFX01JTl9aT09NIiwiR0xPQkVfTUFYX1pPT00iLCJuZXdTdGF0ZSIsImNlbnRlciIsInRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciIsIl9zdGF0ZSRnbG9iZTIiLCJ3YXNHbG9iZUVuYWJsZWQiLCJNT0RFXzNEIiwic2V0TWFwVmlld01vZGVVcGRhdGVyIiwiX3N0YXRlJGdsb2JlMyIsIm5leHRTdGF0ZSIsIk1PREVfR0xPQkUiLCJnbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYiLCJfcmVmJHBheWxvYWQiLCJfcmVmJHBheWxvYWQkY29uZmlnIiwiX3JlZiRwYXlsb2FkJG9wdGlvbnMiLCJvcHRpb25zIiwiX3JlZiRwYXlsb2FkJGJvdW5kcyIsImJvdW5kcyIsIm1hcFN0YXRlIiwibWVyZ2VkU3RhdGUiLCJkZWVwbWVyZ2UiLCJhcnJheU1lcmdlIiwiX2Rlc3RpbmF0aW9uQXJyYXkiLCJzb3VyY2VBcnJheSIsImNlbnRlck1hcCIsImdldE1hcERpbUZvclNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiRFVBTF9NQVAiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwicHJldk1vZGUiLCJTV0lQRV9DT01QQVJFIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIiLCJwZXJjZW50YWdlIiwiY2xhbXBlZCIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJiYm94UG9seWdvbiIsIm5ld1N0YXRlTWF4Qm91bmRzIiwibWF4Qm91bmRzUG9seWdvbiIsImhhc01heEJvdW5kc0NoYW5nZWQiLCJldmVyeSIsInZhbCIsImlkeCIsImJvb2xlYW5XaXRoaW4iLCJfZml0Qm91bmRzIiwiZml0Qm91bmRzIiwicGljayIsImRlZmluZWRQcm9wcyIsIm9iaiIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2N1IiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsImsiLCJvcmlnaW5hbFZpZXdwb3J0Iiwidmlld3BvcnRVcGRhdGVzIiwiX2dsb2JlIiwibmV3Vmlld3BvcnQiLCJpc0dsb2JlIiwiX25ld1ZpZXdwb3J0JGxhdGl0dWRlIiwiR0xPQkVfTUFYX0xBVElUVURFIiwiem9vbUFkanVzdG1lbnQiLCJsb2cyIiwiY29zIiwiUEkiLCJ2YWxpZGF0ZUJvdW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAtc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGdlb1ZpZXdwb3J0IGZyb20gJ0BtYXBib3gvZ2VvLXZpZXdwb3J0JztcbmltcG9ydCB7Ym9vbGVhbldpdGhpbn0gZnJvbSAnQHR1cmYvYm9vbGVhbi13aXRoaW4nO1xuaW1wb3J0IHtiYm94UG9seWdvbn0gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7Zml0Qm91bmRzfSBmcm9tICdAbWF0aC5nbC93ZWItbWVyY2F0b3InO1xuaW1wb3J0IGRlZXBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnO1xuaW1wb3J0IHBpY2sgZnJvbSAnZXMtdG9vbGtpdC9jb21wYXQvcGljayc7XG5cbmltcG9ydCB7XG4gIGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzLFxuICB2YWxpZGF0ZUJvdW5kcyxcbiAgTUFQQk9YX1RJTEVfU0laRSxcbiAgdmFsaWRhdGVWaWV3UG9ydFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7TWFwU3RhdGVBY3Rpb25zLCBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZCwgQWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01hcFN0YXRlLCBCb3VuZHMsIFZpZXdwb3J0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7TWFwU3BsaXRNb2RlLCBNYXBWaWV3TW9kZSwgREVGQVVMVF9HTE9CRV9DT05GSUcsIEdMT0JFX01JTl9aT09NLCBHTE9CRV9NQVhfWk9PTSwgR0xPQkVfTUFYX0xBVElUVURFfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGBtYXBTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHttYXBTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3RhdGU6IG1hcFN0YXRlVXBkYXRlcnMuZml0Qm91bmRzVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3RhdGUsIHtwYXlsb2FkOiBbMTI3LjM0LCAzMS4wOSwgMTI3LjU2LCAzMS41OV1dfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYXBTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCBgbWFwU3RhdGVgXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcGl0Y2ggRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgYmVhcmluZyBEZWZhdWx0OiBgMGBcbiAqIEBwcm9wZXJ0eSBsYXRpdHVkZSBEZWZhdWx0OiBgMzcuNzUwNDNgXG4gKiBAcHJvcGVydHkgbG9uZ2l0dWRlIERlZmF1bHQ6IGAtMTIyLjM0Njc5YFxuICogQHByb3BlcnR5IHpvb20gRGVmYXVsdDogYDlgXG4gKiBAcHJvcGVydHkgZHJhZ1JvdGF0ZSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgd2lkdGggRGVmYXVsdDogYDgwMGBcbiAqIEBwcm9wZXJ0eSBoZWlnaHQgRGVmYXVsdDogYDgwMGBcbiAqIEBwcm9wZXJ0eSBtaW5ab29tOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBtYXhab29tOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBtYXhQaXRjaDogYHVuZGVmaW5lZGAgKGRlZmF1bHRzIHRvIGFwcGxpY2F0aW9uIGNvbmZpZyB2YWx1ZSwgZGVjay5nbCBkZWZhdWx0IGlzIDYwKVxuICogQHByb3BlcnR5IG1heEJvdW5kczogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgaXNTcGxpdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBpc1ZpZXdwb3J0U3luY2VkOiBgdHJ1ZWAsXG4gKiBAcHJvcGVydHkgaXNab29tTG9ja2VkOiBgZmFsc2VgLFxuICogQHByb3BlcnR5IHNwbGl0TWFwVmlld3BvcnRzOiBgW11gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX01BUF9TVEFURTogTWFwU3RhdGUgPSB7XG4gIHBpdGNoOiAwLFxuICBiZWFyaW5nOiAwLFxuICBsYXRpdHVkZTogMzcuNzUwNDMsXG4gIGxvbmdpdHVkZTogLTEyMi4zNDY3OSxcbiAgem9vbTogOSxcbiAgZHJhZ1JvdGF0ZTogZmFsc2UsXG4gIHdpZHRoOiA4MDAsXG4gIGhlaWdodDogODAwLFxuICBtaW5ab29tOiB1bmRlZmluZWQsXG4gIG1heFpvb206IHVuZGVmaW5lZCxcbiAgbWF4UGl0Y2g6IHVuZGVmaW5lZCxcbiAgbWF4Qm91bmRzOiB1bmRlZmluZWQsXG4gIGlzU3BsaXQ6IGZhbHNlLFxuICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICBzcGxpdE1hcFZpZXdwb3J0czogW10sXG4gIG1hcFZpZXdNb2RlOiBNYXBWaWV3TW9kZS5NT0RFXzJELFxuICBnbG9iZToge1xuICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIGNvbmZpZzogREVGQVVMVF9HTE9CRV9DT05GSUdcbiAgfSxcbiAgbWFwU3BsaXRNb2RlOiBNYXBTcGxpdE1vZGUuU0lOR0xFX01BUCxcbiAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogNTBcbn07XG5cbi8qIFVwZGF0ZXJzICovXG4vKipcbiAqIFVwZGF0ZSBtYXAgdmlld3BvcnRcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVNYXBVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlVwZGF0ZU1hcFVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge3ZpZXdwb3J0OiBpbnB1dFZpZXdwb3J0LCBtYXBJbmRleCA9IDB9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IHZpZXdwb3J0ID0gdmFsaWRhdGVWaWV3UG9ydChpbnB1dFZpZXdwb3J0KTtcblxuICBpZiAoc3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIFRoZSBgdXBkYXRlVmlld3BvcnRgIGZ1bmN0aW9uIGlzIHR5cGVkIGFzIChWaWV3cG9ydCwgVmlld3BvcnQpIC0+IFZpZXdwb3J0IGJ1dCBoZXJlIHRoZVxuICAgIC8vIGV4cGVjdGVkIHR5cGluZyBpcyAoTWFwU3RhdGUsIFZpZXdwb3J0KSAtPiBNYXBTdGF0ZS5cbiAgICAvLyB0aGlzIGNvdWxkIGJlIGEgcG90ZW50aWFsIGJ1ZyBhcyB3ZSB0cmVhdCBWaWV3cG9ydCBhbmQgTWFwU3RhdGUgYXMgZXF1YWwgc2VlbWluZ2x5XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoc3RhdGUsIHZpZXdwb3J0KTtcbiAgfVxuXG4gIGxldCBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSAtMTtcbiAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBzdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgIGlmIChpID09PSBtYXBJbmRleCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBtYXRjaGluZyB2aWV3cG9ydCB3aXRoIHRoZSBuZXdWaWV3cG9ydCBpbmZvIGluIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KGN1cnJlbnRWaWV3cG9ydCwgdmlld3BvcnQpO1xuICAgIH1cblxuICAgIG90aGVyVmlld3BvcnRNYXBJbmRleCA9IGk7XG4gICAgLy8gbWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCAoeWV0KVxuICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gIH0pO1xuXG4gIC8vIG1ha2UgY29uZGl0aW9uYWwgdXBkYXRlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgbm90IG1hdGNoaW5nIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgaWYgKE51bWJlci5pc0Zpbml0ZShvdGhlclZpZXdwb3J0TWFwSW5kZXgpICYmIG90aGVyVmlld3BvcnRNYXBJbmRleCA+IC0xKSB7XG4gICAgLy8gd2lkdGggYW5kIGhlaWdodCBhcmUgYSBzcGVjaWFsIGNhc2UgYW5kIGFyZSBhbHdheXMgdXBkYXRlZFxuICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgd2lkdGg6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS53aWR0aCxcbiAgICAgIGhlaWdodDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLmhlaWdodFxuICAgIH07XG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG90aGVyIHZpZXdwb3J0IHdpdGggdGhlIG5ldyB6b29tIGZyb20gdGhlIHNwbGl0IHZpZXdwb3J0IHRoYXQgd2FzIHVwZGF0ZWQgd2l0aCB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gICAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgICB6b29tOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uem9vbVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIHVwZGF0ZSB0aGUgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdpdGggdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHNwbGl0IHZpZXdwb3J0XG4gICAgLy8gV0hZPyB0aGlzIGF2b2lkcyB6b29tIGFuZCBib3VuZHMgXCJqdW1waW5nXCIgZHVlIHRvIGEgXCJzdGFsZVwiIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aGVuOlxuICAgIC8vICAxLiB0b2dnbGluZyBvZmYgdGhlIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlIHRvIHN3aXRjaCB0byB0aGUgc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLy8gIDIuIHRvZ2dsaW5nIG9uIHRoZSB6b29tIGxvY2sgZHVyaW5nIGFuIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLi4uc3RhdGUsXG4gICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLFxuICAgIC8vIHVwZGF0ZSB0aGUgbWFwU3RhdGUgd2l0aCB0aGUgbmV3IGFycmF5IG9mIHNwbGl0IHZpZXdwb3J0c1xuICAgIHNwbGl0TWFwVmlld3BvcnRzXG4gIH07XG59O1xuXG4vKipcbiAqIEZpdCBtYXAgdmlld3BvcnQgdG8gYm91bmRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZml0Qm91bmRzVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5GaXRCb3VuZHNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhhY3Rpb24ucGF5bG9hZCwge1xuICAgIHdpZHRoOiBzdGF0ZS53aWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLmhlaWdodCxcbiAgICBwYWRkaW5nOiBhY3Rpb24ubWV0YT8ucGFkZGluZ1xuICB9KTtcbiAgaWYgKCFjZW50ZXJBbmRab29tKSB7XG4gICAgLy8gYm91bmRzIGlzIGludmFsaWRcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBJbiBnbG9iZSBtb2RlLCBjbGFtcCB6b29tIHRvIGdsb2JlJ3MgYWxsb3dlZCByYW5nZVxuICBjb25zdCBpc0dsb2JlTW9kZSA9IEJvb2xlYW4oc3RhdGUuZ2xvYmU/LmVuYWJsZWQpO1xuICBjb25zdCB6b29tID0gTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSlcbiAgICA/IGlzR2xvYmVNb2RlXG4gICAgICA/IE1hdGgubWluKE1hdGgubWF4KGNlbnRlckFuZFpvb20uem9vbSwgR0xPQkVfTUlOX1pPT00pLCBHTE9CRV9NQVhfWk9PTSlcbiAgICAgIDogY2VudGVyQW5kWm9vbS56b29tXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF0aXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzFdLFxuICAgIGxvbmdpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMF0sXG4gICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgLi4uKHpvb20gIT09IHVuZGVmaW5lZCA/IHt6b29tfSA6IHt9KVxuICB9O1xuXG4gIC8vIGlmIGZpdHRpbmcgdG8gYm91bmRzIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYW5kIHpvb20gdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgbGF0aXR1ZGU6IG5ld1N0YXRlLmxhdGl0dWRlLFxuICAgICAgbG9uZ2l0dWRlOiBuZXdTdGF0ZS5sb25naXR1ZGUsXG4gICAgICB6b29tOiBuZXdTdGF0ZS56b29tXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiAzZCBhbmQgMmQgbWFwLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiB7XG4gIC8vIE9ubHkgZHJvcCBtaW4vbWF4Wm9vbSB3aGVuIHdlJ3JlIGFjdHVhbGx5IGxlYXZpbmcgZ2xvYmUgbW9kZSwgd2hlcmUgdGhvc2VcbiAgLy8gYm91bmRzIGFyZSBzZXQgdG8gZ2xvYmUtb25seSB2YWx1ZXMuIElmIGdsb2JlIHdhcyBuZXZlciBlbmFibGVkIHRoZXNlIGFyZVxuICAvLyB0aGUgYXBwJ3Mgb3duIGN1c3RvbSBib3VuZHMgYW5kIG11c3QgYmUgcHJlc2VydmVkLlxuICBjb25zdCB3YXNHbG9iZUVuYWJsZWQgPSBCb29sZWFuKHN0YXRlLmdsb2JlPy5lbmFibGVkKTtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi57XG4gICAgICBwaXRjaDogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiA1MCxcbiAgICAgIGJlYXJpbmc6IHN0YXRlLmRyYWdSb3RhdGUgPyAwIDogMjRcbiAgICB9LFxuICAgIGRyYWdSb3RhdGU6ICFzdGF0ZS5kcmFnUm90YXRlLFxuICAgIG1hcFZpZXdNb2RlOiBzdGF0ZS5kcmFnUm90YXRlID8gTWFwVmlld01vZGUuTU9ERV8yRCA6IE1hcFZpZXdNb2RlLk1PREVfM0QsXG4gICAgZ2xvYmU6IHsuLi5zdGF0ZS5nbG9iZSEsIGVuYWJsZWQ6IGZhbHNlfSxcbiAgICAvLyBMZWF2aW5nIGdsb2JlIG1vZGU6IGRyb3AgZ2xvYmUtb25seSB6b29tIGJvdW5kcyBzbyB0aGUgZmxhdCBtYXAgKGFuZFxuICAgIC8vIGNvbnN1bWVycyBvZiBtYXBTdGF0ZSBzdWNoIGFzIHZpZGVvIGV4cG9ydCkgYXJlbid0IGxlZnQgY2xhbXBlZC4gV2hlblxuICAgIC8vIGdsb2JlIHdhcyBuZXZlciBvbiwga2VlcCB3aGF0ZXZlciBtaW4vbWF4Wm9vbSB0aGUgYXBwIGNvbmZpZ3VyZWQuXG4gICAgLi4uKHdhc0dsb2JlRW5hYmxlZCA/IHttaW5ab29tOiB1bmRlZmluZWQsIG1heFpvb206IHVuZGVmaW5lZH0gOiB7fSlcbiAgfTtcblxuICAvLyBpZiB0b2dnbGluZyAzZCBhbmQgMmQgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBwaXRjaCwgYmVhcmluZywgYW5kIGRyYWdSb3RhdGUgdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgcGl0Y2g6IG5ld1N0YXRlLnBpdGNoLFxuICAgICAgYmVhcmluZzogbmV3U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5ld1N0YXRlLmRyYWdSb3RhdGVcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFNldCBtYXAgdmlldyBtb2RlICgyRCwgM0QsIEdsb2JlKVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcFZpZXdNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5TZXRNYXBWaWV3TW9kZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge21hcFZpZXdNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBsZXQgbmV4dFN0YXRlOiBNYXBTdGF0ZTtcblxuICAvLyBPbmx5IGNsZWFyIG1pbi9tYXhab29tIHdoZW4gbGVhdmluZyBnbG9iZSBtb2RlICh3aGVyZSB0aGV5IGhvbGQgZ2xvYmUtb25seVxuICAvLyBib3VuZHMpLiBPdGhlcndpc2UgcHJlc2VydmUgdGhlIGFwcCdzIGN1c3RvbSBib3VuZHMuXG4gIGNvbnN0IHdhc0dsb2JlRW5hYmxlZCA9IEJvb2xlYW4oc3RhdGUuZ2xvYmU/LmVuYWJsZWQpO1xuXG4gIHN3aXRjaCAobWFwVmlld01vZGUpIHtcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfMkQ6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogZmFsc2V9LFxuICAgICAgICBwaXRjaDogMCxcbiAgICAgICAgYmVhcmluZzogMCxcbiAgICAgICAgZHJhZ1JvdGF0ZTogZmFsc2UsXG4gICAgICAgIC8vIENsZWFyIHRoZSBnbG9iZS1vbmx5IHpvb20gYm91bmRzIHNvIHRoZSBmbGF0IG1hcCAoYW5kIGFueXRoaW5nIHRoYXRcbiAgICAgICAgLy8gcmVhZHMgbWFwU3RhdGUsIGUuZy4gdmlkZW8gZXhwb3J0KSBpcyBub3QgbGVmdCB3aXRoIGdsb2JlJ3NcbiAgICAgICAgLy8gbWluL21heFpvb20gYWZ0ZXIgbGVhdmluZyBnbG9iZSBtb2RlLiBPbmx5IHdoZW4gZ2xvYmUgd2FzIGFjdHVhbGx5IG9uLlxuICAgICAgICAuLi4od2FzR2xvYmVFbmFibGVkID8ge21pblpvb206IHVuZGVmaW5lZCwgbWF4Wm9vbTogdW5kZWZpbmVkfSA6IHt9KSxcbiAgICAgICAgbWFwVmlld01vZGVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfM0Q6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogZmFsc2V9LFxuICAgICAgICBwaXRjaDogNTAsXG4gICAgICAgIGJlYXJpbmc6IDI0LFxuICAgICAgICBkcmFnUm90YXRlOiB0cnVlLFxuICAgICAgICAuLi4od2FzR2xvYmVFbmFibGVkID8ge21pblpvb206IHVuZGVmaW5lZCwgbWF4Wm9vbTogdW5kZWZpbmVkfSA6IHt9KSxcbiAgICAgICAgbWFwVmlld01vZGVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfR0xPQkU6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICAgIGRyYWdSb3RhdGU6IHRydWUsXG4gICAgICAgIHBpdGNoOiAwLFxuICAgICAgICBiZWFyaW5nOiAwLFxuICAgICAgICAvLyBBbGxvdyB6b29taW5nIG91dCBmdXJ0aGVyIHRoYW4gdGhlIGRlZmF1bHQgc28gdGhlIHdob2xlIGdsb2JlIGNhbiBiZVxuICAgICAgICAvLyBwdWxsZWQgYmFjayBvbiBzY3JlZW4uIENhcCB0aGUgbWF4IHpvb20gc28gdGhlIGJhc2VtYXAgdGlsZXMgc3RheVxuICAgICAgICAvLyBjb2hlcmVudCAodGhleSBicmVhayBkb3duIGF0IGhpZ2ggZ2xvYmUgem9vbSBpbiBkZWNrLmdsIDkueCkuXG4gICAgICAgIG1pblpvb206IEdMT0JFX01JTl9aT09NLFxuICAgICAgICBtYXhab29tOiBHTE9CRV9NQVhfWk9PTSxcbiAgICAgICAgem9vbTogTWF0aC5taW4oTWF0aC5tYXgoc3RhdGUuem9vbSwgR0xPQkVfTUlOX1pPT00pLCBHTE9CRV9NQVhfWk9PTSksXG4gICAgICAgIG1hcFZpZXdNb2RlXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGlmIChuZXh0U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV4dFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV4dFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIHBpdGNoOiBuZXh0U3RhdGUucGl0Y2gsXG4gICAgICBiZWFyaW5nOiBuZXh0U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5leHRTdGF0ZS5kcmFnUm90YXRlXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5leHRTdGF0ZTtcbn07XG5cbi8qKlxuICogVXBkYXRlIGdsb2JlIGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGdsb2JlQ29uZmlnQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5HbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBnbG9iZToge1xuICAgICAgLi4uc3RhdGUuZ2xvYmUhLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLnN0YXRlLmdsb2JlIS5jb25maWcsXG4gICAgICAgIC4uLmFjdGlvbi5wYXlsb2FkXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiByZXNldCBtYXBTdGF0ZSB0byBpbml0aWFsIFN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLklOSVRJQUxfTUFQX1NUQVRFLFxuICAuLi5zdGF0ZS5pbml0aWFsU3RhdGUsXG4gIGluaXRpYWxTdGF0ZTogc3RhdGUuaW5pdGlhbFN0YXRlXG59KTtcblxuLy8gY29uc2lkZXIgY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIHNwbGl0IG1hcCBhbmQgdXNlciB3YW50cyB0byByZXNldFxuLyoqXG4gKiBVcGRhdGUgYG1hcFN0YXRlYCB0byBwcm9wYWdhdGUgYSBuZXcgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXlsb2FkOiB7Y29uZmlnID0ge30sIG9wdGlvbnMgPSB7fSwgYm91bmRzID0gbnVsbH1cbiAgfToge1xuICAgIHR5cGU/OiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHO1xuICAgIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xuICB9XG4pOiBNYXBTdGF0ZSA9PiB7XG4gIC8qKlxuICAgKiBAdHlwZSB7UGFydGlhbDxNYXBTdGF0ZT59XG4gICAqL1xuICBjb25zdCBtYXBTdGF0ZSA9IChjb25maWcgfHwge30pLm1hcFN0YXRlIHx8IHt9O1xuICAvLyBtZXJnZWQgcmVjZWl2ZWQgbWFwU3RhdGUgd2l0aCBwcmV2aW91cyBzdGF0ZVxuICAvLyBzdGF0ZSBhbHNvIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgdGhhdCBhcmUgbmV3IHRvIGFuIGV4aXN0aW5nLCBzYXZlZCBwcm9qZWN0J3MgbWFwU3RhdGVcblxuICBsZXQgbWVyZ2VkU3RhdGUgPSBkZWVwbWVyZ2U8TWFwU3RhdGU+KHN0YXRlLCBtYXBTdGF0ZSwge1xuICAgIC8vIG5vdGU6IGRlZXBtZXJnZSBieSBkZWZhdWx0IHdpbGwgbWVyZ2UgYXJyYXlzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlbVxuICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIG92ZXJ3cml0ZSBkZXN0aW5hdGlvbiBhcnJheXMgd2l0aCBzb3VyY2UgYXJyYXlzLCBpZiBwcmVzZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1RlaFNocmlrZS9kZWVwbWVyZ2UjYXJyYXltZXJnZS1leGFtcGxlLW92ZXJ3cml0ZS10YXJnZXQtYXJyYXlcbiAgICBhcnJheU1lcmdlOiAoX2Rlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KSA9PiBzb3VyY2VBcnJheVxuICB9KTtcblxuICAvLyBpZiBjZW50ZXIgbWFwXG4gIC8vIGNlbnRlciBtYXAgd2lsbCBvdmVycmlkZSBtYXBTdGF0ZSBjb25maWdcbiAgaWYgKG9wdGlvbnMuY2VudGVyTWFwICYmIGJvdW5kcykge1xuICAgIG1lcmdlZFN0YXRlID0gZml0Qm91bmRzVXBkYXRlcihtZXJnZWRTdGF0ZSwge1xuICAgICAgcGF5bG9hZDogYm91bmRzLFxuICAgICAgbWV0YToge3BhZGRpbmc6IG9wdGlvbnMucGFkZGluZ31cbiAgICB9KTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSB2YWxpZGF0ZSBtYXAgc3RhdGUgYmVmb3JlIHdlIG1lcmdlXG4gIG1lcmdlZFN0YXRlID0gdmFsaWRhdGVWaWV3UG9ydChtZXJnZWRTdGF0ZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tZXJnZWRTdGF0ZSxcbiAgICAvLyB1cGRhdGUgd2lkdGggaWYgYGlzU3BsaXRgIGhhcyBjaGFuZ2VkXG4gICAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAobWVyZ2VkU3RhdGUuaXNTcGxpdCwgc3RhdGUpXG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIG9uZSBvciBzcGxpdCBtYXBzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAuLi5nZXRNYXBEaW1Gb3JTcGxpdE1hcCghc3RhdGUuaXNTcGxpdCwgc3RhdGUpLFxuICBpc1NwbGl0OiAhc3RhdGUuaXNTcGxpdCxcbiAgbWFwU3BsaXRNb2RlOiAhc3RhdGUuaXNTcGxpdCA/IE1hcFNwbGl0TW9kZS5EVUFMX01BUCA6IE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQLFxuICAuLi4oIXN0YXRlLmlzU3BsaXQgPT09IGZhbHNlXG4gICAgPyB7XG4gICAgICAgIC8vIGlmIHRvZ2dsaW5nIHRvIG5vIGxvbmdlciBzcGxpdCAoc2luZ2xlIG1vZGUpIHRoZW4gcmVzZXQgYSBmZXcgcHJvcGVydGllc1xuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH1cbiAgICA6IHt9KVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSBtYXAgc3BsaXQgbW9kZSAoc2luZ2xlLCBkdWFsLCBvciBzd2lwZSlcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBTcGxpdE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge21hcFNwbGl0TW9kZX0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3QgcHJldk1vZGUgPSBzdGF0ZS5tYXBTcGxpdE1vZGU7XG5cbiAgaWYgKG1hcFNwbGl0TW9kZSA9PT0gcHJldk1vZGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBzd2l0Y2ggKG1hcFNwbGl0TW9kZSkge1xuICAgIGNhc2UgTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVA6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWFwU3BsaXRNb2RlLFxuICAgICAgICBpc1NwbGl0OiBmYWxzZSxcbiAgICAgICAgLi4uKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuRFVBTF9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAqIDJcbiAgICAgICAgfSksXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfTtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5EVUFMX01BUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLkRVQUxfTUFQICYmIHtcbiAgICAgICAgICB3aWR0aDogc3RhdGUud2lkdGggKiAyXG4gICAgICAgIH0pLFxuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgdGhlIHN3aXBlIGNvbXBhcmUgcGVyY2VudGFnZVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHtwZXJjZW50YWdlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBwZXJjZW50YWdlKSk7XG4gIGlmIChjbGFtcGVkID09PSBzdGF0ZS5zd2lwZUNvbXBhcmVQZXJjZW50YWdlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogY2xhbXBlZFxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBsb2NrZWQgYW5kIHVubG9ja2VkIHNwbGl0IHZpZXdwb3J0c1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uXG4pID0+IHtcbiAgLy8gU3dpcGUgbW9kZSBhbHdheXMgdXNlcyBzeW5jZWQgdmlld3BvcnRzXG4gIGlmIChzdGF0ZS5tYXBTcGxpdE1vZGUgPT09IE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gbmV3IG1hcCBzdGF0ZSBpbW1lZGlhdGVseSBnZXRzIHRoZSBuZXcsIG9wdGlvbmFsIHBheWxvYWQgdmFsdWVzIGZvciBpc1ZpZXdwb3J0U3luY2VkIGFuZC9vciBpc1pvb21Mb2NrZWRcbiAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KVxuICB9O1xuXG4gIGlmIChuZXdNYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gdW5zeW5jZWQgdG8gc3luY2VkIHZpZXdwb3J0c1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW107XG4gIH0gZWxzZSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gc3luY2VkIHRvIHVuc3luY2VkIHZpZXdwb3J0c1xuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgdG9nZ2xpbmcgbG9ja2VkIHpvb21cblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgIW5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9mZiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gZG9uJ3QgY29weSB0aGUgbWFwU3RhdGVzIHRvIGxlZnQgYW5kIHJpZ2h0IHZpZXdwb3J0cyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgem9vbSBcImp1bXBpbmdcIlxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUuaXNab29tTG9ja2VkICYmIG5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBvbmx5IGNvcHkgem9vbSB2aWV3cG9ydCBwcm9wZXJ0eSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCB0byB0aGUgb3RoZXJcbiAgICAgIC8vIFRPRE86IGRvIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGEgbWF0Y2ggYSBkaWZmZXJlbnQgd2F5LCBzdWNoIGFzIGEgY29tYm8gb2YgYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWA/XG4gICAgICBjb25zdCBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXggPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5maW5kSW5kZXgoXG4gICAgICAgIHYgPT4gbmV3TWFwU3RhdGUuem9vbSA9PT0gdi56b29tXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgpIHtcbiAgICAgICAgICAvLyBubyB6b29tIHRvIG1vZGlmeSBoZXJlXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgb3RoZXIgdmlld3BvcnQgZ2V0cyB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQncyB6b29tXG4gICAgICAgIC8vIFdIWT8gdGhlIHZpZXdwb3J0IHRoZSB1c2VyIHdhcyBsYXN0IGludGVyYWN0aW5nIHdpdGggd2lsbCBzZXQgem9vbSBhY3Jvc3MgdGhlIGJvYXJkIGZvciBzbW9vdGggVVhcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICAgICAgem9vbTogbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4XS56b29tXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBzcGxpdE1hcFZpZXdwb3J0cztcblxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIC8vIGlmIGN1cnJlbnQgdmlld3BvcnQgaXMgc3luY2VkLCBhbmQgd2UgYXJlIHVuc3luY2luZyBpdFxuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgTk9UIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG4gICAgLy8gbWFrZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgb2JqZWN0LCBhc3NpZ24gaXQgdG8gc3BsaXRNYXBWaWV3cG9ydHNbXVxuICAgIC8vIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIGlzIGNhbGxlZCB0d2ljZSB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBjb25mbGljdHNcbiAgICBjb25zdCBsZWZ0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgY29uc3QgcmlnaHRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtsZWZ0Vmlld3BvcnQsIHJpZ2h0Vmlld3BvcnRdO1xuICB9XG5cbiAgLy8gcmV0dXJuIG5ldyBzdGF0ZVxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59O1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwRGltRm9yU3BsaXRNYXAoaXNTcGxpdCwgc3RhdGUpIHtcbiAgLy8gY2FzZXM6XG4gIC8vIDEuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogdHJ1ZVxuICAvLyBkbyBub3RoaW5nXG4gIC8vIDIuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IGZhbHNlXG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHN0YXRlLmlzU3BsaXQgPT09IGlzU3BsaXQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvLyBJbiBzd2lwZSBtb2RlLCBib3RoIG1hcHMgdXNlIGZ1bGwgd2lkdGggKG92ZXJsYXBwaW5nIHdpdGggY2xpcClcbiAgaWYgKHN0YXRlLm1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB3aWR0aCA9XG4gICAgc3RhdGUuaXNTcGxpdCAmJiAhaXNTcGxpdFxuICAgICAgPyAvLyAzLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IGZhbHNlXG4gICAgICAgIC8vIGRvdWJsZSB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAqIDJcbiAgICAgIDogLy8gNC4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogdHJ1ZVxuICAgICAgICAvLyBzcGxpdCB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAvIDI7XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMoc3RhdGU6IE1hcFN0YXRlLCBuZXdNYXBTdGF0ZTogTWFwU3RhdGUpIHtcbiAgLy8gR2V0IHRoZSBuZXcgdmlld3BvcnQgYm91bmRzXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gZ2VvVmlld3BvcnQuYm91bmRzKFxuICAgIFtuZXdNYXBTdGF0ZS5sb25naXR1ZGUsIG5ld01hcFN0YXRlLmxhdGl0dWRlXSxcbiAgICBuZXdNYXBTdGF0ZS56b29tLFxuICAgIFtuZXdNYXBTdGF0ZS53aWR0aCwgbmV3TWFwU3RhdGUuaGVpZ2h0XSxcbiAgICBNQVBCT1hfVElMRV9TSVpFXG4gICk7XG4gIC8vIEdlbmVyYXRlIHR1cmYgUG9seWdvbiBmcm9tIGJvdW5kcyBmb3IgY29tcGFyaXNvblxuICBjb25zdCB2aWV3cG9ydEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbih2aWV3cG9ydEJvdW5kcyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3U3RhdGVNYXhCb3VuZHM6IEJvdW5kcyA9IG5ld01hcFN0YXRlLm1heEJvdW5kcztcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtYXhCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24obmV3U3RhdGVNYXhCb3VuZHMpO1xuXG4gIC8vIElmIG1heEJvdW5kcyBoYXMgY2hhbmdlZCByZXNldCB0aGUgdmlld3BvcnQgdG8gc25hcCB0byBib3VuZHNcbiAgY29uc3QgaGFzTWF4Qm91bmRzQ2hhbmdlZCA9XG4gICAgIXN0YXRlLm1heEJvdW5kcyB8fCAhc3RhdGUubWF4Qm91bmRzLmV2ZXJ5KCh2YWwsIGlkeCkgPT4gdmFsID09PSBuZXdTdGF0ZU1heEJvdW5kc1tpZHhdKTtcbiAgaWYgKGhhc01heEJvdW5kc0NoYW5nZWQpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICAgIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbX0gPSBmaXRCb3VuZHMoe1xuICAgICAgICB3aWR0aDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbmV3TWFwU3RhdGUuaGVpZ2h0LFxuICAgICAgICBib3VuZHM6IFtcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMF0sIG5ld1N0YXRlTWF4Qm91bmRzWzFdXSxcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMl0sIG5ld1N0YXRlTWF4Qm91bmRzWzNdXVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoem9vbSkgPyB7em9vbX0gOiB7fSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgIGxvbmdpdHVkZTogc3RhdGUubG9uZ2l0dWRlLFxuICAgICAgbGF0aXR1ZGU6IHN0YXRlLmxhdGl0dWRlLFxuICAgICAgem9vbTogc3RhdGUuem9vbVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShzdGF0ZTogTWFwU3RhdGUpOiBWaWV3cG9ydCB7XG4gIHJldHVybiBwaWNrKHN0YXRlLCBbXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnem9vbScsXG4gICAgJ3BpdGNoJyxcbiAgICAnYmVhcmluZycsXG4gICAgJ2xhdGl0dWRlJyxcbiAgICAnbG9uZ2l0dWRlJyxcbiAgICAnZHJhZ1JvdGF0ZScsXG4gICAgJ21pblpvb20nLFxuICAgICdtYXhab29tJyxcbiAgICAnbWF4UGl0Y2gnLFxuICAgICdtYXhCb3VuZHMnXG4gIF0pO1xufVxuXG4vKiogU2VsZWN0IGl0ZW1zIGZyb20gb2JqZWN0IHdob3NlIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQgKi9cbmNvbnN0IGRlZmluZWRQcm9wcyA9IG9iaiA9PlxuICBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoYWNjdSwgW2ssIHZdKSA9PiAoey4uLmFjY3UsIC4uLih2ICE9PSB1bmRlZmluZWQgPyB7W2tdOiB2fSA6IHt9KX0pLFxuICAgIHt9XG4gICk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KG9yaWdpbmFsVmlld3BvcnQ6IFZpZXdwb3J0LCB2aWV3cG9ydFVwZGF0ZXM6IFZpZXdwb3J0KTogVmlld3BvcnQge1xuICBsZXQgbmV3Vmlld3BvcnQgPSB7XG4gICAgLi4ub3JpZ2luYWxWaWV3cG9ydCxcbiAgICAuLi4oZGVmaW5lZFByb3BzKHZpZXdwb3J0VXBkYXRlcykgfHwge30pXG4gIH07XG5cbiAgLy8gZGVjay5nbCdzIGdsb2JlIGNvbnRyb2xsZXIgYXBwbGllcyBhIGxhdGl0dWRlLWRlcGVuZGVudCBhZGp1c3RtZW50IHRvIHRoZVxuICAvLyB6b29tIHJhbmdlIChzZWUgS2VwbGVyR2xvYmVWaWV3Ll9jb25zdHJhaW5ab29tKS4gSWYgd2UgY2xhbXAgdGhlIHByb3BhZ2F0ZWRcbiAgLy8gem9vbSBoZXJlIGFnYWluc3QgdGhlIHJhdyBtaW5ab29tL21heFpvb20gKHdpdGhvdXQgdGhhdCBhZGp1c3RtZW50KSwgUmVkdXhcbiAgLy8gZW5kcyB1cCBkaXNhZ3JlZWluZyB3aXRoIHRoZSBjb250cm9sbGVyOiB0aGUgY29udHJvbGxlciBsZXRzIHRoZSB1c2VyIHB1bGxcbiAgLy8gdGhlIGdsb2JlIGZ1cnRoZXIgb3V0LCBidXQgdGhpcyBjbGFtcCBzbmFwcyB6b29tIGJhY2sgdG8gYG1pblpvb21gIHdoZW4gdGhlXG4gIC8vIGludGVyYWN0aW9uJ3MgaW5lcnRpYSB0cmFuc2l0aW9uIGVuZHMuIEFwcGx5IHRoZSBzYW1lIGFkanVzdG1lbnQgaW4gZ2xvYmVcbiAgLy8gbW9kZSBzbyBSZWR1eCBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGNvbnRyb2xsZXIgYW5kIHRoZXJlJ3Mgbm8gc25hcC1iYWNrLlxuICBjb25zdCBpc0dsb2JlID0gKG5ld1ZpZXdwb3J0IGFzIGFueSkuZ2xvYmU/LmVuYWJsZWQ7XG5cbiAgaWYgKGlzR2xvYmUpIHtcbiAgICAvLyBLZWVwIHRoZSBjYW1lcmEgdGFyZ2V0IHdpdGhpbiBhIGxhdGl0dWRlIGJhbmQgYXJvdW5kIHRoZSBlcXVhdG9yIHNvIHRoZVxuICAgIC8vIHN0b3JlZCB2aWV3cG9ydCBjYW4ndCBiZSBjZW50ZXJlZCBvbiB0aGUgcG9sZXMgKG1hdGNoZXMgdGhlIGdsb2JlXG4gICAgLy8gY29udHJvbGxlcidzIGFwcGx5Q29uc3RyYWludHMgc28gZ2VvY29kZXIvcHJvZ3JhbW1hdGljIHVwZGF0ZXMgYWdyZWUpLlxuICAgIGlmICh0eXBlb2YgbmV3Vmlld3BvcnQubGF0aXR1ZGUgPT09ICdudW1iZXInKSB7XG4gICAgICBuZXdWaWV3cG9ydC5sYXRpdHVkZSA9IE1hdGgubWluKFxuICAgICAgICBHTE9CRV9NQVhfTEFUSVRVREUsXG4gICAgICAgIE1hdGgubWF4KC1HTE9CRV9NQVhfTEFUSVRVREUsIG5ld1ZpZXdwb3J0LmxhdGl0dWRlKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3Qgem9vbUFkanVzdG1lbnQgPSBNYXRoLmxvZzIoTWF0aC5jb3MoKChuZXdWaWV3cG9ydC5sYXRpdHVkZSA/PyAwKSAqIE1hdGguUEkpIC8gMTgwKSk7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lm1pblpvb20gPT09ICdudW1iZXInICYmXG4gICAgICB0eXBlb2YgbmV3Vmlld3BvcnQuem9vbSA9PT0gJ251bWJlcicgJiZcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tICsgem9vbUFkanVzdG1lbnRcbiAgICApIHtcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5taW5ab29tICsgem9vbUFkanVzdG1lbnQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuZXdWaWV3cG9ydC5tYXhab29tID09PSAnbnVtYmVyJyAmJlxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lnpvb20gPT09ICdudW1iZXInICYmXG4gICAgICBuZXdWaWV3cG9ydC56b29tID4gbmV3Vmlld3BvcnQubWF4Wm9vbSArIHpvb21BZGp1c3RtZW50XG4gICAgKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbSArIHpvb21BZGp1c3RtZW50O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGJlbGxvdyBtaW5ab29tIGlmIGRlZmluZWRcbiAgICBpZiAobmV3Vmlld3BvcnQubWluWm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBhYm92ZSBtYXhab29tIGlmIGRlZmluZWRcbiAgICBpZiAobmV3Vmlld3BvcnQubWF4Wm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbTtcbiAgICB9XG4gIH1cbiAgLy8gTGltaXQgdmlld3BvcnQgdXBkYXRlIGJhc2VkIG9uIG1heEJvdW5kc1xuICBpZiAobmV3Vmlld3BvcnQubWF4Qm91bmRzICYmIHZhbGlkYXRlQm91bmRzKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcykpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIG5ld1ZpZXdwb3J0ID0gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKG9yaWdpbmFsVmlld3BvcnQsIG5ld1ZpZXdwb3J0KTtcbiAgfVxuXG4gIHJldHVybiBuZXdWaWV3cG9ydDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQVFBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUF5SSxTQUFBUSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxN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
|
|
658
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwiZXhwb3J0cyIsInBpdGNoIiwiYmVhcmluZyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsImRyYWdSb3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsIm1pblpvb20iLCJ1bmRlZmluZWQiLCJtYXhab29tIiwibWF4UGl0Y2giLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwibWFwVmlld01vZGUiLCJNYXBWaWV3TW9kZSIsIk1PREVfMkQiLCJnbG9iZSIsImVuYWJsZWQiLCJjb25maWciLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsIm1hcFNwbGl0TW9kZSIsIk1hcFNwbGl0TW9kZSIsIlNJTkdMRV9NQVAiLCJzd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2FjdGlvbiRwYXlsb2FkIiwicGF5bG9hZCIsImlucHV0Vmlld3BvcnQiLCJ2aWV3cG9ydCIsIl9hY3Rpb24kcGF5bG9hZCRtYXBJbiIsIm1hcEluZGV4IiwidmFsaWRhdGVWaWV3UG9ydCIsInVwZGF0ZVZpZXdwb3J0Iiwib3RoZXJWaWV3cG9ydE1hcEluZGV4IiwibWFwIiwiY3VycmVudFZpZXdwb3J0IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiZml0Qm91bmRzVXBkYXRlciIsIl9hY3Rpb24kbWV0YSIsIl9zdGF0ZSRnbG9iZSIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsInBhZGRpbmciLCJtZXRhIiwiaXNHbG9iZU1vZGUiLCJCb29sZWFuIiwiTWF0aCIsIm1pbiIsIm1heCIsIkdMT0JFX01JTl9aT09NIiwiR0xPQkVfTUFYX1pPT00iLCJuZXdTdGF0ZSIsImNlbnRlciIsInRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciIsIl9zdGF0ZSRnbG9iZTIiLCJ3YXNHbG9iZUVuYWJsZWQiLCJNT0RFXzNEIiwic2V0TWFwVmlld01vZGVVcGRhdGVyIiwiX3N0YXRlJGdsb2JlMyIsIm5leHRTdGF0ZSIsIk1PREVfR0xPQkUiLCJnbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYiLCJfcmVmJHBheWxvYWQiLCJfcmVmJHBheWxvYWQkY29uZmlnIiwiX3JlZiRwYXlsb2FkJG9wdGlvbnMiLCJvcHRpb25zIiwiX3JlZiRwYXlsb2FkJGJvdW5kcyIsImJvdW5kcyIsIm1hcFN0YXRlIiwibWVyZ2VkU3RhdGUiLCJkZWVwbWVyZ2UiLCJhcnJheU1lcmdlIiwiX2Rlc3RpbmF0aW9uQXJyYXkiLCJzb3VyY2VBcnJheSIsImNlbnRlck1hcCIsImdldE1hcERpbUZvclNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiRFVBTF9NQVAiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwicHJldk1vZGUiLCJTV0lQRV9DT01QQVJFIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIiLCJwZXJjZW50YWdlIiwiY2xhbXBlZCIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJiYm94UG9seWdvbiIsIm5ld1N0YXRlTWF4Qm91bmRzIiwibWF4Qm91bmRzUG9seWdvbiIsImhhc01heEJvdW5kc0NoYW5nZWQiLCJldmVyeSIsInZhbCIsImlkeCIsImJvb2xlYW5XaXRoaW4iLCJfZml0Qm91bmRzIiwiZml0Qm91bmRzIiwicGljayIsImRlZmluZWRQcm9wcyIsIm9iaiIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2N1IiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsImsiLCJvcmlnaW5hbFZpZXdwb3J0Iiwidmlld3BvcnRVcGRhdGVzIiwiX2dsb2JlIiwibmV3Vmlld3BvcnQiLCJpc0dsb2JlIiwiX25ld1ZpZXdwb3J0JGxhdGl0dWRlIiwiR0xPQkVfTUFYX0xBVElUVURFIiwiem9vbUFkanVzdG1lbnQiLCJsb2cyIiwiY29zIiwiUEkiLCJ2YWxpZGF0ZUJvdW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAtc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGdlb1ZpZXdwb3J0IGZyb20gJ0BtYXBib3gvZ2VvLXZpZXdwb3J0JztcbmltcG9ydCB7Ym9vbGVhbldpdGhpbn0gZnJvbSAnQHR1cmYvYm9vbGVhbi13aXRoaW4nO1xuaW1wb3J0IHtiYm94UG9seWdvbn0gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7Zml0Qm91bmRzfSBmcm9tICdAbWF0aC5nbC93ZWItbWVyY2F0b3InO1xuaW1wb3J0IGRlZXBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnO1xuaW1wb3J0IHBpY2sgZnJvbSAnZXMtdG9vbGtpdC9jb21wYXQvcGljayc7XG5cbmltcG9ydCB7XG4gIGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzLFxuICB2YWxpZGF0ZUJvdW5kcyxcbiAgTUFQQk9YX1RJTEVfU0laRSxcbiAgdmFsaWRhdGVWaWV3UG9ydFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7TWFwU3RhdGVBY3Rpb25zLCBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZCwgQWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01hcFN0YXRlLCBCb3VuZHMsIFZpZXdwb3J0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIE1hcFNwbGl0TW9kZSxcbiAgTWFwVmlld01vZGUsXG4gIERFRkFVTFRfR0xPQkVfQ09ORklHLFxuICBHTE9CRV9NSU5fWk9PTSxcbiAgR0xPQkVfTUFYX1pPT00sXG4gIEdMT0JFX01BWF9MQVRJVFVERVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGBtYXBTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHttYXBTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3RhdGU6IG1hcFN0YXRlVXBkYXRlcnMuZml0Qm91bmRzVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3RhdGUsIHtwYXlsb2FkOiBbMTI3LjM0LCAzMS4wOSwgMTI3LjU2LCAzMS41OV1dfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYXBTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCBgbWFwU3RhdGVgXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcGl0Y2ggRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgYmVhcmluZyBEZWZhdWx0OiBgMGBcbiAqIEBwcm9wZXJ0eSBsYXRpdHVkZSBEZWZhdWx0OiBgMzcuNzUwNDNgXG4gKiBAcHJvcGVydHkgbG9uZ2l0dWRlIERlZmF1bHQ6IGAtMTIyLjM0Njc5YFxuICogQHByb3BlcnR5IHpvb20gRGVmYXVsdDogYDlgXG4gKiBAcHJvcGVydHkgZHJhZ1JvdGF0ZSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgd2lkdGggRGVmYXVsdDogYDgwMGBcbiAqIEBwcm9wZXJ0eSBoZWlnaHQgRGVmYXVsdDogYDgwMGBcbiAqIEBwcm9wZXJ0eSBtaW5ab29tOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBtYXhab29tOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBtYXhQaXRjaDogYHVuZGVmaW5lZGAgKGRlZmF1bHRzIHRvIGFwcGxpY2F0aW9uIGNvbmZpZyB2YWx1ZSwgZGVjay5nbCBkZWZhdWx0IGlzIDYwKVxuICogQHByb3BlcnR5IG1heEJvdW5kczogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgaXNTcGxpdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBpc1ZpZXdwb3J0U3luY2VkOiBgdHJ1ZWAsXG4gKiBAcHJvcGVydHkgaXNab29tTG9ja2VkOiBgZmFsc2VgLFxuICogQHByb3BlcnR5IHNwbGl0TWFwVmlld3BvcnRzOiBgW11gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX01BUF9TVEFURTogTWFwU3RhdGUgPSB7XG4gIHBpdGNoOiAwLFxuICBiZWFyaW5nOiAwLFxuICBsYXRpdHVkZTogMzcuNzUwNDMsXG4gIGxvbmdpdHVkZTogLTEyMi4zNDY3OSxcbiAgem9vbTogOSxcbiAgZHJhZ1JvdGF0ZTogZmFsc2UsXG4gIHdpZHRoOiA4MDAsXG4gIGhlaWdodDogODAwLFxuICBtaW5ab29tOiB1bmRlZmluZWQsXG4gIG1heFpvb206IHVuZGVmaW5lZCxcbiAgbWF4UGl0Y2g6IHVuZGVmaW5lZCxcbiAgbWF4Qm91bmRzOiB1bmRlZmluZWQsXG4gIGlzU3BsaXQ6IGZhbHNlLFxuICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICBzcGxpdE1hcFZpZXdwb3J0czogW10sXG4gIG1hcFZpZXdNb2RlOiBNYXBWaWV3TW9kZS5NT0RFXzJELFxuICBnbG9iZToge1xuICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIGNvbmZpZzogREVGQVVMVF9HTE9CRV9DT05GSUdcbiAgfSxcbiAgbWFwU3BsaXRNb2RlOiBNYXBTcGxpdE1vZGUuU0lOR0xFX01BUCxcbiAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogNTBcbn07XG5cbi8qIFVwZGF0ZXJzICovXG4vKipcbiAqIFVwZGF0ZSBtYXAgdmlld3BvcnRcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVNYXBVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlVwZGF0ZU1hcFVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge3ZpZXdwb3J0OiBpbnB1dFZpZXdwb3J0LCBtYXBJbmRleCA9IDB9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IHZpZXdwb3J0ID0gdmFsaWRhdGVWaWV3UG9ydChpbnB1dFZpZXdwb3J0KTtcblxuICBpZiAoc3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIFRoZSBgdXBkYXRlVmlld3BvcnRgIGZ1bmN0aW9uIGlzIHR5cGVkIGFzIChWaWV3cG9ydCwgVmlld3BvcnQpIC0+IFZpZXdwb3J0IGJ1dCBoZXJlIHRoZVxuICAgIC8vIGV4cGVjdGVkIHR5cGluZyBpcyAoTWFwU3RhdGUsIFZpZXdwb3J0KSAtPiBNYXBTdGF0ZS5cbiAgICAvLyB0aGlzIGNvdWxkIGJlIGEgcG90ZW50aWFsIGJ1ZyBhcyB3ZSB0cmVhdCBWaWV3cG9ydCBhbmQgTWFwU3RhdGUgYXMgZXF1YWwgc2VlbWluZ2x5XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoc3RhdGUsIHZpZXdwb3J0KTtcbiAgfVxuXG4gIGxldCBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSAtMTtcbiAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBzdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgIGlmIChpID09PSBtYXBJbmRleCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBtYXRjaGluZyB2aWV3cG9ydCB3aXRoIHRoZSBuZXdWaWV3cG9ydCBpbmZvIGluIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KGN1cnJlbnRWaWV3cG9ydCwgdmlld3BvcnQpO1xuICAgIH1cblxuICAgIG90aGVyVmlld3BvcnRNYXBJbmRleCA9IGk7XG4gICAgLy8gbWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCAoeWV0KVxuICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gIH0pO1xuXG4gIC8vIG1ha2UgY29uZGl0aW9uYWwgdXBkYXRlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgbm90IG1hdGNoaW5nIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgaWYgKE51bWJlci5pc0Zpbml0ZShvdGhlclZpZXdwb3J0TWFwSW5kZXgpICYmIG90aGVyVmlld3BvcnRNYXBJbmRleCA+IC0xKSB7XG4gICAgLy8gd2lkdGggYW5kIGhlaWdodCBhcmUgYSBzcGVjaWFsIGNhc2UgYW5kIGFyZSBhbHdheXMgdXBkYXRlZFxuICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgd2lkdGg6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS53aWR0aCxcbiAgICAgIGhlaWdodDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLmhlaWdodFxuICAgIH07XG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG90aGVyIHZpZXdwb3J0IHdpdGggdGhlIG5ldyB6b29tIGZyb20gdGhlIHNwbGl0IHZpZXdwb3J0IHRoYXQgd2FzIHVwZGF0ZWQgd2l0aCB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gICAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgICB6b29tOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uem9vbVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIHVwZGF0ZSB0aGUgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdpdGggdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHNwbGl0IHZpZXdwb3J0XG4gICAgLy8gV0hZPyB0aGlzIGF2b2lkcyB6b29tIGFuZCBib3VuZHMgXCJqdW1waW5nXCIgZHVlIHRvIGEgXCJzdGFsZVwiIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aGVuOlxuICAgIC8vICAxLiB0b2dnbGluZyBvZmYgdGhlIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlIHRvIHN3aXRjaCB0byB0aGUgc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLy8gIDIuIHRvZ2dsaW5nIG9uIHRoZSB6b29tIGxvY2sgZHVyaW5nIGFuIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLi4uc3RhdGUsXG4gICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLFxuICAgIC8vIHVwZGF0ZSB0aGUgbWFwU3RhdGUgd2l0aCB0aGUgbmV3IGFycmF5IG9mIHNwbGl0IHZpZXdwb3J0c1xuICAgIHNwbGl0TWFwVmlld3BvcnRzXG4gIH07XG59O1xuXG4vKipcbiAqIEZpdCBtYXAgdmlld3BvcnQgdG8gYm91bmRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZml0Qm91bmRzVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5GaXRCb3VuZHNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhhY3Rpb24ucGF5bG9hZCwge1xuICAgIHdpZHRoOiBzdGF0ZS53aWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLmhlaWdodCxcbiAgICBwYWRkaW5nOiBhY3Rpb24ubWV0YT8ucGFkZGluZ1xuICB9KTtcbiAgaWYgKCFjZW50ZXJBbmRab29tKSB7XG4gICAgLy8gYm91bmRzIGlzIGludmFsaWRcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBJbiBnbG9iZSBtb2RlLCBjbGFtcCB6b29tIHRvIGdsb2JlJ3MgYWxsb3dlZCByYW5nZVxuICBjb25zdCBpc0dsb2JlTW9kZSA9IEJvb2xlYW4oc3RhdGUuZ2xvYmU/LmVuYWJsZWQpO1xuICBjb25zdCB6b29tID0gTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSlcbiAgICA/IGlzR2xvYmVNb2RlXG4gICAgICA/IE1hdGgubWluKE1hdGgubWF4KGNlbnRlckFuZFpvb20uem9vbSwgR0xPQkVfTUlOX1pPT00pLCBHTE9CRV9NQVhfWk9PTSlcbiAgICAgIDogY2VudGVyQW5kWm9vbS56b29tXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF0aXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzFdLFxuICAgIGxvbmdpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMF0sXG4gICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgLi4uKHpvb20gIT09IHVuZGVmaW5lZCA/IHt6b29tfSA6IHt9KVxuICB9O1xuXG4gIC8vIGlmIGZpdHRpbmcgdG8gYm91bmRzIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYW5kIHpvb20gdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgbGF0aXR1ZGU6IG5ld1N0YXRlLmxhdGl0dWRlLFxuICAgICAgbG9uZ2l0dWRlOiBuZXdTdGF0ZS5sb25naXR1ZGUsXG4gICAgICB6b29tOiBuZXdTdGF0ZS56b29tXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiAzZCBhbmQgMmQgbWFwLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiB7XG4gIC8vIE9ubHkgZHJvcCBtaW4vbWF4Wm9vbSB3aGVuIHdlJ3JlIGFjdHVhbGx5IGxlYXZpbmcgZ2xvYmUgbW9kZSwgd2hlcmUgdGhvc2VcbiAgLy8gYm91bmRzIGFyZSBzZXQgdG8gZ2xvYmUtb25seSB2YWx1ZXMuIElmIGdsb2JlIHdhcyBuZXZlciBlbmFibGVkIHRoZXNlIGFyZVxuICAvLyB0aGUgYXBwJ3Mgb3duIGN1c3RvbSBib3VuZHMgYW5kIG11c3QgYmUgcHJlc2VydmVkLlxuICBjb25zdCB3YXNHbG9iZUVuYWJsZWQgPSBCb29sZWFuKHN0YXRlLmdsb2JlPy5lbmFibGVkKTtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi57XG4gICAgICBwaXRjaDogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiA1MCxcbiAgICAgIGJlYXJpbmc6IHN0YXRlLmRyYWdSb3RhdGUgPyAwIDogMjRcbiAgICB9LFxuICAgIGRyYWdSb3RhdGU6ICFzdGF0ZS5kcmFnUm90YXRlLFxuICAgIG1hcFZpZXdNb2RlOiBzdGF0ZS5kcmFnUm90YXRlID8gTWFwVmlld01vZGUuTU9ERV8yRCA6IE1hcFZpZXdNb2RlLk1PREVfM0QsXG4gICAgZ2xvYmU6IHsuLi5zdGF0ZS5nbG9iZSEsIGVuYWJsZWQ6IGZhbHNlfSxcbiAgICAvLyBMZWF2aW5nIGdsb2JlIG1vZGU6IGRyb3AgZ2xvYmUtb25seSB6b29tIGJvdW5kcyBzbyB0aGUgZmxhdCBtYXAgKGFuZFxuICAgIC8vIGNvbnN1bWVycyBvZiBtYXBTdGF0ZSBzdWNoIGFzIHZpZGVvIGV4cG9ydCkgYXJlbid0IGxlZnQgY2xhbXBlZC4gV2hlblxuICAgIC8vIGdsb2JlIHdhcyBuZXZlciBvbiwga2VlcCB3aGF0ZXZlciBtaW4vbWF4Wm9vbSB0aGUgYXBwIGNvbmZpZ3VyZWQuXG4gICAgLi4uKHdhc0dsb2JlRW5hYmxlZCA/IHttaW5ab29tOiB1bmRlZmluZWQsIG1heFpvb206IHVuZGVmaW5lZH0gOiB7fSlcbiAgfTtcblxuICAvLyBpZiB0b2dnbGluZyAzZCBhbmQgMmQgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBwaXRjaCwgYmVhcmluZywgYW5kIGRyYWdSb3RhdGUgdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgcGl0Y2g6IG5ld1N0YXRlLnBpdGNoLFxuICAgICAgYmVhcmluZzogbmV3U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5ld1N0YXRlLmRyYWdSb3RhdGVcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFNldCBtYXAgdmlldyBtb2RlICgyRCwgM0QsIEdsb2JlKVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcFZpZXdNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5TZXRNYXBWaWV3TW9kZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge21hcFZpZXdNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBsZXQgbmV4dFN0YXRlOiBNYXBTdGF0ZTtcblxuICAvLyBPbmx5IGNsZWFyIG1pbi9tYXhab29tIHdoZW4gbGVhdmluZyBnbG9iZSBtb2RlICh3aGVyZSB0aGV5IGhvbGQgZ2xvYmUtb25seVxuICAvLyBib3VuZHMpLiBPdGhlcndpc2UgcHJlc2VydmUgdGhlIGFwcCdzIGN1c3RvbSBib3VuZHMuXG4gIGNvbnN0IHdhc0dsb2JlRW5hYmxlZCA9IEJvb2xlYW4oc3RhdGUuZ2xvYmU/LmVuYWJsZWQpO1xuXG4gIHN3aXRjaCAobWFwVmlld01vZGUpIHtcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfMkQ6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogZmFsc2V9LFxuICAgICAgICBwaXRjaDogMCxcbiAgICAgICAgYmVhcmluZzogMCxcbiAgICAgICAgZHJhZ1JvdGF0ZTogZmFsc2UsXG4gICAgICAgIC8vIENsZWFyIHRoZSBnbG9iZS1vbmx5IHpvb20gYm91bmRzIHNvIHRoZSBmbGF0IG1hcCAoYW5kIGFueXRoaW5nIHRoYXRcbiAgICAgICAgLy8gcmVhZHMgbWFwU3RhdGUsIGUuZy4gdmlkZW8gZXhwb3J0KSBpcyBub3QgbGVmdCB3aXRoIGdsb2JlJ3NcbiAgICAgICAgLy8gbWluL21heFpvb20gYWZ0ZXIgbGVhdmluZyBnbG9iZSBtb2RlLiBPbmx5IHdoZW4gZ2xvYmUgd2FzIGFjdHVhbGx5IG9uLlxuICAgICAgICAuLi4od2FzR2xvYmVFbmFibGVkID8ge21pblpvb206IHVuZGVmaW5lZCwgbWF4Wm9vbTogdW5kZWZpbmVkfSA6IHt9KSxcbiAgICAgICAgbWFwVmlld01vZGVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfM0Q6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogZmFsc2V9LFxuICAgICAgICBwaXRjaDogNTAsXG4gICAgICAgIGJlYXJpbmc6IDI0LFxuICAgICAgICBkcmFnUm90YXRlOiB0cnVlLFxuICAgICAgICAuLi4od2FzR2xvYmVFbmFibGVkID8ge21pblpvb206IHVuZGVmaW5lZCwgbWF4Wm9vbTogdW5kZWZpbmVkfSA6IHt9KSxcbiAgICAgICAgbWFwVmlld01vZGVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfR0xPQkU6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICAgIGRyYWdSb3RhdGU6IHRydWUsXG4gICAgICAgIHBpdGNoOiAwLFxuICAgICAgICBiZWFyaW5nOiAwLFxuICAgICAgICAvLyBBbGxvdyB6b29taW5nIG91dCBmdXJ0aGVyIHRoYW4gdGhlIGRlZmF1bHQgc28gdGhlIHdob2xlIGdsb2JlIGNhbiBiZVxuICAgICAgICAvLyBwdWxsZWQgYmFjayBvbiBzY3JlZW4uIENhcCB0aGUgbWF4IHpvb20gc28gdGhlIGJhc2VtYXAgdGlsZXMgc3RheVxuICAgICAgICAvLyBjb2hlcmVudCAodGhleSBicmVhayBkb3duIGF0IGhpZ2ggZ2xvYmUgem9vbSBpbiBkZWNrLmdsIDkueCkuXG4gICAgICAgIG1pblpvb206IEdMT0JFX01JTl9aT09NLFxuICAgICAgICBtYXhab29tOiBHTE9CRV9NQVhfWk9PTSxcbiAgICAgICAgem9vbTogTWF0aC5taW4oTWF0aC5tYXgoc3RhdGUuem9vbSwgR0xPQkVfTUlOX1pPT00pLCBHTE9CRV9NQVhfWk9PTSksXG4gICAgICAgIG1hcFZpZXdNb2RlXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGlmIChuZXh0U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV4dFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV4dFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIHBpdGNoOiBuZXh0U3RhdGUucGl0Y2gsXG4gICAgICBiZWFyaW5nOiBuZXh0U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5leHRTdGF0ZS5kcmFnUm90YXRlXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5leHRTdGF0ZTtcbn07XG5cbi8qKlxuICogVXBkYXRlIGdsb2JlIGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGdsb2JlQ29uZmlnQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5HbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBnbG9iZToge1xuICAgICAgLi4uc3RhdGUuZ2xvYmUhLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLnN0YXRlLmdsb2JlIS5jb25maWcsXG4gICAgICAgIC4uLmFjdGlvbi5wYXlsb2FkXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiByZXNldCBtYXBTdGF0ZSB0byBpbml0aWFsIFN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLklOSVRJQUxfTUFQX1NUQVRFLFxuICAuLi5zdGF0ZS5pbml0aWFsU3RhdGUsXG4gIGluaXRpYWxTdGF0ZTogc3RhdGUuaW5pdGlhbFN0YXRlXG59KTtcblxuLy8gY29uc2lkZXIgY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIHNwbGl0IG1hcCBhbmQgdXNlciB3YW50cyB0byByZXNldFxuLyoqXG4gKiBVcGRhdGUgYG1hcFN0YXRlYCB0byBwcm9wYWdhdGUgYSBuZXcgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXlsb2FkOiB7Y29uZmlnID0ge30sIG9wdGlvbnMgPSB7fSwgYm91bmRzID0gbnVsbH1cbiAgfToge1xuICAgIHR5cGU/OiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHO1xuICAgIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xuICB9XG4pOiBNYXBTdGF0ZSA9PiB7XG4gIC8qKlxuICAgKiBAdHlwZSB7UGFydGlhbDxNYXBTdGF0ZT59XG4gICAqL1xuICBjb25zdCBtYXBTdGF0ZSA9IChjb25maWcgfHwge30pLm1hcFN0YXRlIHx8IHt9O1xuICAvLyBtZXJnZWQgcmVjZWl2ZWQgbWFwU3RhdGUgd2l0aCBwcmV2aW91cyBzdGF0ZVxuICAvLyBzdGF0ZSBhbHNvIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgdGhhdCBhcmUgbmV3IHRvIGFuIGV4aXN0aW5nLCBzYXZlZCBwcm9qZWN0J3MgbWFwU3RhdGVcblxuICBsZXQgbWVyZ2VkU3RhdGUgPSBkZWVwbWVyZ2U8TWFwU3RhdGU+KHN0YXRlLCBtYXBTdGF0ZSwge1xuICAgIC8vIG5vdGU6IGRlZXBtZXJnZSBieSBkZWZhdWx0IHdpbGwgbWVyZ2UgYXJyYXlzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlbVxuICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIG92ZXJ3cml0ZSBkZXN0aW5hdGlvbiBhcnJheXMgd2l0aCBzb3VyY2UgYXJyYXlzLCBpZiBwcmVzZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1RlaFNocmlrZS9kZWVwbWVyZ2UjYXJyYXltZXJnZS1leGFtcGxlLW92ZXJ3cml0ZS10YXJnZXQtYXJyYXlcbiAgICBhcnJheU1lcmdlOiAoX2Rlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KSA9PiBzb3VyY2VBcnJheVxuICB9KTtcblxuICAvLyBpZiBjZW50ZXIgbWFwXG4gIC8vIGNlbnRlciBtYXAgd2lsbCBvdmVycmlkZSBtYXBTdGF0ZSBjb25maWdcbiAgaWYgKG9wdGlvbnMuY2VudGVyTWFwICYmIGJvdW5kcykge1xuICAgIG1lcmdlZFN0YXRlID0gZml0Qm91bmRzVXBkYXRlcihtZXJnZWRTdGF0ZSwge1xuICAgICAgcGF5bG9hZDogYm91bmRzLFxuICAgICAgbWV0YToge3BhZGRpbmc6IG9wdGlvbnMucGFkZGluZ31cbiAgICB9KTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSB2YWxpZGF0ZSBtYXAgc3RhdGUgYmVmb3JlIHdlIG1lcmdlXG4gIG1lcmdlZFN0YXRlID0gdmFsaWRhdGVWaWV3UG9ydChtZXJnZWRTdGF0ZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tZXJnZWRTdGF0ZSxcbiAgICAvLyB1cGRhdGUgd2lkdGggaWYgYGlzU3BsaXRgIGhhcyBjaGFuZ2VkXG4gICAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAobWVyZ2VkU3RhdGUuaXNTcGxpdCwgc3RhdGUpXG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIG9uZSBvciBzcGxpdCBtYXBzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAuLi5nZXRNYXBEaW1Gb3JTcGxpdE1hcCghc3RhdGUuaXNTcGxpdCwgc3RhdGUpLFxuICBpc1NwbGl0OiAhc3RhdGUuaXNTcGxpdCxcbiAgbWFwU3BsaXRNb2RlOiAhc3RhdGUuaXNTcGxpdCA/IE1hcFNwbGl0TW9kZS5EVUFMX01BUCA6IE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQLFxuICAuLi4oIXN0YXRlLmlzU3BsaXQgPT09IGZhbHNlXG4gICAgPyB7XG4gICAgICAgIC8vIGlmIHRvZ2dsaW5nIHRvIG5vIGxvbmdlciBzcGxpdCAoc2luZ2xlIG1vZGUpIHRoZW4gcmVzZXQgYSBmZXcgcHJvcGVydGllc1xuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH1cbiAgICA6IHt9KVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSBtYXAgc3BsaXQgbW9kZSAoc2luZ2xlLCBkdWFsLCBvciBzd2lwZSlcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBTcGxpdE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge21hcFNwbGl0TW9kZX0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3QgcHJldk1vZGUgPSBzdGF0ZS5tYXBTcGxpdE1vZGU7XG5cbiAgaWYgKG1hcFNwbGl0TW9kZSA9PT0gcHJldk1vZGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBzd2l0Y2ggKG1hcFNwbGl0TW9kZSkge1xuICAgIGNhc2UgTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVA6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWFwU3BsaXRNb2RlLFxuICAgICAgICBpc1NwbGl0OiBmYWxzZSxcbiAgICAgICAgLi4uKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuRFVBTF9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAqIDJcbiAgICAgICAgfSksXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfTtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5EVUFMX01BUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLkRVQUxfTUFQICYmIHtcbiAgICAgICAgICB3aWR0aDogc3RhdGUud2lkdGggKiAyXG4gICAgICAgIH0pLFxuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgdGhlIHN3aXBlIGNvbXBhcmUgcGVyY2VudGFnZVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHtwZXJjZW50YWdlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBwZXJjZW50YWdlKSk7XG4gIGlmIChjbGFtcGVkID09PSBzdGF0ZS5zd2lwZUNvbXBhcmVQZXJjZW50YWdlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogY2xhbXBlZFxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBsb2NrZWQgYW5kIHVubG9ja2VkIHNwbGl0IHZpZXdwb3J0c1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uXG4pID0+IHtcbiAgLy8gU3dpcGUgbW9kZSBhbHdheXMgdXNlcyBzeW5jZWQgdmlld3BvcnRzXG4gIGlmIChzdGF0ZS5tYXBTcGxpdE1vZGUgPT09IE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gbmV3IG1hcCBzdGF0ZSBpbW1lZGlhdGVseSBnZXRzIHRoZSBuZXcsIG9wdGlvbmFsIHBheWxvYWQgdmFsdWVzIGZvciBpc1ZpZXdwb3J0U3luY2VkIGFuZC9vciBpc1pvb21Mb2NrZWRcbiAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KVxuICB9O1xuXG4gIGlmIChuZXdNYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gdW5zeW5jZWQgdG8gc3luY2VkIHZpZXdwb3J0c1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW107XG4gIH0gZWxzZSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gc3luY2VkIHRvIHVuc3luY2VkIHZpZXdwb3J0c1xuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgdG9nZ2xpbmcgbG9ja2VkIHpvb21cblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgIW5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9mZiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gZG9uJ3QgY29weSB0aGUgbWFwU3RhdGVzIHRvIGxlZnQgYW5kIHJpZ2h0IHZpZXdwb3J0cyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgem9vbSBcImp1bXBpbmdcIlxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUuaXNab29tTG9ja2VkICYmIG5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBvbmx5IGNvcHkgem9vbSB2aWV3cG9ydCBwcm9wZXJ0eSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCB0byB0aGUgb3RoZXJcbiAgICAgIC8vIFRPRE86IGRvIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGEgbWF0Y2ggYSBkaWZmZXJlbnQgd2F5LCBzdWNoIGFzIGEgY29tYm8gb2YgYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWA/XG4gICAgICBjb25zdCBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXggPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5maW5kSW5kZXgoXG4gICAgICAgIHYgPT4gbmV3TWFwU3RhdGUuem9vbSA9PT0gdi56b29tXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgpIHtcbiAgICAgICAgICAvLyBubyB6b29tIHRvIG1vZGlmeSBoZXJlXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgb3RoZXIgdmlld3BvcnQgZ2V0cyB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQncyB6b29tXG4gICAgICAgIC8vIFdIWT8gdGhlIHZpZXdwb3J0IHRoZSB1c2VyIHdhcyBsYXN0IGludGVyYWN0aW5nIHdpdGggd2lsbCBzZXQgem9vbSBhY3Jvc3MgdGhlIGJvYXJkIGZvciBzbW9vdGggVVhcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICAgICAgem9vbTogbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4XS56b29tXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBzcGxpdE1hcFZpZXdwb3J0cztcblxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIC8vIGlmIGN1cnJlbnQgdmlld3BvcnQgaXMgc3luY2VkLCBhbmQgd2UgYXJlIHVuc3luY2luZyBpdFxuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgTk9UIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG4gICAgLy8gbWFrZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgb2JqZWN0LCBhc3NpZ24gaXQgdG8gc3BsaXRNYXBWaWV3cG9ydHNbXVxuICAgIC8vIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIGlzIGNhbGxlZCB0d2ljZSB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBjb25mbGljdHNcbiAgICBjb25zdCBsZWZ0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgY29uc3QgcmlnaHRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtsZWZ0Vmlld3BvcnQsIHJpZ2h0Vmlld3BvcnRdO1xuICB9XG5cbiAgLy8gcmV0dXJuIG5ldyBzdGF0ZVxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59O1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwRGltRm9yU3BsaXRNYXAoaXNTcGxpdCwgc3RhdGUpIHtcbiAgLy8gY2FzZXM6XG4gIC8vIDEuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogdHJ1ZVxuICAvLyBkbyBub3RoaW5nXG4gIC8vIDIuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IGZhbHNlXG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHN0YXRlLmlzU3BsaXQgPT09IGlzU3BsaXQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvLyBJbiBzd2lwZSBtb2RlLCBib3RoIG1hcHMgdXNlIGZ1bGwgd2lkdGggKG92ZXJsYXBwaW5nIHdpdGggY2xpcClcbiAgaWYgKHN0YXRlLm1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB3aWR0aCA9XG4gICAgc3RhdGUuaXNTcGxpdCAmJiAhaXNTcGxpdFxuICAgICAgPyAvLyAzLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IGZhbHNlXG4gICAgICAgIC8vIGRvdWJsZSB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAqIDJcbiAgICAgIDogLy8gNC4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogdHJ1ZVxuICAgICAgICAvLyBzcGxpdCB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAvIDI7XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMoc3RhdGU6IE1hcFN0YXRlLCBuZXdNYXBTdGF0ZTogTWFwU3RhdGUpIHtcbiAgLy8gR2V0IHRoZSBuZXcgdmlld3BvcnQgYm91bmRzXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gZ2VvVmlld3BvcnQuYm91bmRzKFxuICAgIFtuZXdNYXBTdGF0ZS5sb25naXR1ZGUsIG5ld01hcFN0YXRlLmxhdGl0dWRlXSxcbiAgICBuZXdNYXBTdGF0ZS56b29tLFxuICAgIFtuZXdNYXBTdGF0ZS53aWR0aCwgbmV3TWFwU3RhdGUuaGVpZ2h0XSxcbiAgICBNQVBCT1hfVElMRV9TSVpFXG4gICk7XG4gIC8vIEdlbmVyYXRlIHR1cmYgUG9seWdvbiBmcm9tIGJvdW5kcyBmb3IgY29tcGFyaXNvblxuICBjb25zdCB2aWV3cG9ydEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbih2aWV3cG9ydEJvdW5kcyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3U3RhdGVNYXhCb3VuZHM6IEJvdW5kcyA9IG5ld01hcFN0YXRlLm1heEJvdW5kcztcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtYXhCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24obmV3U3RhdGVNYXhCb3VuZHMpO1xuXG4gIC8vIElmIG1heEJvdW5kcyBoYXMgY2hhbmdlZCByZXNldCB0aGUgdmlld3BvcnQgdG8gc25hcCB0byBib3VuZHNcbiAgY29uc3QgaGFzTWF4Qm91bmRzQ2hhbmdlZCA9XG4gICAgIXN0YXRlLm1heEJvdW5kcyB8fCAhc3RhdGUubWF4Qm91bmRzLmV2ZXJ5KCh2YWwsIGlkeCkgPT4gdmFsID09PSBuZXdTdGF0ZU1heEJvdW5kc1tpZHhdKTtcbiAgaWYgKGhhc01heEJvdW5kc0NoYW5nZWQpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICAgIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbX0gPSBmaXRCb3VuZHMoe1xuICAgICAgICB3aWR0aDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbmV3TWFwU3RhdGUuaGVpZ2h0LFxuICAgICAgICBib3VuZHM6IFtcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMF0sIG5ld1N0YXRlTWF4Qm91bmRzWzFdXSxcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMl0sIG5ld1N0YXRlTWF4Qm91bmRzWzNdXVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoem9vbSkgPyB7em9vbX0gOiB7fSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgIGxvbmdpdHVkZTogc3RhdGUubG9uZ2l0dWRlLFxuICAgICAgbGF0aXR1ZGU6IHN0YXRlLmxhdGl0dWRlLFxuICAgICAgem9vbTogc3RhdGUuem9vbVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShzdGF0ZTogTWFwU3RhdGUpOiBWaWV3cG9ydCB7XG4gIHJldHVybiBwaWNrKHN0YXRlLCBbXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnem9vbScsXG4gICAgJ3BpdGNoJyxcbiAgICAnYmVhcmluZycsXG4gICAgJ2xhdGl0dWRlJyxcbiAgICAnbG9uZ2l0dWRlJyxcbiAgICAnZHJhZ1JvdGF0ZScsXG4gICAgJ21pblpvb20nLFxuICAgICdtYXhab29tJyxcbiAgICAnbWF4UGl0Y2gnLFxuICAgICdtYXhCb3VuZHMnXG4gIF0pO1xufVxuXG4vKiogU2VsZWN0IGl0ZW1zIGZyb20gb2JqZWN0IHdob3NlIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQgKi9cbmNvbnN0IGRlZmluZWRQcm9wcyA9IG9iaiA9PlxuICBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoYWNjdSwgW2ssIHZdKSA9PiAoey4uLmFjY3UsIC4uLih2ICE9PSB1bmRlZmluZWQgPyB7W2tdOiB2fSA6IHt9KX0pLFxuICAgIHt9XG4gICk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KG9yaWdpbmFsVmlld3BvcnQ6IFZpZXdwb3J0LCB2aWV3cG9ydFVwZGF0ZXM6IFZpZXdwb3J0KTogVmlld3BvcnQge1xuICBsZXQgbmV3Vmlld3BvcnQgPSB7XG4gICAgLi4ub3JpZ2luYWxWaWV3cG9ydCxcbiAgICAuLi4oZGVmaW5lZFByb3BzKHZpZXdwb3J0VXBkYXRlcykgfHwge30pXG4gIH07XG5cbiAgLy8gZGVjay5nbCdzIGdsb2JlIGNvbnRyb2xsZXIgYXBwbGllcyBhIGxhdGl0dWRlLWRlcGVuZGVudCBhZGp1c3RtZW50IHRvIHRoZVxuICAvLyB6b29tIHJhbmdlIChzZWUgS2VwbGVyR2xvYmVWaWV3Ll9jb25zdHJhaW5ab29tKS4gSWYgd2UgY2xhbXAgdGhlIHByb3BhZ2F0ZWRcbiAgLy8gem9vbSBoZXJlIGFnYWluc3QgdGhlIHJhdyBtaW5ab29tL21heFpvb20gKHdpdGhvdXQgdGhhdCBhZGp1c3RtZW50KSwgUmVkdXhcbiAgLy8gZW5kcyB1cCBkaXNhZ3JlZWluZyB3aXRoIHRoZSBjb250cm9sbGVyOiB0aGUgY29udHJvbGxlciBsZXRzIHRoZSB1c2VyIHB1bGxcbiAgLy8gdGhlIGdsb2JlIGZ1cnRoZXIgb3V0LCBidXQgdGhpcyBjbGFtcCBzbmFwcyB6b29tIGJhY2sgdG8gYG1pblpvb21gIHdoZW4gdGhlXG4gIC8vIGludGVyYWN0aW9uJ3MgaW5lcnRpYSB0cmFuc2l0aW9uIGVuZHMuIEFwcGx5IHRoZSBzYW1lIGFkanVzdG1lbnQgaW4gZ2xvYmVcbiAgLy8gbW9kZSBzbyBSZWR1eCBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGNvbnRyb2xsZXIgYW5kIHRoZXJlJ3Mgbm8gc25hcC1iYWNrLlxuICBjb25zdCBpc0dsb2JlID0gKG5ld1ZpZXdwb3J0IGFzIGFueSkuZ2xvYmU/LmVuYWJsZWQ7XG5cbiAgaWYgKGlzR2xvYmUpIHtcbiAgICAvLyBLZWVwIHRoZSBjYW1lcmEgdGFyZ2V0IHdpdGhpbiBhIGxhdGl0dWRlIGJhbmQgYXJvdW5kIHRoZSBlcXVhdG9yIHNvIHRoZVxuICAgIC8vIHN0b3JlZCB2aWV3cG9ydCBjYW4ndCBiZSBjZW50ZXJlZCBvbiB0aGUgcG9sZXMgKG1hdGNoZXMgdGhlIGdsb2JlXG4gICAgLy8gY29udHJvbGxlcidzIGFwcGx5Q29uc3RyYWludHMgc28gZ2VvY29kZXIvcHJvZ3JhbW1hdGljIHVwZGF0ZXMgYWdyZWUpLlxuICAgIGlmICh0eXBlb2YgbmV3Vmlld3BvcnQubGF0aXR1ZGUgPT09ICdudW1iZXInKSB7XG4gICAgICBuZXdWaWV3cG9ydC5sYXRpdHVkZSA9IE1hdGgubWluKFxuICAgICAgICBHTE9CRV9NQVhfTEFUSVRVREUsXG4gICAgICAgIE1hdGgubWF4KC1HTE9CRV9NQVhfTEFUSVRVREUsIG5ld1ZpZXdwb3J0LmxhdGl0dWRlKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3Qgem9vbUFkanVzdG1lbnQgPSBNYXRoLmxvZzIoTWF0aC5jb3MoKChuZXdWaWV3cG9ydC5sYXRpdHVkZSA/PyAwKSAqIE1hdGguUEkpIC8gMTgwKSk7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lm1pblpvb20gPT09ICdudW1iZXInICYmXG4gICAgICB0eXBlb2YgbmV3Vmlld3BvcnQuem9vbSA9PT0gJ251bWJlcicgJiZcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tICsgem9vbUFkanVzdG1lbnRcbiAgICApIHtcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5taW5ab29tICsgem9vbUFkanVzdG1lbnQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuZXdWaWV3cG9ydC5tYXhab29tID09PSAnbnVtYmVyJyAmJlxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lnpvb20gPT09ICdudW1iZXInICYmXG4gICAgICBuZXdWaWV3cG9ydC56b29tID4gbmV3Vmlld3BvcnQubWF4Wm9vbSArIHpvb21BZGp1c3RtZW50XG4gICAgKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbSArIHpvb21BZGp1c3RtZW50O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGJlbGxvdyBtaW5ab29tIGlmIGRlZmluZWRcbiAgICBpZiAobmV3Vmlld3BvcnQubWluWm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBhYm92ZSBtYXhab29tIGlmIGRlZmluZWRcbiAgICBpZiAobmV3Vmlld3BvcnQubWF4Wm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbTtcbiAgICB9XG4gIH1cbiAgLy8gTGltaXQgdmlld3BvcnQgdXBkYXRlIGJhc2VkIG9uIG1heEJvdW5kc1xuICBpZiAobmV3Vmlld3BvcnQubWF4Qm91bmRzICYmIHZhbGlkYXRlQm91bmRzKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcykpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIG5ld1ZpZXdwb3J0ID0gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKG9yaWdpbmFsVmlld3BvcnQsIG5ld1ZpZXdwb3J0KTtcbiAgfVxuXG4gIHJldHVybiBuZXdWaWV3cG9ydDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQVFBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQU84QixTQUFBUSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENB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
|