@sidekick-coder/zenith-kit 0.3.1 → 0.3.3

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.
@@ -9,7 +9,10 @@ import { ComputedRef, DefineComponent, MaybeRef, MaybeRefOrGetter, Ref, getCurre
9
9
  import { toTypedSchema as toTypedSchema$1 } from "@vee-validate/valibot";
10
10
  import * as VeeValidate from "vee-validate";
11
11
  import { FormContext, FormOptions, GenericObject } from "vee-validate";
12
+ import * as UnheadVue from "@unhead/vue";
12
13
  import { useRouteQuery as useRouteQuery$1 } from "@vueuse/router";
14
+ import { ClassValue } from "clsx";
15
+ import { ClassNameValue } from "tailwind-merge";
13
16
 
14
17
  //#region src/shared/utils/compose.d.ts
15
18
  type Constructor$1<T = {}> = new (...args: any[]) => T;
@@ -869,6 +872,13 @@ declare const useForm: typeof useValibotForm;
869
872
  declare const toTypedSchema: typeof toTypedSchema$1;
870
873
  declare function useValibotForm<T extends ValibotObjectSchema = ValibotObjectSchema>(schema: T, options?: ValibotFormOptions<T>): FormContext<ValidatorResult<T>>;
871
874
  //#endregion
875
+ //#region src/client/facades/unheadVue.d.ts
876
+ declare const UNHEAD_VUE_CONTAINER_KEY = "unhead-vue";
877
+ declare const unheadVue: typeof UnheadVue;
878
+ //#endregion
879
+ //#region src/client/composables/useHead.d.ts
880
+ declare const useHead: typeof unheadVue.useHead;
881
+ //#endregion
872
882
  //#region src/client/composables/useLayoutOptions.d.ts
873
883
  declare function useLayoutOptions(): _$vue.Ref<any, any>;
874
884
  //#endregion
@@ -1139,6 +1149,11 @@ declare const $toast: ((message: string | (() => string | _$vue.Component) | _$v
1139
1149
  getToasts: () => (_$vue_sonner0.ToastT<_$vue.Component> | _$vue_sonner0.ToastToDismiss)[];
1140
1150
  };
1141
1151
  //#endregion
1152
+ //#region src/client/utils/twMerge.d.ts
1153
+ declare function twMerge(...inputs: ClassNameValue[]): string;
1154
+ declare function clsx(...inputs: ClassValue[]): string;
1155
+ declare function cn(...inputs: ClassValue[]): string;
1156
+ //#endregion
1142
1157
  //#region src/client/guards/authGuard.d.ts
1143
1158
  interface AuthGuardOptions {
1144
1159
  redirect: string | ((to: RouteLocationNormalized) => string);
@@ -1157,5 +1172,5 @@ declare const guestGuard: () => string | undefined;
1157
1172
  //#region src/client/guards/setupGuard.d.ts
1158
1173
  declare const setupGuard: NavigationGuard;
1159
1174
  //#endregion
1160
- export { $fetch, $file, $toast, AuthGuardOptions, AuthService, AutoOptions, DASHBOARD_ROW_HEIGHT, Dashboard, DashboardGridUnit, DashboardOptions, DashboardWidget, DashboardWidgetAction, DashboardWidgetData, DashboardWidgetDefinition, DashboardWidgetDefinitionChart, DashboardWidgetRegistry, DataTableColumn, DefineFormField, FetchBrowserService, FetchNodeService, FetchOptions, FetchService, GuestGuardOptions, HSL, LayoutService, LifecycleService, ListFilter, MenuBase, MenuGroup, MenuItem, MenuItem$1 as MenuItemEntity, MenuService, MenuSingle, MenuWithChildren, Module as ModuleEntity, OKLCH, PluginEntity, RGB, RGBA, Router, ToastService, UseFetchPaginationOptions, UseMenu, UseStateOptions, VEE_VALIDATE_CONTAINER_KEY, VUE_CONTAINER_KEY, VUE_ROUTER_CONTAINER_KEY, ValibotFormOptions, ValibotFormResultObject, acl, auth, authGuard, auto, autoRoutes, config, _default as container, createAuthGuard, createGuestGuard, createId, createRouter, dashboardRegistry, defineColumns, defineFormFields, emmitter, extracRGB, extractOKLCH, extractRGBA, fetcher, guestGuard, hexToRGB, hslToRgb, layout, lifecycle, logger, menu, oklchToRgb, parseTo, provideDashboard, provideDashboardWidget, rgbToHex, rgbToHsl, rgbToOklch, rgbaToString, route, router, setupGuard, toTypedSchema, toast, useBreakpoints, useColor, useColorType, useDashboard, useDashboardWidget, useFetchPagination, useForm, useHSL, useHex, useLayoutOptions, useLoading, useMenu, useRGB, useRGBA, useRouteQuery, useState, useValibotForm, veeValidate, vue, vueRouter };
1161
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC91dGlscy9jb21wb3NlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1Blcm1pc3Npb25FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUm9sZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Vc2VyRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0F1dGhTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZldGNoU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9GZXRjaEJyb3dzZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZldGNoTm9kZVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvc2VydmljZXMvTGF5b3V0U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0xpZmVjeWNsZUhvb2suZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9MaWZlY3ljbGVTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2VudGl0aWVzL01lbnVJdGVtRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL01lbnVTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL1JvdXRlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvc2VydmljZXMvVG9hc3RTZXJ2aWNlLmQudHMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZXVzZS9jb3JlL2Rpc3QvaW5kZXguZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvY29tcG9zYWJsZXMvdXNlQnJlYWtwb2ludC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VDb2xvci5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9FbW1pdHRlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZW50aXRpZXMvRGFzaGJvYXJkV2lkZ2V0RGF0YS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9lbnRpdGllcy9EYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2VudGl0aWVzL0Rhc2hib2FyZFdpZGdldC5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC92YWxpZGF0b3JzL3VybFZhbGlkYXRvci5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC92YWxpZGF0b3JzL2tleVZhbHVlVmFsaWRhdG9yLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3ZhbGlkYXRvcnMvcGFnaW5hdGlvblZhbGlkYXRvci5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC92YWxpZGF0b3JzL2luZGV4LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL1ZhbGlkYXRvclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2NoZW1hcy9kYXNoYm9hcmRTY2hlbWEuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZW50aXRpZXMvRGFzaGJvYXJkLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2NvbXBvc2FibGVzL3VzZURhc2hib2FyZC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VEYXNoYm9hcmRXaWRnZXQuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvY29tcG9zYWJsZXMvdXNlRmV0Y2hQYWdpbmF0aW9uLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvQ29udGFpbmVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC91dGlscy9jcmVhdGVJZC5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9BY2xFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTW9kdWxlTWFuaWZlc3RFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTW9kdWxlRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1BsdWdpbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VGb3JtLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2NvbXBvc2FibGVzL3VzZUxheW91dE9wdGlvbnMuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvY29tcG9zYWJsZXMvdXNlTG9hZGluZy5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VNZW51LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2NvbXBvc2FibGVzL3VzZVJvdXRlUXVlcnkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvY29tcG9zYWJsZXMvdXNlU3RhdGUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9hY2wuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9hdXRoLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvY29uZmlnLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvY29udGFpbmVyLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3JlZ2lzdHJ5L0Rhc2hib2FyZFdpZGdldFJlZ2lzdHJ5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvZGFzaGJvYXJkUmVnaXN0cnkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9lbW1pdHRlci5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2ZldGNoZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9sYXlvdXQuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9saWZlY3ljbGUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9sb2dnZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9tZW51LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvcm91dGUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9yb3V0ZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy90b2FzdC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL3ZlZVZhbGlkYXRlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvdnVlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvdnVlUm91dGVyLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2VudGl0aWVzL0Rhc2hib2FyZFdpZGdldERlZmluaXRpb25DaGFydC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9lbnRpdGllcy9Nb2R1bGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZW50aXRpZXMvUGx1Z2luRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3V0aWxzL2F1dG9QYWdlcy5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC91dGlscy9kZWZpbmVDb2x1bW5zLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3V0aWxzL2RlZmluZUZvcm1GaWVsZHMuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvdXRpbHMvZmV0Y2hlci5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC91dGlscy9maWxlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3V0aWxzL3BhcnNlVG8uZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvdXRpbHMvdG9hc3QuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZ3VhcmRzL2F1dGhHdWFyZC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9ndWFyZHMvZ3Vlc3RHdWFyZC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9ndWFyZHMvc2V0dXBHdWFyZC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVW5pb25Ub0ludGVyc2VjdGlvbiB9IGZyb20gJy4vdHlwaW5nLnRzJztcbmV4cG9ydCB0eXBlIEFueUNsYXNzID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VCA9IHt9PiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XG5leHBvcnQgdHlwZSBNaXhpbjxUPiA9IChiYXNlOiBDb25zdHJ1Y3RvcikgPT4gQ29uc3RydWN0b3I8VD47XG4vKipcbiAqIENvbXBvc2VzIG11bHRpcGxlIG1peGlucyBpbnRvIGEgc2luZ2xlIGNsYXNzIHRoYXQgY2FuIGJlIGV4dGVuZGVkLlxuICogQWxsb3dzIGZvciBtdWx0aXBsZSBpbmhlcml0YW5jZS1saWtlIGJlaGF2aW9yIGJ5IGFwcGx5aW5nIG1peGlucyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHBhcmFtIG1peGlucyAtIEFycmF5IG9mIG1peGluIGZ1bmN0aW9ucyB0byBjb21wb3NlXG4gKiBAcmV0dXJucyBBIGNsYXNzIGNvbnN0cnVjdG9yIHRoYXQgaW5jbHVkZXMgYWxsIG1peGluIGZ1bmN0aW9uYWxpdHlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlciBleHRlbmRzIGNvbXBvc2UoVGltZXN0YW1wLCBTb2Z0RGVsZXRlKSB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAqICAgICBzdXBlcigpXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjb21wb3NlPE0gZXh0ZW5kcyBBcnJheTwoYmFzZTogQ29uc3RydWN0b3I8YW55PikgPT4gQ29uc3RydWN0b3I8YW55Pj4+KC4uLm1peGluczogTSk6IFVuaW9uVG9JbnRlcnNlY3Rpb248UmV0dXJuVHlwZTxNW251bWJlcl0+Pjtcbi8qKlxuICogQWx0ZXJuYXRpdmUgY29tcG9zZSBmdW5jdGlvbiB0aGF0IHN0YXJ0cyB3aXRoIGEgYmFzZSBjbGFzc1xuICpcbiAqIEBwYXJhbSBiYXNlQ2xhc3MgLSBUaGUgYmFzZSBjbGFzcyB0byBzdGFydCB3aXRoXG4gKiBAcGFyYW0gbWl4aW5zIC0gQXJyYXkgb2YgbWl4aW4gZnVuY3Rpb25zIHRvIGFwcGx5XG4gKiBAcmV0dXJucyBBIGNsYXNzIGNvbnN0cnVjdG9yIHRoYXQgZXh0ZW5kcyB0aGUgYmFzZSBjbGFzcyB3aXRoIGFsbCBtaXhpbiBmdW5jdGlvbmFsaXR5XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFVzZXIgZXh0ZW5kcyBjb21wb3NlV2l0aChCYXNlRW50aXR5LCBUaW1lc3RhbXAsIFNvZnREZWxldGUpIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZykge1xuICogICAgIHN1cGVyKClcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNvbXBvc2VXaXRoPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3IsIE0gZXh0ZW5kcyBBcnJheTwoYmFzZTogQ29uc3RydWN0b3IpID0+IENvbnN0cnVjdG9yPGFueT4+PihiYXNlQ2xhc3M6IFRCYXNlLCAuLi5taXhpbnM6IE0pOiBUQmFzZSAmIFVuaW9uVG9JbnRlcnNlY3Rpb248UmV0dXJuVHlwZTxNW251bWJlcl0+PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIG1peGluPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KFNvdXJjZTogVEJhc2UpOiA8VFRhcmdldCBleHRlbmRzIENvbnN0cnVjdG9yPihUYXJnZXQ6IFRUYXJnZXQpID0+IFRUYXJnZXQgJiBUQmFzZTtcbiIsImRlY2xhcmUgY29uc3QgUGVybWlzc2lvbkVudGl0eV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlcm1pc3Npb25FbnRpdHkgZXh0ZW5kcyBQZXJtaXNzaW9uRW50aXR5X2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIG9yaWdpbjogc3RyaW5nO1xuICAgIHN1YmplY3Q6IHN0cmluZztcbiAgICBhY3Rpb246IHN0cmluZztcbiAgICBjb25kaXRpb25zOiBzdHJpbmcgfCBudWxsIHwgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBnZXQgZWRpdGFibGUoKTogYm9vbGVhbjtcbiAgICBnZXQgcGFyc2VkQ29uZGl0aW9ucygpOiBhbnk7XG59XG5leHBvcnQge307XG4iLCJkZWNsYXJlIGNvbnN0IFJvbGVfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3IgJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgY3JlYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICB9O1xufSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBkZWxldGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvbGUgZXh0ZW5kcyBSb2xlX2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgUGVybWlzc2lvbiBmcm9tICcuL1Blcm1pc3Npb25FbnRpdHkudHMnO1xuaW1wb3J0IHR5cGUgUm9sZSBmcm9tICcuL1JvbGVFbnRpdHkudHMnO1xuZGVjbGFyZSBjb25zdCBVc2VyRW50aXR5X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgfTtcbn0gJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgZGVsZXRlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVc2VyRW50aXR5IGV4dGVuZHMgVXNlckVudGl0eV9iYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gICAgdmVyaWZpZWRfYXQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgICBwZXJtaXNzaW9ucz86IFBlcm1pc3Npb25bXTtcbiAgICByb2xlcz86IFJvbGVbXTtcbiAgICBnZXQgaW5pdGlhbHMoKTogc3RyaW5nO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IFVzZXIgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9Vc2VyRW50aXR5LnRzJztcbmludGVyZmFjZSBMb2dvdXRPcHRpb25zIHtcbiAgICByZWRpcmVjdD86IHN0cmluZztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgdXNlcjogVXNlciB8IG51bGw7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8QXV0aFNlcnZpY2U+KTtcbiAgICBsb2dvdXQob3B0aW9ucz86IExvZ291dE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xufVxuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGludGVyZmFjZSBGZXRjaE9wdGlvbnMgZXh0ZW5kcyBSZXF1ZXN0SW5pdCB7XG4gICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmV0Y2hTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGhhbmRsZUVycm9yKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8YW55PjtcbiAgICBwcm90ZWN0ZWQgYnVpbGRVcmwodXJsOiBzdHJpbmcsIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgYnVpbGRSZXF1ZXN0SW5pdChvcHRpb25zOiBGZXRjaE9wdGlvbnMpOiBSZXF1ZXN0SW5pdDtcbiAgICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZTxUPihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPFQ+O1xuICAgIGZldGNoPFQ+KF91cmw6IHN0cmluZywgX29wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICAgIHRyeTxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8W0Vycm9yLCBudWxsXSB8IFtudWxsLCBBd2FpdGVkPFQ+XT47XG4gICAgZ2V0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwb3N0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwdXQ8VCA9IGFueT4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICAgIGRlbGV0ZTxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IEZldGNoT3B0aW9ucyB9IGZyb20gJy4vRmV0Y2hTZXJ2aWNlLnRzJztcbmltcG9ydCBGZXRjaFNlcnZpY2UgZnJvbSAnLi9GZXRjaFNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmV0Y2hCcm93c2VyU2VydmljZSBleHRlbmRzIEZldGNoU2VydmljZSB7XG4gICAgZmV0Y2g8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBGZXRjaE9wdGlvbnMgfSBmcm9tICcuL0ZldGNoU2VydmljZS50cyc7XG5pbXBvcnQgRmV0Y2hTZXJ2aWNlIGZyb20gJy4vRmV0Y2hTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZldGNoTm9kZVNlcnZpY2UgZXh0ZW5kcyBGZXRjaFNlcnZpY2Uge1xuICAgIGZldGNoPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwcm90ZWN0ZWQgZmV0Y2hFeHRlcm5hbDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG4gICAgcHJvdGVjdGVkIGZldGNoSW50ZXJuYWw8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBEZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXlvdXRTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgY29tcG9uZW50czogTWFwPHN0cmluZywgRGVmaW5lQ29tcG9uZW50PjtcbiAgICBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGN1cnJlbmRJZDogc3RyaW5nIHwgbnVsbDtcbiAgICBzZXRDdXJyZW50KGlkOiBzdHJpbmcpOiB2b2lkO1xuICAgIGFkZChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudDogRGVmaW5lQ29tcG9uZW50LCBvcHRpb25zPzogYW55KTogdm9pZDtcbiAgICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbiAgICBnZXQobmFtZTogc3RyaW5nKTogRGVmaW5lQ29tcG9uZW50O1xuICAgIGdldE9wdGlvbnMoKTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBnZXRDdXJyZW50KCk6IERlZmluZUNvbXBvbmVudCB8IG51bGw7XG4gICAgc2V0T3B0aW9ucyhvcHRpb25zPzogYW55KTogdm9pZDtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlclNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgbWV0YT86IGFueSk6IHZvaWQ7XG4gICAgZGVidWcobWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgbWV0YT86IGFueSk6IHZvaWQ7XG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nIHwgRXJyb3IsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIGNoaWxkKG9wdGlvbnM6IGFueSk6IExvZ2dlclNlcnZpY2U7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVIb29rIHtcbiAgICBob29rX2lkOiBzdHJpbmc7XG4gICAgaG9va19hbGlhc2VzPzogc3RyaW5nW107XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgc3ViaG9va3M/OiBMaWZlY3ljbGVIb29rW107XG4gICAgcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgYm9vdCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSByZWdpc3RlciAqL1xuICAgIG9uUmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGxvYWQgKi9cbiAgICBvbkxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGJvb3QgKi9cbiAgICBvbkJvb3QoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIHNodXRkb3duICovXG4gICAgb25TaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnLi9Mb2dnZXJTZXJ2aWNlLnRzJztcbmltcG9ydCBMaWZlY3ljbGVIb29rIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvTGlmZWN5Y2xlSG9vay50cyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAnI3NoYXJlZC91dGlscy9jb21wb3NlLnRzJztcbnR5cGUgTGlmZWN5Y2xlTWV0aG9kID0gJ3JlZ2lzdGVyJyB8ICdsb2FkJyB8ICdib290JyB8ICdzaHV0ZG93bic7XG5pbnRlcmZhY2UgTGlzdE9wdGlvbnMge1xuICAgIGluY2x1ZGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBleGNsdWRlPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVNlcnZpY2VPcHRpb25zIHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgaG9va3M/OiBNYXA8c3RyaW5nLCBMaWZlY3ljbGVIb29rPjtcbiAgICBsb2dnZXI/OiBMb2dnZXJTZXJ2aWNlO1xuICAgIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yLCBjb250ZXh0OiB7XG4gICAgICAgIGhvb2tJZDogc3RyaW5nO1xuICAgICAgICBtZXRob2Q6IExpZmVjeWNsZU1ldGhvZDtcbiAgICB9KSA9PiB2b2lkO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlmZWN5Y2xlU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGhvb2tzOiBNYXA8c3RyaW5nLCBMaWZlY3ljbGVIb29rPjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoZGF0YT86IExpZmVjeWNsZVNlcnZpY2VPcHRpb25zKTtcbiAgICBzZXRPbkVycm9yKGhhbmRsZXI6IFJlcXVpcmVkPExpZmVjeWNsZVNlcnZpY2VPcHRpb25zPlsnb25FcnJvciddKTogdm9pZDtcbiAgICBvbkVycm9yKGVycm9yOiBFcnJvciwgY29udGV4dDoge1xuICAgICAgICBob29rSWQ6IHN0cmluZztcbiAgICAgICAgbWV0aG9kOiBMaWZlY3ljbGVNZXRob2Q7XG4gICAgfSk6IHZvaWQ7XG4gICAgbWFwQWxpYXNlcyhhcmdzOiBzdHJpbmdbXSk6IHN0cmluZ1tdO1xuICAgIGxpc3Qob3B0aW9ucz86IExpc3RPcHRpb25zKTogTGlmZWN5Y2xlSG9va1tdO1xuICAgIGFkZCguLi5wYXlsb2FkOiAoTGlmZWN5Y2xlSG9vayB8IENvbnN0cnVjdG9yPExpZmVjeWNsZUhvb2s+KVtdKTogdm9pZDtcbiAgICBlbWl0TWV0aG9kKG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kLCBvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGVtaXQocGF5bG9hZDogTGlmZWN5Y2xlTWV0aG9kIHwgTGlmZWN5Y2xlTWV0aG9kW10sIG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgb24obWV0aG9kOiBMaWZlY3ljbGVNZXRob2QsIGhhbmRsZXI6ICgpID0+IFByb21pc2U8dm9pZD4pOiB2b2lkO1xuICAgIHJlZ2lzdGVyKG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgbG9hZChvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGJvb3Qob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBzaHV0ZG93bihvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGNsZWFyKCk6IHZvaWQ7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgQmFzZUxpZmVjeWNsZVNlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9MaWZlY3ljbGVTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpZmVjeWNsZVNlcnZpY2UgZXh0ZW5kcyBCYXNlTGlmZWN5Y2xlU2VydmljZSB7XG4gICAgYWRkSW1wb3J0cyhpbXBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbn1cbiIsImRlY2xhcmUgY29uc3QgTWVudUl0ZW1fYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZW51SXRlbSBleHRlbmRzIE1lbnVJdGVtX2Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICB0bz86IHN0cmluZztcbiAgICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XG4gICAgZ3JvdXA/OiBzdHJpbmc7XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBwYXJlbnQ/OiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgTWVudUl0ZW0gZnJvbSAnI2NsaWVudC9lbnRpdGllcy9NZW51SXRlbUVudGl0eS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIExpc3RGaWx0ZXIge1xuICAgIGxheW91dD86IHN0cmluZztcbiAgICBncm91cD86IHN0cmluZztcbiAgICBwYXJlbnQ/OiBzdHJpbmc7XG4gICAgYWxsb3dlZD86IGJvb2xlYW47XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZW51U2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGl0ZW1zOiBNYXA8c3RyaW5nLCBNZW51SXRlbT47XG4gICAgYWRkKC4uLml0ZW06IE9taXQ8UGFydGlhbDxNZW51SXRlbT4sICdtZXJnZScgfCAnZnJvbSc+W10pOiB2b2lkO1xuICAgIHJlbW92ZShpZDogTWVudUl0ZW1bJ2lkJ10pOiB2b2lkO1xuICAgIGxpc3QoZmlsdGVyPzogTGlzdEZpbHRlcik6IE1lbnVJdGVtW107XG4gICAgY2xlYXIoKTogdm9pZDtcbn1cbiIsImltcG9ydCB0eXBlIHsgTmF2aWdhdGlvbkd1YXJkLCBSb3V0ZXIgYXMgVnVlUm91dGVyIH0gZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQgdHlwZSB7IFJvdXRlUmVjb3JkUmF3IH0gZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQgdHlwZSB7IERlZmluZUNvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlciBleHRlbmRzIFZ1ZVJvdXRlciB7XG4gICAgYXV0bzogdHlwZW9mIGF1dG87XG59XG5leHBvcnQgaW50ZXJmYWNlIEF1dG9PcHRpb25zIHtcbiAgICBndWFyZHM/OiBOYXZpZ2F0aW9uR3VhcmRbXSB8ICgocmVjb3JkOiBSb3V0ZVJlY29yZFJhdykgPT4gTmF2aWdhdGlvbkd1YXJkW10pO1xuICAgIHN0cmlwPzogKHN0cmluZyB8IFJlZ0V4cClbXTtcbiAgICBleGNsdWRlPzogKHN0cmluZyB8IFJlZ0V4cClbXTtcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVmaW5lPzogKHJlY29yZHM6IFJvdXRlUmVjb3JkUmF3W10pID0+IFJvdXRlUmVjb3JkUmF3W107XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBhdXRvKGltcG9ydHM6IFJlY29yZDxzdHJpbmcsIERlZmluZUNvbXBvbmVudCB8ICgoKSA9PiBQcm9taXNlPERlZmluZUNvbXBvbmVudD4pPiwgb3B0aW9ucz86IEF1dG9PcHRpb25zKTogUm91dGVSZWNvcmRSYXdbXTtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZVJvdXRlcigpOiBSb3V0ZXI7XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBUb2FzdFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkO1xuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkO1xufVxuIiwiaW1wb3J0ICogYXMgX3Z1ZXVzZV9zaGFyZWQwIGZyb20gXCJAdnVldXNlL3NoYXJlZFwiO1xuaW1wb3J0IHsgQXJyYXlhYmxlLCBBd2FpdGFibGUsIENvbmZpZ3VyYWJsZUV2ZW50RmlsdGVyLCBDb25maWd1cmFibGVGbHVzaCwgQ29uZmlndXJhYmxlRmx1c2hTeW5jLCBFdmVudEhvb2tPbiwgRm4sIElzQW55LCBQYXVzYWJsZSwgUmVhZG9ubHlSZWZPckdldHRlciwgUmVtb3ZhYmxlUmVmLCBTaGFsbG93T3JEZWVwUmVmLCBTdG9wcGFibGUsIFVzZVRpbWVvdXRGbk9wdGlvbnMgfSBmcm9tIFwiQHZ1ZXVzZS9zaGFyZWRcIjtcbmltcG9ydCAqIGFzIHZ1ZTAgZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgQXBwLCBDb21wb25lbnQsIENvbXBvbmVudE9iamVjdFByb3BzT3B0aW9ucywgQ29tcG9uZW50UHVibGljSW5zdGFuY2UsIENvbXB1dGVkUmVmLCBEZWZpbmVDb21wb25lbnQsIEluamVjdGlvbktleSwgTWF5YmVSZWYsIE1heWJlUmVmT3JHZXR0ZXIsIE11bHRpV2F0Y2hTb3VyY2VzLCBSZWYsIFNoYWxsb3dSZWYsIFNsb3QsIFN0eWxlVmFsdWUsIFRvUmVmcywgVHJhbnNpdGlvbkdyb3VwUHJvcHMsIFVud3JhcE5lc3RlZFJlZnMsIFVud3JhcFJlZiwgV2F0Y2hPcHRpb25zLCBXYXRjaE9wdGlvbnNCYXNlLCBXYXRjaFNvdXJjZSwgV2F0Y2hTdG9wSGFuZGxlLCBXcml0YWJsZUNvbXB1dGVkUmVmIH0gZnJvbSBcInZ1ZVwiO1xuZXhwb3J0ICogZnJvbSBcIkB2dWV1c2Uvc2hhcmVkXCI7XG5cbi8vI3JlZ2lvbiBjb21wdXRlZEFzeW5jL2luZGV4LmQudHNcbi8qKlxuICogSGFuZGxlIG92ZXJsYXBwaW5nIGFzeW5jIGV2YWx1YXRpb25zLlxuICpcbiAqIEBwYXJhbSBjYW5jZWxDYWxsYmFjayBUaGUgcHJvdmlkZWQgY2FsbGJhY2sgaXMgaW52b2tlZCB3aGVuIGEgcmUtZXZhbHVhdGlvbiBvZiB0aGUgY29tcHV0ZWQgdmFsdWUgaXMgdHJpZ2dlcmVkIGJlZm9yZSB0aGUgcHJldmlvdXMgb25lIGZpbmlzaGVkXG4gKi9cbnR5cGUgQXN5bmNDb21wdXRlZE9uQ2FuY2VsID0gKGNhbmNlbENhbGxiYWNrOiBGbikgPT4gdm9pZDtcbmludGVyZmFjZSBBc3luY0NvbXB1dGVkT3B0aW9uczxMYXp5ID0gYm9vbGVhbj4gZXh0ZW5kcyBDb25maWd1cmFibGVGbHVzaFN5bmMge1xuICAvKipcbiAgICogU2hvdWxkIHZhbHVlIGJlIGV2YWx1YXRlZCBsYXppbHlcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGxhenk/OiBMYXp5O1xuICAvKipcbiAgICogUmVmIHBhc3NlZCB0byByZWNlaXZlIHRoZSB1cGRhdGVkIG9mIGFzeW5jIGV2YWx1YXRpb25cbiAgICovXG4gIGV2YWx1YXRpbmc/OiBSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBVc2Ugc2hhbGxvd1JlZlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaGFsbG93PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoZW4gZXJyb3IgaXMgY2F1Z2h0LlxuICAgKi9cbiAgb25FcnJvcj86IChlOiB1bmtub3duKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBDcmVhdGUgYW4gYXN5bmNocm9ub3VzIGNvbXB1dGVkIGRlcGVuZGVuY3kuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvY29tcHV0ZWRBc3luY1xuICogQHBhcmFtIGV2YWx1YXRpb25DYWxsYmFjayAgICAgVGhlIHByb21pc2UtcmV0dXJuaW5nIGNhbGxiYWNrIHdoaWNoIGdlbmVyYXRlcyB0aGUgY29tcHV0ZWQgdmFsdWVcbiAqIEBwYXJhbSBpbml0aWFsU3RhdGUgICAgICAgICAgIFRoZSBpbml0aWFsIHN0YXRlLCB1c2VkIHVudGlsIHRoZSBmaXJzdCBldmFsdWF0aW9uIGZpbmlzaGVzXG4gKiBAcGFyYW0gb3B0aW9uc09yUmVmICAgICAgICAgICBBZGRpdGlvbmFsIG9wdGlvbnMgb3IgYSByZWYgcGFzc2VkIHRvIHJlY2VpdmUgdGhlIHVwZGF0ZXMgb2YgdGhlIGFzeW5jIGV2YWx1YXRpb25cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBjb21wdXRlZEFzeW5jPFQ+KGV2YWx1YXRpb25DYWxsYmFjazogKG9uQ2FuY2VsOiBBc3luY0NvbXB1dGVkT25DYW5jZWwpID0+IFQgfCBQcm9taXNlPFQ+LCBpbml0aWFsU3RhdGU6IFQsIG9wdGlvbnNPclJlZjogQXN5bmNDb21wdXRlZE9wdGlvbnM8dHJ1ZT4pOiBDb21wdXRlZFJlZjxUPjtcbmRlY2xhcmUgZnVuY3Rpb24gY29tcHV0ZWRBc3luYzxUPihldmFsdWF0aW9uQ2FsbGJhY2s6IChvbkNhbmNlbDogQXN5bmNDb21wdXRlZE9uQ2FuY2VsKSA9PiBUIHwgUHJvbWlzZTxUPiwgaW5pdGlhbFN0YXRlOiB1bmRlZmluZWQsIG9wdGlvbnNPclJlZjogQXN5bmNDb21wdXRlZE9wdGlvbnM8dHJ1ZT4pOiBDb21wdXRlZFJlZjxUIHwgdW5kZWZpbmVkPjtcbmRlY2xhcmUgZnVuY3Rpb24gY29tcHV0ZWRBc3luYzxUPihldmFsdWF0aW9uQ2FsbGJhY2s6IChvbkNhbmNlbDogQXN5bmNDb21wdXRlZE9uQ2FuY2VsKSA9PiBUIHwgUHJvbWlzZTxUPiwgaW5pdGlhbFN0YXRlOiBULCBvcHRpb25zT3JSZWY/OiBSZWY8Ym9vbGVhbj4gfCBBc3luY0NvbXB1dGVkT3B0aW9ucyk6IFJlZjxUPjtcbmRlY2xhcmUgZnVuY3Rpb24gY29tcHV0ZWRBc3luYzxUPihldmFsdWF0aW9uQ2FsbGJhY2s6IChvbkNhbmNlbDogQXN5bmNDb21wdXRlZE9uQ2FuY2VsKSA9PiBUIHwgUHJvbWlzZTxUPiwgaW5pdGlhbFN0YXRlPzogdW5kZWZpbmVkLCBvcHRpb25zT3JSZWY/OiBSZWY8Ym9vbGVhbj4gfCBBc3luY0NvbXB1dGVkT3B0aW9ucyk6IFJlZjxUIHwgdW5kZWZpbmVkPjtcbi8qKiBAZGVwcmVjYXRlZCB1c2UgYGNvbXB1dGVkQXN5bmNgIGluc3RlYWQgKi9cbmRlY2xhcmUgY29uc3QgYXN5bmNDb21wdXRlZDogdHlwZW9mIGNvbXB1dGVkQXN5bmM7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBjb21wdXRlZEluamVjdC9pbmRleC5kLnRzXG50eXBlIENvbXB1dGVkSW5qZWN0R2V0dGVyPFQsIEskMT4gPSAoc291cmNlOiBUIHwgdW5kZWZpbmVkLCBvbGRWYWx1ZT86IEskMSkgPT4gSyQxO1xudHlwZSBDb21wdXRlZEluamVjdEdldHRlcldpdGhEZWZhdWx0PFQsIEskMT4gPSAoc291cmNlOiBULCBvbGRWYWx1ZT86IEskMSkgPT4gSyQxO1xudHlwZSBDb21wdXRlZEluamVjdFNldHRlcjxUPiA9ICh2OiBUKSA9PiB2b2lkO1xuaW50ZXJmYWNlIFdyaXRhYmxlQ29tcHV0ZWRJbmplY3RPcHRpb25zPFQsIEskMT4ge1xuICBnZXQ6IENvbXB1dGVkSW5qZWN0R2V0dGVyPFQsIEskMT47XG4gIHNldDogQ29tcHV0ZWRJbmplY3RTZXR0ZXI8SyQxPjtcbn1cbmludGVyZmFjZSBXcml0YWJsZUNvbXB1dGVkSW5qZWN0T3B0aW9uc1dpdGhEZWZhdWx0PFQsIEskMT4ge1xuICBnZXQ6IENvbXB1dGVkSW5qZWN0R2V0dGVyV2l0aERlZmF1bHQ8VCwgSyQxPjtcbiAgc2V0OiBDb21wdXRlZEluamVjdFNldHRlcjxLJDE+O1xufVxuZGVjbGFyZSBmdW5jdGlvbiBjb21wdXRlZEluamVjdDxULCBLJDEgPSBhbnk+KGtleTogSW5qZWN0aW9uS2V5PFQ+IHwgc3RyaW5nLCBnZXR0ZXI6IENvbXB1dGVkSW5qZWN0R2V0dGVyPFQsIEskMT4pOiBDb21wdXRlZFJlZjxLJDEgfCB1bmRlZmluZWQ+O1xuZGVjbGFyZSBmdW5jdGlvbiBjb21wdXRlZEluamVjdDxULCBLJDEgPSBhbnk+KGtleTogSW5qZWN0aW9uS2V5PFQ+IHwgc3RyaW5nLCBvcHRpb25zOiBXcml0YWJsZUNvbXB1dGVkSW5qZWN0T3B0aW9uczxULCBLJDE+KTogQ29tcHV0ZWRSZWY8SyQxIHwgdW5kZWZpbmVkPjtcbmRlY2xhcmUgZnVuY3Rpb24gY29tcHV0ZWRJbmplY3Q8VCwgSyQxID0gYW55PihrZXk6IEluamVjdGlvbktleTxUPiB8IHN0cmluZywgZ2V0dGVyOiBDb21wdXRlZEluamVjdEdldHRlcldpdGhEZWZhdWx0PFQsIEskMT4sIGRlZmF1bHRTb3VyY2U6IFQsIHRyZWF0RGVmYXVsdEFzRmFjdG9yeT86IGZhbHNlKTogQ29tcHV0ZWRSZWY8SyQxPjtcbmRlY2xhcmUgZnVuY3Rpb24gY29tcHV0ZWRJbmplY3Q8VCwgSyQxID0gYW55PihrZXk6IEluamVjdGlvbktleTxUPiB8IHN0cmluZywgb3B0aW9uczogV3JpdGFibGVDb21wdXRlZEluamVjdE9wdGlvbnNXaXRoRGVmYXVsdDxULCBLJDE+LCBkZWZhdWx0U291cmNlOiBUIHwgKCgpID0+IFQpLCB0cmVhdERlZmF1bHRBc0ZhY3Rvcnk6IHRydWUpOiBDb21wdXRlZFJlZjxLJDE+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gY3JlYXRlUmV1c2FibGVUZW1wbGF0ZS9pbmRleC5kLnRzXG50eXBlIE9iamVjdExpdGVyYWxXaXRoUG90ZW50aWFsT2JqZWN0TGl0ZXJhbHMgPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkPjtcbnR5cGUgR2VuZXJhdGVTbG90c0Zyb21TbG90TWFwPFQgZXh0ZW5kcyBPYmplY3RMaXRlcmFsV2l0aFBvdGVudGlhbE9iamVjdExpdGVyYWxzPiA9IHsgW0sgaW4ga2V5b2YgVF06IFNsb3Q8VFtLXT4gfTtcbnR5cGUgRGVmaW5lVGVtcGxhdGVDb21wb25lbnQ8QmluZGluZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBNYXBTbG90TmFtZVRvU2xvdFByb3BzIGV4dGVuZHMgT2JqZWN0TGl0ZXJhbFdpdGhQb3RlbnRpYWxPYmplY3RMaXRlcmFscz4gPSBEZWZpbmVDb21wb25lbnQgJiB7XG4gIG5ldyAoKToge1xuICAgICRzbG90czoge1xuICAgICAgZGVmYXVsdDogKF86IEJpbmRpbmdzICYge1xuICAgICAgICAkc2xvdHM6IEdlbmVyYXRlU2xvdHNGcm9tU2xvdE1hcDxNYXBTbG90TmFtZVRvU2xvdFByb3BzPjtcbiAgICAgIH0pID0+IGFueTtcbiAgICB9O1xuICB9O1xufTtcbnR5cGUgUmV1c2VUZW1wbGF0ZUNvbXBvbmVudDxCaW5kaW5ncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sIE1hcFNsb3ROYW1lVG9TbG90UHJvcHMgZXh0ZW5kcyBPYmplY3RMaXRlcmFsV2l0aFBvdGVudGlhbE9iamVjdExpdGVyYWxzPiA9IERlZmluZUNvbXBvbmVudDxCaW5kaW5ncz4gJiB7XG4gIG5ldyAoKToge1xuICAgICRzbG90czogR2VuZXJhdGVTbG90c0Zyb21TbG90TWFwPE1hcFNsb3ROYW1lVG9TbG90UHJvcHM+O1xuICB9O1xufTtcbnR5cGUgUmV1c2FibGVUZW1wbGF0ZVBhaXI8QmluZGluZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBNYXBTbG90TmFtZVRvU2xvdFByb3BzIGV4dGVuZHMgT2JqZWN0TGl0ZXJhbFdpdGhQb3RlbnRpYWxPYmplY3RMaXRlcmFscz4gPSBbRGVmaW5lVGVtcGxhdGVDb21wb25lbnQ8QmluZGluZ3MsIE1hcFNsb3ROYW1lVG9TbG90UHJvcHM+LCBSZXVzZVRlbXBsYXRlQ29tcG9uZW50PEJpbmRpbmdzLCBNYXBTbG90TmFtZVRvU2xvdFByb3BzPl0gJiB7XG4gIGRlZmluZTogRGVmaW5lVGVtcGxhdGVDb21wb25lbnQ8QmluZGluZ3MsIE1hcFNsb3ROYW1lVG9TbG90UHJvcHM+O1xuICByZXVzZTogUmV1c2VUZW1wbGF0ZUNvbXBvbmVudDxCaW5kaW5ncywgTWFwU2xvdE5hbWVUb1Nsb3RQcm9wcz47XG59O1xuaW50ZXJmYWNlIENyZWF0ZVJldXNhYmxlVGVtcGxhdGVPcHRpb25zPFByb3BzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAvKipcbiAgICogSW5oZXJpdCBhdHRycyBmcm9tIHJldXNlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5oZXJpdEF0dHJzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByb3BzIGRlZmluaXRpb24gZm9yIHJldXNlIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3BzPzogQ29tcG9uZW50T2JqZWN0UHJvcHNPcHRpb25zPFByb3BzPjtcbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGBkZWZpbmVgIGFuZCBgcmV1c2VgIGNvbXBvbmVudHMgaW4gcGFpcixcbiAqIEl0IGFsc28gYWxsb3cgdG8gcGFzcyBhIGdlbmVyaWMgdG8gYmluZCB3aXRoIHR5cGUuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvY3JlYXRlUmV1c2FibGVUZW1wbGF0ZVxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlUmV1c2FibGVUZW1wbGF0ZTxCaW5kaW5ncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sIE1hcFNsb3ROYW1lVG9TbG90UHJvcHMgZXh0ZW5kcyBPYmplY3RMaXRlcmFsV2l0aFBvdGVudGlhbE9iamVjdExpdGVyYWxzID0gUmVjb3JkPCdkZWZhdWx0JywgdW5kZWZpbmVkPj4ob3B0aW9ucz86IENyZWF0ZVJldXNhYmxlVGVtcGxhdGVPcHRpb25zPEJpbmRpbmdzPik6IFJldXNhYmxlVGVtcGxhdGVQYWlyPEJpbmRpbmdzLCBNYXBTbG90TmFtZVRvU2xvdFByb3BzPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIGNyZWF0ZVRlbXBsYXRlUHJvbWlzZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVGVtcGxhdGVQcm9taXNlUHJvcHM8UmV0dXJuLCBBcmdzIGV4dGVuZHMgYW55W10gPSBbXT4ge1xuICAvKipcbiAgICogVGhlIHByb21pc2UgaW5zdGFuY2UuXG4gICAqL1xuICBwcm9taXNlOiBQcm9taXNlPFJldHVybj4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBwcm9taXNlLlxuICAgKi9cbiAgcmVzb2x2ZTogKHY6IFJldHVybiB8IFByb21pc2U8UmV0dXJuPikgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlamVjdCB0aGUgcHJvbWlzZS5cbiAgICovXG4gIHJlamVjdDogKHY6IGFueSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEFyZ3VtZW50cyBwYXNzZWQgdG8gVGVtcGxhdGVQcm9taXNlLnN0YXJ0KClcbiAgICovXG4gIGFyZ3M6IEFyZ3M7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHByb21pc2UgaXMgcmVzb2x2aW5nLlxuICAgKiBXaGVuIHBhc3NpbmcgYW5vdGhlciBwcm9taXNlIHRvIGByZXNvbHZlYCwgdGhpcyB3aWxsIGJlIHNldCB0byBgdHJ1ZWAgdW50aWwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAqL1xuICBpc1Jlc29sdmluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgcGFzc2VkIHRvIGNyZWF0ZVRlbXBsYXRlUHJvbWlzZSgpXG4gICAqL1xuICBvcHRpb25zOiBUZW1wbGF0ZVByb21pc2VPcHRpb25zO1xuICAvKipcbiAgICogVW5pcXVlIGtleSBmb3IgbGlzdCByZW5kZXJpbmcuXG4gICAqL1xuICBrZXk6IG51bWJlcjtcbn1cbmludGVyZmFjZSBUZW1wbGF0ZVByb21pc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHByb21pc2UgY2FuIGJlIGNhbGxlZCBvbmx5IG9uY2UgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2luZ2xldG9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRyYW5zaXRpb24gcHJvcHMgZm9yIHRoZSBwcm9taXNlLlxuICAgKi9cbiAgdHJhbnNpdGlvbj86IFRyYW5zaXRpb25Hcm91cFByb3BzO1xufVxudHlwZSBUZW1wbGF0ZVByb21pc2U8UmV0dXJuLCBBcmdzIGV4dGVuZHMgYW55W10gPSBbXT4gPSBEZWZpbmVDb21wb25lbnQ8b2JqZWN0PiAmIHtcbiAgbmV3ICgpOiB7XG4gICAgJHNsb3RzOiB7XG4gICAgICBkZWZhdWx0OiAoXzogVGVtcGxhdGVQcm9taXNlUHJvcHM8UmV0dXJuLCBBcmdzPikgPT4gYW55O1xuICAgIH07XG4gIH07XG59ICYge1xuICBzdGFydDogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8UmV0dXJuPjtcbn07XG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wbGF0ZSBwcm9taXNlIGNvbXBvbmVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy9jcmVhdGVUZW1wbGF0ZVByb21pc2VcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRlUHJvbWlzZTxSZXR1cm4sIEFyZ3MgZXh0ZW5kcyBhbnlbXSA9IFtdPihvcHRpb25zPzogVGVtcGxhdGVQcm9taXNlT3B0aW9ucyk6IFRlbXBsYXRlUHJvbWlzZTxSZXR1cm4sIEFyZ3M+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gY3JlYXRlVW5yZWZGbi9pbmRleC5kLnRzXG50eXBlIFVucmVmRm48VD4gPSBUIGV4dGVuZHMgKCguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSKSA/ICguLi5hcmdzOiB7IFtLIGluIGtleW9mIEFdOiBNYXliZVJlZjxBW0tdPiB9KSA9PiBSIDogbmV2ZXI7XG4vKipcbiAqIE1ha2UgYSBwbGFpbiBmdW5jdGlvbiBhY2NlcHRpbmcgcmVmIGFuZCByYXcgdmFsdWVzIGFzIGFyZ3VtZW50cy5cbiAqIFJldHVybnMgdGhlIHNhbWUgdmFsdWUgdGhlIHVuY29udmVydGVkIGZ1bmN0aW9uIHJldHVybnMsIHdpdGggcHJvcGVyIHR5cGluZy5cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZVVucmVmRm48VCBleHRlbmRzIEZ1bmN0aW9uPihmbjogVCk6IFVucmVmRm48VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBfY29uZmlndXJhYmxlLmQudHNcbmludGVyZmFjZSBDb25maWd1cmFibGVXaW5kb3cge1xuICB3aW5kb3c/OiBXaW5kb3c7XG59XG5pbnRlcmZhY2UgQ29uZmlndXJhYmxlRG9jdW1lbnQge1xuICBkb2N1bWVudD86IERvY3VtZW50O1xufVxuaW50ZXJmYWNlIENvbmZpZ3VyYWJsZURvY3VtZW50T3JTaGFkb3dSb290IHtcbiAgZG9jdW1lbnQ/OiBEb2N1bWVudE9yU2hhZG93Um9vdDtcbn1cbmludGVyZmFjZSBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICBuYXZpZ2F0b3I/OiBOYXZpZ2F0b3I7XG59XG5pbnRlcmZhY2UgQ29uZmlndXJhYmxlTG9jYXRpb24ge1xuICBsb2NhdGlvbj86IExvY2F0aW9uO1xufVxuZGVjbGFyZSBjb25zdCBkZWZhdWx0V2luZG93OiAoV2luZG93ICYgdHlwZW9mIGdsb2JhbFRoaXMpIHwgdW5kZWZpbmVkO1xuZGVjbGFyZSBjb25zdCBkZWZhdWx0RG9jdW1lbnQ6IERvY3VtZW50IHwgdW5kZWZpbmVkO1xuZGVjbGFyZSBjb25zdCBkZWZhdWx0TmF2aWdhdG9yOiBOYXZpZ2F0b3IgfCB1bmRlZmluZWQ7XG5kZWNsYXJlIGNvbnN0IGRlZmF1bHRMb2NhdGlvbjogTG9jYXRpb24gfCB1bmRlZmluZWQ7XG5pbnRlcmZhY2UgQ29uZmlndXJhYmxlRGVlcFJlZnM8RCBleHRlbmRzIGJvb2xlYW4+IHtcbiAgLyoqXG4gICAqIFJldHVybiBkZWVwIHJlZnMgaW5zdGVhZCBvZiBzaGFsbG93IHJlZnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWUgLSB3aWxsIGJlIGNoYW5nZWQgdG8gYGZhbHNlYCBieSBkZWZhdWx0IGluIHRoZSBuZXh0IG1ham9yXG4gICAqL1xuICBkZWVwUmVmcz86IEQ7XG59XG5pbnRlcmZhY2UgQ29uZmlndXJhYmxlU2NoZWR1bGVyIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBzY2hlZHVsZXIgdG8gdXNlIGZvciBpbnRlcnZhbCBleGVjdXRpb24uXG4gICAqL1xuICBzY2hlZHVsZXI/OiAoY2I6IEZuKSA9PiBQYXVzYWJsZTtcbn1cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVucmVmRWxlbWVudC9pbmRleC5kLnRzXG50eXBlIFZ1ZUluc3RhbmNlID0gQ29tcG9uZW50UHVibGljSW5zdGFuY2U7XG50eXBlIE1heWJlRWxlbWVudFJlZjxUIGV4dGVuZHMgTWF5YmVFbGVtZW50ID0gTWF5YmVFbGVtZW50PiA9IE1heWJlUmVmPFQ+O1xudHlwZSBNYXliZUNvbXB1dGVkRWxlbWVudFJlZjxUIGV4dGVuZHMgTWF5YmVFbGVtZW50ID0gTWF5YmVFbGVtZW50PiA9IE1heWJlUmVmT3JHZXR0ZXI8VD47XG50eXBlIE1heWJlRWxlbWVudCA9IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB8IFZ1ZUluc3RhbmNlIHwgdW5kZWZpbmVkIHwgbnVsbDtcbnR5cGUgVW5SZWZFbGVtZW50UmV0dXJuPFQgZXh0ZW5kcyBNYXliZUVsZW1lbnQgPSBNYXliZUVsZW1lbnQ+ID0gVCBleHRlbmRzIFZ1ZUluc3RhbmNlID8gRXhjbHVkZTxNYXliZUVsZW1lbnQsIFZ1ZUluc3RhbmNlPiA6IFQgfCB1bmRlZmluZWQ7XG4vKipcbiAqIEdldCB0aGUgZG9tIGVsZW1lbnQgb2YgYSByZWYgb2YgZWxlbWVudCBvciBWdWUgY29tcG9uZW50IGluc3RhbmNlXG4gKlxuICogQHBhcmFtIGVsUmVmXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdW5yZWZFbGVtZW50PFQgZXh0ZW5kcyBNYXliZUVsZW1lbnQ+KGVsUmVmOiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZjxUPik6IFVuUmVmRWxlbWVudFJldHVybjxUPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIG9uQ2xpY2tPdXRzaWRlL2luZGV4LmQudHNcbmludGVyZmFjZSBPbkNsaWNrT3V0c2lkZU9wdGlvbnM8Q29udHJvbHMgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+IGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgZWxlbWVudHMgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgdGhlIGV2ZW50LFxuICAgKiBwcm92aWRlZCBhcyBSZWZzIG9yIENTUyBTZWxlY3RvcnMuXG4gICAqL1xuICBpZ25vcmU/OiBNYXliZVJlZk9yR2V0dGVyPChNYXliZUVsZW1lbnRSZWYgfCBzdHJpbmcpW10+O1xuICAvKipcbiAgICogVXNlIGNhcHR1cmluZyBwaGFzZSBmb3IgaW50ZXJuYWwgZXZlbnQgbGlzdGVuZXIuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGNhcHR1cmU/OiBib29sZWFuO1xuICAvKipcbiAgICogUnVuIGhhbmRsZXIgZnVuY3Rpb24gaWYgZm9jdXMgbW92ZXMgdG8gYW4gaWZyYW1lLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGV0ZWN0SWZyYW1lPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZSBjb250cm9scyB0byBjYW5jZWwvdHJpZ2dlciBsaXN0ZW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbnRyb2xzPzogQ29udHJvbHM7XG59XG50eXBlIE9uQ2xpY2tPdXRzaWRlSGFuZGxlcjxUIGV4dGVuZHMgT25DbGlja091dHNpZGVPcHRpb25zPGJvb2xlYW4+ID0gT25DbGlja091dHNpZGVPcHRpb25zPiA9IChldmVudDogKFRbJ2RldGVjdElmcmFtZSddIGV4dGVuZHMgdHJ1ZSA/IEZvY3VzRXZlbnQgOiBuZXZlcikgfCAoVFsnY29udHJvbHMnXSBleHRlbmRzIHRydWUgPyBFdmVudCA6IG5ldmVyKSB8IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbnR5cGUgT25DbGlja091dHNpZGVSZXR1cm48Q29udHJvbHMgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+ID0gQ29udHJvbHMgZXh0ZW5kcyBmYWxzZSA/IEZuIDoge1xuICBzdG9wOiBGbjtcbiAgY2FuY2VsOiBGbjtcbiAgdHJpZ2dlcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbn07XG4vKipcbiAqIExpc3RlbiBmb3IgY2xpY2tzIG91dHNpZGUgb2YgYW4gZWxlbWVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy9vbkNsaWNrT3V0c2lkZVxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGhhbmRsZXJcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gb25DbGlja091dHNpZGU8VCBleHRlbmRzIE9uQ2xpY2tPdXRzaWRlT3B0aW9ucz4odGFyZ2V0OiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZiwgaGFuZGxlcjogT25DbGlja091dHNpZGVIYW5kbGVyPFQ+LCBvcHRpb25zPzogVCk6IEZuO1xuZGVjbGFyZSBmdW5jdGlvbiBvbkNsaWNrT3V0c2lkZTxUIGV4dGVuZHMgT25DbGlja091dHNpZGVPcHRpb25zPHRydWU+Pih0YXJnZXQ6IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmLCBoYW5kbGVyOiBPbkNsaWNrT3V0c2lkZUhhbmRsZXI8VD4sIG9wdGlvbnM6IFQpOiB7XG4gIHN0b3A6IEZuO1xuICBjYW5jZWw6IEZuO1xuICB0cmlnZ2VyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xufTtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIG9uRWxlbWVudFJlbW92YWwvaW5kZXguZC50c1xuaW50ZXJmYWNlIE9uRWxlbWVudFJlbW92YWxPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93LCBDb25maWd1cmFibGVEb2N1bWVudE9yU2hhZG93Um9vdCwgV2F0Y2hPcHRpb25zQmFzZSB7fVxuLyoqXG4gKiBGaXJlcyB3aGVuIHRoZSBlbGVtZW50IG9yIGFueSBlbGVtZW50IGNvbnRhaW5pbmcgaXQgaXMgcmVtb3ZlZC5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gb25FbGVtZW50UmVtb3ZhbCh0YXJnZXQ6IE1heWJlRWxlbWVudFJlZiwgY2FsbGJhY2s6IChtdXRhdGlvblJlY29yZHM6IE11dGF0aW9uUmVjb3JkW10pID0+IHZvaWQsIG9wdGlvbnM/OiBPbkVsZW1lbnRSZW1vdmFsT3B0aW9ucyk6IEZuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gb25LZXlTdHJva2UvaW5kZXguZC50c1xudHlwZSBLZXlQcmVkaWNhdGUgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGJvb2xlYW47XG50eXBlIEtleUZpbHRlciA9IHRydWUgfCBzdHJpbmcgfCBzdHJpbmdbXSB8IEtleVByZWRpY2F0ZTtcbnR5cGUgS2V5U3Ryb2tlRXZlbnROYW1lID0gJ2tleWRvd24nIHwgJ2tleXByZXNzJyB8ICdrZXl1cCc7XG5pbnRlcmZhY2UgT25LZXlTdHJva2VPcHRpb25zIHtcbiAgZXZlbnROYW1lPzogS2V5U3Ryb2tlRXZlbnROYW1lO1xuICB0YXJnZXQ/OiBNYXliZVJlZk9yR2V0dGVyPEV2ZW50VGFyZ2V0IHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gIHBhc3NpdmU/OiBib29sZWFuO1xuICAvKipcbiAgICogU2V0IHRvIGB0cnVlYCB0byBpZ25vcmUgcmVwZWF0ZWQgZXZlbnRzIHdoZW4gdGhlIGtleSBpcyBiZWluZyBoZWxkIGRvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZWR1cGU/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4+O1xufVxuLyoqXG4gKiBMaXN0ZW4gZm9yIGtleWJvYXJkIGtleXN0cm9rZXMuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvb25LZXlTdHJva2VcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBvbktleVN0cm9rZShrZXk6IEtleUZpbHRlciwgaGFuZGxlcjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogT25LZXlTdHJva2VPcHRpb25zKTogKCkgPT4gdm9pZDtcbmRlY2xhcmUgZnVuY3Rpb24gb25LZXlTdHJva2UoaGFuZGxlcjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogT25LZXlTdHJva2VPcHRpb25zKTogKCkgPT4gdm9pZDtcbi8qKlxuICogTGlzdGVuIHRvIHRoZSBrZXlkb3duIGV2ZW50IG9mIHRoZSBnaXZlbiBrZXkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvb25LZXlTdHJva2VcbiAqIEBwYXJhbSBrZXlcbiAqIEBwYXJhbSBoYW5kbGVyXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIG9uS2V5RG93bihrZXk6IEtleUZpbHRlciwgaGFuZGxlcjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogT21pdDxPbktleVN0cm9rZU9wdGlvbnMsICdldmVudE5hbWUnPik6ICgpID0+IHZvaWQ7XG4vKipcbiAqIExpc3RlbiB0byB0aGUga2V5cHJlc3MgZXZlbnQgb2YgdGhlIGdpdmVuIGtleS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy9vbktleVN0cm9rZVxuICogQHBhcmFtIGtleVxuICogQHBhcmFtIGhhbmRsZXJcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gb25LZXlQcmVzc2VkKGtleTogS2V5RmlsdGVyLCBoYW5kbGVyOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBPbWl0PE9uS2V5U3Ryb2tlT3B0aW9ucywgJ2V2ZW50TmFtZSc+KTogKCkgPT4gdm9pZDtcbi8qKlxuICogTGlzdGVuIHRvIHRoZSBrZXl1cCBldmVudCBvZiB0aGUgZ2l2ZW4ga2V5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL29uS2V5U3Ryb2tlXG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gaGFuZGxlclxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBvbktleVVwKGtleTogS2V5RmlsdGVyLCBoYW5kbGVyOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBPbWl0PE9uS2V5U3Ryb2tlT3B0aW9ucywgJ2V2ZW50TmFtZSc+KTogKCkgPT4gdm9pZDtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIG9uTG9uZ1ByZXNzL2luZGV4LmQudHNcbmludGVyZmFjZSBPbkxvbmdQcmVzc09wdGlvbnMge1xuICAvKipcbiAgICogVGltZSBpbiBtcyB0aWxsIGBsb25ncHJlc3NgIGdldHMgY2FsbGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IDUwMFxuICAgKi9cbiAgZGVsYXk/OiBudW1iZXIgfCAoKGV2OiBQb2ludGVyRXZlbnQpID0+IG51bWJlcik7XG4gIG1vZGlmaWVycz86IE9uTG9uZ1ByZXNzTW9kaWZpZXJzO1xuICAvKipcbiAgICogQWxsb3dhbmNlIG9mIG1vdmluZyBkaXN0YW5jZSBpbiBwaXhlbHMsXG4gICAqIFRoZSBhY3Rpb24gd2lsbCBnZXQgY2FuY2VsZWQgV2hlbiBtb3ZpbmcgdG9vIGZhciBmcm9tIHRoZSBwb2ludGVyZG93biBwb3NpdGlvbi5cbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIGRpc3RhbmNlVGhyZXNob2xkPzogbnVtYmVyIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgcmVmIGVsZW1lbnQgaXMgcmVsZWFzZWQuXG4gICAqIEBwYXJhbSBkdXJhdGlvbiBob3cgbG9uZyB0aGUgZWxlbWVudCB3YXMgcHJlc3NlZCBpbiBtc1xuICAgKiBAcGFyYW0gZGlzdGFuY2UgZGlzdGFuY2UgZnJvbSB0aGUgcG9pbnRlcmRvd24gcG9zaXRpb25cbiAgICogQHBhcmFtIGlzTG9uZ1ByZXNzIHdoZXRoZXIgdGhlIGFjdGlvbiB3YXMgYSBsb25nIHByZXNzIG9yIG5vdFxuICAgKi9cbiAgb25Nb3VzZVVwPzogKGR1cmF0aW9uOiBudW1iZXIsIGRpc3RhbmNlOiBudW1iZXIsIGlzTG9uZ1ByZXNzOiBib29sZWFuKSA9PiB2b2lkO1xufVxuaW50ZXJmYWNlIE9uTG9uZ1ByZXNzTW9kaWZpZXJzIHtcbiAgc3RvcD86IGJvb2xlYW47XG4gIG9uY2U/OiBib29sZWFuO1xuICBwcmV2ZW50PzogYm9vbGVhbjtcbiAgY2FwdHVyZT86IGJvb2xlYW47XG4gIHNlbGY/OiBib29sZWFuO1xufVxudHlwZSBPbkxvbmdQcmVzc1JldHVybiA9ICgpID0+IHZvaWQ7XG4vKiogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBPbkxvbmdQcmVzc1JldHVybn0gaW5zdGVhZCAqL1xudHlwZSBVc2VPbkxvbmdQcmVzc1JldHVybiA9IE9uTG9uZ1ByZXNzUmV0dXJuO1xuZGVjbGFyZSBmdW5jdGlvbiBvbkxvbmdQcmVzcyh0YXJnZXQ6IE1heWJlRWxlbWVudFJlZiwgaGFuZGxlcjogKGV2dDogUG9pbnRlckV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogT25Mb25nUHJlc3NPcHRpb25zKTogT25Mb25nUHJlc3NSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBvblN0YXJ0VHlwaW5nL2luZGV4LmQudHNcbi8qKlxuICogRmlyZXMgd2hlbiB1c2VycyBzdGFydCB0eXBpbmcgb24gbm9uLWVkaXRhYmxlIGVsZW1lbnRzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL29uU3RhcnRUeXBpbmdcbiAqIEBwYXJhbSBjYWxsYmFja1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBvblN0YXJ0VHlwaW5nKGNhbGxiYWNrOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBDb25maWd1cmFibGVEb2N1bWVudCk6IHZvaWQ7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB0ZW1wbGF0ZVJlZi9pbmRleC5kLnRzXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBWdWUncyBidWlsdC1pbiBgdXNlVGVtcGxhdGVSZWZgIGluc3RlYWQuXG4gKlxuICogU2hvcnRoYW5kIGZvciBiaW5kaW5nIHJlZiB0byB0ZW1wbGF0ZSBlbGVtZW50LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3RlbXBsYXRlUmVmXG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB0ZW1wbGF0ZVJlZjxUIGV4dGVuZHMgSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHwgQ29tcG9uZW50IHwgbnVsbCwgS2V5cyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oa2V5OiBLZXlzLCBpbml0aWFsVmFsdWU/OiBUIHwgbnVsbCk6IFJlYWRvbmx5PFJlZjxUPj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VBY3RpdmVFbGVtZW50L2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VBY3RpdmVFbGVtZW50T3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdywgQ29uZmlndXJhYmxlRG9jdW1lbnRPclNoYWRvd1Jvb3Qge1xuICAvKipcbiAgICogU2VhcmNoIGFjdGl2ZSBlbGVtZW50IGRlZXBseSBpbnNpZGUgc2hhZG93IGRvbVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkZWVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRyYWNrIGFjdGl2ZSBlbGVtZW50IHdoZW4gaXQncyByZW1vdmVkIGZyb20gdGhlIERPTVxuICAgKiBVc2luZyBhIE11dGF0aW9uT2JzZXJ2ZXIgdW5kZXIgdGhlIGhvb2RcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHRyaWdnZXJPblJlbW92YWw/OiBib29sZWFuO1xufVxudHlwZSBVc2VBY3RpdmVFbGVtZW50UmV0dXJuPFQgZXh0ZW5kcyBIVE1MRWxlbWVudCA9IEhUTUxFbGVtZW50PiA9IFNoYWxsb3dSZWY8VCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuLyoqXG4gKiBSZWFjdGl2ZSBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGBcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VBY3RpdmVFbGVtZW50XG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQWN0aXZlRWxlbWVudDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KG9wdGlvbnM/OiBVc2VBY3RpdmVFbGVtZW50T3B0aW9ucyk6IFVzZUFjdGl2ZUVsZW1lbnRSZXR1cm48VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB0eXBlcy5kLnRzXG5pbnRlcmZhY2UgUG9zaXRpb24ge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cbmludGVyZmFjZSBSZW5kZXJhYmxlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgcmVuZGVyZWQgYXNcbiAgICpcbiAgICogQGRlZmF1bHQgJ2RpdidcbiAgICovXG4gIGFzPzogb2JqZWN0IHwgc3RyaW5nO1xufVxudHlwZSBQb2ludGVyVHlwZSA9ICdtb3VzZScgfCAndG91Y2gnIHwgJ3Blbic7XG5pbnRlcmZhY2UgU3VwcG9ydGFibGUge1xuICBpc1N1cHBvcnRlZDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG59XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VBbmltYXRlL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VBbmltYXRlT3B0aW9ucyBleHRlbmRzIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucywgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqXG4gICAqIFdpbGwgYXV0b21hdGljYWxseSBydW4gcGxheSB3aGVuIGB1c2VBbmltYXRlYCBpcyB1c2VkXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNvbW1pdHMgdGhlIGVuZCBzdHlsaW5nIHN0YXRlIG9mIGFuIGFuaW1hdGlvbiB0byB0aGUgZWxlbWVudCBiZWluZyBhbmltYXRlZFxuICAgKiBJbiBnZW5lcmFsLCB5b3Ugc2hvdWxkIHVzZSBgZmlsbGAgb3B0aW9uIHdpdGggdGhpcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbW1pdFN0eWxlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBlcnNpc3RzIHRoZSBhbmltYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHBlcnNpc3Q/OiBib29sZWFuO1xuICAvKipcbiAgICogRXhlY3V0ZWQgYWZ0ZXIgYW5pbWF0aW9uIGluaXRpYWxpemF0aW9uXG4gICAqL1xuICBvblJlYWR5PzogKGFuaW1hdGU6IEFuaW1hdGlvbikgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoZW4gZXJyb3IgaXMgY2F1Z2h0LlxuICAgKi9cbiAgb25FcnJvcj86IChlOiB1bmtub3duKSA9PiB2b2lkO1xufVxudHlwZSBVc2VBbmltYXRlS2V5ZnJhbWVzID0gTWF5YmVSZWY8S2V5ZnJhbWVbXSB8IFByb3BlcnR5SW5kZXhlZEtleWZyYW1lcyB8IG51bGw+O1xuaW50ZXJmYWNlIFVzZUFuaW1hdGVSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGFuaW1hdGU6IFNoYWxsb3dSZWY8QW5pbWF0aW9uIHwgdW5kZWZpbmVkPjtcbiAgcGxheTogKCkgPT4gdm9pZDtcbiAgcGF1c2U6ICgpID0+IHZvaWQ7XG4gIHJldmVyc2U6ICgpID0+IHZvaWQ7XG4gIGZpbmlzaDogKCkgPT4gdm9pZDtcbiAgY2FuY2VsOiAoKSA9PiB2b2lkO1xuICBwZW5kaW5nOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgcGxheVN0YXRlOiBDb21wdXRlZFJlZjxBbmltYXRpb25QbGF5U3RhdGU+O1xuICByZXBsYWNlU3RhdGU6IENvbXB1dGVkUmVmPEFuaW1hdGlvblJlcGxhY2VTdGF0ZT47XG4gIHN0YXJ0VGltZTogV3JpdGFibGVDb21wdXRlZFJlZjxDU1NOdW1iZXJpc2ggfCBudW1iZXIgfCBudWxsPjtcbiAgY3VycmVudFRpbWU6IFdyaXRhYmxlQ29tcHV0ZWRSZWY8Q1NTTnVtYmVyaXNoIHwgbnVsbD47XG4gIHRpbWVsaW5lOiBXcml0YWJsZUNvbXB1dGVkUmVmPEFuaW1hdGlvblRpbWVsaW5lIHwgbnVsbD47XG4gIHBsYXliYWNrUmF0ZTogV3JpdGFibGVDb21wdXRlZFJlZjxudW1iZXI+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBXZWIgQW5pbWF0aW9ucyBBUElcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VBbmltYXRlXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0ga2V5ZnJhbWVzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUFuaW1hdGUodGFyZ2V0OiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZiwga2V5ZnJhbWVzOiBVc2VBbmltYXRlS2V5ZnJhbWVzLCBvcHRpb25zPzogbnVtYmVyIHwgVXNlQW5pbWF0ZU9wdGlvbnMpOiBVc2VBbmltYXRlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQXN5bmNRdWV1ZS9pbmRleC5kLnRzXG50eXBlIFVzZUFzeW5jUXVldWVUYXNrPFQ+ID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBUIHwgUHJvbWlzZTxUPjtcbnR5cGUgTWFwUXVldWVUYXNrPFQgZXh0ZW5kcyBhbnlbXT4gPSB7IFtLIGluIGtleW9mIFRdOiBVc2VBc3luY1F1ZXVlVGFzazxUW0tdPiB9O1xuaW50ZXJmYWNlIFVzZUFzeW5jUXVldWVSZXN1bHQ8VD4ge1xuICBzdGF0ZTogJ2Fib3J0ZWQnIHwgJ2Z1bGZpbGxlZCcgfCAncGVuZGluZycgfCAncmVqZWN0ZWQnO1xuICBkYXRhOiBUIHwgbnVsbDtcbn1cbmludGVyZmFjZSBVc2VBc3luY1F1ZXVlUmV0dXJuPFQ+IHtcbiAgYWN0aXZlSW5kZXg6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgcmVzdWx0OiBUO1xufVxuaW50ZXJmYWNlIFVzZUFzeW5jUXVldWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEludGVycnVwdCB0YXNrcyB3aGVuIGN1cnJlbnQgdGFzayBmYWlscy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW50ZXJydXB0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRyaWdnZXIgaXQgd2hlbiB0aGUgdGFza3MgZmFpbHMuXG4gICAqXG4gICAqL1xuICBvbkVycm9yPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFRyaWdnZXIgaXQgd2hlbiB0aGUgdGFza3MgZW5kcy5cbiAgICpcbiAgICovXG4gIG9uRmluaXNoZWQ/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQSBBYm9ydFNpZ25hbCB0aGF0IGNhbiBiZSB1c2VkIHRvIGFib3J0IHRoZSB0YXNrLlxuICAgKi9cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG59XG4vKipcbiAqIEFzeW5jaHJvbm91cyBxdWV1ZSB0YXNrIGNvbnRyb2xsZXIuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQXN5bmNRdWV1ZVxuICogQHBhcmFtIHRhc2tzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUFzeW5jUXVldWU8VCBleHRlbmRzIGFueVtdLCBTID0gTWFwUXVldWVUYXNrPFQ+Pih0YXNrczogUyAmIEFycmF5PFVzZUFzeW5jUXVldWVUYXNrPGFueT4+LCBvcHRpb25zPzogVXNlQXN5bmNRdWV1ZU9wdGlvbnMpOiBVc2VBc3luY1F1ZXVlUmV0dXJuPHsgW1AgaW4ga2V5b2YgVF06IFVzZUFzeW5jUXVldWVSZXN1bHQ8VFtQXT4gfT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VBc3luY1N0YXRlL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VBc3luY1N0YXRlUmV0dXJuQmFzZTxEYXRhLCBQYXJhbXMgZXh0ZW5kcyBhbnlbXSwgU2hhbGxvdyBleHRlbmRzIGJvb2xlYW4+IHtcbiAgc3RhdGU6IFNoYWxsb3cgZXh0ZW5kcyB0cnVlID8gUmVmPERhdGE+IDogUmVmPFVud3JhcFJlZjxEYXRhPj47XG4gIGlzUmVhZHk6IFJlZjxib29sZWFuPjtcbiAgaXNMb2FkaW5nOiBSZWY8Ym9vbGVhbj47XG4gIGVycm9yOiBSZWY8dW5rbm93bj47XG4gIGV4ZWN1dGU6IChkZWxheT86IG51bWJlciwgLi4uYXJnczogUGFyYW1zKSA9PiBQcm9taXNlPERhdGEgfCB1bmRlZmluZWQ+O1xuICBleGVjdXRlSW1tZWRpYXRlOiAoLi4uYXJnczogUGFyYW1zKSA9PiBQcm9taXNlPERhdGEgfCB1bmRlZmluZWQ+O1xufVxudHlwZSBVc2VBc3luY1N0YXRlUmV0dXJuPERhdGEsIFBhcmFtcyBleHRlbmRzIGFueVtdLCBTaGFsbG93IGV4dGVuZHMgYm9vbGVhbj4gPSBVc2VBc3luY1N0YXRlUmV0dXJuQmFzZTxEYXRhLCBQYXJhbXMsIFNoYWxsb3c+ICYgUHJvbWlzZUxpa2U8VXNlQXN5bmNTdGF0ZVJldHVybkJhc2U8RGF0YSwgUGFyYW1zLCBTaGFsbG93Pj47XG5pbnRlcmZhY2UgVXNlQXN5bmNTdGF0ZU9wdGlvbnM8U2hhbGxvdyBleHRlbmRzIGJvb2xlYW4sIEQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIERlbGF5IGZvciB0aGUgZmlyc3QgZXhlY3V0aW9uIG9mIHRoZSBwcm9taXNlIHdoZW4gXCJpbW1lZGlhdGVcIiBpcyB0cnVlLiBJbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGRlbGF5PzogbnVtYmVyO1xuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgcHJvbWlzZSByaWdodCBhZnRlciB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZC5cbiAgICogV2lsbCBhcHBseSB0aGUgZGVsYXkgaWYgYW55LlxuICAgKlxuICAgKiBXaGVuIHNldCB0byBmYWxzZSwgeW91IHdpbGwgbmVlZCB0byBleGVjdXRlIGl0IG1hbnVhbGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogQ2FsbGJhY2sgd2hlbiBlcnJvciBpcyBjYXVnaHQuXG4gICAqL1xuICBvbkVycm9yPzogKGU6IHVua25vd24pID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIHN1Y2Nlc3MgaXMgY2F1Z2h0LlxuICAgKiBAcGFyYW0ge0R9IGRhdGFcbiAgICovXG4gIG9uU3VjY2Vzcz86IChkYXRhOiBEKSA9PiB2b2lkO1xuICAvKipcbiAgICogU2V0cyB0aGUgc3RhdGUgdG8gaW5pdGlhbFN0YXRlIGJlZm9yZSBleGVjdXRpbmcgdGhlIHByb21pc2UuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGNhbGxpbmcgdGhlIGV4ZWN1dGUgZnVuY3Rpb24gbW9yZSB0aGFuIG9uY2UgKGZvclxuICAgKiBleGFtcGxlLCB0byByZWZyZXNoIGRhdGEpLiBXaGVuIHNldCB0byBmYWxzZSwgdGhlIGN1cnJlbnQgc3RhdGUgcmVtYWluc1xuICAgKiB1bmNoYW5nZWQgdW50aWwgdGhlIHByb21pc2UgcmVzb2x2ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlc2V0T25FeGVjdXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZSBzaGFsbG93UmVmLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaGFsbG93PzogU2hhbGxvdztcbiAgLyoqXG4gICAqXG4gICAqIEFuIGVycm9yIGlzIHRocm93biB3aGVuIGV4ZWN1dGluZyB0aGUgZXhlY3V0ZSBmdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgdGhyb3dFcnJvcj86IGJvb2xlYW47XG59XG4vKipcbiAqIFJlYWN0aXZlIGFzeW5jIHN0YXRlLiBXaWxsIG5vdCBibG9jayB5b3VyIHNldHVwIGZ1bmN0aW9uIGFuZCB3aWxsIHRyaWdnZXIgY2hhbmdlcyBvbmNlXG4gKiB0aGUgcHJvbWlzZSBpcyByZWFkeS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VBc3luY1N0YXRlXG4gKiBAcGFyYW0gcHJvbWlzZSAgICAgICAgIFRoZSBwcm9taXNlIC8gYXN5bmMgZnVuY3Rpb24gdG8gYmUgcmVzb2x2ZWRcbiAqIEBwYXJhbSBpbml0aWFsU3RhdGUgICAgVGhlIGluaXRpYWwgc3RhdGUsIHVzZWQgdW50aWwgdGhlIGZpcnN0IGV2YWx1YXRpb24gZmluaXNoZXNcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQXN5bmNTdGF0ZTxEYXRhLCBQYXJhbXMgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLCBTaGFsbG93IGV4dGVuZHMgYm9vbGVhbiA9IHRydWU+KHByb21pc2U6IFByb21pc2U8RGF0YT4gfCAoKC4uLmFyZ3M6IFBhcmFtcykgPT4gUHJvbWlzZTxEYXRhPiksIGluaXRpYWxTdGF0ZTogTWF5YmVSZWY8RGF0YT4sIG9wdGlvbnM/OiBVc2VBc3luY1N0YXRlT3B0aW9uczxTaGFsbG93LCBEYXRhPik6IFVzZUFzeW5jU3RhdGVSZXR1cm48RGF0YSwgUGFyYW1zLCBTaGFsbG93Pjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUJhc2U2NC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQmFzZTY0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPdXRwdXQgYXMgRGF0YSBVUkwgZm9ybWF0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRhdGFVcmw/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFRvRGF0YVVSTE9wdGlvbnMgZXh0ZW5kcyBVc2VCYXNlNjRPcHRpb25zIHtcbiAgLyoqXG4gICAqIE1JTUUgdHlwZVxuICAgKi9cbiAgdHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEltYWdlIHF1YWxpdHkgb2YganBlZyBvciB3ZWJwXG4gICAqL1xuICBxdWFsaXR5PzogYW55O1xufVxuaW50ZXJmYWNlIFVzZUJhc2U2NE9iamVjdE9wdGlvbnM8VD4gZXh0ZW5kcyBVc2VCYXNlNjRPcHRpb25zIHtcbiAgc2VyaWFsaXplcj86ICh2OiBUKSA9PiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgVXNlQmFzZTY0UmV0dXJuIHtcbiAgYmFzZTY0OiBTaGFsbG93UmVmPHN0cmluZz47XG4gIHByb21pc2U6IFNoYWxsb3dSZWY8UHJvbWlzZTxzdHJpbmc+PjtcbiAgZXhlY3V0ZTogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xufVxuZGVjbGFyZSBmdW5jdGlvbiB1c2VCYXNlNjQodGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VCYXNlNjRPcHRpb25zKTogVXNlQmFzZTY0UmV0dXJuO1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCYXNlNjQodGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPEJsb2IgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlQmFzZTY0T3B0aW9ucyk6IFVzZUJhc2U2NFJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmFzZTY0KHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VCYXNlNjRPcHRpb25zKTogVXNlQmFzZTY0UmV0dXJuO1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCYXNlNjQodGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxDYW52YXNFbGVtZW50IHwgdW5kZWZpbmVkPiwgb3B0aW9ucz86IFRvRGF0YVVSTE9wdGlvbnMpOiBVc2VCYXNlNjRSZXR1cm47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUJhc2U2NCh0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8SFRNTEltYWdlRWxlbWVudCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBUb0RhdGFVUkxPcHRpb25zKTogVXNlQmFzZTY0UmV0dXJuO1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCYXNlNjQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8VD4sIG9wdGlvbnM/OiBVc2VCYXNlNjRPYmplY3RPcHRpb25zPFQ+KTogVXNlQmFzZTY0UmV0dXJuO1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCYXNlNjQ8VCBleHRlbmRzIE1hcDxzdHJpbmcsIHVua25vd24+Pih0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8VD4sIG9wdGlvbnM/OiBVc2VCYXNlNjRPYmplY3RPcHRpb25zPFQ+KTogVXNlQmFzZTY0UmV0dXJuO1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCYXNlNjQ8VCBleHRlbmRzIFNldDx1bmtub3duPj4odGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBvcHRpb25zPzogVXNlQmFzZTY0T2JqZWN0T3B0aW9uczxUPik6IFVzZUJhc2U2NFJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmFzZTY0PFQ+KHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxUW10+LCBvcHRpb25zPzogVXNlQmFzZTY0T2JqZWN0T3B0aW9uczxUW10+KTogVXNlQmFzZTY0UmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQmF0dGVyeS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQmF0dGVyeU9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVOYXZpZ2F0b3Ige31cbmludGVyZmFjZSBVc2VCYXR0ZXJ5UmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBjaGFyZ2luZzogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgY2hhcmdpbmdUaW1lOiBTaGFsbG93UmVmPG51bWJlcj47XG4gIGRpc2NoYXJnaW5nVGltZTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBsZXZlbDogU2hhbGxvd1JlZjxudW1iZXI+O1xufVxuaW50ZXJmYWNlIEJhdHRlcnlNYW5hZ2VyIGV4dGVuZHMgRXZlbnRUYXJnZXQge1xuICBjaGFyZ2luZzogYm9vbGVhbjtcbiAgY2hhcmdpbmdUaW1lOiBudW1iZXI7XG4gIGRpc2NoYXJnaW5nVGltZTogbnVtYmVyO1xuICBsZXZlbDogbnVtYmVyO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBCYXR0ZXJ5IFN0YXR1cyBBUEkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQmF0dGVyeVxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmF0dGVyeShvcHRpb25zPzogVXNlQmF0dGVyeU9wdGlvbnMpOiBVc2VCYXR0ZXJ5UmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQmx1ZXRvb3RoL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VCbHVldG9vdGhSZXF1ZXN0RGV2aWNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKlxuICAgKiBBbiBhcnJheSBvZiBCbHVldG9vdGhTY2FuRmlsdGVycy4gVGhpcyBmaWx0ZXIgY29uc2lzdHMgb2YgYW4gYXJyYXlcbiAgICogb2YgQmx1ZXRvb3RoU2VydmljZVVVSURzLCBhIG5hbWUgcGFyYW1ldGVyLCBhbmQgYSBuYW1lUHJlZml4IHBhcmFtZXRlci5cbiAgICpcbiAgICovXG4gIGZpbHRlcnM/OiBCbHVldG9vdGhMRVNjYW5GaWx0ZXJbXSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqXG4gICAqIEFuIGFycmF5IG9mIEJsdWV0b290aFNlcnZpY2VVVUlEcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQmx1ZXRvb3RoUmVtb3RlR0FUVFNlcnZpY2UvdXVpZFxuICAgKlxuICAgKi9cbiAgb3B0aW9uYWxTZXJ2aWNlcz86IEJsdWV0b290aFNlcnZpY2VVVUlEW10gfCB1bmRlZmluZWQ7XG59XG5pbnRlcmZhY2UgVXNlQmx1ZXRvb3RoT3B0aW9ucyBleHRlbmRzIFVzZUJsdWV0b290aFJlcXVlc3REZXZpY2VPcHRpb25zLCBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICAvKipcbiAgICpcbiAgICogQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgdGhhdCB0aGUgcmVxdWVzdGluZyBzY3JpcHQgY2FuIGFjY2VwdCBhbGwgQmx1ZXRvb3RoXG4gICAqIGRldmljZXMuIFRoZSBkZWZhdWx0IGlzIGZhbHNlLlxuICAgKlxuICAgKiAhISBUaGlzIG1heSByZXN1bHQgaW4gYSBidW5jaCBvZiB1bnJlbGF0ZWQgZGV2aWNlcyBiZWluZyBzaG93blxuICAgKiBpbiB0aGUgY2hvb3NlciBhbmQgZW5lcmd5IGJlaW5nIHdhc3RlZCBhcyB0aGVyZSBhcmUgbm8gZmlsdGVycy5cbiAgICpcbiAgICpcbiAgICogVXNlIGl0IHdpdGggY2F1dGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICpcbiAgICovXG4gIGFjY2VwdEFsbERldmljZXM/OiBib29sZWFuO1xufVxuZGVjbGFyZSBmdW5jdGlvbiB1c2VCbHVldG9vdGgob3B0aW9ucz86IFVzZUJsdWV0b290aE9wdGlvbnMpOiBVc2VCbHVldG9vdGhSZXR1cm47XG5pbnRlcmZhY2UgVXNlQmx1ZXRvb3RoUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBpc0Nvbm5lY3RlZDogUmVhZG9ubHk8U2hhbGxvd1JlZjxib29sZWFuPj47XG4gIGRldmljZTogU2hhbGxvd1JlZjxCbHVldG9vdGhEZXZpY2UgfCB1bmRlZmluZWQ+O1xuICByZXF1ZXN0RGV2aWNlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzZXJ2ZXI6IFNoYWxsb3dSZWY8Qmx1ZXRvb3RoUmVtb3RlR0FUVFNlcnZlciB8IHVuZGVmaW5lZD47XG4gIGVycm9yOiBTaGFsbG93UmVmPHVua25vd24gfCBudWxsPjtcbn1cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUJyZWFrcG9pbnRzL2JyZWFrcG9pbnRzLmQudHNcbi8qKlxuICogQnJlYWtwb2ludHMgZnJvbSBUYWlsd2luZCBWMlxuICpcbiAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVha3BvaW50c1xuICovXG5kZWNsYXJlIGNvbnN0IGJyZWFrcG9pbnRzVGFpbHdpbmQ6IHtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbiAgJzJ4bCc6IG51bWJlcjtcbn07XG4vKipcbiAqIEJyZWFrcG9pbnRzIGZyb20gQm9vdHN0cmFwIFY1XG4gKlxuICogQHNlZSBodHRwczovL2dldGJvb3RzdHJhcC5jb20vZG9jcy81LjAvbGF5b3V0L2JyZWFrcG9pbnRzXG4gKi9cbmRlY2xhcmUgY29uc3QgYnJlYWtwb2ludHNCb290c3RyYXBWNToge1xuICB4czogbnVtYmVyO1xuICBzbTogbnVtYmVyO1xuICBtZDogbnVtYmVyO1xuICBsZzogbnVtYmVyO1xuICB4bDogbnVtYmVyO1xuICB4eGw6IG51bWJlcjtcbn07XG4vKipcbiAqIEJyZWFrcG9pbnRzIGZyb20gVnVldGlmeSBWMlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92Mi52dWV0aWZ5anMuY29tL2VuL2ZlYXR1cmVzL2JyZWFrcG9pbnRzL1xuICovXG5kZWNsYXJlIGNvbnN0IGJyZWFrcG9pbnRzVnVldGlmeVYyOiB7XG4gIHhzOiBudW1iZXI7XG4gIHNtOiBudW1iZXI7XG4gIG1kOiBudW1iZXI7XG4gIGxnOiBudW1iZXI7XG4gIHhsOiBudW1iZXI7XG59O1xuLyoqXG4gKiBCcmVha3BvaW50cyBmcm9tIFZ1ZXRpZnkgVjNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldGlmeWpzLmNvbS9lbi9zdHlsZXMvZmxvYXQvI292ZXJ2aWV3XG4gKi9cbmRlY2xhcmUgY29uc3QgYnJlYWtwb2ludHNWdWV0aWZ5VjM6IHtcbiAgeHM6IG51bWJlcjtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbiAgeHhsOiBudW1iZXI7XG59O1xuLyoqXG4gKiBBbGlhcyB0byBgYnJlYWtwb2ludHNWdWV0aWZ5VjJgXG4gKlxuICogQGRlcHJlY2F0ZWQgZXhwbGljdGx5IHVzZSBgYnJlYWtwb2ludHNWdWV0aWZ5VjJgIG9yIGBicmVha3BvaW50c1Z1ZXRpZnlWM2AgaW5zdGVhZFxuICovXG5kZWNsYXJlIGNvbnN0IGJyZWFrcG9pbnRzVnVldGlmeToge1xuICB4czogbnVtYmVyO1xuICBzbTogbnVtYmVyO1xuICBtZDogbnVtYmVyO1xuICBsZzogbnVtYmVyO1xuICB4bDogbnVtYmVyO1xufTtcbi8qKlxuICogQnJlYWtwb2ludHMgZnJvbSBBbnQgRGVzaWduXG4gKlxuICogQHNlZSBodHRwczovL2FudC5kZXNpZ24vY29tcG9uZW50cy9sYXlvdXQvI2JyZWFrcG9pbnQtd2lkdGhcbiAqL1xuZGVjbGFyZSBjb25zdCBicmVha3BvaW50c0FudERlc2lnbjoge1xuICB4czogbnVtYmVyO1xuICBzbTogbnVtYmVyO1xuICBtZDogbnVtYmVyO1xuICBsZzogbnVtYmVyO1xuICB4bDogbnVtYmVyO1xuICB4eGw6IG51bWJlcjtcbn07XG4vKipcbiAqIEJyZWFrcG9pbnRzIGZyb20gUXVhc2FyIFYyXG4gKlxuICogQHNlZSBodHRwczovL3F1YXNhci5kZXYvc3R5bGUvYnJlYWtwb2ludHNcbiAqL1xuZGVjbGFyZSBjb25zdCBicmVha3BvaW50c1F1YXNhcjoge1xuICB4czogbnVtYmVyO1xuICBzbTogbnVtYmVyO1xuICBtZDogbnVtYmVyO1xuICBsZzogbnVtYmVyO1xuICB4bDogbnVtYmVyO1xufTtcbi8qKlxuICogU2VtYXRpYyBCcmVha3BvaW50c1xuICovXG5kZWNsYXJlIGNvbnN0IGJyZWFrcG9pbnRzU2VtYXRpYzoge1xuICBtb2JpbGVTOiBudW1iZXI7XG4gIG1vYmlsZU06IG51bWJlcjtcbiAgbW9iaWxlTDogbnVtYmVyO1xuICB0YWJsZXQ6IG51bWJlcjtcbiAgbGFwdG9wOiBudW1iZXI7XG4gIGxhcHRvcEw6IG51bWJlcjtcbiAgZGVza3RvcDRLOiBudW1iZXI7XG59O1xuLyoqXG4gKiBCcmVha3BvaW50cyBmcm9tIE1hc3RlciBDU1NcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5tYXN0ZXIuY28vY3NzL2JyZWFrcG9pbnRzXG4gKi9cbmRlY2xhcmUgY29uc3QgYnJlYWtwb2ludHNNYXN0ZXJDc3M6IHtcbiAgJzN4cyc6IG51bWJlcjtcbiAgJzJ4cyc6IG51bWJlcjtcbiAgeHM6IG51bWJlcjtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbiAgJzJ4bCc6IG51bWJlcjtcbiAgJzN4bCc6IG51bWJlcjtcbiAgJzR4bCc6IG51bWJlcjtcbn07XG4vKipcbiAqIEJyZWFrcG9pbnRzIGZyb20gUHJpbWVGbGV4XG4gKlxuICogQHNlZSBodHRwczovL3ByaW1lZmxleC5vcmcvaW5zdGFsbGF0aW9uXG4gKi9cbmRlY2xhcmUgY29uc3QgYnJlYWtwb2ludHNQcmltZUZsZXg6IHtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbn07XG4vKipcbiAqIEJyZWFrcG9pbnRzIGZyb20gRWxlbWVudFVJL0VsZW1lbnRQbHVzXG4gKlxuICogQHNlZSBodHRwczovL2VsZW1lbnQuZWxlbWUuaW8vIy9lbi1VUy9jb21wb25lbnQvbGF5b3V0XG4gKiBAc2VlIGh0dHBzOi8vZWxlbWVudC1wbHVzLm9yZy9lbi1VUy9jb21wb25lbnQvbGF5b3V0Lmh0bWxcbiAqL1xuZGVjbGFyZSBjb25zdCBicmVha3BvaW50c0VsZW1lbnQ6IHtcbiAgeHM6IG51bWJlcjtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbn07XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VCcmVha3BvaW50cy9pbmRleC5kLnRzXG50eXBlIEJyZWFrcG9pbnRzPEskMSBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSBSZWNvcmQ8SyQxLCBNYXliZVJlZk9yR2V0dGVyPG51bWJlciB8IHN0cmluZz4+O1xuaW50ZXJmYWNlIFVzZUJyZWFrcG9pbnRzT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBUaGUgcXVlcnkgc3RyYXRlZ3kgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIHNob3J0Y3V0IG1ldGhvZHMgbGlrZSBgLmxnYFxuICAgKlxuICAgKiAnbWluLXdpZHRoJyAtIC5sZyB3aWxsIGJlIHRydWUgd2hlbiB0aGUgdmlld3BvcnQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsZyBicmVha3BvaW50IChtb2JpbGUtZmlyc3QpXG4gICAqICdtYXgtd2lkdGgnIC0gLmxnIHdpbGwgYmUgdHJ1ZSB3aGVuIHRoZSB2aWV3cG9ydCBpcyBzbWFsbGVyIHRoYW4gdGhlIHhsIGJyZWFrcG9pbnQgKGRlc2t0b3AtZmlyc3QpXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibWluLXdpZHRoXCJcbiAgICovXG4gIHN0cmF0ZWd5PzogJ21pbi13aWR0aCcgfCAnbWF4LXdpZHRoJztcbiAgc3NyV2lkdGg/OiBudW1iZXI7XG59XG50eXBlIFVzZUJyZWFrcG9pbnRSZXR1cm48SyQxIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9IFJlY29yZDxLJDEsIENvbXB1dGVkUmVmPGJvb2xlYW4+PiAmIHtcbiAgZ3JlYXRlck9yRXF1YWw6IChrOiBNYXliZVJlZk9yR2V0dGVyPEskMT4pID0+IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICBzbWFsbGVyT3JFcXVhbDogKGs6IE1heWJlUmVmT3JHZXR0ZXI8SyQxPikgPT4gQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIGdyZWF0ZXI6IChrOiBNYXliZVJlZk9yR2V0dGVyPEskMT4pID0+IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICBzbWFsbGVyOiAoazogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgYmV0d2VlbjogKGE6IE1heWJlUmVmT3JHZXR0ZXI8SyQxPiwgYjogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgaXNHcmVhdGVyOiAoazogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBib29sZWFuO1xuICBpc0dyZWF0ZXJPckVxdWFsOiAoazogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBib29sZWFuO1xuICBpc1NtYWxsZXI6IChrOiBNYXliZVJlZk9yR2V0dGVyPEskMT4pID0+IGJvb2xlYW47XG4gIGlzU21hbGxlck9yRXF1YWw6IChrOiBNYXliZVJlZk9yR2V0dGVyPEskMT4pID0+IGJvb2xlYW47XG4gIGlzSW5CZXR3ZWVuOiAoYTogTWF5YmVSZWZPckdldHRlcjxLJDE+LCBiOiBNYXliZVJlZk9yR2V0dGVyPEskMT4pID0+IGJvb2xlYW47XG4gIGN1cnJlbnQ6ICgpID0+IENvbXB1dGVkUmVmPEskMVtdPjtcbiAgYWN0aXZlOiAoKSA9PiBDb21wdXRlZFJlZjxLJDEgfCAnJz47XG59O1xuLyoqXG4gKiBSZWFjdGl2ZWx5IHZpZXdwb3J0IGJyZWFrcG9pbnRzXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQnJlYWtwb2ludHNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUJyZWFrcG9pbnRzPEskMSBleHRlbmRzIHN0cmluZz4oYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzPEskMT4sIG9wdGlvbnM/OiBVc2VCcmVha3BvaW50c09wdGlvbnMpOiBVc2VCcmVha3BvaW50UmV0dXJuPEskMT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VCcm9hZGNhc3RDaGFubmVsL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VCcm9hZGNhc3RDaGFubmVsT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hhbm5lbC5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcbn1cbi8qKlxuICogUmVhY3RpdmUgQnJvYWRjYXN0Q2hhbm5lbFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUJyb2FkY2FzdENoYW5uZWxcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Jyb2FkY2FzdENoYW5uZWxcbiAqIEBwYXJhbSBvcHRpb25zXG4gKlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUJyb2FkY2FzdENoYW5uZWw8RCwgUCQxPihvcHRpb25zOiBVc2VCcm9hZGNhc3RDaGFubmVsT3B0aW9ucyk6IFVzZUJyb2FkY2FzdENoYW5uZWxSZXR1cm48RCwgUCQxPjtcbmludGVyZmFjZSBVc2VCcm9hZGNhc3RDaGFubmVsUmV0dXJuPEQsIFAkMT4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGNoYW5uZWw6IFJlZjxCcm9hZGNhc3RDaGFubmVsIHwgdW5kZWZpbmVkPjtcbiAgZGF0YTogUmVmPEQ+O1xuICBwb3N0OiAoZGF0YTogUCQxKSA9PiB2b2lkO1xuICBjbG9zZTogKCkgPT4gdm9pZDtcbiAgZXJyb3I6IFNoYWxsb3dSZWY8RXZlbnQgfCBudWxsPjtcbiAgaXNDbG9zZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG59XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VCcm93c2VyTG9jYXRpb24vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUJyb3dzZXJMb2NhdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge31cbmludGVyZmFjZSBCcm93c2VyTG9jYXRpb25TdGF0ZSB7XG4gIHJlYWRvbmx5IHRyaWdnZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdGU/OiBhbnk7XG4gIHJlYWRvbmx5IGxlbmd0aD86IG51bWJlcjtcbiAgcmVhZG9ubHkgb3JpZ2luPzogc3RyaW5nO1xuICBoYXNoPzogc3RyaW5nO1xuICBob3N0Pzogc3RyaW5nO1xuICBob3N0bmFtZT86IHN0cmluZztcbiAgaHJlZj86IHN0cmluZztcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XG4gIHBvcnQ/OiBzdHJpbmc7XG4gIHByb3RvY29sPzogc3RyaW5nO1xuICBzZWFyY2g/OiBzdHJpbmc7XG59XG50eXBlIFVzZUJyb3dzZXJMb2NhdGlvblJldHVybiA9IFJlZjxCcm93c2VyTG9jYXRpb25TdGF0ZT47XG4vKipcbiAqIFJlYWN0aXZlIGJyb3dzZXIgbG9jYXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQnJvd3NlckxvY2F0aW9uXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCcm93c2VyTG9jYXRpb24ob3B0aW9ucz86IFVzZUJyb3dzZXJMb2NhdGlvbk9wdGlvbnMpOiBVc2VCcm93c2VyTG9jYXRpb25SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VDYWNoZWQvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUNhY2hlZE9wdGlvbnM8RCBleHRlbmRzIGJvb2xlYW4gPSB0cnVlPiBleHRlbmRzIENvbmZpZ3VyYWJsZURlZXBSZWZzPEQ+LCBXYXRjaE9wdGlvbnMge31cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ2FjaGVkPFQsIEQgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZT4ocmVmVmFsdWU6IFJlZjxUPiwgY29tcGFyYXRvcj86IChhOiBULCBiOiBUKSA9PiBib29sZWFuLCBvcHRpb25zPzogVXNlQ2FjaGVkT3B0aW9uczxEPik6IFVzZUNhY2hlZFJldHVybjxULCBEPjtcbnR5cGUgVXNlQ2FjaGVkUmV0dXJuPFQgPSBhbnksIEQgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZT4gPSBTaGFsbG93T3JEZWVwUmVmPFQsIEQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQ2xpcGJvYXJkL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VDbGlwYm9hcmRPcHRpb25zPFNvdXJjZT4gZXh0ZW5kcyBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICAvKipcbiAgICogRW5hYmxlZCByZWFkaW5nIGZvciBjbGlwYm9hcmRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29weSBzb3VyY2VcbiAgICovXG4gIHNvdXJjZT86IFNvdXJjZTtcbiAgLyoqXG4gICAqIE1pbGxpc2Vjb25kcyB0byByZXNldCBzdGF0ZSBvZiBgY29waWVkYCByZWZcbiAgICpcbiAgICogQGRlZmF1bHQgMTUwMFxuICAgKi9cbiAgY29waWVkRHVyaW5nPzogbnVtYmVyO1xuICAvKipcbiAgICogV2hldGhlciBmYWxsYmFjayB0byBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpIGlmIGNsaXBib2FyZCBpcyB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBsZWdhY3k/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZUNsaXBib2FyZFJldHVybjxPcHRpb25hbD4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHRleHQ6IFJlYWRvbmx5PFNoYWxsb3dSZWY8c3RyaW5nPj47XG4gIGNvcGllZDogUmVhZG9ubHk8U2hhbGxvd1JlZjxib29sZWFuPj47XG4gIGNvcHk6IE9wdGlvbmFsIGV4dGVuZHMgdHJ1ZSA/ICh0ZXh0Pzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+IDogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgQ2xpcGJvYXJkIEFQSS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VDbGlwYm9hcmRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDbGlwYm9hcmQob3B0aW9ucz86IFVzZUNsaXBib2FyZE9wdGlvbnM8dW5kZWZpbmVkPik6IFVzZUNsaXBib2FyZFJldHVybjxmYWxzZT47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUNsaXBib2FyZChvcHRpb25zOiBVc2VDbGlwYm9hcmRPcHRpb25zPE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPj4pOiBVc2VDbGlwYm9hcmRSZXR1cm48dHJ1ZT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VDbGlwYm9hcmRJdGVtcy9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQ2xpcGJvYXJkSXRlbXNPcHRpb25zPFNvdXJjZT4gZXh0ZW5kcyBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICAvKipcbiAgICogRW5hYmxlZCByZWFkaW5nIGZvciBjbGlwYm9hcmRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29weSBzb3VyY2VcbiAgICovXG4gIHNvdXJjZT86IFNvdXJjZTtcbiAgLyoqXG4gICAqIE1pbGxpc2Vjb25kcyB0byByZXNldCBzdGF0ZSBvZiBgY29waWVkYCByZWZcbiAgICpcbiAgICogQGRlZmF1bHQgMTUwMFxuICAgKi9cbiAgY29waWVkRHVyaW5nPzogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZUNsaXBib2FyZEl0ZW1zUmV0dXJuPE9wdGlvbmFsPiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgY29udGVudDogUmVhZG9ubHk8UmVmPENsaXBib2FyZEl0ZW1zPj47XG4gIGNvcGllZDogUmVhZG9ubHk8U2hhbGxvd1JlZjxib29sZWFuPj47XG4gIGNvcHk6IE9wdGlvbmFsIGV4dGVuZHMgdHJ1ZSA/IChjb250ZW50PzogQ2xpcGJvYXJkSXRlbXMpID0+IFByb21pc2U8dm9pZD4gOiAodGV4dDogQ2xpcGJvYXJkSXRlbXMpID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWQ6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIENsaXBib2FyZCBBUEkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQ2xpcGJvYXJkSXRlbXNcbiAqIEBwYXJhbSBvcHRpb25zXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDbGlwYm9hcmRJdGVtcyhvcHRpb25zPzogVXNlQ2xpcGJvYXJkSXRlbXNPcHRpb25zPHVuZGVmaW5lZD4pOiBVc2VDbGlwYm9hcmRJdGVtc1JldHVybjxmYWxzZT47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUNsaXBib2FyZEl0ZW1zKG9wdGlvbnM6IFVzZUNsaXBib2FyZEl0ZW1zT3B0aW9uczxNYXliZVJlZk9yR2V0dGVyPENsaXBib2FyZEl0ZW1zPj4pOiBVc2VDbGlwYm9hcmRJdGVtc1JldHVybjx0cnVlPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUNsb25lZC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQ2xvbmVkT3B0aW9uczxUID0gYW55PiBleHRlbmRzIFdhdGNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDdXN0b20gY2xvbmUgZnVuY3Rpb24uXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGl0IHVzZSBgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpYCB0byBjbG9uZS5cbiAgICovXG4gIGNsb25lPzogKHNvdXJjZTogVCkgPT4gVDtcbiAgLyoqXG4gICAqIE1hbnVhbGx5IHN5bmMgdGhlIHJlZlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbWFudWFsPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VDbG9uZWRSZXR1cm48VD4ge1xuICAvKipcbiAgICogQ2xvbmVkIHJlZlxuICAgKi9cbiAgY2xvbmVkOiBSZWY8VD47XG4gIC8qKlxuICAgKiBSZWYgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNsb25lZCBkYXRhIGlzIG1vZGlmaWVkXG4gICAqL1xuICBpc01vZGlmaWVkOiBSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBTeW5jIGNsb25lZCBkYXRhIHdpdGggc291cmNlIG1hbnVhbGx5XG4gICAqL1xuICBzeW5jOiAoKSA9PiB2b2lkO1xufVxudHlwZSBDbG9uZUZuPEYsIFQgPSBGPiA9ICh4OiBGKSA9PiBUO1xuZGVjbGFyZSBmdW5jdGlvbiBjbG9uZUZuSlNPTjxUPihzb3VyY2U6IFQpOiBUO1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDbG9uZWQ8VD4oc291cmNlOiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBvcHRpb25zPzogVXNlQ2xvbmVkT3B0aW9ucyk6IFVzZUNsb25lZFJldHVybjxUPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNzci1oYW5kbGVycy5kLnRzXG5pbnRlcmZhY2UgU3RvcmFnZUxpa2VBc3luYyB7XG4gIGdldEl0ZW06IChrZXk6IHN0cmluZykgPT4gQXdhaXRhYmxlPHN0cmluZyB8IG51bGw+O1xuICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IEF3YWl0YWJsZTx2b2lkPjtcbiAgcmVtb3ZlSXRlbTogKGtleTogc3RyaW5nKSA9PiBBd2FpdGFibGU8dm9pZD47XG59XG5pbnRlcmZhY2UgU3RvcmFnZUxpa2Uge1xuICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGw7XG4gIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVtb3ZlSXRlbTogKGtleTogc3RyaW5nKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBAZXhwZXJpbWVudGFsIFRoZSBBUEkgaXMgbm90IGZpbmFsaXplZCB5ZXQuIEl0IG1pZ2h0IG5vdCBmb2xsb3cgc2VtdmVyLlxuICovXG5pbnRlcmZhY2UgU1NSSGFuZGxlcnNNYXAge1xuICBnZXREZWZhdWx0U3RvcmFnZTogKCkgPT4gU3RvcmFnZUxpa2UgfCB1bmRlZmluZWQ7XG4gIGdldERlZmF1bHRTdG9yYWdlQXN5bmM6ICgpID0+IFN0b3JhZ2VMaWtlQXN5bmMgfCB1bmRlZmluZWQ7XG4gIHVwZGF0ZUhUTUxBdHRyczogKHNlbGVjdG9yOiBzdHJpbmcgfCBNYXliZUVsZW1lbnRSZWYsIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xufVxuZGVjbGFyZSBmdW5jdGlvbiBnZXRTU1JIYW5kbGVyPFQgZXh0ZW5kcyBrZXlvZiBTU1JIYW5kbGVyc01hcD4oa2V5OiBULCBmYWxsYmFjazogU1NSSGFuZGxlcnNNYXBbVF0pOiBTU1JIYW5kbGVyc01hcFtUXTtcbmRlY2xhcmUgZnVuY3Rpb24gZ2V0U1NSSGFuZGxlcjxUIGV4dGVuZHMga2V5b2YgU1NSSGFuZGxlcnNNYXA+KGtleTogVCwgZmFsbGJhY2s6IFNTUkhhbmRsZXJzTWFwW1RdIHwgdW5kZWZpbmVkKTogU1NSSGFuZGxlcnNNYXBbVF0gfCB1bmRlZmluZWQ7XG5kZWNsYXJlIGZ1bmN0aW9uIHNldFNTUkhhbmRsZXI8VCBleHRlbmRzIGtleW9mIFNTUkhhbmRsZXJzTWFwPihrZXk6IFQsIGZuOiBTU1JIYW5kbGVyc01hcFtUXSk6IHZvaWQ7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTdG9yYWdlL2luZGV4LmQudHNcbmludGVyZmFjZSBTZXJpYWxpemVyPFQ+IHtcbiAgcmVhZDogKHJhdzogc3RyaW5nKSA9PiBUO1xuICB3cml0ZTogKHZhbHVlOiBUKSA9PiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgU2VyaWFsaXplckFzeW5jPFQ+IHtcbiAgcmVhZDogKHJhdzogc3RyaW5nKSA9PiBBd2FpdGFibGU8VD47XG4gIHdyaXRlOiAodmFsdWU6IFQpID0+IEF3YWl0YWJsZTxzdHJpbmc+O1xufVxuZGVjbGFyZSBjb25zdCBTdG9yYWdlU2VyaWFsaXplcnM6IFJlY29yZDwnYm9vbGVhbicgfCAnb2JqZWN0JyB8ICdudW1iZXInIHwgJ2FueScgfCAnc3RyaW5nJyB8ICdtYXAnIHwgJ3NldCcgfCAnZGF0ZScsIFNlcmlhbGl6ZXI8YW55Pj47XG5kZWNsYXJlIGNvbnN0IGN1c3RvbVN0b3JhZ2VFdmVudE5hbWUgPSBcInZ1ZXVzZS1zdG9yYWdlXCI7XG5pbnRlcmZhY2UgU3RvcmFnZUV2ZW50TGlrZSB7XG4gIHN0b3JhZ2VBcmVhOiBTdG9yYWdlTGlrZSB8IG51bGw7XG4gIGtleTogU3RvcmFnZUV2ZW50WydrZXknXTtcbiAgb2xkVmFsdWU6IFN0b3JhZ2VFdmVudFsnb2xkVmFsdWUnXTtcbiAgbmV3VmFsdWU6IFN0b3JhZ2VFdmVudFsnbmV3VmFsdWUnXTtcbn1cbmludGVyZmFjZSBVc2VTdG9yYWdlT3B0aW9uczxUPiBleHRlbmRzIENvbmZpZ3VyYWJsZUV2ZW50RmlsdGVyLCBDb25maWd1cmFibGVXaW5kb3csIENvbmZpZ3VyYWJsZUZsdXNoIHtcbiAgLyoqXG4gICAqIFdhdGNoIGZvciBkZWVwIGNoYW5nZXNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZGVlcD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gc3RvcmFnZSBjaGFuZ2VzLCB1c2VmdWwgZm9yIG11bHRpcGxlIHRhYnMgYXBwbGljYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXcml0ZSB0aGUgZGVmYXVsdCB2YWx1ZSB0byB0aGUgc3RvcmFnZSB3aGVuIGl0IGRvZXMgbm90IGV4aXN0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHdyaXRlRGVmYXVsdHM/OiBib29sZWFuO1xuICAvKipcbiAgICogTWVyZ2UgdGhlIGRlZmF1bHQgdmFsdWUgd2l0aCB0aGUgdmFsdWUgcmVhZCBmcm9tIHRoZSBzdG9yYWdlLlxuICAgKlxuICAgKiBXaGVuIHNldHRpbmcgaXQgdG8gdHJ1ZSwgaXQgd2lsbCBwZXJmb3JtIGEgKipzaGFsbG93IG1lcmdlKiogZm9yIG9iamVjdHMuXG4gICAqIFlvdSBjYW4gcGFzcyBhIGZ1bmN0aW9uIHRvIHBlcmZvcm0gY3VzdG9tIG1lcmdlIChlLmcuIGRlZXAgbWVyZ2UpLCBmb3IgZXhhbXBsZTpcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1lcmdlRGVmYXVsdHM/OiBib29sZWFuIHwgKChzdG9yYWdlVmFsdWU6IFQsIGRlZmF1bHRzOiBUKSA9PiBUKTtcbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRhIHNlcmlhbGl6YXRpb25cbiAgICovXG4gIHNlcmlhbGl6ZXI/OiBTZXJpYWxpemVyPFQ+O1xuICAvKipcbiAgICogT24gZXJyb3IgY2FsbGJhY2tcbiAgICpcbiAgICogRGVmYXVsdCBsb2cgZXJyb3IgdG8gYGNvbnNvbGUuZXJyb3JgXG4gICAqL1xuICBvbkVycm9yPzogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkO1xuICAvKipcbiAgICogVXNlIHNoYWxsb3cgcmVmIGFzIHJlZmVyZW5jZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2hhbGxvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXYWl0IGZvciB0aGUgY29tcG9uZW50IHRvIGJlIG1vdW50ZWQgYmVmb3JlIHJlYWRpbmcgdGhlIHN0b3JhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbml0T25Nb3VudGVkPzogYm9vbGVhbjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RvcmFnZShrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgZGVmYXVsdHM6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgc3RvcmFnZT86IFN0b3JhZ2VMaWtlLCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8c3RyaW5nPik6IFJlbW92YWJsZVJlZjxzdHJpbmc+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdG9yYWdlKGtleTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBkZWZhdWx0czogTWF5YmVSZWZPckdldHRlcjxib29sZWFuPiwgc3RvcmFnZT86IFN0b3JhZ2VMaWtlLCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8Ym9vbGVhbj4pOiBSZW1vdmFibGVSZWY8Ym9vbGVhbj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN0b3JhZ2Uoa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGRlZmF1bHRzOiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj4sIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZSwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPG51bWJlcj4pOiBSZW1vdmFibGVSZWY8bnVtYmVyPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RvcmFnZTxUPihrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgZGVmYXVsdHM6IE1heWJlUmVmT3JHZXR0ZXI8VD4sIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZSwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPFQ+KTogUmVtb3ZhYmxlUmVmPFQ+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdG9yYWdlPFQgPSB1bmtub3duPihrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgZGVmYXVsdHM6IE1heWJlUmVmT3JHZXR0ZXI8bnVsbD4sIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZSwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPFQ+KTogUmVtb3ZhYmxlUmVmPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQ29sb3JNb2RlL2luZGV4LmQudHNcbnR5cGUgQmFzaWNDb2xvck1vZGUgPSAnbGlnaHQnIHwgJ2RhcmsnO1xudHlwZSBCYXNpY0NvbG9yU2NoZW1hID0gQmFzaWNDb2xvck1vZGUgfCAnYXV0byc7XG5pbnRlcmZhY2UgVXNlQ29sb3JNb2RlT3B0aW9uczxUIGV4dGVuZHMgc3RyaW5nID0gQmFzaWNDb2xvck1vZGU+IGV4dGVuZHMgVXNlU3RvcmFnZU9wdGlvbnM8VCB8IEJhc2ljQ29sb3JNb2RlPiB7XG4gIC8qKlxuICAgKiBDU1MgU2VsZWN0b3IgZm9yIHRoZSB0YXJnZXQgZWxlbWVudCBhcHBseWluZyB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAnaHRtbCdcbiAgICovXG4gIHNlbGVjdG9yPzogc3RyaW5nIHwgTWF5YmVFbGVtZW50UmVmO1xuICAvKipcbiAgICogSFRNTCBhdHRyaWJ1dGUgYXBwbHlpbmcgdGhlIHRhcmdldCBlbGVtZW50XG4gICAqXG4gICAqIEBkZWZhdWx0ICdjbGFzcydcbiAgICovXG4gIGF0dHJpYnV0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIGNvbG9yIG1vZGVcbiAgICpcbiAgICogQGRlZmF1bHQgJ2F1dG8nXG4gICAqL1xuICBpbml0aWFsVmFsdWU/OiBNYXliZVJlZk9yR2V0dGVyPFQgfCBCYXNpY0NvbG9yU2NoZW1hPjtcbiAgLyoqXG4gICAqIFByZWZpeCB3aGVuIGFkZGluZyB2YWx1ZSB0byB0aGUgYXR0cmlidXRlXG4gICAqL1xuICBtb2Rlcz86IFBhcnRpYWw8UmVjb3JkPFQgfCBCYXNpY0NvbG9yU2NoZW1hLCBzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEEgY3VzdG9tIGhhbmRsZXIgZm9yIGhhbmRsZSB0aGUgdXBkYXRlcy5cbiAgICogV2hlbiBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdpbGwgYmUgb3ZlcnJpZGRlbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBvbkNoYW5nZWQ/OiAobW9kZTogVCB8IEJhc2ljQ29sb3JNb2RlLCBkZWZhdWx0SGFuZGxlcjogKChtb2RlOiBUIHwgQmFzaWNDb2xvck1vZGUpID0+IHZvaWQpKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ3VzdG9tIHN0b3JhZ2UgcmVmXG4gICAqXG4gICAqIFdoZW4gcHJvdmlkZWQsIGB1c2VTdG9yYWdlYCB3aWxsIGJlIHNraXBwZWRcbiAgICovXG4gIHN0b3JhZ2VSZWY/OiBSZWY8VCB8IEJhc2ljQ29sb3JTY2hlbWE+O1xuICAvKipcbiAgICogS2V5IHRvIHBlcnNpc3QgdGhlIGRhdGEgaW50byBsb2NhbFN0b3JhZ2Uvc2Vzc2lvblN0b3JhZ2UuXG4gICAqXG4gICAqIFBhc3MgYG51bGxgIHRvIGRpc2FibGUgcGVyc2lzdGVuY2VcbiAgICpcbiAgICogQGRlZmF1bHQgJ3Z1ZXVzZS1jb2xvci1zY2hlbWUnXG4gICAqL1xuICBzdG9yYWdlS2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqXG4gICAqIFN0b3JhZ2Ugb2JqZWN0LCBjYW4gYmUgbG9jYWxTdG9yYWdlIG9yIHNlc3Npb25TdG9yYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IGxvY2FsU3RvcmFnZVxuICAgKi9cbiAgc3RvcmFnZT86IFN0b3JhZ2VMaWtlO1xuICAvKipcbiAgICogRW1pdCBgYXV0b2AgbW9kZSBmcm9tIHN0YXRlXG4gICAqXG4gICAqIFdoZW4gc2V0IHRvIGB0cnVlYCwgcHJlZmVycmVkIG1vZGUgd29uJ3QgYmUgdHJhbnNsYXRlZCBpbnRvIGBsaWdodGAgb3IgYGRhcmtgLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBmYWN0IHRoYXQgYGF1dG9gIG1vZGUgd2FzIHNlbGVjdGVkIG5lZWRzIHRvIGJlIGtub3duLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBzdG9yZS52YWx1ZWAgd2hlbiBgYXV0b2AgbW9kZSBuZWVkcyB0byBiZSBrbm93blxuICAgKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy9jb3JlL3VzZUNvbG9yTW9kZS8jYWR2YW5jZWQtdXNhZ2VcbiAgICovXG4gIGVtaXRBdXRvPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdHJhbnNpdGlvbiBvbiBzd2l0Y2hcbiAgICpcbiAgICogQHNlZSBodHRwczovL3BhY28ubWUvd3JpdGluZy9kaXNhYmxlLXRoZW1lLXRyYW5zaXRpb25zXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRpc2FibGVUcmFuc2l0aW9uPzogYm9vbGVhbjtcbn1cbnR5cGUgVXNlQ29sb3JNb2RlUmV0dXJuPFQgZXh0ZW5kcyBzdHJpbmcgPSBCYXNpY0NvbG9yTW9kZT4gPSBSZWY8VCB8IEJhc2ljQ29sb3JTY2hlbWE+ICYge1xuICBzdG9yZTogUmVmPFQgfCBCYXNpY0NvbG9yU2NoZW1hPjtcbiAgc3lzdGVtOiBDb21wdXRlZFJlZjxCYXNpY0NvbG9yTW9kZT47XG4gIHN0YXRlOiBDb21wdXRlZFJlZjxUIHwgQmFzaWNDb2xvck1vZGU+O1xufTtcbi8qKlxuICogUmVhY3RpdmUgY29sb3IgbW9kZSB3aXRoIGF1dG8gZGF0YSBwZXJzaXN0ZW5jZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VDb2xvck1vZGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ29sb3JNb2RlPFQgZXh0ZW5kcyBzdHJpbmcgPSBCYXNpY0NvbG9yTW9kZT4ob3B0aW9ucz86IFVzZUNvbG9yTW9kZU9wdGlvbnM8VD4pOiBVc2VDb2xvck1vZGVSZXR1cm48VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VDb25maXJtRGlhbG9nL2luZGV4LmQudHNcbnR5cGUgVXNlQ29uZmlybURpYWxvZ1JldmVhbFJlc3VsdDxDLCBEPiA9IHtcbiAgZGF0YT86IEM7XG4gIGlzQ2FuY2VsZWQ6IGZhbHNlO1xufSB8IHtcbiAgZGF0YT86IEQ7XG4gIGlzQ2FuY2VsZWQ6IHRydWU7XG59O1xuaW50ZXJmYWNlIFVzZUNvbmZpcm1EaWFsb2dSZXR1cm48UmV2ZWFsRGF0YSwgQ29uZmlybURhdGEsIENhbmNlbERhdGE+IHtcbiAgLyoqXG4gICAqIFJldmVhbGluZyBzdGF0ZVxuICAgKi9cbiAgaXNSZXZlYWxlZDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBPcGVucyB0aGUgZGlhbG9nLlxuICAgKiBDcmVhdGUgcHJvbWlzZSBhbmQgcmV0dXJuIGl0LiBUcmlnZ2VycyBgb25SZXZlYWxgIGhvb2suXG4gICAqL1xuICByZXZlYWw6IChkYXRhPzogUmV2ZWFsRGF0YSkgPT4gUHJvbWlzZTxVc2VDb25maXJtRGlhbG9nUmV2ZWFsUmVzdWx0PENvbmZpcm1EYXRhLCBDYW5jZWxEYXRhPj47XG4gIC8qKlxuICAgKiBDb25maXJtcyBhbmQgY2xvc2VzIHRoZSBkaWFsb2cuIFRyaWdnZXJzIGEgY2FsbGJhY2sgaW5zaWRlIGBvbkNvbmZpcm1gIGhvb2suXG4gICAqIFJlc29sdmVzIHByb21pc2UgZnJvbSBgcmV2ZWFsKClgIHdpdGggYGRhdGFgIGFuZCBgaXNDYW5jZWxlZGAgcmVmIHdpdGggYGZhbHNlYCB2YWx1ZS5cbiAgICogQ2FuIGFjY2VwdCBhbnkgZGF0YSBhbmQgdG8gcGFzcyBpdCB0byBgb25Db25maXJtYCBob29rLlxuICAgKi9cbiAgY29uZmlybTogKGRhdGE/OiBDb25maXJtRGF0YSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbmNlbHMgYW5kIGNsb3NlcyB0aGUgZGlhbG9nLiBUcmlnZ2VycyBhIGNhbGxiYWNrIGluc2lkZSBgb25DYW5jZWxgIGhvb2suXG4gICAqIFJlc29sdmVzIHByb21pc2UgZnJvbSBgcmV2ZWFsKClgIHdpdGggYGRhdGFgIGFuZCBgaXNDYW5jZWxlZGAgcmVmIHdpdGggYHRydWVgIHZhbHVlLlxuICAgKiBDYW4gYWNjZXB0IGFueSBkYXRhIGFuZCB0byBwYXNzIGl0IHRvIGBvbkNhbmNlbGAgaG9vay5cbiAgICovXG4gIGNhbmNlbDogKGRhdGE/OiBDYW5jZWxEYXRhKSA9PiB2b2lkO1xuICAvKipcbiAgICogRXZlbnQgSG9vayB0byBiZSB0cmlnZ2VyZWQgcmlnaHQgYmVmb3JlIGRpYWxvZyBjcmVhdGluZy5cbiAgICovXG4gIG9uUmV2ZWFsOiBFdmVudEhvb2tPbjxSZXZlYWxEYXRhPjtcbiAgLyoqXG4gICAqIEV2ZW50IEhvb2sgdG8gYmUgY2FsbGVkIG9uIGBjb25maXJtKClgLlxuICAgKiBHZXRzIGRhdGEgb2JqZWN0IGZyb20gYGNvbmZpcm1gIGZ1bmN0aW9uLlxuICAgKi9cbiAgb25Db25maXJtOiBFdmVudEhvb2tPbjxDb25maXJtRGF0YT47XG4gIC8qKlxuICAgKiBFdmVudCBIb29rIHRvIGJlIGNhbGxlZCBvbiBgY2FuY2VsKClgLlxuICAgKiBHZXRzIGRhdGEgb2JqZWN0IGZyb20gYGNhbmNlbGAgZnVuY3Rpb24uXG4gICAqL1xuICBvbkNhbmNlbDogRXZlbnRIb29rT248Q2FuY2VsRGF0YT47XG59XG4vKipcbiAqIEhvb2tzIGZvciBjcmVhdGluZyBjb25maXJtIGRpYWxvZ3MuIFVzZWZ1bCBmb3IgbW9kYWwgd2luZG93cywgcG9wdXBzIGFuZCBsb2dpbnMuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQ29uZmlybURpYWxvZy9cbiAqIEBwYXJhbSByZXZlYWxlZCBgYm9vbGVhbmAgYHJlZmAgdGhhdCBoYW5kbGVzIGEgbW9kYWwgd2luZG93XG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDb25maXJtRGlhbG9nPFJldmVhbERhdGEgPSBhbnksIENvbmZpcm1EYXRhID0gYW55LCBDYW5jZWxEYXRhID0gYW55PihyZXZlYWxlZD86IFNoYWxsb3dSZWY8Ym9vbGVhbj4pOiBVc2VDb25maXJtRGlhbG9nUmV0dXJuPFJldmVhbERhdGEsIENvbmZpcm1EYXRhLCBDYW5jZWxEYXRhPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUNvdW50ZG93bi9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQ291bnRkb3duT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVNjaGVkdWxlciB7XG4gIC8qKlxuICAgKiAgSW50ZXJ2YWwgZm9yIHRoZSBjb3VudGRvd24gaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0IGlzIDEwMDBtcy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKi9cbiAgaW50ZXJ2YWw/OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgY291bnRkb3duIHJlYWNoZXMgMC5cbiAgICovXG4gIG9uQ29tcGxldGU/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIG9uIGVhY2ggdGljayBvZiB0aGUgY291bnRkb3duLlxuICAgKi9cbiAgb25UaWNrPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSBjb3VudGRvd24gaW1tZWRpYXRlbHlcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VDb3VudGRvd25SZXR1cm4gZXh0ZW5kcyBQYXVzYWJsZSB7XG4gIC8qKlxuICAgKiBDdXJyZW50IGNvdW50ZG93biB2YWx1ZS5cbiAgICovXG4gIHJlbWFpbmluZzogU2hhbGxvd1JlZjxudW1iZXI+O1xuICAvKipcbiAgICogUmVzZXRzIHRoZSBjb3VudGRvd24gYW5kIHJlcGVhdHNMZWZ0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLlxuICAgKi9cbiAgcmVzZXQ6IChjb3VudGRvd24/OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj4pID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBTdG9wcyB0aGUgY291bnRkb3duIGFuZCByZXNldHMgaXRzIHN0YXRlLlxuICAgKi9cbiAgc3RvcDogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBjb3VudGRvd24gYW5kIHN0YXJ0IGl0IGFnYWluLlxuICAgKi9cbiAgc3RhcnQ6IChjb3VudGRvd24/OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj4pID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIGNvdW50ZG93biB0aW1lciBpbiBzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSBpbml0aWFsQ291bnRkb3duXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUNvdW50ZG93blxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUNvdW50ZG93bihpbml0aWFsQ291bnRkb3duOiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj4sIG9wdGlvbnM/OiBVc2VDb3VudGRvd25PcHRpb25zKTogVXNlQ291bnRkb3duUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQ3NzU3VwcG9ydHMvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUNzc1N1cHBvcnRzT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIHNzclZhbHVlPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VDc3NTdXBwb3J0c1JldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHt9XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUNzc1N1cHBvcnRzKHByb3BlcnR5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIHZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIG9wdGlvbnM/OiBVc2VDc3NTdXBwb3J0c09wdGlvbnMpOiBVc2VDc3NTdXBwb3J0c1JldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ3NzU3VwcG9ydHMoY29uZGl0aW9uVGV4dDogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBvcHRpb25zPzogVXNlQ3NzU3VwcG9ydHNPcHRpb25zKTogVXNlQ3NzU3VwcG9ydHNSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VDc3NWYXIvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUNzc1Zhck9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBVc2UgTXV0YXRpb25PYnNlcnZlciB0byBtb25pdG9yIHZhcmlhYmxlIGNoYW5nZXNcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG9ic2VydmU/OiBib29sZWFuO1xufVxuLyoqXG4gKiBNYW5pcHVsYXRlIENTUyB2YXJpYWJsZXMuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQ3NzVmFyXG4gKiBAcGFyYW0gcHJvcFxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDc3NWYXIocHJvcDogTWF5YmVSZWZPckdldHRlcjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPiwgdGFyZ2V0PzogTWF5YmVFbGVtZW50UmVmLCBvcHRpb25zPzogVXNlQ3NzVmFyT3B0aW9ucyk6IHZ1ZTAuU2hhbGxvd1JlZjxzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VDdXJyZW50RWxlbWVudC9pbmRleC5kLnRzXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUN1cnJlbnRFbGVtZW50PFQgZXh0ZW5kcyBNYXliZUVsZW1lbnQgPSBNYXliZUVsZW1lbnQsIFIkMSBleHRlbmRzIFZ1ZUluc3RhbmNlID0gVnVlSW5zdGFuY2UsIEUgZXh0ZW5kcyBNYXliZUVsZW1lbnQgPSAoTWF5YmVFbGVtZW50IGV4dGVuZHMgVCA/IElzQW55PFIkMVsnJGVsJ10+IGV4dGVuZHMgZmFsc2UgPyBSJDFbJyRlbCddIDogVCA6IFQpPihyb290Q29tcG9uZW50PzogTWF5YmVFbGVtZW50UmVmPFIkMT4pOiBfdnVldXNlX3NoYXJlZDAuQ29tcHV0ZWRSZWZXaXRoQ29udHJvbDxFPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUN5Y2xlTGlzdC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQ3ljbGVMaXN0T3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgc3RhdGUuXG4gICAqIEEgcmVmIGNhbiBiZSBwcm92aWRlZCB0byByZXVzZS5cbiAgICovXG4gIGluaXRpYWxWYWx1ZT86IE1heWJlUmVmPFQ+O1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgaW5kZXggd2hlblxuICAgKi9cbiAgZmFsbGJhY2tJbmRleD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEN1c3RvbSBmdW5jdGlvbiB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IHZhbHVlLlxuICAgKi9cbiAgZ2V0SW5kZXhPZj86ICh2YWx1ZTogVCwgbGlzdDogVFtdKSA9PiBudW1iZXI7XG59XG4vKipcbiAqIEN5Y2xlIHRocm91Z2ggYSBsaXN0IG9mIGl0ZW1zXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQ3ljbGVMaXN0XG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ3ljbGVMaXN0PFQ+KGxpc3Q6IE1heWJlUmVmT3JHZXR0ZXI8VFtdPiwgb3B0aW9ucz86IFVzZUN5Y2xlTGlzdE9wdGlvbnM8VD4pOiBVc2VDeWNsZUxpc3RSZXR1cm48VD47XG5pbnRlcmZhY2UgVXNlQ3ljbGVMaXN0UmV0dXJuPFQ+IHtcbiAgc3RhdGU6IFNoYWxsb3dSZWY8VD47XG4gIGluZGV4OiBXcml0YWJsZUNvbXB1dGVkUmVmPG51bWJlcj47XG4gIG5leHQ6IChuPzogbnVtYmVyKSA9PiBUO1xuICBwcmV2OiAobj86IG51bWJlcikgPT4gVDtcbiAgLyoqXG4gICAqIEdvIHRvIGEgc3BlY2lmaWMgaW5kZXhcbiAgICovXG4gIGdvOiAoaTogbnVtYmVyKSA9PiBUO1xufVxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRGFyay9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRGFya09wdGlvbnMgZXh0ZW5kcyBPbWl0PFVzZUNvbG9yTW9kZU9wdGlvbnM8QmFzaWNDb2xvclNjaGVtYT4sICdtb2RlcycgfCAnb25DaGFuZ2VkJz4ge1xuICAvKipcbiAgICogVmFsdWUgYXBwbHlpbmcgdG8gdGhlIHRhcmdldCBlbGVtZW50IHdoZW4gaXNEYXJrPXRydWVcbiAgICpcbiAgICogQGRlZmF1bHQgJ2RhcmsnXG4gICAqL1xuICB2YWx1ZURhcms/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWYWx1ZSBhcHBseWluZyB0byB0aGUgdGFyZ2V0IGVsZW1lbnQgd2hlbiBpc0Rhcms9ZmFsc2VcbiAgICpcbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIHZhbHVlTGlnaHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGN1c3RvbSBoYW5kbGVyIGZvciBoYW5kbGUgdGhlIHVwZGF0ZXMuXG4gICAqIFdoZW4gc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBiZWhhdmlvciB3aWxsIGJlIG92ZXJyaWRkZW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgb25DaGFuZ2VkPzogKGlzRGFyazogYm9vbGVhbiwgZGVmYXVsdEhhbmRsZXI6ICgobW9kZTogQmFzaWNDb2xvclNjaGVtYSkgPT4gdm9pZCksIG1vZGU6IEJhc2ljQ29sb3JTY2hlbWEpID0+IHZvaWQ7XG59XG50eXBlIFVzZURhcmtSZXR1cm4gPSBXcml0YWJsZUNvbXB1dGVkUmVmPGJvb2xlYW4+O1xuLyoqXG4gKiBSZWFjdGl2ZSBkYXJrIG1vZGUgd2l0aCBhdXRvIGRhdGEgcGVyc2lzdGVuY2UuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRGFya1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VEYXJrKG9wdGlvbnM/OiBVc2VEYXJrT3B0aW9ucyk6IFVzZURhcmtSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VNYW51YWxSZWZIaXN0b3J5L2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VSZWZIaXN0b3J5UmVjb3JkPFQ+IHtcbiAgc25hcHNob3Q6IFQ7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZU1hbnVhbFJlZkhpc3RvcnlPcHRpb25zPFJhdywgU2VyaWFsaXplZCA9IFJhdz4ge1xuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSB0byBiZSBrZXB0LiBEZWZhdWx0IHRvIHVubGltaXRlZC5cbiAgICovXG4gIGNhcGFjaXR5PzogbnVtYmVyO1xuICAvKipcbiAgICogQ2xvbmUgd2hlbiB0YWtpbmcgYSBzbmFwc2hvdCwgc2hvcnRjdXQgZm9yIGR1bXA6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKS5cbiAgICogRGVmYXVsdCB0byBmYWxzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2xvbmU/OiBib29sZWFuIHwgQ2xvbmVGbjxSYXc+O1xuICAvKipcbiAgICogU2VyaWFsaXplIGRhdGEgaW50byB0aGUgaGlzdG9yeVxuICAgKi9cbiAgZHVtcD86ICh2OiBSYXcpID0+IFNlcmlhbGl6ZWQ7XG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBkYXRhIGZyb20gdGhlIGhpc3RvcnlcbiAgICovXG4gIHBhcnNlPzogKHY6IFNlcmlhbGl6ZWQpID0+IFJhdztcbiAgLyoqXG4gICAqIHNldCBkYXRhIHNvdXJjZVxuICAgKi9cbiAgc2V0U291cmNlPzogKHNvdXJjZTogUmVmPFJhdz4sIHY6IFJhdykgPT4gdm9pZDtcbn1cbmludGVyZmFjZSBVc2VNYW51YWxSZWZIaXN0b3J5UmV0dXJuPFJhdywgU2VyaWFsaXplZD4ge1xuICAvKipcbiAgICogQnlwYXNzZWQgdHJhY2tpbmcgcmVmIGZyb20gdGhlIGFyZ3VtZW50XG4gICAqL1xuICBzb3VyY2U6IFJlZjxSYXc+O1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgaGlzdG9yeSByZWNvcmRzIGZvciB1bmRvLCBuZXdlc3QgY29tZXMgdG8gZmlyc3RcbiAgICovXG4gIGhpc3Rvcnk6IFJlZjxVc2VSZWZIaXN0b3J5UmVjb3JkPFNlcmlhbGl6ZWQ+W10+O1xuICAvKipcbiAgICogTGFzdCBoaXN0b3J5IHBvaW50LCBzb3VyY2UgY2FuIGJlIGRpZmZlcmVudCBpZiBwYXVzZWRcbiAgICovXG4gIGxhc3Q6IFJlZjxVc2VSZWZIaXN0b3J5UmVjb3JkPFNlcmlhbGl6ZWQ+PjtcbiAgLyoqXG4gICAqIFNhbWUgYXMge0BsaW5rIFVzZU1hbnVhbFJlZkhpc3RvcnlSZXR1cm4uaGlzdG9yeSB8IGhpc3Rvcnl9XG4gICAqL1xuICB1bmRvU3RhY2s6IFJlZjxVc2VSZWZIaXN0b3J5UmVjb3JkPFNlcmlhbGl6ZWQ+W10+O1xuICAvKipcbiAgICogUmVjb3JkcyBhcnJheSBmb3IgcmVkb1xuICAgKi9cbiAgcmVkb1N0YWNrOiBSZWY8VXNlUmVmSGlzdG9yeVJlY29yZDxTZXJpYWxpemVkPltdPjtcbiAgLyoqXG4gICAqIEEgcmVmIHJlcHJlc2VudGluZyBpZiB1bmRvIGlzIHBvc3NpYmxlIChub24gZW1wdHkgdW5kb1N0YWNrKVxuICAgKi9cbiAgY2FuVW5kbzogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBBIHJlZiByZXByZXNlbnRpbmcgaWYgcmVkbyBpcyBwb3NzaWJsZSAobm9uIGVtcHR5IHJlZG9TdGFjaylcbiAgICovXG4gIGNhblJlZG86IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogVW5kbyBjaGFuZ2VzXG4gICAqL1xuICB1bmRvOiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogUmVkbyBjaGFuZ2VzXG4gICAqL1xuICByZWRvOiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2xlYXIgYWxsIHRoZSBoaXN0b3J5XG4gICAqL1xuICBjbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBoaXN0b3J5IHJlY29yZFxuICAgKi9cbiAgY29tbWl0OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogUmVzZXQgcmVmJ3MgdmFsdWUgd2l0aCBsYXRlc3QgaGlzdG9yeVxuICAgKi9cbiAgcmVzZXQ6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFRyYWNrIHRoZSBjaGFuZ2UgaGlzdG9yeSBvZiBhIHJlZiwgYWxzbyBwcm92aWRlcyB1bmRvIGFuZCByZWRvIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTWFudWFsUmVmSGlzdG9yeVxuICogQHBhcmFtIHNvdXJjZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VNYW51YWxSZWZIaXN0b3J5PFJhdywgU2VyaWFsaXplZCA9IFJhdz4oc291cmNlOiBSZWY8UmF3Piwgb3B0aW9ucz86IFVzZU1hbnVhbFJlZkhpc3RvcnlPcHRpb25zPFJhdywgU2VyaWFsaXplZD4pOiBVc2VNYW51YWxSZWZIaXN0b3J5UmV0dXJuPFJhdywgU2VyaWFsaXplZD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VSZWZIaXN0b3J5L2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VSZWZIaXN0b3J5T3B0aW9uczxSYXcsIFNlcmlhbGl6ZWQgPSBSYXc+IGV4dGVuZHMgQ29uZmlndXJhYmxlRXZlbnRGaWx0ZXIsIENvbmZpZ3VyYWJsZUZsdXNoIHtcbiAgLyoqXG4gICAqIFdhdGNoIGZvciBkZWVwIGNoYW5nZXMsIGRlZmF1bHQgdG8gZmFsc2VcbiAgICpcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgaXQgd2lsbCBhbHNvIGNyZWF0ZSBjbG9uZXMgZm9yIHZhbHVlcyBzdG9yZSBpbiB0aGUgaGlzdG9yeVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGVlcD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBoaXN0b3J5IHRvIGJlIGtlcHQuIERlZmF1bHQgdG8gdW5saW1pdGVkLlxuICAgKi9cbiAgY2FwYWNpdHk/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDbG9uZSB3aGVuIHRha2luZyBhIHNuYXBzaG90LCBzaG9ydGN1dCBmb3IgZHVtcDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpLlxuICAgKiBEZWZhdWx0IHRvIGZhbHNlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjbG9uZT86IGJvb2xlYW4gfCBDbG9uZUZuPFJhdz47XG4gIC8qKlxuICAgKiBTZXJpYWxpemUgZGF0YSBpbnRvIHRoZSBoaXN0b3J5XG4gICAqL1xuICBkdW1wPzogKHY6IFJhdykgPT4gU2VyaWFsaXplZDtcbiAgLyoqXG4gICAqIERlc2VyaWFsaXplIGRhdGEgZnJvbSB0aGUgaGlzdG9yeVxuICAgKi9cbiAgcGFyc2U/OiAodjogU2VyaWFsaXplZCkgPT4gUmF3O1xuICAvKipcbiAgICogRnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZSBjb21taXQgc2hvdWxkIHByb2NlZWRcbiAgICogQHBhcmFtIG9sZFZhbHVlIFByZXZpb3VzIHZhbHVlXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSBOZXcgdmFsdWVcbiAgICogQHJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGNvbW1pdCBzaG91bGQgcHJvY2VlZFxuICAgKi9cbiAgc2hvdWxkQ29tbWl0PzogKG9sZFZhbHVlOiBSYXcgfCB1bmRlZmluZWQsIG5ld1ZhbHVlOiBSYXcpID0+IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgVXNlUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQ+IGV4dGVuZHMgVXNlTWFudWFsUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQ+IHtcbiAgLyoqXG4gICAqIEEgcmVmIHJlcHJlc2VudGluZyBpZiB0aGUgdHJhY2tpbmcgaXMgZW5hYmxlZFxuICAgKi9cbiAgaXNUcmFja2luZzogUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogUGF1c2UgY2hhbmdlIHRyYWNraW5nXG4gICAqL1xuICBwYXVzZTogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlc3VtZSBjaGFuZ2UgdHJhY2tpbmdcbiAgICpcbiAgICogQHBhcmFtIFtjb21taXRdIGlmIHRydWUsIGEgaGlzdG9yeSByZWNvcmQgd2lsbCBiZSBjcmVhdGUgYWZ0ZXIgcmVzdW1pbmdcbiAgICovXG4gIHJlc3VtZTogKGNvbW1pdD86IGJvb2xlYW4pID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBBIHN1Z2FyIGZvciBhdXRvIHBhdXNlIGFuZCBhdXRvIHJlc3VtaW5nIHdpdGhpbiBhIGZ1bmN0aW9uIHNjb3BlXG4gICAqXG4gICAqIEBwYXJhbSBmblxuICAgKi9cbiAgYmF0Y2g6IChmbjogKGNhbmNlbDogRm4pID0+IHZvaWQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDbGVhciB0aGUgZGF0YSBhbmQgc3RvcCB0aGUgd2F0Y2hcbiAgICovXG4gIGRpc3Bvc2U6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFRyYWNrIHRoZSBjaGFuZ2UgaGlzdG9yeSBvZiBhIHJlZiwgYWxzbyBwcm92aWRlcyB1bmRvIGFuZCByZWRvIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUmVmSGlzdG9yeVxuICogQHBhcmFtIHNvdXJjZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VSZWZIaXN0b3J5PFJhdywgU2VyaWFsaXplZCA9IFJhdz4oc291cmNlOiBSZWY8UmF3Piwgb3B0aW9ucz86IFVzZVJlZkhpc3RvcnlPcHRpb25zPFJhdywgU2VyaWFsaXplZD4pOiBVc2VSZWZIaXN0b3J5UmV0dXJuPFJhdywgU2VyaWFsaXplZD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VEZWJvdW5jZWRSZWZIaXN0b3J5L2luZGV4LmQudHNcbi8qKlxuICogU2hvcnRoYW5kIGZvciBbdXNlUmVmSGlzdG9yeV0oaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVJlZkhpc3RvcnkpIHdpdGggZGVib3VuY2UgZmlsdGVyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZURlYm91bmNlZFJlZkhpc3RvcnlcbiAqIEBwYXJhbSBzb3VyY2VcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRGVib3VuY2VkUmVmSGlzdG9yeTxSYXcsIFNlcmlhbGl6ZWQgPSBSYXc+KHNvdXJjZTogUmVmPFJhdz4sIG9wdGlvbnM/OiBPbWl0PFVzZVJlZkhpc3RvcnlPcHRpb25zPFJhdywgU2VyaWFsaXplZD4sICdldmVudEZpbHRlcic+ICYge1xuICBkZWJvdW5jZT86IE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyPjtcbn0pOiBVc2VSZWZIaXN0b3J5UmV0dXJuPFJhdywgU2VyaWFsaXplZD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VEZXZpY2VNb3Rpb24vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURldmljZU1vdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3csIENvbmZpZ3VyYWJsZUV2ZW50RmlsdGVyIHtcbiAgLyoqXG4gICAqIFJlcXVlc3QgZm9yIHBlcm1pc3Npb25zIGltbWVkaWF0ZWx5IGlmIGl0J3Mgbm90IGdyYW50ZWQsXG4gICAqIG90aGVyd2lzZSBsYWJlbCBhbmQgZGV2aWNlSWRzIGNvdWxkIGJlIGVtcHR5XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXF1ZXN0UGVybWlzc2lvbnM/OiBib29sZWFuO1xufVxuLyoqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgVXNlRGV2aWNlTW90aW9uT3B0aW9uc30gaW5zdGVhZCAqL1xudHlwZSBEZXZpY2VNb3Rpb25PcHRpb25zID0gVXNlRGV2aWNlTW90aW9uT3B0aW9ucztcbmludGVyZmFjZSBVc2VEZXZpY2VNb3Rpb25SZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGFjY2VsZXJhdGlvbjogUmVmPERldmljZU1vdGlvbkV2ZW50QWNjZWxlcmF0aW9uIHwgbnVsbD47XG4gIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHk6IFJlZjxEZXZpY2VNb3Rpb25FdmVudEFjY2VsZXJhdGlvbiB8IG51bGw+O1xuICByb3RhdGlvblJhdGU6IFJlZjxEZXZpY2VNb3Rpb25FdmVudFJvdGF0aW9uUmF0ZSB8IG51bGw+O1xuICBpbnRlcnZhbDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICByZXF1aXJlUGVybWlzc2lvbnM6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICBlbnN1cmVQZXJtaXNzaW9uczogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcGVybWlzc2lvbkdyYW50ZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG59XG4vKipcbiAqIFJlYWN0aXZlIERldmljZU1vdGlvbkV2ZW50LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZURldmljZU1vdGlvblxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VEZXZpY2VNb3Rpb24ob3B0aW9ucz86IFVzZURldmljZU1vdGlvbk9wdGlvbnMpOiBVc2VEZXZpY2VNb3Rpb25SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VEZXZpY2VPcmllbnRhdGlvbi9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRGV2aWNlT3JpZW50YXRpb25PcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHt9XG5pbnRlcmZhY2UgVXNlRGV2aWNlT3JpZW50YXRpb25SZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGlzQWJzb2x1dGU6IFNoYWxsb3dSZWY8Ym9vbGVhbiwgYm9vbGVhbj47XG4gIGFscGhhOiBSZWY8bnVtYmVyIHwgbnVsbCwgbnVtYmVyIHwgbnVsbD47XG4gIGJldGE6IFJlZjxudW1iZXIgfCBudWxsLCBudW1iZXIgfCBudWxsPjtcbiAgZ2FtbWE6IFJlZjxudW1iZXIgfCBudWxsLCBudW1iZXIgfCBudWxsPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgRGV2aWNlT3JpZW50YXRpb25FdmVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VEZXZpY2VPcmllbnRhdGlvblxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZURldmljZU9yaWVudGF0aW9uKG9wdGlvbnM/OiBVc2VEZXZpY2VPcmllbnRhdGlvbk9wdGlvbnMpOiBVc2VEZXZpY2VPcmllbnRhdGlvblJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZURldmljZVBpeGVsUmF0aW8vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURldmljZVBpeGVsUmF0aW9PcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHt9XG5pbnRlcmZhY2UgVXNlRGV2aWNlUGl4ZWxSYXRpb1JldHVybiB7XG4gIHBpeGVsUmF0aW86IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgc3RvcDogV2F0Y2hTdG9wSGFuZGxlO1xufVxuLyoqXG4gKiBSZWFjdGl2ZWx5IHRyYWNrIGB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb2AuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRGV2aWNlUGl4ZWxSYXRpb1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRGV2aWNlUGl4ZWxSYXRpbyhvcHRpb25zPzogVXNlRGV2aWNlUGl4ZWxSYXRpb09wdGlvbnMpOiBVc2VEZXZpY2VQaXhlbFJhdGlvUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRGV2aWNlc0xpc3QvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURldmljZXNMaXN0T3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZU5hdmlnYXRvciB7XG4gIG9uVXBkYXRlZD86IChkZXZpY2VzOiBNZWRpYURldmljZUluZm9bXSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlcXVlc3QgZm9yIHBlcm1pc3Npb25zIGltbWVkaWF0ZWx5IGlmIGl0J3Mgbm90IGdyYW50ZWQsXG4gICAqIG90aGVyd2lzZSBsYWJlbCBhbmQgZGV2aWNlSWRzIGNvdWxkIGJlIGVtcHR5XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXF1ZXN0UGVybWlzc2lvbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogUmVxdWVzdCBmb3IgdHlwZXMgb2YgbWVkaWEgcGVybWlzc2lvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgeyBhdWRpbzogdHJ1ZSwgdmlkZW86IHRydWUgfVxuICAgKi9cbiAgY29uc3RyYWludHM/OiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzO1xufVxuaW50ZXJmYWNlIFVzZURldmljZXNMaXN0UmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICAvKipcbiAgICogQWxsIGRldmljZXNcbiAgICovXG4gIGRldmljZXM6IFJlZjxNZWRpYURldmljZUluZm9bXT47XG4gIHZpZGVvSW5wdXRzOiBDb21wdXRlZFJlZjxNZWRpYURldmljZUluZm9bXT47XG4gIGF1ZGlvSW5wdXRzOiBDb21wdXRlZFJlZjxNZWRpYURldmljZUluZm9bXT47XG4gIGF1ZGlvT3V0cHV0czogQ29tcHV0ZWRSZWY8TWVkaWFEZXZpY2VJbmZvW10+O1xuICBwZXJtaXNzaW9uR3JhbnRlZDogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgZW5zdXJlUGVybWlzc2lvbnM6ICgpID0+IFByb21pc2U8Ym9vbGVhbj47XG59XG4vKipcbiAqIFJlYWN0aXZlIGBlbnVtZXJhdGVEZXZpY2VzYCBsaXN0aW5nIGF2YWlsYWJsZSBpbnB1dC9vdXRwdXQgZGV2aWNlc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZURldmljZXNMaXN0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZURldmljZXNMaXN0KG9wdGlvbnM/OiBVc2VEZXZpY2VzTGlzdE9wdGlvbnMpOiBVc2VEZXZpY2VzTGlzdFJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZURpc3BsYXlNZWRpYS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRGlzcGxheU1lZGlhT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZU5hdmlnYXRvciB7XG4gIC8qKlxuICAgKiBJZiB0aGUgc3RyZWFtIGlzIGVuYWJsZWRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGVuYWJsZWQ/OiBNYXliZVJlZjxib29sZWFuPjtcbiAgLyoqXG4gICAqIElmIHRoZSBzdHJlYW0gdmlkZW8gbWVkaWEgY29uc3RyYWludHNcbiAgICovXG4gIHZpZGVvPzogYm9vbGVhbiB8IE1lZGlhVHJhY2tDb25zdHJhaW50cyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIElmIHRoZSBzdHJlYW0gYXVkaW8gbWVkaWEgY29uc3RyYWludHNcbiAgICovXG4gIGF1ZGlvPzogYm9vbGVhbiB8IE1lZGlhVHJhY2tDb25zdHJhaW50cyB8IHVuZGVmaW5lZDtcbn1cbmludGVyZmFjZSBVc2VEaXNwbGF5TWVkaWFSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHN0cmVhbTogU2hhbGxvd1JlZjxNZWRpYVN0cmVhbSB8IHVuZGVmaW5lZD47XG4gIHN0YXJ0OiAoKSA9PiBQcm9taXNlPE1lZGlhU3RyZWFtIHwgdW5kZWZpbmVkPjtcbiAgc3RvcDogKCkgPT4gdm9pZDtcbiAgZW5hYmxlZDogU2hhbGxvd1JlZjxib29sZWFuPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgYG1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWFgIHN0cmVhbWluZ1xuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZURpc3BsYXlNZWRpYVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VEaXNwbGF5TWVkaWEob3B0aW9ucz86IFVzZURpc3BsYXlNZWRpYU9wdGlvbnMpOiBVc2VEaXNwbGF5TWVkaWFSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VEb2N1bWVudFZpc2liaWxpdHkvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURvY3VtZW50VmlzaWJpbGl0eU9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVEb2N1bWVudCB7fVxudHlwZSBVc2VEb2N1bWVudFZpc2liaWxpdHlSZXR1cm4gPSBTaGFsbG93UmVmPERvY3VtZW50VmlzaWJpbGl0eVN0YXRlPjtcbi8qKlxuICogUmVhY3RpdmVseSB0cmFjayBgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlYC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VEb2N1bWVudFZpc2liaWxpdHlcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZURvY3VtZW50VmlzaWJpbGl0eShvcHRpb25zPzogVXNlRG9jdW1lbnRWaXNpYmlsaXR5T3B0aW9ucyk6IFVzZURvY3VtZW50VmlzaWJpbGl0eVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZURyYWdnYWJsZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRHJhZ2dhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPbmx5IHN0YXJ0IHRoZSBkcmFnZ2luZyB3aGVuIGNsaWNrIG9uIHRoZSBlbGVtZW50IGRpcmVjdGx5XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBleGFjdD86IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBQcmV2ZW50IGV2ZW50cyBkZWZhdWx0c1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJldmVudERlZmF1bHQ/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4+O1xuICAvKipcbiAgICogUHJldmVudCBldmVudHMgcHJvcGFnYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHN0b3BQcm9wYWdhdGlvbj86IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBXaGV0aGVyIGRpc3BhdGNoIGV2ZW50cyBpbiBjYXB0dXJpbmcgcGhhc2VcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgY2FwdHVyZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbGVtZW50IHRvIGF0dGFjaCBgcG9pbnRlcm1vdmVgIGFuZCBgcG9pbnRlcnVwYCBldmVudHMgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IHdpbmRvd1xuICAgKi9cbiAgZHJhZ2dpbmdFbGVtZW50PzogTWF5YmVSZWZPckdldHRlcjxIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQgfCBXaW5kb3cgfCBEb2N1bWVudCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAvKipcbiAgICogRWxlbWVudCBmb3IgY2FsY3VsYXRpbmcgYm91bmRzIChJZiBub3Qgc2V0LCBpdCB3aWxsIHVzZSB0aGUgZXZlbnQncyB0YXJnZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIGNvbnRhaW5lckVsZW1lbnQ/OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAvKipcbiAgICogSGFuZGxlIHRoYXQgdHJpZ2dlcnMgdGhlIGRyYWcgZXZlbnRcbiAgICpcbiAgICogQGRlZmF1bHQgdGFyZ2V0XG4gICAqL1xuICBoYW5kbGU/OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAvKipcbiAgICogUG9pbnRlciB0eXBlcyB0aGF0IGxpc3RlbiB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgWydtb3VzZScsICd0b3VjaCcsICdwZW4nXVxuICAgKi9cbiAgcG9pbnRlclR5cGVzPzogUG9pbnRlclR5cGVbXTtcbiAgLyoqXG4gICAqIEluaXRpYWwgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHsgeDogMCwgeTogMCB9XG4gICAqL1xuICBpbml0aWFsVmFsdWU/OiBNYXliZVJlZk9yR2V0dGVyPFBvc2l0aW9uPjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoZW4gdGhlIGRyYWdnaW5nIHN0YXJ0cy4gUmV0dXJuIGBmYWxzZWAgdG8gcHJldmVudCBkcmFnZ2luZy5cbiAgICovXG4gIG9uU3RhcnQ/OiAocG9zaXRpb246IFBvc2l0aW9uLCBldmVudDogUG9pbnRlckV2ZW50KSA9PiB2b2lkIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBkdXJpbmcgZHJhZ2dpbmcuXG4gICAqL1xuICBvbk1vdmU/OiAocG9zaXRpb246IFBvc2l0aW9uLCBldmVudDogUG9pbnRlckV2ZW50KSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGJhY2sgd2hlbiBkcmFnZ2luZyBlbmQuXG4gICAqL1xuICBvbkVuZD86IChwb3NpdGlvbjogUG9zaXRpb24sIGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBBeGlzIHRvIGRyYWcgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdib3RoJ1xuICAgKi9cbiAgYXhpcz86ICd4JyB8ICd5JyB8ICdib3RoJztcbiAgLyoqXG4gICAqIERpc2FibGVkIGRyYWcgYW5kIGRyb3AuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZD86IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBNb3VzZSBidXR0b25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gdHJpZ2dlciBkcmFnIGV2ZW50cy5cbiAgICpcbiAgICogLSBgMGA6IE1haW4gYnV0dG9uLCB1c3VhbGx5IHRoZSBsZWZ0IGJ1dHRvbiBvciB0aGUgdW4taW5pdGlhbGl6ZWQgc3RhdGVcbiAgICogLSBgMWA6IEF1eGlsaWFyeSBidXR0b24sIHVzdWFsbHkgdGhlIHdoZWVsIGJ1dHRvbiBvciB0aGUgbWlkZGxlIGJ1dHRvbiAoaWYgcHJlc2VudClcbiAgICogLSBgMmA6IFNlY29uZGFyeSBidXR0b24sIHVzdWFsbHkgdGhlIHJpZ2h0IGJ1dHRvblxuICAgKiAtIGAzYDogRm91cnRoIGJ1dHRvbiwgdHlwaWNhbGx5IHRoZSBCcm93c2VyIEJhY2sgYnV0dG9uXG4gICAqIC0gYDRgOiBGaWZ0aCBidXR0b24sIHR5cGljYWxseSB0aGUgQnJvd3NlciBGb3J3YXJkIGJ1dHRvblxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Nb3VzZUV2ZW50L2J1dHRvbiN2YWx1ZVxuICAgKiBAZGVmYXVsdCBbMF1cbiAgICovXG4gIGJ1dHRvbnM/OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcltdPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzdHJpY3QgZHJhZ2dpbmcgd2l0aGluIHRoZSB2aXNpYmxlIGFyZWEgb2YgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogSWYgZW5hYmxlZCwgdGhlIGRyYWdnYWJsZSBlbGVtZW50IHdpbGwgbm90IGxlYXZlIHRoZSB2aXNpYmxlIGFyZWEgb2YgaXRzIGNvbnRhaW5lcixcbiAgICogZW5zdXJpbmcgaXQgcmVtYWlucyB3aXRoaW4gdGhlIHZpZXdwb3J0IG9mIHRoZSBjb250YWluZXIgZHVyaW5nIHRoZSBkcmFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVzdHJpY3RJblZpZXc/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4+O1xuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgYXV0by1zY3JvbGwgd2hlbiBkcmFnZ2luZyBuZWFyIHRoZSBlZGdlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGF1dG9TY3JvbGw/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4gfCB7XG4gICAgLyoqXG4gICAgICogU3BlZWQgb2YgYXV0by1zY3JvbGwuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAyXG4gICAgICovXG4gICAgc3BlZWQ/OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlciB8IFBvc2l0aW9uPjtcbiAgICAvKipcbiAgICAgKiBNYXJnaW4gZnJvbSB0aGUgZWRnZSB0byB0cmlnZ2VyIGF1dG8tc2Nyb2xsLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgMzBcbiAgICAgKi9cbiAgICBtYXJnaW4/OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlciB8IFBvc2l0aW9uPjtcbiAgICAvKipcbiAgICAgKiBEaXJlY3Rpb24gb2YgYXV0by1zY3JvbGwuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnYm90aCdcbiAgICAgKi9cbiAgICBkaXJlY3Rpb24/OiAneCcgfCAneScgfCAnYm90aCc7XG4gIH0+O1xufVxuaW50ZXJmYWNlIFVzZURyYWdnYWJsZVJldHVybiB7XG4gIHg6IFJlZjxudW1iZXI+O1xuICB5OiBSZWY8bnVtYmVyPjtcbiAgcG9zaXRpb246IFJlZjxQb3NpdGlvbj47XG4gIGlzRHJhZ2dpbmc6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICBzdHlsZTogQ29tcHV0ZWRSZWY8c3RyaW5nPjtcbn1cbi8qKlxuICogTWFrZSBlbGVtZW50cyBkcmFnZ2FibGUuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRHJhZ2dhYmxlXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZURyYWdnYWJsZSh0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8SFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VEcmFnZ2FibGVPcHRpb25zKTogVXNlRHJhZ2dhYmxlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRHJvcFpvbmUvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURyb3Bab25lUmV0dXJuIHtcbiAgZmlsZXM6IFNoYWxsb3dSZWY8RmlsZVtdIHwgbnVsbD47XG4gIGlzT3ZlckRyb3Bab25lOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xufVxuaW50ZXJmYWNlIFVzZURyb3Bab25lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGxvd2VkIGRhdGEgdHlwZXMsIGlmIG5vdCBzZXQsIGFsbCBkYXRhIHR5cGVzIGFyZSBhbGxvd2VkLlxuICAgKiBBbHNvIGNhbiBiZSBhIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBkYXRhIHR5cGVzLlxuICAgKi9cbiAgZGF0YVR5cGVzPzogTWF5YmVSZWY8cmVhZG9ubHkgc3RyaW5nW10+IHwgKCh0eXBlczogcmVhZG9ubHkgc3RyaW5nW10pID0+IGJvb2xlYW4pO1xuICAvKipcbiAgICogU2ltaWxhciB0byBkYXRhVHlwZXMsIGJ1dCBleHBvc2VzIHRoZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCBmb3IgY3VzdG9tIHZhbGlkYXRpb24uXG4gICAqIElmIHByb3ZpZGVkLCB0aGlzIGZ1bmN0aW9uIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBkYXRhVHlwZXMuXG4gICAqL1xuICBjaGVja1ZhbGlkaXR5PzogKGl0ZW1zOiBEYXRhVHJhbnNmZXJJdGVtTGlzdCkgPT4gYm9vbGVhbjtcbiAgb25Ecm9wPzogKGZpbGVzOiBGaWxlW10gfCBudWxsLCBldmVudDogRHJhZ0V2ZW50KSA9PiB2b2lkO1xuICBvbkVudGVyPzogKGZpbGVzOiBGaWxlW10gfCBudWxsLCBldmVudDogRHJhZ0V2ZW50KSA9PiB2b2lkO1xuICBvbkxlYXZlPzogKGZpbGVzOiBGaWxlW10gfCBudWxsLCBldmVudDogRHJhZ0V2ZW50KSA9PiB2b2lkO1xuICBvbk92ZXI/OiAoZmlsZXM6IEZpbGVbXSB8IG51bGwsIGV2ZW50OiBEcmFnRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBBbGxvdyBtdWx0aXBsZSBmaWxlcyB0byBiZSBkcm9wcGVkLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJldmVudCBkZWZhdWx0IGJlaGF2aW9yIGZvciB1bmhhbmRsZWQgZXZlbnRzLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIHByZXZlbnREZWZhdWx0Rm9yVW5oYW5kbGVkPzogYm9vbGVhbjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRHJvcFpvbmUodGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPiwgb3B0aW9ucz86IFVzZURyb3Bab25lT3B0aW9ucyB8IFVzZURyb3Bab25lT3B0aW9uc1snb25Ecm9wJ10pOiBVc2VEcm9wWm9uZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUVsZW1lbnRCb3VuZGluZy9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRWxlbWVudEJvdW5kaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBSZXNldCB2YWx1ZXMgdG8gMCBvbiBjb21wb25lbnQgdW5tb3VudGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlc2V0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpc3RlbiB0byB3aW5kb3cgcmVzaXplIGV2ZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHdpbmRvd1Jlc2l6ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gd2luZG93IHNjcm9sbCBldmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3aW5kb3dTY3JvbGw/OiBib29sZWFuO1xuICAvKipcbiAgICogSW1tZWRpYXRlbHkgY2FsbCB1cGRhdGUgb24gY29tcG9uZW50IG1vdW50ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRpbWluZyB0byByZWNhbGN1bGF0ZSB0aGUgYm91bmRpbmcgYm94XG4gICAqXG4gICAqIFNldHRpbmcgdG8gYG5leHQtZnJhbWVgIGNhbiBiZSB1c2VmdWwgd2hlbiB1c2luZyB0aGlzIHRvZ2V0aGVyIHdpdGggc29tZXRoaW5nIGxpa2Uge0BsaW5rIHVzZUJyZWFrcG9pbnRzfVxuICAgKiBhbmQgdGhlcmVmb3JlIHRoZSBsYXlvdXQgKHdoaWNoIGluZmx1ZW5jZXMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgb2JzZXJ2ZWQgZWxlbWVudCkgaXMgbm90IHVwZGF0ZWQgb24gdGhlIGN1cnJlbnQgdGljay5cbiAgICpcbiAgICogQGRlZmF1bHQgJ3N5bmMnXG4gICAqL1xuICB1cGRhdGVUaW1pbmc/OiAnc3luYycgfCAnbmV4dC1mcmFtZSc7XG59XG5pbnRlcmZhY2UgVXNlRWxlbWVudEJvdW5kaW5nUmV0dXJuIHtcbiAgaGVpZ2h0OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIGJvdHRvbTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBsZWZ0OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHJpZ2h0OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHRvcDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICB3aWR0aDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICB4OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHk6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgdXBkYXRlOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBib3VuZGluZyBib3ggb2YgYW4gSFRNTCBlbGVtZW50LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUVsZW1lbnRCb3VuZGluZ1xuICogQHBhcmFtIHRhcmdldFxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUVsZW1lbnRCb3VuZGluZyh0YXJnZXQ6IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmLCBvcHRpb25zPzogVXNlRWxlbWVudEJvdW5kaW5nT3B0aW9ucyk6IFVzZUVsZW1lbnRCb3VuZGluZ1JldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUVsZW1lbnRCeVBvaW50L2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VFbGVtZW50QnlQb2ludE9wdGlvbnM8TXVsdGlwbGUgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+IGV4dGVuZHMgQ29uZmlndXJhYmxlRG9jdW1lbnQsIENvbmZpZ3VyYWJsZVNjaGVkdWxlciB7XG4gIHg6IE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyPjtcbiAgeTogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+O1xuICBtdWx0aXBsZT86IE1heWJlUmVmT3JHZXR0ZXI8TXVsdGlwbGU+O1xuICAvKiogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZCAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xuICAvKiogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZCAqL1xuICBpbnRlcnZhbD86ICdyZXF1ZXN0QW5pbWF0aW9uRnJhbWUnIHwgbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZUVsZW1lbnRCeVBvaW50UmV0dXJuPE11bHRpcGxlIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiBleHRlbmRzIFN1cHBvcnRhYmxlLCBQYXVzYWJsZSB7XG4gIGVsZW1lbnQ6IFNoYWxsb3dSZWY8TXVsdGlwbGUgZXh0ZW5kcyB0cnVlID8gSFRNTEVsZW1lbnRbXSA6IEhUTUxFbGVtZW50IHwgbnVsbD47XG59XG4vKipcbiAqIFJlYWN0aXZlIGVsZW1lbnQgYnkgcG9pbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRWxlbWVudEJ5UG9pbnRcbiAqIEBwYXJhbSBvcHRpb25zIC0gVXNlRWxlbWVudEJ5UG9pbnRPcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRWxlbWVudEJ5UG9pbnQ8TSBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4ob3B0aW9uczogVXNlRWxlbWVudEJ5UG9pbnRPcHRpb25zPE0+KTogVXNlRWxlbWVudEJ5UG9pbnRSZXR1cm48TT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VFbGVtZW50SG92ZXIvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUVsZW1lbnRIb3Zlck9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICBkZWxheUVudGVyPzogbnVtYmVyO1xuICBkZWxheUxlYXZlPzogbnVtYmVyO1xuICB0cmlnZ2VyT25SZW1vdmFsPzogYm9vbGVhbjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRWxlbWVudEhvdmVyKGVsOiBNYXliZVJlZk9yR2V0dGVyPEV2ZW50VGFyZ2V0IHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VFbGVtZW50SG92ZXJPcHRpb25zKTogU2hhbGxvd1JlZjxib29sZWFuPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVJlc2l6ZU9ic2VydmVyL2luZGV4LmQudHNcbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhpcyBpbnRlcmZhY2UgaXMgbm93IGF2YWlsYWJsZSBpbiB0aGUgRE9NIGxpYi5cbiAqIFVzZSB0aGUgZ2xvYmFsIHtAbGluayBnbG9iYWxUaGlzLlJlc2l6ZU9ic2VydmVyU2l6ZX0gaW5zdGVhZC5cbiAqL1xuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyU2l6ZSB7XG4gIHJlYWRvbmx5IGlubGluZVNpemU6IG51bWJlcjtcbiAgcmVhZG9ubHkgYmxvY2tTaXplOiBudW1iZXI7XG59XG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgaW50ZXJmYWNlIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIERPTSBsaWIuXG4gKiBVc2UgdGhlIGdsb2JhbCB7QGxpbmsgZ2xvYmFsVGhpcy5SZXNpemVPYnNlcnZlckVudHJ5fSBpbnN0ZWFkLlxuICovXG5pbnRlcmZhY2UgUmVzaXplT2JzZXJ2ZXJFbnRyeSB7XG4gIHJlYWRvbmx5IHRhcmdldDogRWxlbWVudDtcbiAgcmVhZG9ubHkgY29udGVudFJlY3Q6IERPTVJlY3RSZWFkT25seTtcbiAgcmVhZG9ubHkgYm9yZGVyQm94U2l6ZTogUmVhZG9ubHlBcnJheTxSZXNpemVPYnNlcnZlclNpemU+O1xuICByZWFkb25seSBjb250ZW50Qm94U2l6ZTogUmVhZG9ubHlBcnJheTxSZXNpemVPYnNlcnZlclNpemU+O1xuICByZWFkb25seSBkZXZpY2VQaXhlbENvbnRlbnRCb3hTaXplOiBSZWFkb25seUFycmF5PFJlc2l6ZU9ic2VydmVyU2l6ZT47XG59XG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgaW50ZXJmYWNlIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIERPTSBsaWIuXG4gKiBVc2UgdGhlIGdsb2JhbCB7QGxpbmsgZ2xvYmFsVGhpcy5SZXNpemVPYnNlcnZlckNhbGxiYWNrfSBpbnN0ZWFkLlxuICovXG50eXBlIFJlc2l6ZU9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllczogUmVhZG9ubHlBcnJheTxSZXNpemVPYnNlcnZlckVudHJ5Piwgb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyKSA9PiB2b2lkO1xuaW50ZXJmYWNlIFVzZVJlc2l6ZU9ic2VydmVyT3B0aW9ucyBleHRlbmRzIFJlc2l6ZU9ic2VydmVyT3B0aW9ucywgQ29uZmlndXJhYmxlV2luZG93IHt9XG5pbnRlcmZhY2UgVXNlUmVzaXplT2JzZXJ2ZXJSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlcG9ydHMgY2hhbmdlcyB0byB0aGUgZGltZW5zaW9ucyBvZiBhbiBFbGVtZW50J3MgY29udGVudCBvciB0aGUgYm9yZGVyLWJveFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVJlc2l6ZU9ic2VydmVyXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUmVzaXplT2JzZXJ2ZXIodGFyZ2V0OiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZiB8IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmW10gfCBNYXliZVJlZk9yR2V0dGVyPE1heWJlRWxlbWVudFtdPiwgY2FsbGJhY2s6IGdsb2JhbFRoaXMuUmVzaXplT2JzZXJ2ZXJDYWxsYmFjaywgb3B0aW9ucz86IFVzZVJlc2l6ZU9ic2VydmVyT3B0aW9ucyk6IFVzZVJlc2l6ZU9ic2VydmVyUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRWxlbWVudFNpemUvaW5kZXguZC50c1xuaW50ZXJmYWNlIEVsZW1lbnRTaXplIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgVXNlRWxlbWVudFNpemVPcHRpb25zIGV4dGVuZHMgVXNlUmVzaXplT2JzZXJ2ZXJPcHRpb25zIHt9XG5pbnRlcmZhY2UgVXNlRWxlbWVudFNpemVSZXR1cm4ge1xuICB3aWR0aDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBoZWlnaHQ6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgc3RvcDogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogUmVhY3RpdmUgc2l6ZSBvZiBhbiBIVE1MIGVsZW1lbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRWxlbWVudFNpemVcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFbGVtZW50U2l6ZSh0YXJnZXQ6IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmLCBpbml0aWFsU2l6ZT86IEVsZW1lbnRTaXplLCBvcHRpb25zPzogVXNlRWxlbWVudFNpemVPcHRpb25zKTogVXNlRWxlbWVudFNpemVSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VJbnRlcnNlY3Rpb25PYnNlcnZlci9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbW1lZGlhdGVseSBvbiBjcmVhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIEVsZW1lbnQgb3IgRG9jdW1lbnQgd2hvc2UgYm91bmRzIGFyZSB1c2VkIGFzIHRoZSBib3VuZGluZyBib3ggd2hlbiB0ZXN0aW5nIGZvciBpbnRlcnNlY3Rpb24uXG4gICAqL1xuICByb290PzogTWF5YmVDb21wdXRlZEVsZW1lbnRSZWYgfCBEb2N1bWVudDtcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHdoaWNoIHNwZWNpZmllcyBhIHNldCBvZiBvZmZzZXRzIHRvIGFkZCB0byB0aGUgcm9vdCdzIGJvdW5kaW5nX2JveCB3aGVuIGNhbGN1bGF0aW5nIGludGVyc2VjdGlvbnMuXG4gICAqL1xuICByb290TWFyZ2luPzogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+O1xuICAvKipcbiAgICogRWl0aGVyIGEgc2luZ2xlIG51bWJlciBvciBhbiBhcnJheSBvZiBudW1iZXJzIGJldHdlZW4gMC4wIGFuZCAxLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICB0aHJlc2hvbGQ/OiBudW1iZXIgfCBudW1iZXJbXTtcbn1cbmludGVyZmFjZSBVc2VJbnRlcnNlY3Rpb25PYnNlcnZlclJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlLCBQYXVzYWJsZSB7XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIERldGVjdHMgdGhhdCBhIHRhcmdldCBlbGVtZW50J3MgdmlzaWJpbGl0eS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VJbnRlcnNlY3Rpb25PYnNlcnZlclxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUludGVyc2VjdGlvbk9ic2VydmVyKHRhcmdldDogTWF5YmVDb21wdXRlZEVsZW1lbnRSZWYgfCBNYXliZVJlZk9yR2V0dGVyPE1heWJlRWxlbWVudFtdPiB8IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmW10sIGNhbGxiYWNrOiBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLCBvcHRpb25zPzogVXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zKTogVXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VFbGVtZW50VmlzaWJpbGl0eS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRWxlbWVudFZpc2liaWxpdHlPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93LCBQaWNrPFVzZUludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucywgJ3Jvb3RNYXJnaW4nIHwgJ3RocmVzaG9sZCc+IHtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbml0aWFsVmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdGhhdCBpcyB1c2VkIGFzIHRoZSB2aWV3cG9ydCBmb3IgY2hlY2tpbmcgdmlzaWJpbGl0eSBvZiB0aGUgdGFyZ2V0LlxuICAgKi9cbiAgc2Nyb2xsVGFyZ2V0PzogVXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zWydyb290J107XG4gIC8qKlxuICAgKiBTdG9wIHRyYWNraW5nIHdoZW4gZWxlbWVudCB2aXNpYmlsaXR5IGNoYW5nZXMgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBvbmNlPzogYm9vbGVhbjtcbn1cbnR5cGUgVXNlRWxlbWVudFZpc2liaWxpdHlSZXR1cm4gPSBTaGFsbG93UmVmPGJvb2xlYW4+O1xuLyoqXG4gKiBUcmFja3MgdGhlIHZpc2liaWxpdHkgb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUVsZW1lbnRWaXNpYmlsaXR5XG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRWxlbWVudFZpc2liaWxpdHkoZWxlbWVudDogTWF5YmVDb21wdXRlZEVsZW1lbnRSZWYsIG9wdGlvbnM/OiBVc2VFbGVtZW50VmlzaWJpbGl0eU9wdGlvbnMpOiBVc2VFbGVtZW50VmlzaWJpbGl0eVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUV2ZW50QnVzL2luZGV4LmQudHNcbnR5cGUgRXZlbnRCdXNMaXN0ZW5lcjxUID0gdW5rbm93biwgUCQxID0gYW55PiA9IChldmVudDogVCwgcGF5bG9hZD86IFAkMSkgPT4gdm9pZDtcbnR5cGUgRXZlbnRCdXNFdmVudHM8VCwgUCQxID0gYW55PiA9IFNldDxFdmVudEJ1c0xpc3RlbmVyPFQsIFAkMT4+O1xuaW50ZXJmYWNlIEV2ZW50QnVzS2V5PFQ+IGV4dGVuZHMgU3ltYm9sIHt9XG50eXBlIEV2ZW50QnVzSWRlbnRpZmllcjxUID0gdW5rbm93bj4gPSBFdmVudEJ1c0tleTxUPiB8IHN0cmluZyB8IG51bWJlcjtcbmludGVyZmFjZSBVc2VFdmVudEJ1c1JldHVybjxULCBQJDE+IHtcbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBhbiBldmVudC4gV2hlbiBjYWxsaW5nIGVtaXQsIHRoZSBsaXN0ZW5lcnMgd2lsbCBleGVjdXRlLlxuICAgKiBAcGFyYW0gbGlzdGVuZXIgd2F0Y2ggbGlzdGVuZXIuXG4gICAqIEByZXR1cm5zIGEgc3RvcCBmdW5jdGlvbiB0byByZW1vdmUgdGhlIGN1cnJlbnQgY2FsbGJhY2suXG4gICAqL1xuICBvbjogKGxpc3RlbmVyOiBFdmVudEJ1c0xpc3RlbmVyPFQsIFAkMT4pID0+IEZuO1xuICAvKipcbiAgICogU2ltaWxhciB0byBgb25gLCBidXQgb25seSBmaXJlcyBvbmNlXG4gICAqIEBwYXJhbSBsaXN0ZW5lciB3YXRjaCBsaXN0ZW5lci5cbiAgICogQHJldHVybnMgYSBzdG9wIGZ1bmN0aW9uIHRvIHJlbW92ZSB0aGUgY3VycmVudCBjYWxsYmFjay5cbiAgICovXG4gIG9uY2U6IChsaXN0ZW5lcjogRXZlbnRCdXNMaXN0ZW5lcjxULCBQJDE+KSA9PiBGbjtcbiAgLyoqXG4gICAqIEVtaXQgYW4gZXZlbnQsIHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50IGxpc3RlbmVycyB3aWxsIGV4ZWN1dGUuXG4gICAqIEBwYXJhbSBldmVudCBkYXRhIHNlbnQuXG4gICAqL1xuICBlbWl0OiAoZXZlbnQ/OiBULCBwYXlsb2FkPzogUCQxKSA9PiB2b2lkO1xuICAvKipcbiAgICogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGxpc3RlbmVyLlxuICAgKiBAcGFyYW0gbGlzdGVuZXIgd2F0Y2ggbGlzdGVuZXIuXG4gICAqL1xuICBvZmY6IChsaXN0ZW5lcjogRXZlbnRCdXNMaXN0ZW5lcjxUPikgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENsZWFyIGFsbCBldmVudHNcbiAgICovXG4gIHJlc2V0OiAoKSA9PiB2b2lkO1xufVxuZGVjbGFyZSBmdW5jdGlvbiB1c2VFdmVudEJ1czxUID0gdW5rbm93biwgUCQxID0gYW55PihrZXk6IEV2ZW50QnVzSWRlbnRpZmllcjxUPik6IFVzZUV2ZW50QnVzUmV0dXJuPFQsIFAkMT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VFdmVudExpc3RlbmVyL2luZGV4LmQudHNcbmludGVyZmFjZSBJbmZlckV2ZW50VGFyZ2V0PEV2ZW50cz4ge1xuICBhZGRFdmVudExpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50cywgZm4/OiBhbnksIG9wdGlvbnM/OiBhbnkpID0+IGFueTtcbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBFdmVudHMsIGZuPzogYW55LCBvcHRpb25zPzogYW55KSA9PiBhbnk7XG59XG50eXBlIFdpbmRvd0V2ZW50TmFtZSA9IGtleW9mIFdpbmRvd0V2ZW50TWFwO1xudHlwZSBEb2N1bWVudEV2ZW50TmFtZSA9IGtleW9mIERvY3VtZW50RXZlbnRNYXA7XG50eXBlIFNoYWRvd1Jvb3RFdmVudE5hbWUgPSBrZXlvZiBTaGFkb3dSb290RXZlbnRNYXA7XG5pbnRlcmZhY2UgR2VuZXJhbEV2ZW50TGlzdGVuZXI8RSA9IEV2ZW50PiB7XG4gIChldnQ6IEUpOiB2b2lkO1xufVxuLyoqXG4gKiBSZWdpc3RlciB1c2luZyBhZGRFdmVudExpc3RlbmVyIG9uIG1vdW50ZWQsIGFuZCByZW1vdmVFdmVudExpc3RlbmVyIGF1dG9tYXRpY2FsbHkgb24gdW5tb3VudGVkLlxuICpcbiAqIE92ZXJsb2FkIDE6IE9taXR0ZWQgV2luZG93IHRhcmdldFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUV2ZW50TGlzdGVuZXJcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBrZXlvZiBXaW5kb3dFdmVudE1hcD4oZXZlbnQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPEU+PiwgbGlzdGVuZXI6IE1heWJlUmVmPEFycmF5YWJsZTwodGhpczogV2luZG93LCBldjogV2luZG93RXZlbnRNYXBbRV0pID0+IGFueT4+LCBvcHRpb25zPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM+KTogRm47XG4vKipcbiAqIFJlZ2lzdGVyIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgb24gbW91bnRlZCwgYW5kIHJlbW92ZUV2ZW50TGlzdGVuZXIgYXV0b21hdGljYWxseSBvbiB1bm1vdW50ZWQuXG4gKlxuICogT3ZlcmxvYWQgMjogRXhwbGljaXRseSBXaW5kb3cgdGFyZ2V0XG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRXZlbnRMaXN0ZW5lclxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGV2ZW50XG4gKiBAcGFyYW0gbGlzdGVuZXJcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcjxFIGV4dGVuZHMga2V5b2YgV2luZG93RXZlbnRNYXA+KHRhcmdldDogV2luZG93LCBldmVudDogTWF5YmVSZWZPckdldHRlcjxBcnJheWFibGU8RT4+LCBsaXN0ZW5lcjogTWF5YmVSZWY8QXJyYXlhYmxlPCh0aGlzOiBXaW5kb3csIGV2OiBXaW5kb3dFdmVudE1hcFtFXSkgPT4gYW55Pj4sIG9wdGlvbnM/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucz4pOiBGbjtcbi8qKlxuICogUmVnaXN0ZXIgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBvbiBtb3VudGVkLCBhbmQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBhdXRvbWF0aWNhbGx5IG9uIHVubW91bnRlZC5cbiAqXG4gKiBPdmVybG9hZCAzOiBFeHBsaWNpdGx5IERvY3VtZW50IHRhcmdldFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUV2ZW50TGlzdGVuZXJcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBrZXlvZiBEb2N1bWVudEV2ZW50TWFwPih0YXJnZXQ6IERvY3VtZW50LCBldmVudDogTWF5YmVSZWZPckdldHRlcjxBcnJheWFibGU8RT4+LCBsaXN0ZW5lcjogTWF5YmVSZWY8QXJyYXlhYmxlPCh0aGlzOiBEb2N1bWVudCwgZXY6IERvY3VtZW50RXZlbnRNYXBbRV0pID0+IGFueT4+LCBvcHRpb25zPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM+KTogRm47XG4vKipcbiAqIFJlZ2lzdGVyIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgb24gbW91bnRlZCwgYW5kIHJlbW92ZUV2ZW50TGlzdGVuZXIgYXV0b21hdGljYWxseSBvbiB1bm1vdW50ZWQuXG4gKlxuICogT3ZlcmxvYWQgNDogRXhwbGljaXRseSBTaGFkb3dSb290IHRhcmdldFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUV2ZW50TGlzdGVuZXJcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBrZXlvZiBTaGFkb3dSb290RXZlbnRNYXA+KHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxBcnJheWFibGU8U2hhZG93Um9vdD4gfCBudWxsIHwgdW5kZWZpbmVkPiwgZXZlbnQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPEU+PiwgbGlzdGVuZXI6IE1heWJlUmVmPEFycmF5YWJsZTwodGhpczogU2hhZG93Um9vdCwgZXY6IFNoYWRvd1Jvb3RFdmVudE1hcFtFXSkgPT4gYW55Pj4sIG9wdGlvbnM/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucz4pOiBGbjtcbi8qKlxuICogUmVnaXN0ZXIgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBvbiBtb3VudGVkLCBhbmQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBhdXRvbWF0aWNhbGx5IG9uIHVubW91bnRlZC5cbiAqXG4gKiBPdmVybG9hZCA1OiBFeHBsaWNpdGx5IEhUTUxFbGVtZW50IHRhcmdldFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUV2ZW50TGlzdGVuZXJcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudEV2ZW50TWFwPih0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPEhUTUxFbGVtZW50PiB8IG51bGwgfCB1bmRlZmluZWQ+LCBldmVudDogTWF5YmVSZWZPckdldHRlcjxBcnJheWFibGU8RT4+LCBsaXN0ZW5lcjogTWF5YmVSZWY8KHRoaXM6IEhUTUxFbGVtZW50LCBldjogSFRNTEVsZW1lbnRFdmVudE1hcFtFXSkgPT4gYW55Piwgb3B0aW9ucz86IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zPik6IEZuO1xuLyoqXG4gKiBSZWdpc3RlciB1c2luZyBhZGRFdmVudExpc3RlbmVyIG9uIG1vdW50ZWQsIGFuZCByZW1vdmVFdmVudExpc3RlbmVyIGF1dG9tYXRpY2FsbHkgb24gdW5tb3VudGVkLlxuICpcbiAqIE92ZXJsb2FkIDY6IEN1c3RvbSBldmVudCB0YXJnZXQgd2l0aCBldmVudCB0eXBlIGluZmVyXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRXZlbnRMaXN0ZW5lclxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUV2ZW50TGlzdGVuZXI8TmFtZXMgZXh0ZW5kcyBzdHJpbmcsIEV2ZW50VHlwZSA9IEV2ZW50Pih0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPEluZmVyRXZlbnRUYXJnZXQ8TmFtZXM+PiB8IG51bGwgfCB1bmRlZmluZWQ+LCBldmVudDogTWF5YmVSZWZPckdldHRlcjxBcnJheWFibGU8TmFtZXM+PiwgbGlzdGVuZXI6IE1heWJlUmVmPEFycmF5YWJsZTxHZW5lcmFsRXZlbnRMaXN0ZW5lcjxFdmVudFR5cGU+Pj4sIG9wdGlvbnM/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucz4pOiBGbjtcbi8qKlxuICogUmVnaXN0ZXIgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBvbiBtb3VudGVkLCBhbmQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBhdXRvbWF0aWNhbGx5IG9uIHVubW91bnRlZC5cbiAqXG4gKiBPdmVybG9hZCA3OiBDdXN0b20gZXZlbnQgdGFyZ2V0IGZhbGxiYWNrXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRXZlbnRMaXN0ZW5lclxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUV2ZW50TGlzdGVuZXI8RXZlbnRUeXBlID0gRXZlbnQ+KHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxBcnJheWFibGU8RXZlbnRUYXJnZXQ+IHwgbnVsbCB8IHVuZGVmaW5lZD4sIGV2ZW50OiBNYXliZVJlZk9yR2V0dGVyPEFycmF5YWJsZTxzdHJpbmc+PiwgbGlzdGVuZXI6IE1heWJlUmVmPEFycmF5YWJsZTxHZW5lcmFsRXZlbnRMaXN0ZW5lcjxFdmVudFR5cGU+Pj4sIG9wdGlvbnM/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucz4pOiBGbjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUV2ZW50U291cmNlL2luZGV4LmQudHNcbnR5cGUgRXZlbnRTb3VyY2VTdGF0dXMgPSAnQ09OTkVDVElORycgfCAnT1BFTicgfCAnQ0xPU0VEJztcbmludGVyZmFjZSBVc2VFdmVudFNvdXJjZU9wdGlvbnM8RGF0YT4gZXh0ZW5kcyBFdmVudFNvdXJjZUluaXQge1xuICAvKipcbiAgICogRW5hYmxlZCBhdXRvIHJlY29ubmVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgYXV0b1JlY29ubmVjdD86IGJvb2xlYW4gfCB7XG4gICAgLyoqXG4gICAgICogTWF4aW11bSByZXRyeSB0aW1lcy5cbiAgICAgKlxuICAgICAqIE9yIHlvdSBjYW4gcGFzcyBhIHByZWRpY2F0ZSBmdW5jdGlvbiAod2hpY2ggcmV0dXJucyB0cnVlIGlmIHlvdSB3YW50IHRvIHJldHJ5KS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0xXG4gICAgICovXG4gICAgcmV0cmllcz86IG51bWJlciB8ICgoKSA9PiBib29sZWFuKTtcbiAgICAvKipcbiAgICAgKiBEZWxheSBmb3IgcmVjb25uZWN0LCBpbiBtaWxsaXNlY29uZHNcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDEwMDBcbiAgICAgKi9cbiAgICBkZWxheT86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBPbiBtYXhpbXVtIHJldHJ5IHRpbWVzIHJlYWNoZWQuXG4gICAgICovXG4gICAgb25GYWlsZWQ/OiBGbjtcbiAgfTtcbiAgLyoqXG4gICAqIEltbWVkaWF0ZWx5IG9wZW4gdGhlIGNvbm5lY3Rpb24gd2hlbiBjYWxsaW5nIHRoaXMgY29tcG9zYWJsZVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBjb25uZWN0IHRvIHRoZSB3ZWJzb2NrZXQgd2hlbiBVUkwgY2hhbmdlc1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhdXRvQ29ubmVjdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSBzZXJpYWxpemF0aW9uXG4gICAqL1xuICBzZXJpYWxpemVyPzoge1xuICAgIHJlYWQ6ICh2Pzogc3RyaW5nKSA9PiBEYXRhO1xuICB9O1xufVxuaW50ZXJmYWNlIFVzZUV2ZW50U291cmNlUmV0dXJuPEV2ZW50cyBleHRlbmRzIHN0cmluZ1tdLCBEYXRhID0gYW55PiB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGxhdGVzdCBkYXRhIHJlY2VpdmVkIHZpYSB0aGUgRXZlbnRTb3VyY2UsXG4gICAqIGNhbiBiZSB3YXRjaGVkIHRvIHJlc3BvbmQgdG8gaW5jb21pbmcgbWVzc2FnZXNcbiAgICovXG4gIGRhdGE6IFNoYWxsb3dSZWY8RGF0YSB8IG51bGw+O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24sIGNhbiBiZSBvbmx5IG9uZSBvZjpcbiAgICogJ0NPTk5FQ1RJTkcnLCAnT1BFTicgJ0NMT1NFRCdcbiAgICovXG4gIHN0YXR1czogU2hhbGxvd1JlZjxFdmVudFNvdXJjZVN0YXR1cz47XG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IG5hbWVkIGV2ZW50XG4gICAqL1xuICBldmVudDogU2hhbGxvd1JlZjxFdmVudHNbbnVtYmVyXSB8IG51bGw+O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZXJyb3JcbiAgICovXG4gIGVycm9yOiBTaGFsbG93UmVmPEV2ZW50IHwgbnVsbD47XG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIEV2ZW50U291cmNlIGNvbm5lY3Rpb24gZ3JhY2VmdWxseS5cbiAgICovXG4gIGNsb3NlOiBFdmVudFNvdXJjZVsnY2xvc2UnXTtcbiAgLyoqXG4gICAqIFJlb3BlbiB0aGUgRXZlbnRTb3VyY2UgY29ubmVjdGlvbi5cbiAgICogSWYgdGhlcmUgdGhlIGN1cnJlbnQgb25lIGlzIGFjdGl2ZSwgd2lsbCBjbG9zZSBpdCBiZWZvcmUgb3BlbmluZyBhIG5ldyBvbmUuXG4gICAqL1xuICBvcGVuOiBGbjtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBFdmVudFNvdXJjZSBpbnN0YW5jZS5cbiAgICovXG4gIGV2ZW50U291cmNlOiBSZWY8RXZlbnRTb3VyY2UgfCBudWxsPjtcbiAgLyoqXG4gICAqIFRoZSBsYXN0IGV2ZW50IElEIHN0cmluZywgZm9yIHNlcnZlci1zZW50IGV2ZW50cy5cbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTWVzc2FnZUV2ZW50L2xhc3RFdmVudElkXG4gICAqL1xuICBsYXN0RXZlbnRJZDogU2hhbGxvd1JlZjxzdHJpbmcgfCBudWxsPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgd3JhcHBlciBmb3IgRXZlbnRTb3VyY2UuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRXZlbnRTb3VyY2VcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50U291cmNlL0V2ZW50U291cmNlIEV2ZW50U291cmNlXG4gKiBAcGFyYW0gdXJsXG4gKiBAcGFyYW0gZXZlbnRzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUV2ZW50U291cmNlPEV2ZW50cyBleHRlbmRzIHN0cmluZ1tdLCBEYXRhID0gYW55Pih1cmw6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nIHwgVVJMIHwgdW5kZWZpbmVkPiwgZXZlbnRzPzogRXZlbnRzLCBvcHRpb25zPzogVXNlRXZlbnRTb3VyY2VPcHRpb25zPERhdGE+KTogVXNlRXZlbnRTb3VyY2VSZXR1cm48RXZlbnRzLCBEYXRhPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUV5ZURyb3BwZXIvaW5kZXguZC50c1xuaW50ZXJmYWNlIEV5ZURyb3BwZXJPcGVuT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9BYm9ydFNpZ25hbFxuICAgKi9cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG59XG5pbnRlcmZhY2UgRXllRHJvcHBlciB7XG4gIG5ldyAoKTogRXllRHJvcHBlcjtcbiAgb3BlbjogKG9wdGlvbnM/OiBFeWVEcm9wcGVyT3Blbk9wdGlvbnMpID0+IFByb21pc2U8e1xuICAgIHNSR0JIZXg6IHN0cmluZztcbiAgfT47XG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiAnRXllRHJvcHBlcic7XG59XG5pbnRlcmZhY2UgVXNlRXllRHJvcHBlck9wdGlvbnMge1xuICAvKipcbiAgICogSW5pdGlhbCBzUkdCSGV4LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnJ1xuICAgKi9cbiAgaW5pdGlhbFZhbHVlPzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFVzZUV5ZURyb3BwZXJSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHNSR0JIZXg6IFNoYWxsb3dSZWY8c3RyaW5nPjtcbiAgb3BlbjogKG9wZW5PcHRpb25zPzogRXllRHJvcHBlck9wZW5PcHRpb25zKSA9PiBQcm9taXNlPHtcbiAgICBzUkdCSGV4OiBzdHJpbmc7XG4gIH0gfCB1bmRlZmluZWQ+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBbRXllRHJvcHBlciBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FeWVEcm9wcGVyX0FQSSlcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VFeWVEcm9wcGVyXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFeWVEcm9wcGVyKG9wdGlvbnM/OiBVc2VFeWVEcm9wcGVyT3B0aW9ucyk6IFVzZUV5ZURyb3BwZXJSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VGYXZpY29uL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VGYXZpY29uT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZURvY3VtZW50IHtcbiAgYmFzZVVybD86IHN0cmluZztcbiAgcmVsPzogc3RyaW5nO1xufVxudHlwZSBVc2VGYXZpY29uUmV0dXJuID0gQ29tcHV0ZWRSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4gfCBSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4vKipcbiAqIFJlYWN0aXZlIGZhdmljb24uXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRmF2aWNvblxuICogQHBhcmFtIG5ld0ljb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRmF2aWNvbihuZXdJY29uOiBSZWFkb25seVJlZk9yR2V0dGVyPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlRmF2aWNvbk9wdGlvbnMpOiBDb21wdXRlZFJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlRmF2aWNvbihuZXdJY29uPzogTWF5YmVSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VGYXZpY29uT3B0aW9ucyk6IFJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUZldGNoL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VGZXRjaFJldHVybjxUPiB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGZldGNoIHJlcXVlc3QgaGFzIGZpbmlzaGVkXG4gICAqL1xuICBpc0ZpbmlzaGVkOiBSZWFkb25seTxTaGFsbG93UmVmPGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXNDb2RlIG9mIHRoZSBIVFRQIGZldGNoIHJlc3BvbnNlXG4gICAqL1xuICBzdGF0dXNDb2RlOiBTaGFsbG93UmVmPG51bWJlciB8IG51bGw+O1xuICAvKipcbiAgICogVGhlIHJhdyByZXNwb25zZSBvZiB0aGUgZmV0Y2ggcmVzcG9uc2VcbiAgICovXG4gIHJlc3BvbnNlOiBTaGFsbG93UmVmPFJlc3BvbnNlIHwgbnVsbD47XG4gIC8qKlxuICAgKiBBbnkgZmV0Y2ggZXJyb3JzIHRoYXQgbWF5IGhhdmUgb2NjdXJyZWRcbiAgICovXG4gIGVycm9yOiBTaGFsbG93UmVmPGFueT47XG4gIC8qKlxuICAgKiBUaGUgZmV0Y2ggcmVzcG9uc2UgYm9keSBvbiBzdWNjZXNzLCBtYXkgZWl0aGVyIGJlIEpTT04gb3IgdGV4dFxuICAgKi9cbiAgZGF0YTogU2hhbGxvd1JlZjxUIHwgbnVsbD47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHJlcXVlc3QgaXMgY3VycmVudGx5IGJlaW5nIGZldGNoZWQuXG4gICAqL1xuICBpc0ZldGNoaW5nOiBSZWFkb25seTxTaGFsbG93UmVmPGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgZmV0Y2ggcmVxdWVzdCBpcyBhYmxlIHRvIGJlIGFib3J0ZWRcbiAgICovXG4gIGNhbkFib3J0OiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgZmV0Y2ggcmVxdWVzdCB3YXMgYWJvcnRlZFxuICAgKi9cbiAgYWJvcnRlZDogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgLyoqXG4gICAqIEFib3J0IHRoZSBmZXRjaCByZXF1ZXN0XG4gICAqL1xuICBhYm9ydDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIE1hbnVhbGx5IGNhbGwgdGhlIGZldGNoXG4gICAqIChkZWZhdWx0IG5vdCB0aHJvd2luZyBlcnJvcilcbiAgICovXG4gIGV4ZWN1dGU6ICh0aHJvd09uRmFpbGVkPzogYm9vbGVhbikgPT4gUHJvbWlzZTxhbnk+O1xuICAvKipcbiAgICogRmlyZXMgYWZ0ZXIgdGhlIGZldGNoIHJlcXVlc3QgaGFzIGZpbmlzaGVkXG4gICAqL1xuICBvbkZldGNoUmVzcG9uc2U6IEV2ZW50SG9va09uPFJlc3BvbnNlPjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIGEgZmV0Y2ggcmVxdWVzdCBlcnJvclxuICAgKi9cbiAgb25GZXRjaEVycm9yOiBFdmVudEhvb2tPbjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIGEgZmV0Y2ggaGFzIGNvbXBsZXRlZFxuICAgKi9cbiAgb25GZXRjaEZpbmFsbHk6IEV2ZW50SG9va09uO1xuICBnZXQ6ICgpID0+IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuICBwb3N0OiAocGF5bG9hZD86IE1heWJlUmVmT3JHZXR0ZXI8dW5rbm93bj4sIHR5cGU/OiBzdHJpbmcpID0+IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuICBwdXQ6IChwYXlsb2FkPzogTWF5YmVSZWZPckdldHRlcjx1bmtub3duPiwgdHlwZT86IHN0cmluZykgPT4gVXNlRmV0Y2hSZXR1cm48VD4gJiBQcm9taXNlTGlrZTxVc2VGZXRjaFJldHVybjxUPj47XG4gIGRlbGV0ZTogKHBheWxvYWQ/OiBNYXliZVJlZk9yR2V0dGVyPHVua25vd24+LCB0eXBlPzogc3RyaW5nKSA9PiBVc2VGZXRjaFJldHVybjxUPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPFQ+PjtcbiAgcGF0Y2g6IChwYXlsb2FkPzogTWF5YmVSZWZPckdldHRlcjx1bmtub3duPiwgdHlwZT86IHN0cmluZykgPT4gVXNlRmV0Y2hSZXR1cm48VD4gJiBQcm9taXNlTGlrZTxVc2VGZXRjaFJldHVybjxUPj47XG4gIGhlYWQ6IChwYXlsb2FkPzogTWF5YmVSZWZPckdldHRlcjx1bmtub3duPiwgdHlwZT86IHN0cmluZykgPT4gVXNlRmV0Y2hSZXR1cm48VD4gJiBQcm9taXNlTGlrZTxVc2VGZXRjaFJldHVybjxUPj47XG4gIG9wdGlvbnM6IChwYXlsb2FkPzogTWF5YmVSZWZPckdldHRlcjx1bmtub3duPiwgdHlwZT86IHN0cmluZykgPT4gVXNlRmV0Y2hSZXR1cm48VD4gJiBQcm9taXNlTGlrZTxVc2VGZXRjaFJldHVybjxUPj47XG4gIGpzb246IDxKU09OID0gYW55PigpID0+IFVzZUZldGNoUmV0dXJuPEpTT04+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48SlNPTj4+O1xuICB0ZXh0OiAoKSA9PiBVc2VGZXRjaFJldHVybjxzdHJpbmc+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48c3RyaW5nPj47XG4gIGJsb2I6ICgpID0+IFVzZUZldGNoUmV0dXJuPEJsb2I+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48QmxvYj4+O1xuICBhcnJheUJ1ZmZlcjogKCkgPT4gVXNlRmV0Y2hSZXR1cm48QXJyYXlCdWZmZXI+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48QXJyYXlCdWZmZXI+PjtcbiAgZm9ybURhdGE6ICgpID0+IFVzZUZldGNoUmV0dXJuPEZvcm1EYXRhPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPEZvcm1EYXRhPj47XG59XG50eXBlIENvbWJpbmF0aW9uID0gJ292ZXJ3cml0ZScgfCAnY2hhaW4nO1xuaW50ZXJmYWNlIEJlZm9yZUZldGNoQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgY29tcHV0ZWQgdXJsIG9mIHRoZSBjdXJyZW50IHJlcXVlc3RcbiAgICovXG4gIHVybDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlcXVlc3Qgb3B0aW9ucyBvZiB0aGUgY3VycmVudCByZXF1ZXN0XG4gICAqL1xuICBvcHRpb25zOiBSZXF1ZXN0SW5pdDtcbiAgLyoqXG4gICAqIENhbmNlbHMgdGhlIGN1cnJlbnQgcmVxdWVzdFxuICAgKi9cbiAgY2FuY2VsOiBGbjtcbn1cbmludGVyZmFjZSBBZnRlckZldGNoQ29udGV4dDxUID0gYW55PiB7XG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgZGF0YTogVCB8IG51bGw7XG4gIGNvbnRleHQ6IEJlZm9yZUZldGNoQ29udGV4dDtcbiAgZXhlY3V0ZTogKHRocm93T25GYWlsZWQ/OiBib29sZWFuKSA9PiBQcm9taXNlPGFueT47XG59XG5pbnRlcmZhY2UgT25GZXRjaEVycm9yQ29udGV4dDxUID0gYW55LCBFID0gYW55PiB7XG4gIGVycm9yOiBFO1xuICBkYXRhOiBUIHwgbnVsbDtcbiAgcmVzcG9uc2U6IFJlc3BvbnNlIHwgbnVsbDtcbiAgY29udGV4dDogQmVmb3JlRmV0Y2hDb250ZXh0O1xuICBleGVjdXRlOiAodGhyb3dPbkZhaWxlZD86IGJvb2xlYW4pID0+IFByb21pc2U8YW55Pjtcbn1cbmludGVyZmFjZSBVc2VGZXRjaE9wdGlvbnMge1xuICAvKipcbiAgICogRmV0Y2ggZnVuY3Rpb25cbiAgICovXG4gIGZldGNoPzogdHlwZW9mIHdpbmRvdy5mZXRjaDtcbiAgLyoqXG4gICAqIFdpbGwgYXV0b21hdGljYWxseSBydW4gZmV0Y2ggd2hlbiBgdXNlRmV0Y2hgIGlzIHVzZWRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdpbGwgYXV0b21hdGljYWxseSByZWZldGNoIHdoZW46XG4gICAqIC0gdGhlIFVSTCBpcyBjaGFuZ2VkIGlmIHRoZSBVUkwgaXMgYSByZWZcbiAgICogLSB0aGUgcGF5bG9hZCBpcyBjaGFuZ2VkIGlmIHRoZSBwYXlsb2FkIGlzIGEgcmVmXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWZldGNoPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuPjtcbiAgLyoqXG4gICAqIEluaXRpYWwgZGF0YSBiZWZvcmUgdGhlIHJlcXVlc3QgZmluaXNoZWRcbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgaW5pdGlhbERhdGE/OiBhbnk7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGZvciBhYm9ydCByZXF1ZXN0IGFmdGVyIG51bWJlciBvZiBtaWxsaXNlY29uZFxuICAgKiBgMGAgbWVhbnMgdXNlIGJyb3dzZXIgZGVmYXVsdFxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3cgdXBkYXRlIHRoZSBgZGF0YWAgcmVmIHdoZW4gZmV0Y2ggZXJyb3Igd2hlbmV2ZXIgcHJvdmlkZWQsIG9yIG11dGF0ZWQgaW4gdGhlIGBvbkZldGNoRXJyb3JgIGNhbGxiYWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB1cGRhdGVEYXRhT25FcnJvcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaWxsIHJ1biBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGZldGNoIHJlcXVlc3QgaXMgZGlzcGF0Y2hlZFxuICAgKi9cbiAgYmVmb3JlRmV0Y2g/OiAoY3R4OiBCZWZvcmVGZXRjaENvbnRleHQpID0+IFByb21pc2U8UGFydGlhbDxCZWZvcmVGZXRjaENvbnRleHQ+IHwgdm9pZD4gfCBQYXJ0aWFsPEJlZm9yZUZldGNoQ29udGV4dD4gfCB2b2lkO1xuICAvKipcbiAgICogV2lsbCBydW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZldGNoIHJlcXVlc3QgaXMgcmV0dXJuZWQuXG4gICAqIFJ1bnMgYWZ0ZXIgYW55IDJ4eCByZXNwb25zZVxuICAgKi9cbiAgYWZ0ZXJGZXRjaD86IChjdHg6IEFmdGVyRmV0Y2hDb250ZXh0KSA9PiBQcm9taXNlPFBhcnRpYWw8QWZ0ZXJGZXRjaENvbnRleHQ+PiB8IFBhcnRpYWw8QWZ0ZXJGZXRjaENvbnRleHQ+O1xuICAvKipcbiAgICogV2lsbCBydW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZldGNoIHJlcXVlc3QgaXMgcmV0dXJuZWQuXG4gICAqIFJ1bnMgYWZ0ZXIgYW55IDR4eCBhbmQgNXh4IHJlc3BvbnNlXG4gICAqL1xuICBvbkZldGNoRXJyb3I/OiAoY3R4OiBPbkZldGNoRXJyb3JDb250ZXh0KSA9PiBQcm9taXNlPFBhcnRpYWw8T25GZXRjaEVycm9yQ29udGV4dD4+IHwgUGFydGlhbDxPbkZldGNoRXJyb3JDb250ZXh0Pjtcbn1cbmludGVyZmFjZSBDcmVhdGVGZXRjaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIHRoYXQgd2lsbCBiZSBwcmVmaXhlZCB0byBhbGwgdXJscyB1bmxlc3MgdXJscyBhcmUgYWJzb2x1dGVcbiAgICovXG4gIGJhc2VVcmw/OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz47XG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIGluaGVyaXQgYmVoYXZpb3IgZm9yIGJlZm9yZUZldGNoLCBhZnRlckZldGNoLCBvbkZldGNoRXJyb3JcbiAgICogQGRlZmF1bHQgJ2NoYWluJ1xuICAgKi9cbiAgY29tYmluYXRpb24/OiBDb21iaW5hdGlvbjtcbiAgLyoqXG4gICAqIERlZmF1bHQgT3B0aW9ucyBmb3IgdGhlIHVzZUZldGNoIGZ1bmN0aW9uXG4gICAqL1xuICBvcHRpb25zPzogVXNlRmV0Y2hPcHRpb25zO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIGZldGNoIHJlcXVlc3RcbiAgICovXG4gIGZldGNoT3B0aW9ucz86IFJlcXVlc3RJbml0O1xufVxuZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVGZXRjaChjb25maWc/OiBDcmVhdGVGZXRjaE9wdGlvbnMpOiB0eXBlb2YgdXNlRmV0Y2g7XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZldGNoPFQ+KHVybDogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+KTogVXNlRmV0Y2hSZXR1cm48VD4gJiBQcm9taXNlTGlrZTxVc2VGZXRjaFJldHVybjxUPj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZldGNoPFQ+KHVybDogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCB1c2VGZXRjaE9wdGlvbnM6IFVzZUZldGNoT3B0aW9ucyk6IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGZXRjaDxUPih1cmw6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgb3B0aW9uczogUmVxdWVzdEluaXQsIHVzZUZldGNoT3B0aW9ucz86IFVzZUZldGNoT3B0aW9ucyk6IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRmlsZURpYWxvZy9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRmlsZURpYWxvZ09wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVEb2N1bWVudCB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBtdWx0aXBsZT86IE1heWJlUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogQGRlZmF1bHQgJyonXG4gICAqL1xuICBhY2NlcHQ/OiBNYXliZVJlZjxzdHJpbmc+O1xuICAvKipcbiAgICogU2VsZWN0IHRoZSBpbnB1dCBzb3VyY2UgZm9yIHRoZSBjYXB0dXJlIGZpbGUuXG4gICAqIEBzZWUgW0hUTUxJbnB1dEVsZW1lbnQgQ2FwdHVyZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9BdHRyaWJ1dGVzL2NhcHR1cmUpXG4gICAqL1xuICBjYXB0dXJlPzogTWF5YmVSZWY8c3RyaW5nPjtcbiAgLyoqXG4gICAqIFJlc2V0IHdoZW4gb3BlbiBmaWxlIGRpYWxvZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlc2V0PzogTWF5YmVSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBTZWxlY3QgZGlyZWN0b3JpZXMgaW5zdGVhZCBvZiBmaWxlcy5cbiAgICogQHNlZSBbSFRNTElucHV0RWxlbWVudCB3ZWJraXRkaXJlY3RvcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSW5wdXRFbGVtZW50L3dlYmtpdGRpcmVjdG9yeSlcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpcmVjdG9yeT86IE1heWJlUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogSW5pdGlhbCBmaWxlcyB0byBzZXQuXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIGluaXRpYWxGaWxlcz86IEFycmF5PEZpbGU+IHwgRmlsZUxpc3Q7XG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgZWxlbWVudCB0byB1c2UgZm9yIGZpbGUgZGlhbG9nLlxuICAgKiBAZGVmYXVsdCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4gICAqL1xuICBpbnB1dD86IE1heWJlRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pjtcbn1cbmludGVyZmFjZSBVc2VGaWxlRGlhbG9nUmV0dXJuIHtcbiAgZmlsZXM6IFJlZjxGaWxlTGlzdCB8IG51bGw+O1xuICBvcGVuOiAobG9jYWxPcHRpb25zPzogUGFydGlhbDxVc2VGaWxlRGlhbG9nT3B0aW9ucz4pID0+IHZvaWQ7XG4gIHJlc2V0OiAoKSA9PiB2b2lkO1xuICBvbkNoYW5nZTogRXZlbnRIb29rT248RmlsZUxpc3QgfCBudWxsPjtcbiAgb25DYW5jZWw6IEV2ZW50SG9va09uO1xufVxuLyoqXG4gKiBPcGVuIGZpbGUgZGlhbG9nIHdpdGggZWFzZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VGaWxlRGlhbG9nXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZpbGVEaWFsb2cob3B0aW9ucz86IFVzZUZpbGVEaWFsb2dPcHRpb25zKTogVXNlRmlsZURpYWxvZ1JldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUZpbGVTeXN0ZW1BY2Nlc3MvaW5kZXguZC50c1xuLyoqXG4gKiB3aW5kb3cuc2hvd09wZW5GaWxlUGlja2VyIHBhcmFtZXRlcnNcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy9zaG93T3BlbkZpbGVQaWNrZXIjcGFyYW1ldGVyc1xuICovXG5pbnRlcmZhY2UgRmlsZVN5c3RlbUFjY2Vzc1Nob3dPcGVuRmlsZU9wdGlvbnMge1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHR5cGVzPzogQXJyYXk8e1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGFjY2VwdDogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xuICB9PjtcbiAgZXhjbHVkZUFjY2VwdEFsbE9wdGlvbj86IGJvb2xlYW47XG59XG4vKipcbiAqIHdpbmRvdy5zaG93U2F2ZUZpbGVQaWNrZXIgcGFyYW1ldGVyc1xuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvd2luZG93L3Nob3dTYXZlRmlsZVBpY2tlciNwYXJhbWV0ZXJzXG4gKi9cbmludGVyZmFjZSBGaWxlU3lzdGVtQWNjZXNzU2hvd1NhdmVGaWxlT3B0aW9ucyB7XG4gIHN1Z2dlc3RlZE5hbWU/OiBzdHJpbmc7XG4gIHR5cGVzPzogQXJyYXk8e1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGFjY2VwdDogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xuICB9PjtcbiAgZXhjbHVkZUFjY2VwdEFsbE9wdGlvbj86IGJvb2xlYW47XG59XG4vKipcbiAqIEZpbGVIYW5kbGVcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlXG4gKi9cbmludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUhhbmRsZSB7XG4gIGdldEZpbGU6ICgpID0+IFByb21pc2U8RmlsZT47XG4gIGNyZWF0ZVdyaXRhYmxlOiAoKSA9PiBGaWxlU3lzdGVtV3JpdGFibGVGaWxlU3RyZWFtO1xufVxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlU3lzdGVtV3JpdGFibGVGaWxlU3RyZWFtXG4gKi9cbmludGVyZmFjZSBGaWxlU3lzdGVtV3JpdGFibGVGaWxlU3RyZWFtIGV4dGVuZHMgV3JpdGFibGVTdHJlYW0ge1xuICAvKipcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRmlsZVN5c3RlbVdyaXRhYmxlRmlsZVN0cmVhbS93cml0ZVxuICAgKi9cbiAgd3JpdGU6IEZpbGVTeXN0ZW1Xcml0YWJsZUZpbGVTdHJlYW1Xcml0ZTtcbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZpbGVTeXN0ZW1Xcml0YWJsZUZpbGVTdHJlYW0vc2Vla1xuICAgKi9cbiAgc2VlazogKHBvc2l0aW9uOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlU3lzdGVtV3JpdGFibGVGaWxlU3RyZWFtL3RydW5jYXRlXG4gICAqL1xuICB0cnVuY2F0ZTogKHNpemU6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbn1cbi8qKlxuICogRmlsZVN0cmVhbS53cml0ZVxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRmlsZVN5c3RlbVdyaXRhYmxlRmlsZVN0cmVhbS93cml0ZVxuICovXG5pbnRlcmZhY2UgRmlsZVN5c3RlbVdyaXRhYmxlRmlsZVN0cmVhbVdyaXRlIHtcbiAgKGRhdGE6IHN0cmluZyB8IEJ1ZmZlclNvdXJjZSB8IEJsb2IpOiBQcm9taXNlPHZvaWQ+O1xuICAob3B0aW9uczoge1xuICAgIHR5cGU6ICd3cml0ZSc7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgICBkYXRhOiBzdHJpbmcgfCBCdWZmZXJTb3VyY2UgfCBCbG9iO1xuICB9KTogUHJvbWlzZTx2b2lkPjtcbiAgKG9wdGlvbnM6IHtcbiAgICB0eXBlOiAnc2Vlayc7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgfSk6IFByb21pc2U8dm9pZD47XG4gIChvcHRpb25zOiB7XG4gICAgdHlwZTogJ3RydW5jYXRlJztcbiAgICBzaXplOiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPHZvaWQ+O1xufVxuLyoqXG4gKiBGaWxlU3RyZWFtLndyaXRlXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlU3lzdGVtV3JpdGFibGVGaWxlU3RyZWFtL3dyaXRlXG4gKi9cbnR5cGUgRmlsZVN5c3RlbUFjY2Vzc1dpbmRvdyA9IFdpbmRvdyAmIHtcbiAgc2hvd1NhdmVGaWxlUGlja2VyOiAob3B0aW9uczogRmlsZVN5c3RlbUFjY2Vzc1Nob3dTYXZlRmlsZU9wdGlvbnMpID0+IFByb21pc2U8RmlsZVN5c3RlbUZpbGVIYW5kbGU+O1xuICBzaG93T3BlbkZpbGVQaWNrZXI6IChvcHRpb25zOiBGaWxlU3lzdGVtQWNjZXNzU2hvd09wZW5GaWxlT3B0aW9ucykgPT4gUHJvbWlzZTxGaWxlU3lzdGVtRmlsZUhhbmRsZVtdPjtcbn07XG50eXBlIFVzZUZpbGVTeXN0ZW1BY2Nlc3NDb21tb25PcHRpb25zID0gUGljazxGaWxlU3lzdGVtQWNjZXNzU2hvd09wZW5GaWxlT3B0aW9ucywgJ3R5cGVzJyB8ICdleGNsdWRlQWNjZXB0QWxsT3B0aW9uJz47XG50eXBlIFVzZUZpbGVTeXN0ZW1BY2Nlc3NTaG93U2F2ZUZpbGVPcHRpb25zID0gUGljazxGaWxlU3lzdGVtQWNjZXNzU2hvd1NhdmVGaWxlT3B0aW9ucywgJ3N1Z2dlc3RlZE5hbWUnPjtcbnR5cGUgVXNlRmlsZVN5c3RlbUFjY2Vzc09wdGlvbnMgPSBDb25maWd1cmFibGVXaW5kb3cgJiBVc2VGaWxlU3lzdGVtQWNjZXNzQ29tbW9uT3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIGZpbGUgZGF0YSB0eXBlXG4gICAqL1xuICBkYXRhVHlwZT86IE1heWJlUmVmT3JHZXR0ZXI8J1RleHQnIHwgJ0FycmF5QnVmZmVyJyB8ICdCbG9iJz47XG59O1xuLyoqXG4gKiBDcmVhdGUgYW5kIHJlYWQgYW5kIHdyaXRlIGxvY2FsIGZpbGVzLlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRmlsZVN5c3RlbUFjY2Vzc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZpbGVTeXN0ZW1BY2Nlc3MoKTogVXNlRmlsZVN5c3RlbUFjY2Vzc1JldHVybjxzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IEJsb2I+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGaWxlU3lzdGVtQWNjZXNzKG9wdGlvbnM6IFVzZUZpbGVTeXN0ZW1BY2Nlc3NPcHRpb25zICYge1xuICBkYXRhVHlwZTogJ1RleHQnO1xufSk6IFVzZUZpbGVTeXN0ZW1BY2Nlc3NSZXR1cm48c3RyaW5nPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlRmlsZVN5c3RlbUFjY2VzcyhvcHRpb25zOiBVc2VGaWxlU3lzdGVtQWNjZXNzT3B0aW9ucyAmIHtcbiAgZGF0YVR5cGU6ICdBcnJheUJ1ZmZlcic7XG59KTogVXNlRmlsZVN5c3RlbUFjY2Vzc1JldHVybjxBcnJheUJ1ZmZlcj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZpbGVTeXN0ZW1BY2Nlc3Mob3B0aW9uczogVXNlRmlsZVN5c3RlbUFjY2Vzc09wdGlvbnMgJiB7XG4gIGRhdGFUeXBlOiAnQmxvYic7XG59KTogVXNlRmlsZVN5c3RlbUFjY2Vzc1JldHVybjxCbG9iPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlRmlsZVN5c3RlbUFjY2VzcyhvcHRpb25zOiBVc2VGaWxlU3lzdGVtQWNjZXNzT3B0aW9ucyk6IFVzZUZpbGVTeXN0ZW1BY2Nlc3NSZXR1cm48c3RyaW5nIHwgQXJyYXlCdWZmZXIgfCBCbG9iPjtcbmludGVyZmFjZSBVc2VGaWxlU3lzdGVtQWNjZXNzUmV0dXJuPFQgPSBzdHJpbmc+IGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBkYXRhOiBTaGFsbG93UmVmPFQgfCB1bmRlZmluZWQ+O1xuICBmaWxlOiBTaGFsbG93UmVmPEZpbGUgfCB1bmRlZmluZWQ+O1xuICBmaWxlTmFtZTogQ29tcHV0ZWRSZWY8c3RyaW5nPjtcbiAgZmlsZU1JTUU6IENvbXB1dGVkUmVmPHN0cmluZz47XG4gIGZpbGVTaXplOiBDb21wdXRlZFJlZjxudW1iZXI+O1xuICBmaWxlTGFzdE1vZGlmaWVkOiBDb21wdXRlZFJlZjxudW1iZXI+O1xuICBvcGVuOiAoX29wdGlvbnM/OiBVc2VGaWxlU3lzdGVtQWNjZXNzQ29tbW9uT3B0aW9ucykgPT4gQXdhaXRhYmxlPHZvaWQ+O1xuICBjcmVhdGU6IChfb3B0aW9ucz86IFVzZUZpbGVTeXN0ZW1BY2Nlc3NTaG93U2F2ZUZpbGVPcHRpb25zKSA9PiBBd2FpdGFibGU8dm9pZD47XG4gIHNhdmU6IChfb3B0aW9ucz86IFVzZUZpbGVTeXN0ZW1BY2Nlc3NTaG93U2F2ZUZpbGVPcHRpb25zKSA9PiBBd2FpdGFibGU8dm9pZD47XG4gIHNhdmVBczogKF9vcHRpb25zPzogVXNlRmlsZVN5c3RlbUFjY2Vzc1Nob3dTYXZlRmlsZU9wdGlvbnMpID0+IEF3YWl0YWJsZTx2b2lkPjtcbiAgdXBkYXRlRGF0YTogKCkgPT4gQXdhaXRhYmxlPHZvaWQ+O1xufVxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRm9jdXMvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUZvY3VzT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlLiBJZiBzZXQgdHJ1ZSwgdGhlbiBmb2N1cyB3aWxsIGJlIHNldCBvbiB0aGUgdGFyZ2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbml0aWFsVmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogUmVwbGljYXRlIHRoZSA6Zm9jdXMtdmlzaWJsZSBiZWhhdmlvciBvZiBDU1NcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZvY3VzVmlzaWJsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmV2ZW50IHNjcm9sbGluZyB0byB0aGUgZWxlbWVudCB3aGVuIGl0IGlzIGZvY3VzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcmV2ZW50U2Nyb2xsPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VGb2N1c1JldHVybiB7XG4gIC8qKlxuICAgKiBJZiByZWFkIGFzIHRydWUsIHRoZW4gdGhlIGVsZW1lbnQgaGFzIGZvY3VzLiBJZiByZWFkIGFzIGZhbHNlLCB0aGVuIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgZm9jdXNcbiAgICogSWYgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGVsZW1lbnQgd2lsbCBiZSBmb2N1c2VkLiBJZiBzZXQgdG8gZmFsc2UsIHRoZSBlbGVtZW50IHdpbGwgYmUgYmx1cnJlZC5cbiAgICovXG4gIGZvY3VzZWQ6IFdyaXRhYmxlQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG59XG4vKipcbiAqIFRyYWNrIG9yIHNldCB0aGUgZm9jdXMgc3RhdGUgb2YgYSBET00gZWxlbWVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VGb2N1c1xuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHRoZSBmb2N1cyBhbmQgYmx1ciBldmVudHMuXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZvY3VzKHRhcmdldDogTWF5YmVFbGVtZW50UmVmLCBvcHRpb25zPzogVXNlRm9jdXNPcHRpb25zKTogVXNlRm9jdXNSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VGb2N1c1dpdGhpbi9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRm9jdXNXaXRoaW5SZXR1cm4ge1xuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgZWxlbWVudCBvciBhbnkgb2YgaXRzIGRlc2NlbmRhbnRzIGFyZSBmb2N1c2VkXG4gICAqL1xuICBmb2N1c2VkOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbn1cbi8qKlxuICogVHJhY2sgaWYgZm9jdXMgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgdGFyZ2V0IGVsZW1lbnRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VGb2N1c1dpdGhpblxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IGVsZW1lbnQgdG8gdHJhY2tcbiAqIEBwYXJhbSBvcHRpb25zIEZvY3VzIHdpdGhpbiBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRm9jdXNXaXRoaW4odGFyZ2V0OiBNYXliZUVsZW1lbnRSZWYsIG9wdGlvbnM/OiBDb25maWd1cmFibGVXaW5kb3cpOiBVc2VGb2N1c1dpdGhpblJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUZwcy9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRnBzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIEZQUyBvbiBldmVyeSB4IGZyYW1lcy5cbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIGV2ZXJ5PzogbnVtYmVyO1xufVxuZGVjbGFyZSBmdW5jdGlvbiB1c2VGcHMob3B0aW9ucz86IFVzZUZwc09wdGlvbnMpOiBTaGFsbG93UmVmPG51bWJlcj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VGdWxsc2NyZWVuL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VGdWxsc2NyZWVuT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZURvY3VtZW50IHtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgZXhpdCBmdWxsc2NyZWVuIHdoZW4gY29tcG9uZW50IGlzIHVubW91bnRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgYXV0b0V4aXQ/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZUZ1bGxzY3JlZW5SZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGlzRnVsbHNjcmVlbjogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgZW50ZXI6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGV4aXQ6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHRvZ2dsZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgRnVsbHNjcmVlbiBBUEkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRnVsbHNjcmVlblxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGdWxsc2NyZWVuKHRhcmdldD86IE1heWJlRWxlbWVudFJlZiwgb3B0aW9ucz86IFVzZUZ1bGxzY3JlZW5PcHRpb25zKTogVXNlRnVsbHNjcmVlblJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUdhbWVwYWQvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUdhbWVwYWRPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93LCBDb25maWd1cmFibGVOYXZpZ2F0b3Ige31cbmludGVyZmFjZSBVc2VHYW1lcGFkUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUsIFBhdXNhYmxlIHtcbiAgb25Db25uZWN0ZWQ6IEV2ZW50SG9va09uPG51bWJlcj47XG4gIG9uRGlzY29ubmVjdGVkOiBFdmVudEhvb2tPbjxudW1iZXI+O1xuICBnYW1lcGFkczogUmVmPEdhbWVwYWRbXT47XG59XG4vKipcbiAqIE1hcHMgYSBzdGFuZGFyZCBzdGFuZGFyZCBnYW1lcGFkIHRvIGFuIFhib3ggMzYwIENvbnRyb2xsZXIuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gbWFwR2FtZXBhZFRvWGJveDM2MENvbnRyb2xsZXIoZ2FtZXBhZDogUmVmPEdhbWVwYWQgfCB1bmRlZmluZWQ+KTogdnVlMC5Db21wdXRlZFJlZjx7XG4gIGJ1dHRvbnM6IHtcbiAgICBhOiBHYW1lcGFkQnV0dG9uO1xuICAgIGI6IEdhbWVwYWRCdXR0b247XG4gICAgeDogR2FtZXBhZEJ1dHRvbjtcbiAgICB5OiBHYW1lcGFkQnV0dG9uO1xuICB9O1xuICBidW1wZXI6IHtcbiAgICBsZWZ0OiBHYW1lcGFkQnV0dG9uO1xuICAgIHJpZ2h0OiBHYW1lcGFkQnV0dG9uO1xuICB9O1xuICB0cmlnZ2Vyczoge1xuICAgIGxlZnQ6IEdhbWVwYWRCdXR0b247XG4gICAgcmlnaHQ6IEdhbWVwYWRCdXR0b247XG4gIH07XG4gIHN0aWNrOiB7XG4gICAgbGVmdDoge1xuICAgICAgaG9yaXpvbnRhbDogbnVtYmVyO1xuICAgICAgdmVydGljYWw6IG51bWJlcjtcbiAgICAgIGJ1dHRvbjogR2FtZXBhZEJ1dHRvbjtcbiAgICB9O1xuICAgIHJpZ2h0OiB7XG4gICAgICBob3Jpem9udGFsOiBudW1iZXI7XG4gICAgICB2ZXJ0aWNhbDogbnVtYmVyO1xuICAgICAgYnV0dG9uOiBHYW1lcGFkQnV0dG9uO1xuICAgIH07XG4gIH07XG4gIGRwYWQ6IHtcbiAgICB1cDogR2FtZXBhZEJ1dHRvbjtcbiAgICBkb3duOiBHYW1lcGFkQnV0dG9uO1xuICAgIGxlZnQ6IEdhbWVwYWRCdXR0b247XG4gICAgcmlnaHQ6IEdhbWVwYWRCdXR0b247XG4gIH07XG4gIGJhY2s6IEdhbWVwYWRCdXR0b247XG4gIHN0YXJ0OiBHYW1lcGFkQnV0dG9uO1xufSB8IG51bGw+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VHYW1lcGFkKG9wdGlvbnM/OiBVc2VHYW1lcGFkT3B0aW9ucyk6IFVzZUdhbWVwYWRSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VHZW9sb2NhdGlvbi9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlR2VvbG9jYXRpb25PcHRpb25zIGV4dGVuZHMgUGFydGlhbDxQb3NpdGlvbk9wdGlvbnM+LCBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZUdlb2xvY2F0aW9uUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBjb29yZHM6IFJlZjxPbWl0PEdlb2xvY2F0aW9uUG9zaXRpb25bJ2Nvb3JkcyddLCAndG9KU09OJz4+O1xuICBsb2NhdGVkQXQ6IFNoYWxsb3dSZWY8bnVtYmVyIHwgbnVsbD47XG4gIGVycm9yOiBTaGFsbG93UmVmPEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvciB8IG51bGw+O1xuICByZXN1bWU6ICgpID0+IHZvaWQ7XG4gIHBhdXNlOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBHZW9sb2NhdGlvbiBBUEkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlR2VvbG9jYXRpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlR2VvbG9jYXRpb24ob3B0aW9ucz86IFVzZUdlb2xvY2F0aW9uT3B0aW9ucyk6IFVzZUdlb2xvY2F0aW9uUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlSWRsZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlSWRsZU9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3csIENvbmZpZ3VyYWJsZUV2ZW50RmlsdGVyIHtcbiAgLyoqXG4gICAqIEV2ZW50IG5hbWVzIHRoYXQgbGlzdGVuIHRvIGZvciBkZXRlY3RlZCB1c2VyIGFjdGl2aXR5XG4gICAqXG4gICAqIEBkZWZhdWx0IFsnbW91c2Vtb3ZlJywgJ21vdXNlZG93bicsICdyZXNpemUnLCAna2V5ZG93bicsICd0b3VjaHN0YXJ0JywgJ3doZWVsJ11cbiAgICovXG4gIGV2ZW50cz86IFdpbmRvd0V2ZW50TmFtZVtdO1xuICAvKipcbiAgICogTGlzdGVuIGZvciBkb2N1bWVudCB2aXNpYmlsaXR5IGNoYW5nZVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBsaXN0ZW5Gb3JWaXNpYmlsaXR5Q2hhbmdlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluaXRpYWwgc3RhdGUgb2YgdGhlIHJlZiBpZGxlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbml0aWFsU3RhdGU/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZUlkbGVSZXR1cm4gZXh0ZW5kcyBTdG9wcGFibGUge1xuICBpZGxlOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBsYXN0QWN0aXZlOiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHJlc2V0OiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBUcmFja3Mgd2hldGhlciB0aGUgdXNlciBpcyBiZWluZyBpbmFjdGl2ZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VJZGxlXG4gKiBAcGFyYW0gdGltZW91dCBkZWZhdWx0IHRvIDEgbWludXRlXG4gKiBAcGFyYW0gb3B0aW9ucyBJZGxlT3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUlkbGUodGltZW91dD86IG51bWJlciwgb3B0aW9ucz86IFVzZUlkbGVPcHRpb25zKTogVXNlSWRsZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUltYWdlL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VJbWFnZU9wdGlvbnMge1xuICAvKiogQWRkcmVzcyBvZiB0aGUgcmVzb3VyY2UgKi9cbiAgc3JjOiBzdHJpbmc7XG4gIC8qKiBJbWFnZXMgdG8gdXNlIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLCBlLmcuLCBoaWdoLXJlc29sdXRpb24gZGlzcGxheXMsIHNtYWxsIG1vbml0b3JzLCBldGMuICovXG4gIHNyY3NldD86IHN0cmluZztcbiAgLyoqIEltYWdlIHNpemVzIGZvciBkaWZmZXJlbnQgcGFnZSBsYXlvdXRzICovXG4gIHNpemVzPzogc3RyaW5nO1xuICAvKiogSW1hZ2UgYWx0ZXJuYXRpdmUgaW5mb3JtYXRpb24gKi9cbiAgYWx0Pzogc3RyaW5nO1xuICAvKiogSW1hZ2UgY2xhc3NlcyAqL1xuICBjbGFzcz86IHN0cmluZztcbiAgLyoqIEltYWdlIGxvYWRpbmcgKi9cbiAgbG9hZGluZz86IEhUTUxJbWFnZUVsZW1lbnRbJ2xvYWRpbmcnXTtcbiAgLyoqIEltYWdlIENPUlMgc2V0dGluZ3MgKi9cbiAgY3Jvc3NvcmlnaW4/OiBzdHJpbmc7XG4gIC8qKiBSZWZlcnJlciBwb2xpY3kgZm9yIGZldGNoIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcnJlci1Qb2xpY3kgKi9cbiAgcmVmZXJyZXJQb2xpY3k/OiBIVE1MSW1hZ2VFbGVtZW50WydyZWZlcnJlclBvbGljeSddO1xuICAvKiogSW1hZ2Ugd2lkdGggKi9cbiAgd2lkdGg/OiBIVE1MSW1hZ2VFbGVtZW50Wyd3aWR0aCddO1xuICAvKiogSW1hZ2UgaGVpZ2h0ICovXG4gIGhlaWdodD86IEhUTUxJbWFnZUVsZW1lbnRbJ2hlaWdodCddO1xuICAvKiogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ltZyNkZWNvZGluZyAqL1xuICBkZWNvZGluZz86IEhUTUxJbWFnZUVsZW1lbnRbJ2RlY29kaW5nJ107XG4gIC8qKiBQcm92aWRlcyBhIGhpbnQgb2YgdGhlIHJlbGF0aXZlIHByaW9yaXR5IHRvIHVzZSB3aGVuIGZldGNoaW5nIHRoZSBpbWFnZSAqL1xuICBmZXRjaFByaW9yaXR5PzogSFRNTEltYWdlRWxlbWVudFsnZmV0Y2hQcmlvcml0eSddO1xuICAvKiogUHJvdmlkZXMgYSBoaW50IG9mIHRoZSBpbXBvcnRhbmNlIG9mIHRoZSBpbWFnZSAqL1xuICBpc21hcD86IEhUTUxJbWFnZUVsZW1lbnRbJ2lzTWFwJ107XG4gIC8qKiBUaGUgcGFydGlhbCBVUkwgKHN0YXJ0aW5nIHdpdGggIykgb2YgYW4gaW1hZ2UgbWFwIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudCAqL1xuICB1c2VtYXA/OiBIVE1MSW1hZ2VFbGVtZW50Wyd1c2VNYXAnXTtcbn1cbnR5cGUgVXNlSW1hZ2VSZXR1cm4gPSBVc2VBc3luY1N0YXRlUmV0dXJuPEhUTUxJbWFnZUVsZW1lbnQgfCB1bmRlZmluZWQsIGFueVtdLCB0cnVlPjtcbi8qKlxuICogUmVhY3RpdmUgbG9hZCBhbiBpbWFnZSBpbiB0aGUgYnJvd3NlciwgeW91IGNhbiB3YWl0IHRoZSByZXN1bHQgdG8gZGlzcGxheSBpdCBvciBzaG93IGEgZmFsbGJhY2suXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlSW1hZ2VcbiAqIEBwYXJhbSBvcHRpb25zIEltYWdlIGF0dHJpYnV0ZXMsIGFzIHVzZWQgaW4gdGhlIDxpbWc+IHRhZ1xuICogQHBhcmFtIGFzeW5jU3RhdGVPcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlSW1hZ2U8U2hhbGxvdyBleHRlbmRzIHRydWU+KG9wdGlvbnM6IE1heWJlUmVmT3JHZXR0ZXI8VXNlSW1hZ2VPcHRpb25zPiwgYXN5bmNTdGF0ZU9wdGlvbnM/OiBVc2VBc3luY1N0YXRlT3B0aW9uczxTaGFsbG93Pik6IFVzZUltYWdlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU2Nyb2xsL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VTY3JvbGxPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqXG4gICAqIFRocm90dGxlIHRpbWUgZm9yIHNjcm9sbCBldmVudCwgaXTigJlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHRocm90dGxlPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGNoZWNrIHRpbWUgd2hlbiBzY3JvbGxpbmcgZW5kcy5cbiAgICogVGhpcyBjb25maWd1cmF0aW9uIHdpbGwgYmUgc2V0dGluZyB0byAodGhyb3R0bGUgKyBpZGxlKSB3aGVuIHRoZSBgdGhyb3R0bGVgIGlzIGNvbmZpZ3VyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDIwMFxuICAgKi9cbiAgaWRsZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIE9mZnNldCBhcnJpdmVkIHN0YXRlcyBieSB4IHBpeGVsc1xuICAgKlxuICAgKi9cbiAgb2Zmc2V0Pzoge1xuICAgIGxlZnQ/OiBudW1iZXI7XG4gICAgcmlnaHQ/OiBudW1iZXI7XG4gICAgdG9wPzogbnVtYmVyO1xuICAgIGJvdHRvbT86IG51bWJlcjtcbiAgfTtcbiAgLyoqXG4gICAqIFVzZSBNdXRhdGlvbk9ic2VydmVyIHRvIG1vbml0b3Igc3BlY2lmaWMgRE9NIGNoYW5nZXMsXG4gICAqIHN1Y2ggYXMgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMsIGNoaWxkIG5vZGUgYWRkaXRpb25zIG9yIHJlbW92YWxzLCBvciBzdWJ0cmVlIGNoYW5nZXMuXG4gICAqIEBkZWZhdWx0IHsgbXV0YXRpb246IGJvb2xlYW4gfVxuICAgKi9cbiAgb2JzZXJ2ZT86IGJvb2xlYW4gfCB7XG4gICAgbXV0YXRpb24/OiBib29sZWFuO1xuICB9O1xuICAvKipcbiAgICogVHJpZ2dlciBpdCB3aGVuIHNjcm9sbGluZy5cbiAgICpcbiAgICovXG4gIG9uU2Nyb2xsPzogKGU6IEV2ZW50KSA9PiB2b2lkO1xuICAvKipcbiAgICogVHJpZ2dlciBpdCB3aGVuIHNjcm9sbGluZyBlbmRzLlxuICAgKlxuICAgKi9cbiAgb25TdG9wPzogKGU6IEV2ZW50KSA9PiB2b2lkO1xuICAvKipcbiAgICogTGlzdGVuZXIgb3B0aW9ucyBmb3Igc2Nyb2xsIGV2ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7Y2FwdHVyZTogZmFsc2UsIHBhc3NpdmU6IHRydWV9XG4gICAqL1xuICBldmVudExpc3RlbmVyT3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgc3BlY2lmeSBhIHNjcm9sbCBiZWhhdmlvciBvZiBgYXV0b2AgKGRlZmF1bHQsIG5vdCBzbW9vdGggc2Nyb2xsaW5nKSBvclxuICAgKiBgc21vb3RoYCAoZm9yIHNtb290aCBzY3JvbGxpbmcpIHdoaWNoIHRha2VzIGVmZmVjdCB3aGVuIGNoYW5naW5nIHRoZSBgeGAgb3IgYHlgIHJlZnMuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhdXRvJ1xuICAgKi9cbiAgYmVoYXZpb3I/OiBNYXliZVJlZk9yR2V0dGVyPFNjcm9sbEJlaGF2aW9yPjtcbiAgLyoqXG4gICAqIE9uIGVycm9yIGNhbGxiYWNrXG4gICAqXG4gICAqIERlZmF1bHQgbG9nIGVycm9yIHRvIGBjb25zb2xlLmVycm9yYFxuICAgKi9cbiAgb25FcnJvcj86IChlcnJvcjogdW5rbm93bikgPT4gdm9pZDtcbn1cbmludGVyZmFjZSBVc2VTY3JvbGxSZXR1cm4ge1xuICB4OiBXcml0YWJsZUNvbXB1dGVkUmVmPG51bWJlcj47XG4gIHk6IFdyaXRhYmxlQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgaXNTY3JvbGxpbmc6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIGFycml2ZWRTdGF0ZToge1xuICAgIGxlZnQ6IGJvb2xlYW47XG4gICAgcmlnaHQ6IGJvb2xlYW47XG4gICAgdG9wOiBib29sZWFuO1xuICAgIGJvdHRvbTogYm9vbGVhbjtcbiAgfTtcbiAgZGlyZWN0aW9uczoge1xuICAgIGxlZnQ6IGJvb2xlYW47XG4gICAgcmlnaHQ6IGJvb2xlYW47XG4gICAgdG9wOiBib29sZWFuO1xuICAgIGJvdHRvbTogYm9vbGVhbjtcbiAgfTtcbiAgbWVhc3VyZTogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogUmVhY3RpdmUgc2Nyb2xsLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVNjcm9sbFxuICogQHBhcmFtIGVsZW1lbnRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU2Nyb2xsKGVsZW1lbnQ6IE1heWJlUmVmT3JHZXR0ZXI8SFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHwgV2luZG93IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPiwgb3B0aW9ucz86IFVzZVNjcm9sbE9wdGlvbnMpOiBVc2VTY3JvbGxSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VJbmZpbml0ZVNjcm9sbC9pbmRleC5kLnRzXG50eXBlIEluZmluaXRlU2Nyb2xsRWxlbWVudCA9IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB8IFdpbmRvdyB8IERvY3VtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbmludGVyZmFjZSBVc2VJbmZpbml0ZVNjcm9sbE9wdGlvbnM8VCBleHRlbmRzIEluZmluaXRlU2Nyb2xsRWxlbWVudCA9IEluZmluaXRlU2Nyb2xsRWxlbWVudD4gZXh0ZW5kcyBVc2VTY3JvbGxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgdmlld3BvcnRcbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgZGlzdGFuY2U/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0aW9uIGluIHdoaWNoIHRvIGxpc3RlbiB0aGUgc2Nyb2xsLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYm90dG9tJ1xuICAgKi9cbiAgZGlyZWN0aW9uPzogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG4gIC8qKlxuICAgKiBUaGUgaW50ZXJ2YWwgdGltZSBiZXR3ZWVuIHR3byBsb2FkIG1vcmUgKHRvIGF2b2lkIHRvbyBtYW55IGludm9rZXMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIGludGVydmFsPzogbnVtYmVyO1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciBtb3JlIGNvbnRlbnQgY2FuIGJlIGxvYWRlZCBmb3IgYSBzcGVjaWZpYyBlbGVtZW50LlxuICAgKiBTaG91bGQgcmV0dXJuIGB0cnVlYCBpZiBsb2FkaW5nIG1vcmUgY29udGVudCBpcyBhbGxvd2VkIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCxcbiAgICogYW5kIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY2FuTG9hZE1vcmU/OiAoZWw6IFQpID0+IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgVXNlSW5maW5pdGVTY3JvbGxSZXR1cm4ge1xuICBpc0xvYWRpbmc6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICByZXNldDogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogUmVhY3RpdmUgaW5maW5pdGUgc2Nyb2xsLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUluZmluaXRlU2Nyb2xsXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlSW5maW5pdGVTY3JvbGw8VCBleHRlbmRzIEluZmluaXRlU2Nyb2xsRWxlbWVudD4oZWxlbWVudDogTWF5YmVSZWZPckdldHRlcjxUPiwgb25Mb2FkTW9yZTogKHN0YXRlOiBVbndyYXBOZXN0ZWRSZWZzPFVzZVNjcm9sbFJldHVybj4pID0+IEF3YWl0YWJsZTx2b2lkPiwgb3B0aW9ucz86IFVzZUluZmluaXRlU2Nyb2xsT3B0aW9uczxUPik6IFVzZUluZmluaXRlU2Nyb2xsUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlS2V5TW9kaWZpZXIvaW5kZXguZC50c1xudHlwZSBLZXlNb2RpZmllciA9ICdBbHQnIHwgJ0FsdEdyYXBoJyB8ICdDYXBzTG9jaycgfCAnQ29udHJvbCcgfCAnRm4nIHwgJ0ZuTG9jaycgfCAnTWV0YScgfCAnTnVtTG9jaycgfCAnU2Nyb2xsTG9jaycgfCAnU2hpZnQnIHwgJ1N5bWJvbCcgfCAnU3ltYm9sTG9jayc7XG5pbnRlcmZhY2UgVXNlTW9kaWZpZXJPcHRpb25zPEluaXRpYWw+IGV4dGVuZHMgQ29uZmlndXJhYmxlRG9jdW1lbnQge1xuICAvKipcbiAgICogRXZlbnQgbmFtZXMgdGhhdCB3aWxsIHByb21wdCB1cGRhdGUgdG8gbW9kaWZpZXIgc3RhdGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IFsnbW91c2Vkb3duJywgJ21vdXNldXAnLCAna2V5ZG93bicsICdrZXl1cCddXG4gICAqL1xuICBldmVudHM/OiBXaW5kb3dFdmVudE5hbWVbXTtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIHJldHVybmVkIHJlZlxuICAgKlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBpbml0aWFsPzogSW5pdGlhbDtcbn1cbnR5cGUgVXNlS2V5TW9kaWZpZXJSZXR1cm48SW5pdGlhbD4gPSBTaGFsbG93UmVmPEluaXRpYWwgZXh0ZW5kcyBib29sZWFuID8gYm9vbGVhbiA6IGJvb2xlYW4gfCBudWxsPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlS2V5TW9kaWZpZXI8SW5pdGlhbCBleHRlbmRzIGJvb2xlYW4gfCBudWxsPihtb2RpZmllcjogS2V5TW9kaWZpZXIsIG9wdGlvbnM/OiBVc2VNb2RpZmllck9wdGlvbnM8SW5pdGlhbD4pOiBVc2VLZXlNb2RpZmllclJldHVybjxJbml0aWFsPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUxvY2FsU3RvcmFnZS9pbmRleC5kLnRzXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZShrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIG9wdGlvbnM/OiBVc2VTdG9yYWdlT3B0aW9uczxzdHJpbmc+KTogUmVtb3ZhYmxlUmVmPHN0cmluZz47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZShrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8Ym9vbGVhbj4pOiBSZW1vdmFibGVSZWY8Ym9vbGVhbj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZShrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj4sIG9wdGlvbnM/OiBVc2VTdG9yYWdlT3B0aW9uczxudW1iZXI+KTogUmVtb3ZhYmxlUmVmPG51bWJlcj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8VD4pOiBSZW1vdmFibGVSZWY8VD47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUID0gdW5rbm93bj4oa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxudWxsPiwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPFQ+KTogUmVtb3ZhYmxlUmVmPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTWFnaWNLZXlzL2FsaWFzTWFwLmQudHNcbmRlY2xhcmUgY29uc3QgRGVmYXVsdE1hZ2ljS2V5c0FsaWFzTWFwOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU1hZ2ljS2V5cy9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlTWFnaWNLZXlzT3B0aW9uczxSZWFjdGl2ZSBleHRlbmRzIGJvb2xlYW4+IHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSByZWFjdGl2ZSBvYmplY3QgaW5zdGVhZCBvZiBhbiBvYmplY3Qgb2YgcmVmc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhY3RpdmU/OiBSZWFjdGl2ZTtcbiAgLyoqXG4gICAqIFRhcmdldCBmb3IgbGlzdGVuaW5nIGV2ZW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCB3aW5kb3dcbiAgICovXG4gIHRhcmdldD86IE1heWJlUmVmT3JHZXR0ZXI8RXZlbnRUYXJnZXQ+O1xuICAvKipcbiAgICogQWxpYXMgbWFwIGZvciBrZXlzLCBhbGwgdGhlIGtleXMgc2hvdWxkIGJlIGxvd2VyY2FzZVxuICAgKiB7IHRhcmdldDoga2V5Y29kZSB9XG4gICAqXG4gICAqIEBleGFtcGxlIHsgY3RybDogXCJjb250cm9sXCIgfVxuICAgKiBAZGVmYXVsdCA8cHJlZGVmaW5lZC1tYXA+XG4gICAqL1xuICBhbGlhc01hcD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBSZWdpc3RlciBwYXNzaXZlIGxpc3RlbmVyXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHBhc3NpdmU/OiBib29sZWFuO1xuICAvKipcbiAgICogQ3VzdG9tIGV2ZW50IGhhbmRsZXIgZm9yIGtleWRvd24va2V5dXAgZXZlbnQuXG4gICAqIFVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGFwcGx5IGN1c3RvbSBsb2dpYy5cbiAgICpcbiAgICogV2hlbiB1c2luZyBgZS5wcmV2ZW50RGVmYXVsdCgpYCwgeW91IHdpbGwgbmVlZCB0byBwYXNzIGBwYXNzaXZlOiBmYWxzZWAgdG8gdXNlTWFnaWNLZXlzKCkuXG4gICAqL1xuICBvbkV2ZW50RmlyZWQ/OiAoZTogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZCB8IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgTWFnaWNLZXlzSW50ZXJuYWwge1xuICAvKipcbiAgICogQSBTZXQgb2YgY3VycmVudGx5IHByZXNzZWQga2V5cyxcbiAgICogU3RvcmVzIHJhdyBrZXlDb2Rlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXlcbiAgICovXG4gIGN1cnJlbnQ6IFNldDxzdHJpbmc+O1xufVxudHlwZSBVc2VNYWdpY0tleXNSZXR1cm48UmVhY3RpdmUgZXh0ZW5kcyBib29sZWFuPiA9IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIFJlYWN0aXZlIGV4dGVuZHMgdHJ1ZSA/IGJvb2xlYW4gOiBDb21wdXRlZFJlZjxib29sZWFuPj4gJiBNYWdpY0tleXNJbnRlcm5hbD47XG4vKipcbiAqIFJlYWN0aXZlIGtleXMgcHJlc3NlZCBzdGF0ZSwgd2l0aCBtYWdpY2FsIGtleXMgY29tYmluYXRpb24gc3VwcG9ydC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VNYWdpY0tleXNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VNYWdpY0tleXM8VCBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4ob3B0aW9ucz86IFVzZU1hZ2ljS2V5c09wdGlvbnM8VD4pOiBVc2VNYWdpY0tleXNSZXR1cm48VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VNZWRpYUNvbnRyb2xzL2luZGV4LmQudHNcbi8qKlxuICogTWFueSBvZiB0aGUganNkb2MgZGVmaW5pdGlvbnMgaGVyZSBhcmUgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGVcbiAqIGRvY3VtZW50YXRpb24gZnJvbSBNRE4oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxNZWRpYUVsZW1lbnQpXG4gKi9cbmludGVyZmFjZSBVc2VNZWRpYVNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHVybCBmb3IgdGhlIG1lZGlhXG4gICAqL1xuICBzcmM6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBtZWRpYSBjb2RlYyB0eXBlXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtZWRpYSBxdWVyeSBmb3IgdGhlIHJlc291cmNlJ3MgaW50ZW5kZWQgbWVkaWEuXG4gICAqL1xuICBtZWRpYT86IHN0cmluZztcbn1cbmludGVyZmFjZSBVc2VNZWRpYVRleHRUcmFja1NvdXJjZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgdHJhY2sgc2hvdWxkIGJlIGVuYWJsZWQgdW5sZXNzIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgaW5kaWNhdGVcbiAgICogdGhhdCBhbm90aGVyIHRyYWNrIGlzIG1vcmUgYXBwcm9wcmlhdGVcbiAgICovXG4gIGRlZmF1bHQ/OiBib29sZWFuO1xuICAvKipcbiAgICogSG93IHRoZSB0ZXh0IHRyYWNrIGlzIG1lYW50IHRvIGJlIHVzZWQuIElmIG9taXR0ZWQgdGhlIGRlZmF1bHQga2luZCBpcyBzdWJ0aXRsZXMuXG4gICAqL1xuICBraW5kOiBUZXh0VHJhY2tLaW5kO1xuICAvKipcbiAgICogQSB1c2VyLXJlYWRhYmxlIHRpdGxlIG9mIHRoZSB0ZXh0IHRyYWNrIHdoaWNoIGlzIHVzZWQgYnkgdGhlIGJyb3dzZXJcbiAgICogd2hlbiBsaXN0aW5nIGF2YWlsYWJsZSB0ZXh0IHRyYWNrcy5cbiAgICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRyZXNzIG9mIHRoZSB0cmFjayAoLnZ0dCBmaWxlKS4gTXVzdCBiZSBhIHZhbGlkIFVSTC4gVGhpcyBhdHRyaWJ1dGVcbiAgICogbXVzdCBiZSBzcGVjaWZpZWQgYW5kIGl0cyBVUkwgdmFsdWUgbXVzdCBoYXZlIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZG9jdW1lbnRcbiAgICovXG4gIHNyYzogc3RyaW5nO1xuICAvKipcbiAgICogTGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrIHRleHQgZGF0YS4gSXQgbXVzdCBiZSBhIHZhbGlkIEJDUCA0NyBsYW5ndWFnZSB0YWcuXG4gICAqIElmIHRoZSBraW5kIGF0dHJpYnV0ZSBpcyBzZXQgdG8gc3VidGl0bGVzLCB0aGVuIHNyY2xhbmcgbXVzdCBiZSBkZWZpbmVkLlxuICAgKi9cbiAgc3JjTGFuZzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFVzZU1lZGlhQ29udHJvbHNPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlRG9jdW1lbnQge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBmb3IgdGhlIG1lZGlhLCBtYXkgZWl0aGVyIGJlIGEgc3RyaW5nLCBhIGBVc2VNZWRpYVNvdXJjZWAgb2JqZWN0LCBvciBhIGxpc3RcbiAgICogb2YgYFVzZU1lZGlhU291cmNlYCBvYmplY3RzLlxuICAgKi9cbiAgc3JjPzogTWF5YmVSZWZPckdldHRlcjxzdHJpbmcgfCBVc2VNZWRpYVNvdXJjZSB8IFVzZU1lZGlhU291cmNlW10+O1xuICAvKipcbiAgICogQSBsaXN0IG9mIHRleHQgdHJhY2tzIGZvciB0aGUgbWVkaWFcbiAgICovXG4gIHRyYWNrcz86IE1heWJlUmVmT3JHZXR0ZXI8VXNlTWVkaWFUZXh0VHJhY2tTb3VyY2VbXT47XG59XG5pbnRlcmZhY2UgVXNlTWVkaWFUZXh0VHJhY2sge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSB0ZXh0IHRyYWNrXG4gICAqL1xuICBpZDogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHRleHQgdHJhY2sgbGFiZWxcbiAgICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMYW5ndWFnZSBvZiB0aGUgdHJhY2sgdGV4dCBkYXRhLiBJdCBtdXN0IGJlIGEgdmFsaWQgQkNQIDQ3IGxhbmd1YWdlIHRhZy5cbiAgICogSWYgdGhlIGtpbmQgYXR0cmlidXRlIGlzIHNldCB0byBzdWJ0aXRsZXMsIHRoZW4gc3JjbGFuZyBtdXN0IGJlIGRlZmluZWQuXG4gICAqL1xuICBsYW5ndWFnZTogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBkaXNwbGF5IG1vZGUgb2YgdGhlIHRleHQgdHJhY2ssIGVpdGhlciBgZGlzYWJsZWRgLFxuICAgKiBgaGlkZGVuYCwgb3IgYHNob3dpbmdgXG4gICAqL1xuICBtb2RlOiBUZXh0VHJhY2tNb2RlO1xuICAvKipcbiAgICogSG93IHRoZSB0ZXh0IHRyYWNrIGlzIG1lYW50IHRvIGJlIHVzZWQuIElmIG9taXR0ZWQgdGhlIGRlZmF1bHQga2luZCBpcyBzdWJ0aXRsZXMuXG4gICAqL1xuICBraW5kOiBUZXh0VHJhY2tLaW5kO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB0cmFjaydzIGluLWJhbmQgbWV0YWRhdGEgdHJhY2sgZGlzcGF0Y2ggdHlwZS5cbiAgICovXG4gIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiB0ZXh0IHRyYWNrIGN1ZXNcbiAgICovXG4gIGN1ZXM6IFRleHRUcmFja0N1ZUxpc3QgfCBudWxsO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGFjdGl2ZSB0ZXh0IHRyYWNrIGN1ZXNcbiAgICovXG4gIGFjdGl2ZUN1ZXM6IFRleHRUcmFja0N1ZUxpc3QgfCBudWxsO1xufVxuaW50ZXJmYWNlIFVzZU1lZGlhQ29udHJvbHNSZXR1cm4ge1xuICBjdXJyZW50VGltZTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBkdXJhdGlvbjogU2hhbGxvd1JlZjxudW1iZXI+O1xuICB3YWl0aW5nOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBzZWVraW5nOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBlbmRlZDogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgc3RhbGxlZDogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgYnVmZmVyZWQ6IFJlZjxbbnVtYmVyLCBudW1iZXJdW10+O1xuICBwbGF5aW5nOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICByYXRlOiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHZvbHVtZTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBtdXRlZDogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgdHJhY2tzOiBSZWY8VXNlTWVkaWFUZXh0VHJhY2tbXT47XG4gIHNlbGVjdGVkVHJhY2s6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgZW5hYmxlVHJhY2s6ICh0cmFjazogbnVtYmVyIHwgVXNlTWVkaWFUZXh0VHJhY2ssIGRpc2FibGVUcmFja3M/OiBib29sZWFuKSA9PiB2b2lkO1xuICBkaXNhYmxlVHJhY2s6ICh0cmFjaz86IG51bWJlciB8IFVzZU1lZGlhVGV4dFRyYWNrKSA9PiB2b2lkO1xuICBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmU6IGJvb2xlYW47XG4gIHRvZ2dsZVBpY3R1cmVJblBpY3R1cmU6ICgpID0+IFByb21pc2U8UGljdHVyZUluUGljdHVyZVdpbmRvdyB8IHZvaWQ+O1xuICBpc1BpY3R1cmVJblBpY3R1cmU6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIG9uU291cmNlRXJyb3I6IEV2ZW50SG9va09uPEV2ZW50PjtcbiAgb25QbGF5YmFja0Vycm9yOiBFdmVudEhvb2tPbjxFdmVudD47XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU1lZGlhQ29udHJvbHModGFyZ2V0OiBNYXliZVJlZjxIVE1MTWVkaWFFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VNZWRpYUNvbnRyb2xzT3B0aW9ucyk6IFVzZU1lZGlhQ29udHJvbHNSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VNZWRpYVF1ZXJ5L2luZGV4LmQudHNcbi8qKlxuICogUmVhY3RpdmUgTWVkaWEgUXVlcnkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTWVkaWFRdWVyeVxuICogQHBhcmFtIHF1ZXJ5XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgb3B0aW9ucz86IENvbmZpZ3VyYWJsZVdpbmRvdyAmIHtcbiAgc3NyV2lkdGg/OiBudW1iZXI7XG59KTogdnVlMC5Db21wdXRlZFJlZjxib29sZWFuPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU1lbW9pemUvaW5kZXguZC50c1xudHlwZSBDYWNoZUtleSA9IGFueTtcbi8qKlxuICogQ3VzdG9tIG1lbW9pemUgY2FjaGUgaGFuZGxlclxuICovXG5pbnRlcmZhY2UgVXNlTWVtb2l6ZUNhY2hlPEtleSwgVmFsdWU+IHtcbiAgLyoqXG4gICAqIEdldCB2YWx1ZSBmb3Iga2V5XG4gICAqL1xuICBnZXQ6IChrZXk6IEtleSkgPT4gVmFsdWUgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBTZXQgdmFsdWUgZm9yIGtleVxuICAgKi9cbiAgc2V0OiAoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJldHVybiBmbGFnIGlmIGtleSBleGlzdHNcbiAgICovXG4gIGhhczogKGtleTogS2V5KSA9PiBib29sZWFuO1xuICAvKipcbiAgICogRGVsZXRlIHZhbHVlIGZvciBrZXlcbiAgICovXG4gIGRlbGV0ZTogKGtleTogS2V5KSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2xlYXIgY2FjaGVcbiAgICovXG4gIGNsZWFyOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBNZW1vaXplZCBmdW5jdGlvblxuICovXG5pbnRlcmZhY2UgVXNlTWVtb2l6ZVJldHVybjxSZXN1bHQsIEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+IHtcbiAgLyoqXG4gICAqIEdldCByZXN1bHQgZnJvbSBjYWNoZSBvciBjYWxsIG1lbW9pemVkIGZ1bmN0aW9uXG4gICAqL1xuICAoLi4uYXJnczogQXJncyk6IFJlc3VsdDtcbiAgLyoqXG4gICAqIENhbGwgbWVtb2l6ZWQgZnVuY3Rpb24gYW5kIHVwZGF0ZSBjYWNoZVxuICAgKi9cbiAgbG9hZDogKC4uLmFyZ3M6IEFyZ3MpID0+IFJlc3VsdDtcbiAgLyoqXG4gICAqIERlbGV0ZSBjYWNoZSBvZiBnaXZlbiBhcmd1bWVudHNcbiAgICovXG4gIGRlbGV0ZTogKC4uLmFyZ3M6IEFyZ3MpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDbGVhciBjYWNoZVxuICAgKi9cbiAgY2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBjYWNoZSBrZXkgZm9yIGdpdmVuIGFyZ3VtZW50c1xuICAgKi9cbiAgZ2VuZXJhdGVLZXk6ICguLi5hcmdzOiBBcmdzKSA9PiBDYWNoZUtleTtcbiAgLyoqXG4gICAqIENhY2hlIGNvbnRhaW5lclxuICAgKi9cbiAgY2FjaGU6IFVzZU1lbW9pemVDYWNoZTxDYWNoZUtleSwgUmVzdWx0Pjtcbn1cbmludGVyZmFjZSBVc2VNZW1vaXplT3B0aW9uczxSZXN1bHQsIEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+IHtcbiAgZ2V0S2V5PzogKC4uLmFyZ3M6IEFyZ3MpID0+IHN0cmluZyB8IG51bWJlcjtcbiAgY2FjaGU/OiBVc2VNZW1vaXplQ2FjaGU8Q2FjaGVLZXksIFJlc3VsdD47XG59XG4vKipcbiAqIFJlYWN0aXZlIGZ1bmN0aW9uIHJlc3VsdCBjYWNoZSBiYXNlZCBvbiBhcmd1bWVudHNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU1lbW9pemU8UmVzdWx0LCBBcmdzIGV4dGVuZHMgdW5rbm93bltdPihyZXNvbHZlcjogKC4uLmFyZ3M6IEFyZ3MpID0+IFJlc3VsdCwgb3B0aW9ucz86IFVzZU1lbW9pemVPcHRpb25zPFJlc3VsdCwgQXJncz4pOiBVc2VNZW1vaXplUmV0dXJuPFJlc3VsdCwgQXJncz47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VNZW1vcnkvaW5kZXguZC50c1xuLyoqXG4gKiBQZXJmb3JtYW5jZS5tZW1vcnlcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QZXJmb3JtYW5jZS9tZW1vcnlcbiAqL1xuaW50ZXJmYWNlIE1lbW9yeUluZm8ge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgaGVhcCwgaW4gYnl0ZXMsIHRoYXQgaXMgYXZhaWxhYmxlIHRvIHRoZSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkganNIZWFwU2l6ZUxpbWl0OiBudW1iZXI7XG4gIC8qKlxuICAgKiAgVGhlIHRvdGFsIGFsbG9jYXRlZCBoZWFwIHNpemUsIGluIGJ5dGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxKU0hlYXBTaXplOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IGFjdGl2ZSBzZWdtZW50IG9mIEpTIGhlYXAsIGluIGJ5dGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlZEpTSGVhcFNpemU6IG51bWJlcjtcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106ICdNZW1vcnlJbmZvJztcbn1cbmludGVyZmFjZSBVc2VNZW1vcnlPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlU2NoZWR1bGVyIHtcbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSB0aW1lciBpbW1lZGlhdGVseVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBzY2hlZHVsZXJgIG9wdGlvbiBpbnN0ZWFkXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBjYWxsYmFjayBpbW1lZGlhdGVseSBhZnRlciBjYWxsaW5nIGByZXN1bWVgXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGltbWVkaWF0ZUNhbGxiYWNrPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWQgKi9cbiAgaW50ZXJ2YWw/OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgVXNlTWVtb3J5UmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBtZW1vcnk6IFJlZjxNZW1vcnlJbmZvIHwgdW5kZWZpbmVkPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgTWVtb3J5IEluZm8uXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTWVtb3J5XG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlTWVtb3J5KG9wdGlvbnM/OiBVc2VNZW1vcnlPcHRpb25zKTogVXNlTWVtb3J5UmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTW91bnRlZC9pbmRleC5kLnRzXG4vKipcbiAqIE1vdW50ZWQgc3RhdGUgaW4gcmVmLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZU1vdW50ZWRcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU1vdW50ZWQoKTogdnVlMC5TaGFsbG93UmVmPGJvb2xlYW4sIGJvb2xlYW4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTW91c2UvaW5kZXguZC50c1xudHlwZSBVc2VNb3VzZUNvb3JkVHlwZSA9ICdwYWdlJyB8ICdjbGllbnQnIHwgJ3NjcmVlbicgfCAnbW92ZW1lbnQnO1xudHlwZSBVc2VNb3VzZVNvdXJjZVR5cGUgPSAnbW91c2UnIHwgJ3RvdWNoJyB8IG51bGw7XG50eXBlIFVzZU1vdXNlRXZlbnRFeHRyYWN0b3IgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaCkgPT4gW3g6IG51bWJlciwgeTogbnVtYmVyXSB8IG51bGwgfCB1bmRlZmluZWQ7XG5pbnRlcmZhY2UgVXNlTW91c2VPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93LCBDb25maWd1cmFibGVFdmVudEZpbHRlciB7XG4gIC8qKlxuICAgKiBNb3VzZSBwb3NpdGlvbiBiYXNlZCBieSBwYWdlLCBjbGllbnQsIHNjcmVlbiwgb3IgcmVsYXRpdmUgdG8gcHJldmlvdXMgcG9zaXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgJ3BhZ2UnXG4gICAqL1xuICB0eXBlPzogVXNlTW91c2VDb29yZFR5cGUgfCBVc2VNb3VzZUV2ZW50RXh0cmFjdG9yO1xuICAvKipcbiAgICogTGlzdGVuIGV2ZW50cyBvbiBgdGFyZ2V0YCBlbGVtZW50XG4gICAqXG4gICAqIEBkZWZhdWx0ICdXaW5kb3cnXG4gICAqL1xuICB0YXJnZXQ/OiBNYXliZVJlZk9yR2V0dGVyPFdpbmRvdyB8IEV2ZW50VGFyZ2V0IHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gYHRvdWNobW92ZWAgZXZlbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHRvdWNoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpc3RlbiB0byBgc2Nyb2xsYCBldmVudHMgb24gd2luZG93LCBvbmx5IGVmZmVjdGl2ZSBvbiB0eXBlIGBwYWdlYFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzY3JvbGw/OiBib29sZWFuO1xuICAvKipcbiAgICogUmVzZXQgdG8gaW5pdGlhbCB2YWx1ZSB3aGVuIGB0b3VjaGVuZGAgZXZlbnQgZmlyZWRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlc2V0T25Ub3VjaEVuZHM/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5pdGlhbCB2YWx1ZXNcbiAgICovXG4gIGluaXRpYWxWYWx1ZT86IFBvc2l0aW9uO1xufVxuaW50ZXJmYWNlIFVzZU1vdXNlUmV0dXJuIHtcbiAgeDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICB5OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHNvdXJjZVR5cGU6IFNoYWxsb3dSZWY8VXNlTW91c2VTb3VyY2VUeXBlPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgbW91c2UgcG9zaXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTW91c2VcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlTW91c2Uob3B0aW9ucz86IFVzZU1vdXNlT3B0aW9ucyk6IFVzZU1vdXNlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTW91c2VJbkVsZW1lbnQvaW5kZXguZC50c1xuaW50ZXJmYWNlIE1vdXNlSW5FbGVtZW50T3B0aW9ucyBleHRlbmRzIFVzZU1vdXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhhbmRsZSBtb3VzZSBldmVudHMgd2hlbiB0aGUgY3Vyc29yIGlzIG91dHNpZGUgdGhlIHRhcmdldCBlbGVtZW50LlxuICAgKiBXaGVuIGVuYWJsZWQsIG1vdXNlIHBvc2l0aW9uIHdpbGwgY29udGludWUgdG8gYmUgdHJhY2tlZCBldmVuIHdoZW4gb3V0c2lkZSB0aGUgZWxlbWVudCBib3VuZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGhhbmRsZU91dHNpZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogTGlzdGVuIHRvIHdpbmRvdyByZXNpemUgZXZlbnRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgd2luZG93U2Nyb2xsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpc3RlbiB0byB3aW5kb3cgc2Nyb2xsIGV2ZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHdpbmRvd1Jlc2l6ZT86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgVXNlTW91c2VJbkVsZW1lbnRSZXR1cm4gZXh0ZW5kcyBVc2VNb3VzZVJldHVybiB7XG4gIGVsZW1lbnRYOiBTaGFsbG93UmVmPG51bWJlcj47XG4gIGVsZW1lbnRZOiBTaGFsbG93UmVmPG51bWJlcj47XG4gIGVsZW1lbnRQb3NpdGlvblg6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgZWxlbWVudFBvc2l0aW9uWTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBlbGVtZW50SGVpZ2h0OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIGVsZW1lbnRXaWR0aDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBpc091dHNpZGU6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIG1vdXNlIHBvc2l0aW9uIHJlbGF0ZWQgdG8gYW4gZWxlbWVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VNb3VzZUluRWxlbWVudFxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VNb3VzZUluRWxlbWVudCh0YXJnZXQ/OiBNYXliZUVsZW1lbnRSZWYsIG9wdGlvbnM/OiBNb3VzZUluRWxlbWVudE9wdGlvbnMpOiB7XG4gIHg6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgeTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBzb3VyY2VUeXBlOiBTaGFsbG93UmVmPFVzZU1vdXNlU291cmNlVHlwZT47XG4gIGVsZW1lbnRYOiBTaGFsbG93UmVmPG51bWJlciwgbnVtYmVyPjtcbiAgZWxlbWVudFk6IFNoYWxsb3dSZWY8bnVtYmVyLCBudW1iZXI+O1xuICBlbGVtZW50UG9zaXRpb25YOiBTaGFsbG93UmVmPG51bWJlciwgbnVtYmVyPjtcbiAgZWxlbWVudFBvc2l0aW9uWTogU2hhbGxvd1JlZjxudW1iZXIsIG51bWJlcj47XG4gIGVsZW1lbnRIZWlnaHQ6IFNoYWxsb3dSZWY8bnVtYmVyLCBudW1iZXI+O1xuICBlbGVtZW50V2lkdGg6IFNoYWxsb3dSZWY8bnVtYmVyLCBudW1iZXI+O1xuICBpc091dHNpZGU6IFNoYWxsb3dSZWY8Ym9vbGVhbiwgYm9vbGVhbj47XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTW91c2VQcmVzc2VkL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VNb3VzZVByZXNzZWRPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqXG4gICAqIExpc3RlbiB0byBgdG91Y2hzdGFydGAgYHRvdWNoZW5kYCBldmVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgdG91Y2g/OiBib29sZWFuO1xuICAvKipcbiAgICogTGlzdGVuIHRvIGBkcmFnc3RhcnRgIGBkcm9wYCBhbmQgYGRyYWdlbmRgIGV2ZW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcmFnPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZCBldmVudCBsaXN0ZW5lcnMgd2l0aCB0aGUgYGNhcHR1cmVgIG9wdGlvbiBzZXQgdG8gYHRydWVgXG4gICAqIChzZWUgW01ETl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXIjY2FwdHVyZSkpXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjYXB0dXJlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbml0aWFsVmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogRWxlbWVudCB0YXJnZXQgdG8gYmUgY2FwdHVyZSB0aGUgY2xpY2tcbiAgICovXG4gIHRhcmdldD86IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmO1xuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG1vdXNlIGlzIHByZXNzZWRcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBvblByZXNzZWQ/OiAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgRHJhZ0V2ZW50KSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG1vdXNlIGlzIHJlbGVhc2VkXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgb25SZWxlYXNlZD86IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBEcmFnRXZlbnQpID0+IHZvaWQ7XG59XG4vKiogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBVc2VNb3VzZVByZXNzZWRPcHRpb25zfSBpbnN0ZWFkICovXG50eXBlIE1vdXNlUHJlc3NlZE9wdGlvbnMgPSBVc2VNb3VzZVByZXNzZWRPcHRpb25zO1xuaW50ZXJmYWNlIFVzZU1vdXNlUHJlc3NlZFJldHVybiB7XG4gIHByZXNzZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIHNvdXJjZVR5cGU6IFNoYWxsb3dSZWY8VXNlTW91c2VTb3VyY2VUeXBlPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgbW91c2UgcHJlc3Npbmcgc3RhdGUuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTW91c2VQcmVzc2VkXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU1vdXNlUHJlc3NlZChvcHRpb25zPzogVXNlTW91c2VQcmVzc2VkT3B0aW9ucyk6IFVzZU1vdXNlUHJlc3NlZFJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU11dGF0aW9uT2JzZXJ2ZXIvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZU11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIGV4dGVuZHMgTXV0YXRpb25PYnNlcnZlckluaXQsIENvbmZpZ3VyYWJsZVdpbmRvdyB7fVxuaW50ZXJmYWNlIFVzZU11dGF0aW9uT2JzZXJ2ZXJSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG4gIHRha2VSZWNvcmRzOiAoKSA9PiBNdXRhdGlvblJlY29yZFtdIHwgdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBXYXRjaCBmb3IgY2hhbmdlcyBiZWluZyBtYWRlIHRvIHRoZSBET00gdHJlZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VNdXRhdGlvbk9ic2VydmVyXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9NdXRhdGlvbk9ic2VydmVyIE11dGF0aW9uT2JzZXJ2ZXIgTUROXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlTXV0YXRpb25PYnNlcnZlcih0YXJnZXQ6IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmIHwgTWF5YmVDb21wdXRlZEVsZW1lbnRSZWZbXSB8IE1heWJlUmVmT3JHZXR0ZXI8TWF5YmVFbGVtZW50W10+LCBjYWxsYmFjazogTXV0YXRpb25DYWxsYmFjaywgb3B0aW9ucz86IFVzZU11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zKTogVXNlTXV0YXRpb25PYnNlcnZlclJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU5hdmlnYXRvckxhbmd1YWdlL2luZGV4LmQudHNcbmludGVyZmFjZSBOYXZpZ2F0b3JMYW5ndWFnZVN0YXRlIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICAvKipcbiAgICpcbiAgICogSVNPIDYzOS0xIHN0YW5kYXJkIExhbmd1YWdlIENvZGVcbiAgICpcbiAgICogQGluZm8gVGhlIGRldGVjdGVkIHVzZXIgYWdlbnQgbGFuZ3VhZ2UgcHJlZmVyZW5jZSBhcyBhIGxhbmd1YWdlIHRhZ1xuICAgKiAod2hpY2ggaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIGEgXCJsb2NhbGUgaWRlbnRpZmllclwiKS5cbiAgICogVGhpcyBjb25zaXN0cyBvZiBhIDItMyBsZXR0ZXIgYmFzZSBsYW5ndWFnZSB0YWcgdGhhdCBpbmRpY2F0ZXMgYVxuICAgKiBsYW5ndWFnZSwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhZGRpdGlvbmFsIHN1YnRhZ3Mgc2VwYXJhdGVkIGJ5XG4gICAqICctJy4gVGhlIG1vc3QgY29tbW9uIGV4dHJhIGluZm9ybWF0aW9uIGlzIHRoZSBjb3VudHJ5IG9yIHJlZ2lvblxuICAgKiB2YXJpYW50IChsaWtlICdlbi1VUycgb3IgJ2ZyLUNBJykuXG4gICAqXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cuaXNvLm9yZy9pc28tNjM5LWxhbmd1YWdlLWNvZGVzLmh0bWxcbiAgICogQHNlZSBodHRwczovL3d3dy5sb2MuZ292L3N0YW5kYXJkcy9pc282MzktMi9waHAvY29kZV9saXN0LnBocFxuICAgKlxuICAgKi9cbiAgbGFuZ3VhZ2U6IFNoYWxsb3dSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn1cbmludGVyZmFjZSBVc2VOYXZpZ2F0b3JMYW5ndWFnZU9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge31cbnR5cGUgVXNlTmF2aWdhdG9yTGFuZ3VhZ2VSZXR1cm4gPSBSZWFkb25seTxOYXZpZ2F0b3JMYW5ndWFnZVN0YXRlPjtcbi8qKlxuICpcbiAqIFJlYWN0aXZlIHVzZU5hdmlnYXRvckxhbmd1YWdlXG4gKlxuICogRGV0ZWN0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHVzZXIgbGFuZ3VhZ2UgYW5kIHJldHVybnMgYSByZWFjdGl2ZSBsYW5ndWFnZVxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTmF2aWdhdG9yTGFuZ3VhZ2VcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU5hdmlnYXRvckxhbmd1YWdlKG9wdGlvbnM/OiBVc2VOYXZpZ2F0b3JMYW5ndWFnZU9wdGlvbnMpOiBVc2VOYXZpZ2F0b3JMYW5ndWFnZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU5ldHdvcmsvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZU5ldHdvcmtPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHt9XG50eXBlIE5ldHdvcmtUeXBlID0gJ2JsdWV0b290aCcgfCAnY2VsbHVsYXInIHwgJ2V0aGVybmV0JyB8ICdub25lJyB8ICd3aWZpJyB8ICd3aW1heCcgfCAnb3RoZXInIHwgJ3Vua25vd24nO1xudHlwZSBOZXR3b3JrRWZmZWN0aXZlVHlwZSA9ICdzbG93LTJnJyB8ICcyZycgfCAnM2cnIHwgJzRnJyB8IHVuZGVmaW5lZDtcbmludGVyZmFjZSBOZXR3b3JrU3RhdGUgZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIC8qKlxuICAgKiBJZiB0aGUgdXNlciBpcyBjdXJyZW50bHkgY29ubmVjdGVkLlxuICAgKi9cbiAgaXNPbmxpbmU6IFJlYWRvbmx5PFNoYWxsb3dSZWY8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogVGhlIHRpbWUgc2luY2UgdGhlIHVzZXIgd2FzIGxhc3QgY29ubmVjdGVkLlxuICAgKi9cbiAgb2ZmbGluZUF0OiBSZWFkb25seTxTaGFsbG93UmVmPG51bWJlciB8IHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogQXQgdGhpcyB0aW1lLCBpZiB0aGUgdXNlciBpcyBvZmZsaW5lIGFuZCByZWNvbm5lY3RzXG4gICAqL1xuICBvbmxpbmVBdDogUmVhZG9ubHk8U2hhbGxvd1JlZjxudW1iZXIgfCB1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIFRoZSBkb3dubG9hZCBzcGVlZCBpbiBNYnBzLlxuICAgKi9cbiAgZG93bmxpbms6IFJlYWRvbmx5PFNoYWxsb3dSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBUaGUgbWF4IHJlYWNoYWJsZSBkb3dubG9hZCBzcGVlZCBpbiBNYnBzLlxuICAgKi9cbiAgZG93bmxpbmtNYXg6IFJlYWRvbmx5PFNoYWxsb3dSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBUaGUgZGV0ZWN0ZWQgZWZmZWN0aXZlIHNwZWVkIHR5cGUuXG4gICAqL1xuICBlZmZlY3RpdmVUeXBlOiBSZWFkb25seTxTaGFsbG93UmVmPE5ldHdvcmtFZmZlY3RpdmVUeXBlIHwgdW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBUaGUgZXN0aW1hdGVkIGVmZmVjdGl2ZSByb3VuZC10cmlwIHRpbWUgb2YgdGhlIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgICovXG4gIHJ0dDogUmVhZG9ubHk8U2hhbGxvd1JlZjxudW1iZXIgfCB1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIElmIHRoZSB1c2VyIGFjdGl2YXRlZCBkYXRhIHNhdmVyIG1vZGUuXG4gICAqL1xuICBzYXZlRGF0YTogUmVhZG9ubHk8U2hhbGxvd1JlZjxib29sZWFuIHwgdW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBUaGUgZGV0ZWN0ZWQgY29ubmVjdGlvbi9uZXR3b3JrIHR5cGUuXG4gICAqL1xuICB0eXBlOiBSZWFkb25seTxTaGFsbG93UmVmPE5ldHdvcmtUeXBlPj47XG59XG50eXBlIFVzZU5ldHdvcmtSZXR1cm4gPSBSZWFkb25seTxOZXR3b3JrU3RhdGU+O1xuLyoqXG4gKiBSZWFjdGl2ZSBOZXR3b3JrIHN0YXR1cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VOZXR3b3JrXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlTmV0d29yayhvcHRpb25zPzogVXNlTmV0d29ya09wdGlvbnMpOiBVc2VOZXR3b3JrUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTm93L2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VOb3dPcHRpb25zPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbj4gZXh0ZW5kcyBDb25maWd1cmFibGVTY2hlZHVsZXIge1xuICAvKipcbiAgICogRXhwb3NlIG1vcmUgY29udHJvbHNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbnRyb2xzPzogQ29udHJvbHM7XG4gIC8qKlxuICAgKiBTdGFydCB0aGUgY2xvY2sgaW1tZWRpYXRlbHlcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVXBkYXRlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcywgb3IgdXNlIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBzY2hlZHVsZXJgIG9wdGlvbiBpbnN0ZWFkXG4gICAqIEBkZWZhdWx0IHJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgKi9cbiAgaW50ZXJ2YWw/OiAncmVxdWVzdEFuaW1hdGlvbkZyYW1lJyB8IG51bWJlcjtcbn1cbnR5cGUgVXNlTm93UmV0dXJuPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbj4gPSBDb250cm9scyBleHRlbmRzIHRydWUgPyAoe1xuICBub3c6IFJlZjxEYXRlPjtcbn0gJiBQYXVzYWJsZSkgOiBSZWY8RGF0ZT47XG4vKipcbiAqIFJlYWN0aXZlIGN1cnJlbnQgRGF0ZSBpbnN0YW5jZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VOb3dcbiAqIEBwYXJhbSBvcHRpb25zXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VOb3cob3B0aW9ucz86IFVzZU5vd09wdGlvbnM8ZmFsc2U+KTogUmVmPERhdGU+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VOb3cob3B0aW9uczogVXNlTm93T3B0aW9uczx0cnVlPik6IHtcbiAgbm93OiBSZWY8RGF0ZT47XG59ICYgUGF1c2FibGU7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VPYmplY3RVcmwvaW5kZXguZC50c1xuLyoqXG4gKiBSZWFjdGl2ZSBVUkwgcmVwcmVzZW50aW5nIGFuIG9iamVjdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VPYmplY3RVcmxcbiAqIEBwYXJhbSBvYmplY3RcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VPYmplY3RVcmwob2JqZWN0OiBNYXliZVJlZk9yR2V0dGVyPEJsb2IgfCBNZWRpYVNvdXJjZSB8IG51bGwgfCB1bmRlZmluZWQ+KTogUmVhZG9ubHk8dnVlMC5SZWY8c3RyaW5nIHwgdW5kZWZpbmVkLCBzdHJpbmcgfCB1bmRlZmluZWQ+Pjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU9mZnNldFBhZ2luYXRpb24vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZU9mZnNldFBhZ2luYXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRvdGFsIG51bWJlciBvZiBpdGVtcy5cbiAgICovXG4gIHRvdGFsPzogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+O1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5IHBlciBwYWdlLlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgcGFnZVNpemU/OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj47XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBwYWdlIG51bWJlci5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcGFnZT86IE1heWJlUmVmPG51bWJlcj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIHRoZSBgcGFnZWAgY2hhbmdlLlxuICAgKi9cbiAgb25QYWdlQ2hhbmdlPzogKHJldHVyblZhbHVlOiBVbndyYXBOZXN0ZWRSZWZzPFVzZU9mZnNldFBhZ2luYXRpb25SZXR1cm4+KSA9PiB1bmtub3duO1xuICAvKipcbiAgICogQ2FsbGJhY2sgd2hlbiB0aGUgYHBhZ2VTaXplYCBjaGFuZ2UuXG4gICAqL1xuICBvblBhZ2VTaXplQ2hhbmdlPzogKHJldHVyblZhbHVlOiBVbndyYXBOZXN0ZWRSZWZzPFVzZU9mZnNldFBhZ2luYXRpb25SZXR1cm4+KSA9PiB1bmtub3duO1xuICAvKipcbiAgICogQ2FsbGJhY2sgd2hlbiB0aGUgYHBhZ2VDb3VudGAgY2hhbmdlLlxuICAgKi9cbiAgb25QYWdlQ291bnRDaGFuZ2U/OiAocmV0dXJuVmFsdWU6IFVud3JhcE5lc3RlZFJlZnM8VXNlT2Zmc2V0UGFnaW5hdGlvblJldHVybj4pID0+IHVua25vd247XG59XG5pbnRlcmZhY2UgVXNlT2Zmc2V0UGFnaW5hdGlvblJldHVybiB7XG4gIGN1cnJlbnRQYWdlOiBSZWY8bnVtYmVyPjtcbiAgY3VycmVudFBhZ2VTaXplOiBSZWY8bnVtYmVyPjtcbiAgcGFnZUNvdW50OiBDb21wdXRlZFJlZjxudW1iZXI+O1xuICBpc0ZpcnN0UGFnZTogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIGlzTGFzdFBhZ2U6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICBwcmV2OiAoKSA9PiB2b2lkO1xuICBuZXh0OiAoKSA9PiB2b2lkO1xufVxudHlwZSBVc2VPZmZzZXRQYWdpbmF0aW9uSW5maW5pdHlQYWdlUmV0dXJuID0gT21pdDxVc2VPZmZzZXRQYWdpbmF0aW9uUmV0dXJuLCAnaXNMYXN0UGFnZSc+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VPZmZzZXRQYWdpbmF0aW9uKG9wdGlvbnM6IE9taXQ8VXNlT2Zmc2V0UGFnaW5hdGlvbk9wdGlvbnMsICd0b3RhbCc+KTogVXNlT2Zmc2V0UGFnaW5hdGlvbkluZmluaXR5UGFnZVJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlT2Zmc2V0UGFnaW5hdGlvbihvcHRpb25zOiBVc2VPZmZzZXRQYWdpbmF0aW9uT3B0aW9ucyk6IFVzZU9mZnNldFBhZ2luYXRpb25SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VPbmxpbmUvaW5kZXguZC50c1xuLyoqXG4gKiBSZWFjdGl2ZSBvbmxpbmUgc3RhdGUuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlT25saW5lXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlT25saW5lKG9wdGlvbnM/OiBDb25maWd1cmFibGVXaW5kb3cpOiBSZWFkb25seTx2dWUwLlNoYWxsb3dSZWY8Ym9vbGVhbj4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUGFnZUxlYXZlL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VQYWdlTGVhdmVPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHt9XG50eXBlIFVzZVBhZ2VMZWF2ZVJldHVybiA9IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4vKipcbiAqIFJlYWN0aXZlIHN0YXRlIHRvIHNob3cgd2hldGhlciBtb3VzZSBsZWF2ZXMgdGhlIHBhZ2UuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUGFnZUxlYXZlXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUGFnZUxlYXZlKG9wdGlvbnM/OiBVc2VQYWdlTGVhdmVPcHRpb25zKTogVXNlUGFnZUxlYXZlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUGFyYWxsYXgvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVBhcmFsbGF4T3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIGRldmljZU9yaWVudGF0aW9uVGlsdEFkanVzdD86IChpOiBudW1iZXIpID0+IG51bWJlcjtcbiAgZGV2aWNlT3JpZW50YXRpb25Sb2xsQWRqdXN0PzogKGk6IG51bWJlcikgPT4gbnVtYmVyO1xuICBtb3VzZVRpbHRBZGp1c3Q/OiAoaTogbnVtYmVyKSA9PiBudW1iZXI7XG4gIG1vdXNlUm9sbEFkanVzdD86IChpOiBudW1iZXIpID0+IG51bWJlcjtcbn1cbmludGVyZmFjZSBVc2VQYXJhbGxheFJldHVybiB7XG4gIC8qKlxuICAgKiBSb2xsIHZhbHVlLiBTY2FsZWQgdG8gYC0wLjUgfiAwLjVgXG4gICAqL1xuICByb2xsOiBDb21wdXRlZFJlZjxudW1iZXI+O1xuICAvKipcbiAgICogVGlsdCB2YWx1ZS4gU2NhbGVkIHRvIGAtMC41IH4gMC41YFxuICAgKi9cbiAgdGlsdDogQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFNlbnNvciBzb3VyY2UsIGNhbiBiZSBgbW91c2VgIG9yIGBkZXZpY2VPcmllbnRhdGlvbmBcbiAgICovXG4gIHNvdXJjZTogQ29tcHV0ZWRSZWY8J2RldmljZU9yaWVudGF0aW9uJyB8ICdtb3VzZSc+O1xufVxuLyoqXG4gKiBDcmVhdGUgcGFyYWxsYXggZWZmZWN0IGVhc2lseS4gSXQgdXNlcyBgdXNlRGV2aWNlT3JpZW50YXRpb25gIGFuZCBmYWxsYmFjayB0byBgdXNlTW91c2VgXG4gKiBpZiBvcmllbnRhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUGFyYWxsYXgodGFyZ2V0OiBNYXliZUVsZW1lbnRSZWYsIG9wdGlvbnM/OiBVc2VQYXJhbGxheE9wdGlvbnMpOiBVc2VQYXJhbGxheFJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVBhcmVudEVsZW1lbnQvaW5kZXguZC50c1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VQYXJlbnRFbGVtZW50KGVsZW1lbnQ/OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ+KTogUmVhZG9ubHk8U2hhbGxvd1JlZjxIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQZXJmb3JtYW5jZU9ic2VydmVyL2luZGV4LmQudHNcbnR5cGUgVXNlUGVyZm9ybWFuY2VPYnNlcnZlck9wdGlvbnMgPSBQZXJmb3JtYW5jZU9ic2VydmVySW5pdCAmIENvbmZpZ3VyYWJsZVdpbmRvdyAmIHtcbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSBvYnNlcnZlciBpbW1lZGlhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG59O1xuLyoqXG4gKiBPYnNlcnZlIHBlcmZvcm1hbmNlIG1ldHJpY3MuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUGVyZm9ybWFuY2VPYnNlcnZlclxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VQZXJmb3JtYW5jZU9ic2VydmVyKG9wdGlvbnM6IFVzZVBlcmZvcm1hbmNlT2JzZXJ2ZXJPcHRpb25zLCBjYWxsYmFjazogUGVyZm9ybWFuY2VPYnNlcnZlckNhbGxiYWNrKToge1xuICBpc1N1cHBvcnRlZDogVXNlU3VwcG9ydGVkUmV0dXJuO1xuICBzdGFydDogKCkgPT4gdm9pZDtcbiAgc3RvcDogKCkgPT4gdm9pZDtcbn07XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQZXJtaXNzaW9uL2luZGV4LmQudHNcbnR5cGUgRGVzY3JpcHRvck5hbWVQb2x5ZmlsbCA9ICdhY2NlbGVyb21ldGVyJyB8ICdhY2Nlc3NpYmlsaXR5LWV2ZW50cycgfCAnYW1iaWVudC1saWdodC1zZW5zb3InIHwgJ2JhY2tncm91bmQtc3luYycgfCAnY2FtZXJhJyB8ICdjbGlwYm9hcmQtcmVhZCcgfCAnY2xpcGJvYXJkLXdyaXRlJyB8ICdneXJvc2NvcGUnIHwgJ21hZ25ldG9tZXRlcicgfCAnbWljcm9waG9uZScgfCAnbm90aWZpY2F0aW9ucycgfCAncGF5bWVudC1oYW5kbGVyJyB8ICdwZXJzaXN0ZW50LXN0b3JhZ2UnIHwgJ3B1c2gnIHwgJ3NwZWFrZXInIHwgJ2xvY2FsLWZvbnRzJztcbnR5cGUgR2VuZXJhbFBlcm1pc3Npb25EZXNjcmlwdG9yID0gUGVybWlzc2lvbkRlc2NyaXB0b3IgfCB7XG4gIG5hbWU6IERlc2NyaXB0b3JOYW1lUG9seWZpbGw7XG59O1xuaW50ZXJmYWNlIFVzZVBlcm1pc3Npb25PcHRpb25zPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbj4gZXh0ZW5kcyBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICAvKipcbiAgICogRXhwb3NlIG1vcmUgY29udHJvbHNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbnRyb2xzPzogQ29udHJvbHM7XG59XG50eXBlIFVzZVBlcm1pc3Npb25SZXR1cm4gPSBSZWFkb25seTxTaGFsbG93UmVmPFBlcm1pc3Npb25TdGF0ZSB8IHVuZGVmaW5lZD4+O1xuaW50ZXJmYWNlIFVzZVBlcm1pc3Npb25SZXR1cm5XaXRoQ29udHJvbHMgZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHN0YXRlOiBVc2VQZXJtaXNzaW9uUmV0dXJuO1xuICBxdWVyeTogKCkgPT4gUHJvbWlzZTxQZXJtaXNzaW9uU3RhdHVzIHwgdW5kZWZpbmVkPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgUGVybWlzc2lvbnMgQVBJLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVBlcm1pc3Npb25cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVBlcm1pc3Npb24ocGVybWlzc2lvbkRlc2M6IEdlbmVyYWxQZXJtaXNzaW9uRGVzY3JpcHRvciB8IEdlbmVyYWxQZXJtaXNzaW9uRGVzY3JpcHRvclsnbmFtZSddLCBvcHRpb25zPzogVXNlUGVybWlzc2lvbk9wdGlvbnM8ZmFsc2U+KTogVXNlUGVybWlzc2lvblJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlUGVybWlzc2lvbihwZXJtaXNzaW9uRGVzYzogR2VuZXJhbFBlcm1pc3Npb25EZXNjcmlwdG9yIHwgR2VuZXJhbFBlcm1pc3Npb25EZXNjcmlwdG9yWyduYW1lJ10sIG9wdGlvbnM6IFVzZVBlcm1pc3Npb25PcHRpb25zPHRydWU+KTogVXNlUGVybWlzc2lvblJldHVybldpdGhDb250cm9scztcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVBvaW50ZXIvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVBvaW50ZXJTdGF0ZSBleHRlbmRzIFBvc2l0aW9uIHtcbiAgcHJlc3N1cmU6IG51bWJlcjtcbiAgcG9pbnRlcklkOiBudW1iZXI7XG4gIHRpbHRYOiBudW1iZXI7XG4gIHRpbHRZOiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICB0d2lzdDogbnVtYmVyO1xuICBwb2ludGVyVHlwZTogUG9pbnRlclR5cGUgfCBudWxsO1xufVxuaW50ZXJmYWNlIFVzZVBvaW50ZXJPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqXG4gICAqIFBvaW50ZXIgdHlwZXMgdGhhdCBsaXN0ZW4gdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFsnbW91c2UnLCAndG91Y2gnLCAncGVuJ11cbiAgICovXG4gIHBvaW50ZXJUeXBlcz86IFBvaW50ZXJUeXBlW107XG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlc1xuICAgKi9cbiAgaW5pdGlhbFZhbHVlPzogTWF5YmVSZWY8UGFydGlhbDxVc2VQb2ludGVyU3RhdGU+PjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IHdpbmRvd1xuICAgKi9cbiAgdGFyZ2V0PzogTWF5YmVSZWY8RXZlbnRUYXJnZXQgfCBudWxsIHwgdW5kZWZpbmVkPiB8IERvY3VtZW50IHwgV2luZG93O1xufVxuaW50ZXJmYWNlIFVzZVBvaW50ZXJSZXR1cm4ge1xuICBwcmVzc3VyZTogUmVmPG51bWJlcj47XG4gIHBvaW50ZXJJZDogUmVmPG51bWJlcj47XG4gIHRpbHRYOiBSZWY8bnVtYmVyPjtcbiAgdGlsdFk6IFJlZjxudW1iZXI+O1xuICB3aWR0aDogUmVmPG51bWJlcj47XG4gIGhlaWdodDogUmVmPG51bWJlcj47XG4gIHR3aXN0OiBSZWY8bnVtYmVyPjtcbiAgcG9pbnRlclR5cGU6IFJlZjxQb2ludGVyVHlwZSB8IG51bGw+O1xuICB4OiBSZWY8bnVtYmVyPjtcbiAgeTogUmVmPG51bWJlcj47XG4gIGlzSW5zaWRlOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBwb2ludGVyIHN0YXRlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVBvaW50ZXJcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUG9pbnRlcihvcHRpb25zPzogVXNlUG9pbnRlck9wdGlvbnMpOiBVc2VQb2ludGVyUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUG9pbnRlckxvY2svaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVBvaW50ZXJMb2NrT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZURvY3VtZW50IHt9XG5pbnRlcmZhY2UgVXNlUG9pbnRlckxvY2tSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGVsZW1lbnQ6IFNoYWxsb3dSZWY8TWF5YmVFbGVtZW50PjtcbiAgdHJpZ2dlckVsZW1lbnQ6IFNoYWxsb3dSZWY8TWF5YmVFbGVtZW50PjtcbiAgbG9jazogKGU6IE1heWJlRWxlbWVudFJlZiB8IEV2ZW50KSA9PiBQcm9taXNlPE1heWJlRWxlbWVudD47XG4gIHVubG9jazogKCkgPT4gUHJvbWlzZTxib29sZWFuPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgcG9pbnRlciBsb2NrLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVBvaW50ZXJMb2NrXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUG9pbnRlckxvY2sodGFyZ2V0PzogTWF5YmVFbGVtZW50UmVmLCBvcHRpb25zPzogVXNlUG9pbnRlckxvY2tPcHRpb25zKTogVXNlUG9pbnRlckxvY2tSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTd2lwZS9pbmRleC5kLnRzXG50eXBlIFVzZVN3aXBlRGlyZWN0aW9uID0gJ3VwJyB8ICdkb3duJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnbm9uZSc7XG5pbnRlcmZhY2UgVXNlU3dpcGVPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGV2ZW50cyBhcyBwYXNzaXZlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHBhc3NpdmU/OiBib29sZWFuO1xuICAvKipcbiAgICogQGRlZmF1bHQgNTBcbiAgICovXG4gIHRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIG9uIHN3aXBlIHN0YXJ0XG4gICAqL1xuICBvblN3aXBlU3RhcnQ/OiAoZTogVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIG9uIHN3aXBlIG1vdmVzXG4gICAqL1xuICBvblN3aXBlPzogKGU6IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBvbiBzd2lwZSBlbmRzXG4gICAqL1xuICBvblN3aXBlRW5kPzogKGU6IFRvdWNoRXZlbnQsIGRpcmVjdGlvbjogVXNlU3dpcGVEaXJlY3Rpb24pID0+IHZvaWQ7XG59XG5pbnRlcmZhY2UgVXNlU3dpcGVSZXR1cm4ge1xuICBpc1N3aXBpbmc6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIGRpcmVjdGlvbjogQ29tcHV0ZWRSZWY8VXNlU3dpcGVEaXJlY3Rpb24+O1xuICBjb29yZHNTdGFydDogUmVhZG9ubHk8UG9zaXRpb24+O1xuICBjb29yZHNFbmQ6IFJlYWRvbmx5PFBvc2l0aW9uPjtcbiAgbGVuZ3RoWDogQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgbGVuZ3RoWTogQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgc3RvcDogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogUmVhY3RpdmUgc3dpcGUgZGV0ZWN0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVN3aXBlXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN3aXBlKHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxFdmVudFRhcmdldCB8IG51bGwgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlU3dpcGVPcHRpb25zKTogVXNlU3dpcGVSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQb2ludGVyU3dpcGUvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVBvaW50ZXJTd2lwZU9wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgNTBcbiAgICovXG4gIHRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIG9uIHN3aXBlIHN0YXJ0LlxuICAgKi9cbiAgb25Td2lwZVN0YXJ0PzogKGU6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIG9uIHN3aXBlIG1vdmUuXG4gICAqL1xuICBvblN3aXBlPzogKGU6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIG9uIHN3aXBlIGVuZC5cbiAgICovXG4gIG9uU3dpcGVFbmQ/OiAoZTogUG9pbnRlckV2ZW50LCBkaXJlY3Rpb246IFVzZVN3aXBlRGlyZWN0aW9uKSA9PiB2b2lkO1xuICAvKipcbiAgICogUG9pbnRlciB0eXBlcyB0byBsaXN0ZW4gdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFsnbW91c2UnLCAndG91Y2gnLCAncGVuJ11cbiAgICovXG4gIHBvaW50ZXJUeXBlcz86IFBvaW50ZXJUeXBlW107XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRleHQgc2VsZWN0aW9uIG9uIHN3aXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVRleHRTZWxlY3Q/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZVBvaW50ZXJTd2lwZVJldHVybiB7XG4gIHJlYWRvbmx5IGlzU3dpcGluZzogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgZGlyZWN0aW9uOiBSZWFkb25seTxTaGFsbG93UmVmPFVzZVN3aXBlRGlyZWN0aW9uPj47XG4gIHJlYWRvbmx5IHBvc1N0YXJ0OiBQb3NpdGlvbjtcbiAgcmVhZG9ubHkgcG9zRW5kOiBQb3NpdGlvbjtcbiAgZGlzdGFuY2VYOiBSZWFkb25seTxDb21wdXRlZFJlZjxudW1iZXI+PjtcbiAgZGlzdGFuY2VZOiBSZWFkb25seTxDb21wdXRlZFJlZjxudW1iZXI+PjtcbiAgc3RvcDogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogUmVhY3RpdmUgc3dpcGUgZGV0ZWN0aW9uIGJhc2VkIG9uIFBvaW50ZXJFdmVudHMuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUG9pbnRlclN3aXBlXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVBvaW50ZXJTd2lwZSh0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8SFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPiwgb3B0aW9ucz86IFVzZVBvaW50ZXJTd2lwZU9wdGlvbnMpOiBVc2VQb2ludGVyU3dpcGVSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQcmVmZXJyZWRDb2xvclNjaGVtZS9pbmRleC5kLnRzXG50eXBlIENvbG9yU2NoZW1lVHlwZSA9ICdkYXJrJyB8ICdsaWdodCcgfCAnbm8tcHJlZmVyZW5jZSc7XG4vKipcbiAqIFJlYWN0aXZlIHByZWZlcnMtY29sb3Itc2NoZW1lIG1lZGlhIHF1ZXJ5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVByZWZlcnJlZENvbG9yU2NoZW1lXG4gKiBAcGFyYW0gW29wdGlvbnNdXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VQcmVmZXJyZWRDb2xvclNjaGVtZShvcHRpb25zPzogQ29uZmlndXJhYmxlV2luZG93KTogdnVlMC5Db21wdXRlZFJlZjxDb2xvclNjaGVtZVR5cGU+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUHJlZmVycmVkQ29udHJhc3QvaW5kZXguZC50c1xudHlwZSBDb250cmFzdFR5cGUgPSAnbW9yZScgfCAnbGVzcycgfCAnY3VzdG9tJyB8ICduby1wcmVmZXJlbmNlJztcbi8qKlxuICogUmVhY3RpdmUgcHJlZmVycy1jb250cmFzdCBtZWRpYSBxdWVyeS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VQcmVmZXJyZWRDb250cmFzdFxuICogQHBhcmFtIFtvcHRpb25zXVxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUHJlZmVycmVkQ29udHJhc3Qob3B0aW9ucz86IENvbmZpZ3VyYWJsZVdpbmRvdyk6IHZ1ZTAuQ29tcHV0ZWRSZWY8Q29udHJhc3RUeXBlPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVByZWZlcnJlZERhcmsvaW5kZXguZC50c1xuLyoqXG4gKiBSZWFjdGl2ZSBkYXJrIHRoZW1lIHByZWZlcmVuY2UuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUHJlZmVycmVkRGFya1xuICogQHBhcmFtIFtvcHRpb25zXVxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUHJlZmVycmVkRGFyayhvcHRpb25zPzogQ29uZmlndXJhYmxlV2luZG93KTogdnVlMC5Db21wdXRlZFJlZjxib29sZWFuPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVByZWZlcnJlZExhbmd1YWdlcy9pbmRleC5kLnRzXG4vKipcbiAqIFJlYWN0aXZlIE5hdmlnYXRvciBMYW5ndWFnZXMuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUHJlZmVycmVkTGFuZ3VhZ2VzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUHJlZmVycmVkTGFuZ3VhZ2VzKG9wdGlvbnM/OiBDb25maWd1cmFibGVXaW5kb3cpOiBTaGFsbG93UmVmPHJlYWRvbmx5IHN0cmluZ1tdPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVByZWZlcnJlZFJlZHVjZWRNb3Rpb24vaW5kZXguZC50c1xudHlwZSBSZWR1Y2VkTW90aW9uVHlwZSA9ICdyZWR1Y2UnIHwgJ25vLXByZWZlcmVuY2UnO1xuLyoqXG4gKiBSZWFjdGl2ZSBwcmVmZXJzLXJlZHVjZWQtbW90aW9uIG1lZGlhIHF1ZXJ5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVByZWZlcnJlZFJlZHVjZWRNb3Rpb25cbiAqIEBwYXJhbSBbb3B0aW9uc11cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVByZWZlcnJlZFJlZHVjZWRNb3Rpb24ob3B0aW9ucz86IENvbmZpZ3VyYWJsZVdpbmRvdyk6IHZ1ZTAuQ29tcHV0ZWRSZWY8UmVkdWNlZE1vdGlvblR5cGU+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUHJlZmVycmVkUmVkdWNlZFRyYW5zcGFyZW5jeS9pbmRleC5kLnRzXG50eXBlIFJlZHVjZWRUcmFuc3BhcmVuY3lUeXBlID0gJ3JlZHVjZScgfCAnbm8tcHJlZmVyZW5jZSc7XG4vKipcbiAqIFJlYWN0aXZlIHByZWZlcnMtcmVkdWNlZC10cmFuc3BhcmVuY3kgbWVkaWEgcXVlcnkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUHJlZmVycmVkUmVkdWNlZFRyYW5zcGFyZW5jeVxuICogQHBhcmFtIFtvcHRpb25zXVxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUHJlZmVycmVkUmVkdWNlZFRyYW5zcGFyZW5jeShvcHRpb25zPzogQ29uZmlndXJhYmxlV2luZG93KTogdnVlMC5Db21wdXRlZFJlZjxSZWR1Y2VkVHJhbnNwYXJlbmN5VHlwZT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQcmV2aW91cy9pbmRleC5kLnRzXG4vKipcbiAqIEhvbGRzIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiBhIHJlZi5cbiAqXG4gKiBAc2VlICAge0BsaW5rIGh0dHBzOi8vdnVldXNlLm9yZy91c2VQcmV2aW91c31cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VQcmV2aW91czxUPih2YWx1ZTogTWF5YmVSZWZPckdldHRlcjxUPik6IFJlYWRvbmx5PFNoYWxsb3dSZWY8VCB8IHVuZGVmaW5lZD4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VQcmV2aW91czxUPih2YWx1ZTogTWF5YmVSZWZPckdldHRlcjxUPiwgaW5pdGlhbFZhbHVlOiBUKTogUmVhZG9ubHk8U2hhbGxvd1JlZjxUPj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VSYWZGbi9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlUmFmRm5DYWxsYmFja0FyZ3VtZW50cyB7XG4gIC8qKlxuICAgKiBUaW1lIGVsYXBzZWQgYmV0d2VlbiB0aGlzIGFuZCB0aGUgbGFzdCBmcmFtZS5cbiAgICovXG4gIGRlbHRhOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaW1lIGVsYXBzZWQgc2luY2UgdGhlIGNyZWF0aW9uIG9mIHRoZSB3ZWIgcGFnZS4gU2VlIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRE9NSGlnaFJlc1RpbWVTdGFtcCN0aGVfdGltZV9vcmlnaW4gVGltZSBvcmlnaW59LlxuICAgKi9cbiAgdGltZXN0YW1wOiBET01IaWdoUmVzVGltZVN0YW1wO1xufVxuaW50ZXJmYWNlIFVzZVJhZkZuT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBTdGFydCB0aGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGxvb3AgaW1tZWRpYXRlbHkgb24gY3JlYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGZyYW1lIHBlciBzZWNvbmQgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24uXG4gICAqIFNldCB0byBgbnVsbGAgdG8gZGlzYWJsZSB0aGUgbGltaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIGZwc0xpbWl0PzogTWF5YmVSZWZPckdldHRlcjxudW1iZXIgfCBudWxsPjtcbiAgLyoqXG4gICAqIEFmdGVyIHRoZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgbG9vcCBleGVjdXRlZCBvbmNlLCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RvcHBlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG9uY2U/OiBib29sZWFuO1xufVxuLyoqXG4gKiBDYWxsIGZ1bmN0aW9uIG9uIGV2ZXJ5IGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLiBXaXRoIGNvbnRyb2xzIG9mIHBhdXNpbmcgYW5kIHJlc3VtaW5nLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVJhZkZuXG4gKiBAcGFyYW0gZm5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUmFmRm4oZm46IChhcmdzOiBVc2VSYWZGbkNhbGxiYWNrQXJndW1lbnRzKSA9PiB2b2lkLCBvcHRpb25zPzogVXNlUmFmRm5PcHRpb25zKTogUGF1c2FibGU7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTU1JXaWR0aC9pbmRleC5kLnRzXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNTUldpZHRoKCk6IG51bWJlciB8IHVuZGVmaW5lZDtcbmRlY2xhcmUgZnVuY3Rpb24gcHJvdmlkZVNTUldpZHRoKHdpZHRoOiBudW1iZXIgfCBudWxsLCBhcHA/OiBBcHA8dW5rbm93bj4pOiB2b2lkO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU2NyZWVuT3JpZW50YXRpb24vaW5kZXguZC50c1xudHlwZSBPcmllbnRhdGlvblR5cGUgPSAncG9ydHJhaXQtcHJpbWFyeScgfCAncG9ydHJhaXQtc2Vjb25kYXJ5JyB8ICdsYW5kc2NhcGUtcHJpbWFyeScgfCAnbGFuZHNjYXBlLXNlY29uZGFyeSc7XG50eXBlIE9yaWVudGF0aW9uTG9ja1R5cGUgPSAnYW55JyB8ICduYXR1cmFsJyB8ICdsYW5kc2NhcGUnIHwgJ3BvcnRyYWl0JyB8ICdwb3J0cmFpdC1wcmltYXJ5JyB8ICdwb3J0cmFpdC1zZWNvbmRhcnknIHwgJ2xhbmRzY2FwZS1wcmltYXJ5JyB8ICdsYW5kc2NhcGUtc2Vjb25kYXJ5JztcbmludGVyZmFjZSBTY3JlZW5PcmllbnRhdGlvbiBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgbG9jazogKG9yaWVudGF0aW9uOiBPcmllbnRhdGlvbkxvY2tUeXBlKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB1bmxvY2s6ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHR5cGU6IE9yaWVudGF0aW9uVHlwZTtcbiAgcmVhZG9ubHkgYW5nbGU6IG51bWJlcjtcbiAgYWRkRXZlbnRMaXN0ZW5lcjogKHR5cGU6ICdjaGFuZ2UnLCBsaXN0ZW5lcjogKHRoaXM6IHRoaXMsIGV2OiBFdmVudCkgPT4gYW55LCB1c2VDYXB0dXJlPzogYm9vbGVhbikgPT4gdm9pZDtcbn1cbmludGVyZmFjZSBVc2VTY3JlZW5PcmllbnRhdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge31cbmludGVyZmFjZSBVc2VTY3JlZW5PcmllbnRhdGlvblJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgb3JpZW50YXRpb246IFJlZjxPcmllbnRhdGlvblR5cGUgfCB1bmRlZmluZWQ+O1xuICBhbmdsZTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBsb2NrT3JpZW50YXRpb246ICh0eXBlOiBPcmllbnRhdGlvbkxvY2tUeXBlKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB1bmxvY2tPcmllbnRhdGlvbjogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogUmVhY3RpdmUgc2NyZWVuIG9yaWVudGF0aW9uXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlU2NyZWVuT3JpZW50YXRpb25cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNjcmVlbk9yaWVudGF0aW9uKG9wdGlvbnM/OiBVc2VTY3JlZW5PcmllbnRhdGlvbk9wdGlvbnMpOiBVc2VTY3JlZW5PcmllbnRhdGlvblJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVNjcmVlblNhZmVBcmVhL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VTY3JlZW5TYWZlQXJlYVJldHVybiB7XG4gIHRvcDogU2hhbGxvd1JlZjxzdHJpbmc+O1xuICByaWdodDogU2hhbGxvd1JlZjxzdHJpbmc+O1xuICBib3R0b206IFNoYWxsb3dSZWY8c3RyaW5nPjtcbiAgbGVmdDogU2hhbGxvd1JlZjxzdHJpbmc+O1xuICB1cGRhdGU6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIGBlbnYoc2FmZS1hcmVhLWluc2V0LSopYFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVNjcmVlblNhZmVBcmVhXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU2NyZWVuU2FmZUFyZWEoKTogVXNlU2NyZWVuU2FmZUFyZWFSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTY3JpcHRUYWcvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVNjcmlwdFRhZ09wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVEb2N1bWVudCB7XG4gIC8qKlxuICAgKiBMb2FkIHRoZSBzY3JpcHQgaW1tZWRpYXRlbHlcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZCBgYXN5bmNgIGF0dHJpYnV0ZSB0byB0aGUgc2NyaXB0IHRhZ1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhc3luYz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTY3JpcHQgdHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAndGV4dC9qYXZhc2NyaXB0J1xuICAgKi9cbiAgdHlwZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE1hbnVhbCBjb250cm9scyB0aGUgdGltaW5nIG9mIGxvYWRpbmcgYW5kIHVubG9hZGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbWFudWFsPzogYm9vbGVhbjtcbiAgY3Jvc3NPcmlnaW4/OiAnYW5vbnltb3VzJyB8ICd1c2UtY3JlZGVudGlhbHMnO1xuICByZWZlcnJlclBvbGljeT86ICduby1yZWZlcnJlcicgfCAnbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUnIHwgJ29yaWdpbicgfCAnb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJyB8ICdzYW1lLW9yaWdpbicgfCAnc3RyaWN0LW9yaWdpbicgfCAnc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbicgfCAndW5zYWZlLXVybCc7XG4gIG5vTW9kdWxlPzogYm9vbGVhbjtcbiAgZGVmZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogQWRkIGN1c3RvbSBhdHRyaWJ1dGUgdG8gdGhlIHNjcmlwdCB0YWdcbiAgICpcbiAgICovXG4gIGF0dHJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIE5vbmNlIHZhbHVlIGZvciBDU1AgKENvbnRlbnQgU2VjdXJpdHkgUG9saWN5KVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIG5vbmNlPzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFVzZVNjcmlwdFRhZ1JldHVybiB7XG4gIHNjcmlwdFRhZzogU2hhbGxvd1JlZjxIVE1MU2NyaXB0RWxlbWVudCB8IG51bGw+O1xuICBsb2FkOiAod2FpdEZvclNjcmlwdExvYWQ/OiBib29sZWFuKSA9PiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50IHwgYm9vbGVhbj47XG4gIHVubG9hZDogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogQXN5bmMgc2NyaXB0IHRhZyBsb2FkaW5nLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVNjcmlwdFRhZ1xuICogQHBhcmFtIHNyY1xuICogQHBhcmFtIG9uTG9hZGVkXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNjcmlwdFRhZyhzcmM6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgb25Mb2FkZWQ/OiAoZWw6IEhUTUxTY3JpcHRFbGVtZW50KSA9PiB2b2lkLCBvcHRpb25zPzogVXNlU2NyaXB0VGFnT3B0aW9ucyk6IFVzZVNjcmlwdFRhZ1JldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVNjcm9sbExvY2svaW5kZXguZC50c1xuLyoqXG4gKiBMb2NrIHNjcm9sbGluZyBvZiB0aGUgZWxlbWVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTY3JvbGxMb2NrXG4gKiBAcGFyYW0gZWxlbWVudFxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNjcm9sbExvY2soZWxlbWVudDogTWF5YmVSZWZPckdldHRlcjxIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQgfCBXaW5kb3cgfCBEb2N1bWVudCB8IG51bGwgfCB1bmRlZmluZWQ+LCBpbml0aWFsU3RhdGU/OiBib29sZWFuKTogdnVlMC5Xcml0YWJsZUNvbXB1dGVkUmVmPGJvb2xlYW4sIGJvb2xlYW4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU2Vzc2lvblN0b3JhZ2UvaW5kZXguZC50c1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTZXNzaW9uU3RvcmFnZShrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIG9wdGlvbnM/OiBVc2VTdG9yYWdlT3B0aW9uczxzdHJpbmc+KTogUmVtb3ZhYmxlUmVmPHN0cmluZz47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNlc3Npb25TdG9yYWdlKGtleTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBpbml0aWFsVmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbj4sIG9wdGlvbnM/OiBVc2VTdG9yYWdlT3B0aW9uczxib29sZWFuPik6IFJlbW92YWJsZVJlZjxib29sZWFuPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU2Vzc2lvblN0b3JhZ2Uoa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8bnVtYmVyPik6IFJlbW92YWJsZVJlZjxudW1iZXI+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTZXNzaW9uU3RvcmFnZTxUPihrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8VD4pOiBSZW1vdmFibGVSZWY8VD47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNlc3Npb25TdG9yYWdlPFQgPSB1bmtub3duPihrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPG51bGw+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8VD4pOiBSZW1vdmFibGVSZWY8VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTaGFyZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlU2hhcmVPcHRpb25zIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGZpbGVzPzogRmlsZVtdO1xuICB0ZXh0Pzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgVXNlU2hhcmVSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHNoYXJlOiAob3ZlcnJpZGVPcHRpb25zPzogTWF5YmVSZWZPckdldHRlcjxVc2VTaGFyZU9wdGlvbnM+KSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBXZWIgU2hhcmUgQVBJLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVNoYXJlXG4gKiBAcGFyYW0gc2hhcmVPcHRpb25zXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU2hhcmUoc2hhcmVPcHRpb25zPzogTWF5YmVSZWZPckdldHRlcjxVc2VTaGFyZU9wdGlvbnM+LCBvcHRpb25zPzogQ29uZmlndXJhYmxlTmF2aWdhdG9yKTogVXNlU2hhcmVSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTb3J0ZWQvaW5kZXguZC50c1xudHlwZSBVc2VTb3J0ZWRDb21wYXJlRm48VCA9IGFueT4gPSAoYTogVCwgYjogVCkgPT4gbnVtYmVyO1xudHlwZSBVc2VTb3J0ZWRGbjxUID0gYW55PiA9IChhcnI6IFRbXSwgY29tcGFyZUZuOiBVc2VTb3J0ZWRDb21wYXJlRm48VD4pID0+IFRbXTtcbmludGVyZmFjZSBVc2VTb3J0ZWRPcHRpb25zPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIHNvcnQgYWxnb3JpdGhtXG4gICAqL1xuICBzb3J0Rm4/OiBVc2VTb3J0ZWRGbjxUPjtcbiAgLyoqXG4gICAqIGNvbXBhcmUgZnVuY3Rpb25cbiAgICovXG4gIGNvbXBhcmVGbj86IFVzZVNvcnRlZENvbXBhcmVGbjxUPjtcbiAgLyoqXG4gICAqIGNoYW5nZSB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSBhcnJheVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlydHk/OiBib29sZWFuO1xufVxuLyoqXG4gKiByZWFjdGl2ZSBzb3J0IGFycmF5XG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlU29ydGVkXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU29ydGVkPFQgPSBhbnk+KHNvdXJjZTogTWF5YmVSZWZPckdldHRlcjxUW10+LCBjb21wYXJlRm4/OiBVc2VTb3J0ZWRDb21wYXJlRm48VD4pOiBSZWY8VFtdPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU29ydGVkPFQgPSBhbnk+KHNvdXJjZTogTWF5YmVSZWZPckdldHRlcjxUW10+LCBvcHRpb25zPzogVXNlU29ydGVkT3B0aW9uczxUPik6IFJlZjxUW10+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTb3J0ZWQ8VCA9IGFueT4oc291cmNlOiBNYXliZVJlZk9yR2V0dGVyPFRbXT4sIGNvbXBhcmVGbj86IFVzZVNvcnRlZENvbXBhcmVGbjxUPiwgb3B0aW9ucz86IE9taXQ8VXNlU29ydGVkT3B0aW9uczxUPiwgJ2NvbXBhcmVGbic+KTogUmVmPFRbXT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTcGVlY2hSZWNvZ25pdGlvbi90eXBlcy5kLnRzXG50eXBlIFNwZWVjaFJlY29nbml0aW9uRXJyb3JDb2RlID0gJ2Fib3J0ZWQnIHwgJ2F1ZGlvLWNhcHR1cmUnIHwgJ2JhZC1ncmFtbWFyJyB8ICdsYW5ndWFnZS1ub3Qtc3VwcG9ydGVkJyB8ICduZXR3b3JrJyB8ICduby1zcGVlY2gnIHwgJ25vdC1hbGxvd2VkJyB8ICdzZXJ2aWNlLW5vdC1hbGxvd2VkJztcbmludGVyZmFjZSBTcGVlY2hHcmFtbWFyIHtcbiAgc3JjOiBzdHJpbmc7XG4gIHdlaWdodDogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFNwZWVjaEdyYW1tYXJMaXN0IHtcbiAgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG4gIGFkZEZyb21TdHJpbmc6IChzdHJpbmc6IHN0cmluZywgd2VpZ2h0PzogbnVtYmVyKSA9PiB2b2lkO1xuICBhZGRGcm9tVVJJOiAoc3JjOiBzdHJpbmcsIHdlaWdodD86IG51bWJlcikgPT4gdm9pZDtcbiAgaXRlbTogKGluZGV4OiBudW1iZXIpID0+IFNwZWVjaEdyYW1tYXI7XG4gIFtpbmRleDogbnVtYmVyXTogU3BlZWNoR3JhbW1hcjtcbn1cbmludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG4gIHJlYWRvbmx5IGVycm9yOiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yQ29kZTtcbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG4gIHJlYWRvbmx5IHJlc3VsdEluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlc3VsdHM6IFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDtcbn1cbmludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50TWFwIHtcbiAgYXVkaW9lbmQ6IEV2ZW50O1xuICBhdWRpb3N0YXJ0OiBFdmVudDtcbiAgZW5kOiBFdmVudDtcbiAgZXJyb3I6IFNwZWVjaFJlY29nbml0aW9uRXJyb3JFdmVudDtcbiAgbm9tYXRjaDogU3BlZWNoUmVjb2duaXRpb25FdmVudDtcbiAgcmVzdWx0OiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50O1xuICBzb3VuZGVuZDogRXZlbnQ7XG4gIHNvdW5kc3RhcnQ6IEV2ZW50O1xuICBzcGVlY2hlbmQ6IEV2ZW50O1xuICBzcGVlY2hzdGFydDogRXZlbnQ7XG4gIHN0YXJ0OiBFdmVudDtcbn1cbmludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbiBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgY29udGludW91czogYm9vbGVhbjtcbiAgZ3JhbW1hcnM6IFNwZWVjaEdyYW1tYXJMaXN0O1xuICBpbnRlcmltUmVzdWx0czogYm9vbGVhbjtcbiAgbGFuZzogc3RyaW5nO1xuICBtYXhBbHRlcm5hdGl2ZXM6IG51bWJlcjtcbiAgb25hdWRpb2VuZDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IEV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgb25hdWRpb3N0YXJ0OiAoKHRoaXM6IFNwZWVjaFJlY29nbml0aW9uLCBldjogRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBvbmVuZDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IEV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgb25lcnJvcjogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IFNwZWVjaFJlY29nbml0aW9uRXJyb3JFdmVudCkgPT4gYW55KSB8IG51bGw7XG4gIG9ubm9tYXRjaDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IFNwZWVjaFJlY29nbml0aW9uRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBvbnJlc3VsdDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IFNwZWVjaFJlY29nbml0aW9uRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBvbnNvdW5kZW5kOiAoKHRoaXM6IFNwZWVjaFJlY29nbml0aW9uLCBldjogRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBvbnNvdW5kc3RhcnQ6ICgodGhpczogU3BlZWNoUmVjb2duaXRpb24sIGV2OiBFdmVudCkgPT4gYW55KSB8IG51bGw7XG4gIG9uc3BlZWNoZW5kOiAoKHRoaXM6IFNwZWVjaFJlY29nbml0aW9uLCBldjogRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBvbnNwZWVjaHN0YXJ0OiAoKHRoaXM6IFNwZWVjaFJlY29nbml0aW9uLCBldjogRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBvbnN0YXJ0OiAoKHRoaXM6IFNwZWVjaFJlY29nbml0aW9uLCBldjogRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBhYm9ydDogKCkgPT4gdm9pZDtcbiAgc3RhcnQ6ICgpID0+IHZvaWQ7XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG4gIGFkZEV2ZW50TGlzdGVuZXI6ICg8SyQxIGV4dGVuZHMga2V5b2YgU3BlZWNoUmVjb2duaXRpb25FdmVudE1hcD4odHlwZTogSyQxLCBsaXN0ZW5lcjogKHRoaXM6IFNwZWVjaFJlY29nbml0aW9uLCBldjogU3BlZWNoUmVjb2duaXRpb25FdmVudE1hcFtLJDFdKSA9PiBhbnksIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQpICYgKCh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkKTtcbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKDxLJDEgZXh0ZW5kcyBrZXlvZiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50TWFwPih0eXBlOiBLJDEsIGxpc3RlbmVyOiAodGhpczogU3BlZWNoUmVjb2duaXRpb24sIGV2OiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50TWFwW0skMV0pID0+IGFueSwgb3B0aW9ucz86IGJvb2xlYW4gfCBFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCkgJiAoKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3QsIG9wdGlvbnM/OiBib29sZWFuIHwgRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQpO1xufVxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU3BlZWNoUmVjb2duaXRpb24vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVNwZWVjaFJlY29nbml0aW9uT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIGNvbnRpbnVvdXMgcmVzdWx0cyBhcmUgcmV0dXJuZWQgZm9yIGVhY2ggcmVjb2duaXRpb24sIG9yIG9ubHkgYSBzaW5nbGUgcmVzdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBjb250aW51b3VzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgaW50ZXJpbSByZXN1bHRzIHNob3VsZCBiZSByZXR1cm5lZCAodHJ1ZSkgb3Igbm90IChmYWxzZS4pIEludGVyaW0gcmVzdWx0cyBhcmUgcmVzdWx0cyB0aGF0IGFyZSBub3QgeWV0IGZpbmFsXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGludGVyaW1SZXN1bHRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExhbmd1YWdlIGZvciBTcGVlY2hSZWNvZ25pdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAnZW4tVVMnXG4gICAqL1xuICBsYW5nPzogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+O1xuICAvKipcbiAgICogQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBtYXhpbXVtIHJldHVybmVkIGFsdGVybmF0aXZlcyBmb3IgZWFjaCByZXN1bHQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NwZWVjaFJlY29nbml0aW9uL21heEFsdGVybmF0aXZlc1xuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBtYXhBbHRlcm5hdGl2ZXM/OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgVXNlU3BlZWNoUmVjb2duaXRpb25SZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGlzTGlzdGVuaW5nOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBpc0ZpbmFsOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICByZWNvZ25pdGlvbjogU3BlZWNoUmVjb2duaXRpb24gfCB1bmRlZmluZWQ7XG4gIHJlc3VsdDogU2hhbGxvd1JlZjxzdHJpbmc+O1xuICBlcnJvcjogU2hhbGxvd1JlZjxTcGVlY2hSZWNvZ25pdGlvbkVycm9yRXZlbnQgfCBFcnJvciB8IHVuZGVmaW5lZD47XG4gIHRvZ2dsZTogKHZhbHVlPzogYm9vbGVhbikgPT4gdm9pZDtcbiAgc3RhcnQ6ICgpID0+IHZvaWQ7XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIFNwZWVjaFJlY29nbml0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVNwZWVjaFJlY29nbml0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TcGVlY2hSZWNvZ25pdGlvbiBTcGVlY2hSZWNvZ25pdGlvblxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTcGVlY2hSZWNvZ25pdGlvbihvcHRpb25zPzogVXNlU3BlZWNoUmVjb2duaXRpb25PcHRpb25zKTogVXNlU3BlZWNoUmVjb2duaXRpb25SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTcGVlY2hTeW50aGVzaXMvaW5kZXguZC50c1xudHlwZSBVc2VTcGVlY2hTeW50aGVzaXNTdGF0dXMgPSAnaW5pdCcgfCAncGxheScgfCAncGF1c2UnIHwgJ2VuZCc7XG5pbnRlcmZhY2UgVXNlU3BlZWNoU3ludGhlc2lzT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBMYW5ndWFnZSBmb3IgU3BlZWNoU3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0ICdlbi1VUydcbiAgICovXG4gIGxhbmc/OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz47XG4gIC8qKlxuICAgKiBHZXRzIGFuZCBzZXRzIHRoZSBwaXRjaCBhdCB3aGljaCB0aGUgdXR0ZXJhbmNlIHdpbGwgYmUgc3Bva2VuIGF0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBwaXRjaD86IE1heWJlUmVmT3JHZXR0ZXI8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlWydwaXRjaCddPjtcbiAgLyoqXG4gICAqIEdldHMgYW5kIHNldHMgdGhlIHNwZWVkIGF0IHdoaWNoIHRoZSB1dHRlcmFuY2Ugd2lsbCBiZSBzcG9rZW4gYXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJhdGU/OiBNYXliZVJlZk9yR2V0dGVyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZVsncmF0ZSddPjtcbiAgLyoqXG4gICAqIEdldHMgYW5kIHNldHMgdGhlIHZvaWNlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNwZWFrIHRoZSB1dHRlcmFuY2UuXG4gICAqL1xuICB2b2ljZT86IE1heWJlUmVmPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPjtcbiAgLyoqXG4gICAqIEdldHMgYW5kIHNldHMgdGhlIHZvbHVtZSB0aGF0IHRoZSB1dHRlcmFuY2Ugd2lsbCBiZSBzcG9rZW4gYXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHZvbHVtZT86IE1heWJlUmVmT3JHZXR0ZXI8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlWyd2b2x1bWUnXT47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBib3VuZGFyeSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqL1xuICBvbkJvdW5kYXJ5PzogKGV2ZW50OiBTcGVlY2hTeW50aGVzaXNFdmVudCkgPT4gdm9pZDtcbn1cbmludGVyZmFjZSBVc2VTcGVlY2hTeW50aGVzaXNSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGlzUGxheWluZzogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgc3RhdHVzOiBTaGFsbG93UmVmPFVzZVNwZWVjaFN5bnRoZXNpc1N0YXR1cz47XG4gIHV0dGVyYW5jZTogQ29tcHV0ZWRSZWY8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPjtcbiAgZXJyb3I6IFNoYWxsb3dSZWY8U3BlZWNoU3ludGhlc2lzRXJyb3JFdmVudCB8IHVuZGVmaW5lZD47XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG4gIHRvZ2dsZTogKHZhbHVlPzogYm9vbGVhbikgPT4gdm9pZDtcbiAgc3BlYWs6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIFNwZWVjaFN5bnRoZXNpcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTcGVlY2hTeW50aGVzaXNcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NwZWVjaFN5bnRoZXNpcyBTcGVlY2hTeW50aGVzaXNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTcGVlY2hTeW50aGVzaXModGV4dDogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBvcHRpb25zPzogVXNlU3BlZWNoU3ludGhlc2lzT3B0aW9ucyk6IFVzZVNwZWVjaFN5bnRoZXNpc1JldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVN0ZXBwZXIvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVN0ZXBwZXJSZXR1cm48U3RlcE5hbWUsIFN0ZXBzLCBTdGVwPiB7XG4gIC8qKiBMaXN0IG9mIHN0ZXBzLiAqL1xuICBzdGVwczogUmVhZG9ubHk8UmVmPFN0ZXBzPj47XG4gIC8qKiBMaXN0IG9mIHN0ZXAgbmFtZXMuICovXG4gIHN0ZXBOYW1lczogUmVhZG9ubHk8UmVmPFN0ZXBOYW1lW10+PjtcbiAgLyoqIEluZGV4IG9mIHRoZSBjdXJyZW50IHN0ZXAuICovXG4gIGluZGV4OiBSZWY8bnVtYmVyPjtcbiAgLyoqIEN1cnJlbnQgc3RlcC4gKi9cbiAgY3VycmVudDogQ29tcHV0ZWRSZWY8U3RlcD47XG4gIC8qKiBOZXh0IHN0ZXAsIG9yIHVuZGVmaW5lZCBpZiB0aGUgY3VycmVudCBzdGVwIGlzIHRoZSBsYXN0IG9uZS4gKi9cbiAgbmV4dDogQ29tcHV0ZWRSZWY8U3RlcE5hbWUgfCB1bmRlZmluZWQ+O1xuICAvKiogUHJldmlvdXMgc3RlcCwgb3IgdW5kZWZpbmVkIGlmIHRoZSBjdXJyZW50IHN0ZXAgaXMgdGhlIGZpcnN0IG9uZS4gKi9cbiAgcHJldmlvdXM6IENvbXB1dGVkUmVmPFN0ZXBOYW1lIHwgdW5kZWZpbmVkPjtcbiAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgc3RlcCBpcyB0aGUgZmlyc3Qgb25lLiAqL1xuICBpc0ZpcnN0OiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgc3RlcCBpcyB0aGUgbGFzdCBvbmUuICovXG4gIGlzTGFzdDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIC8qKiBHZXQgdGhlIHN0ZXAgYXQgdGhlIHNwZWNpZmllZCBpbmRleC4gKi9cbiAgYXQ6IChpbmRleDogbnVtYmVyKSA9PiBTdGVwIHwgdW5kZWZpbmVkO1xuICAvKiogR2V0IGEgc3RlcCBieSB0aGUgc3BlY2lmaWVkIG5hbWUuICovXG4gIGdldDogKHN0ZXA6IFN0ZXBOYW1lKSA9PiBTdGVwIHwgdW5kZWZpbmVkO1xuICAvKiogR28gdG8gdGhlIHNwZWNpZmllZCBzdGVwLiAqL1xuICBnb1RvOiAoc3RlcDogU3RlcE5hbWUpID0+IHZvaWQ7XG4gIC8qKiBHbyB0byB0aGUgbmV4dCBzdGVwLiBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgc3RlcCBpcyB0aGUgbGFzdCBvbmUuICovXG4gIGdvVG9OZXh0OiAoKSA9PiB2b2lkO1xuICAvKiogR28gdG8gdGhlIHByZXZpb3VzIHN0ZXAuIERvZXMgbm90aGluZyBpZiB0aGUgY3VycmVudCBzdGVwIGlzIHRoZSBwcmV2aW91cyBvbmUuICovXG4gIGdvVG9QcmV2aW91czogKCkgPT4gdm9pZDtcbiAgLyoqIEdvIGJhY2sgdG8gdGhlIGdpdmVuIHN0ZXAsIG9ubHkgaWYgdGhlIGN1cnJlbnQgc3RlcCBpcyBhZnRlci4gKi9cbiAgZ29CYWNrVG86IChzdGVwOiBTdGVwTmFtZSkgPT4gdm9pZDtcbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBzdGVwIGlzIHRoZSBuZXh0IHN0ZXAuICovXG4gIGlzTmV4dDogKHN0ZXA6IFN0ZXBOYW1lKSA9PiBib29sZWFuO1xuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHN0ZXAgaXMgdGhlIHByZXZpb3VzIHN0ZXAuICovXG4gIGlzUHJldmlvdXM6IChzdGVwOiBTdGVwTmFtZSkgPT4gYm9vbGVhbjtcbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBzdGVwIGlzIHRoZSBjdXJyZW50IHN0ZXAuICovXG4gIGlzQ3VycmVudDogKHN0ZXA6IFN0ZXBOYW1lKSA9PiBib29sZWFuO1xuICAvKiogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHN0ZXAgaXMgYmVmb3JlIHRoZSBnaXZlbiBzdGVwLiAqL1xuICBpc0JlZm9yZTogKHN0ZXA6IFN0ZXBOYW1lKSA9PiBib29sZWFuO1xuICAvKiogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHN0ZXAgaXMgYWZ0ZXIgdGhlIGdpdmVuIHN0ZXAuICovXG4gIGlzQWZ0ZXI6IChzdGVwOiBTdGVwTmFtZSkgPT4gYm9vbGVhbjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RlcHBlcjxUIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyPihzdGVwczogTWF5YmVSZWY8VFtdPiwgaW5pdGlhbFN0ZXA/OiBUKTogVXNlU3RlcHBlclJldHVybjxULCBUW10sIFQ+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdGVwcGVyPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihzdGVwczogTWF5YmVSZWY8VD4sIGluaXRpYWxTdGVwPzoga2V5b2YgVCk6IFVzZVN0ZXBwZXJSZXR1cm48RXhjbHVkZTxrZXlvZiBULCBzeW1ib2w+LCBULCBUW2tleW9mIFRdPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVN0b3JhZ2VBc3luYy9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlU3RvcmFnZUFzeW5jT3B0aW9uczxUPiBleHRlbmRzIE9taXQ8VXNlU3RvcmFnZU9wdGlvbnM8VD4sICdzZXJpYWxpemVyJz4ge1xuICAvKipcbiAgICogQ3VzdG9tIGRhdGEgc2VyaWFsaXphdGlvblxuICAgKi9cbiAgc2VyaWFsaXplcj86IFNlcmlhbGl6ZXJBc3luYzxUPjtcbiAgLyoqXG4gICAqIE9uIGZpcnN0IHZhbHVlIGxvYWRlZCBob29rLlxuICAgKi9cbiAgb25SZWFkeT86ICh2YWx1ZTogVCkgPT4gdm9pZDtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RvcmFnZUFzeW5jKGtleTogc3RyaW5nLCBpbml0aWFsVmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgc3RvcmFnZT86IFN0b3JhZ2VMaWtlQXN5bmMsIG9wdGlvbnM/OiBVc2VTdG9yYWdlQXN5bmNPcHRpb25zPHN0cmluZz4pOiBSZW1vdmFibGVSZWY8c3RyaW5nPiAmIFByb21pc2U8UmVtb3ZhYmxlUmVmPHN0cmluZz4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdG9yYWdlQXN5bmMoa2V5OiBzdHJpbmcsIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxib29sZWFuPiwgc3RvcmFnZT86IFN0b3JhZ2VMaWtlQXN5bmMsIG9wdGlvbnM/OiBVc2VTdG9yYWdlQXN5bmNPcHRpb25zPGJvb2xlYW4+KTogUmVtb3ZhYmxlUmVmPGJvb2xlYW4+ICYgUHJvbWlzZTxSZW1vdmFibGVSZWY8Ym9vbGVhbj4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdG9yYWdlQXN5bmMoa2V5OiBzdHJpbmcsIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+LCBzdG9yYWdlPzogU3RvcmFnZUxpa2VBc3luYywgb3B0aW9ucz86IFVzZVN0b3JhZ2VBc3luY09wdGlvbnM8bnVtYmVyPik6IFJlbW92YWJsZVJlZjxudW1iZXI+ICYgUHJvbWlzZTxSZW1vdmFibGVSZWY8bnVtYmVyPj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN0b3JhZ2VBc3luYzxUPihrZXk6IHN0cmluZywgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBzdG9yYWdlPzogU3RvcmFnZUxpa2VBc3luYywgb3B0aW9ucz86IFVzZVN0b3JhZ2VBc3luY09wdGlvbnM8VD4pOiBSZW1vdmFibGVSZWY8VD4gJiBQcm9taXNlPFJlbW92YWJsZVJlZjxUPj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN0b3JhZ2VBc3luYzxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcsIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxudWxsPiwgc3RvcmFnZT86IFN0b3JhZ2VMaWtlQXN5bmMsIG9wdGlvbnM/OiBVc2VTdG9yYWdlQXN5bmNPcHRpb25zPFQ+KTogUmVtb3ZhYmxlUmVmPFQ+ICYgUHJvbWlzZTxSZW1vdmFibGVSZWY8VD4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU3R5bGVUYWcvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVN0eWxlVGFnT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZURvY3VtZW50IHtcbiAgLyoqXG4gICAqIE1lZGlhIHF1ZXJ5IGZvciBzdHlsZXMgdG8gYXBwbHlcbiAgICovXG4gIG1lZGlhPzogc3RyaW5nO1xuICAvKipcbiAgICogTG9hZCB0aGUgc3R5bGUgaW1tZWRpYXRlbHlcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE1hbnVhbCBjb250cm9scyB0aGUgdGltaW5nIG9mIGxvYWRpbmcgYW5kIHVubG9hZGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbWFudWFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERPTSBpZCBvZiB0aGUgc3R5bGUgdGFnXG4gICAqXG4gICAqIEBkZWZhdWx0IGF1dG8taW5jcmVtZW50ZWRcbiAgICovXG4gIGlkPzogc3RyaW5nO1xuICAvKipcbiAgICogTm9uY2UgdmFsdWUgZm9yIENTUCAoQ29udGVudCBTZWN1cml0eSBQb2xpY3kpXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgbm9uY2U/OiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgVXNlU3R5bGVUYWdSZXR1cm4ge1xuICBpZDogc3RyaW5nO1xuICBjc3M6IFNoYWxsb3dSZWY8c3RyaW5nPjtcbiAgbG9hZDogKCkgPT4gdm9pZDtcbiAgdW5sb2FkOiAoKSA9PiB2b2lkO1xuICBpc0xvYWRlZDogUmVhZG9ubHk8U2hhbGxvd1JlZjxib29sZWFuPj47XG59XG4vKipcbiAqIEluamVjdCA8c3R5bGU+IGVsZW1lbnQgaW4gaGVhZC5cbiAqXG4gKiBPdmVybG9hZDogT21pdHRlZCBpZFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVN0eWxlVGFnXG4gKiBAcGFyYW0gY3NzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN0eWxlVGFnKGNzczogTWF5YmVSZWY8c3RyaW5nPiwgb3B0aW9ucz86IFVzZVN0eWxlVGFnT3B0aW9ucyk6IFVzZVN0eWxlVGFnUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU3VwcG9ydGVkL2luZGV4LmQudHNcbnR5cGUgVXNlU3VwcG9ydGVkUmV0dXJuID0gQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN1cHBvcnRlZChjYWxsYmFjazogKCkgPT4gdW5rbm93bik6IFVzZVN1cHBvcnRlZFJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRlbXBsYXRlUmVmc0xpc3QvaW5kZXguZC50c1xudHlwZSBUZW1wbGF0ZVJlZnNMaXN0PFQ+ID0gVFtdICYge1xuICBzZXQ6IChlbDogb2JqZWN0IHwgbnVsbCkgPT4gdm9pZDtcbn07XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRlbXBsYXRlUmVmc0xpc3Q8VCA9IEVsZW1lbnQ+KCk6IFJlYWRvbmx5PFJlZjxSZWFkb25seTxUZW1wbGF0ZVJlZnNMaXN0PFQ+Pj4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVGV4dERpcmVjdGlvbi9pbmRleC5kLnRzXG50eXBlIFVzZVRleHREaXJlY3Rpb25WYWx1ZSA9ICdsdHInIHwgJ3J0bCcgfCAnYXV0byc7XG5pbnRlcmZhY2UgVXNlVGV4dERpcmVjdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVEb2N1bWVudCB7XG4gIC8qKlxuICAgKiBDU1MgU2VsZWN0b3IgZm9yIHRoZSB0YXJnZXQgZWxlbWVudCBhcHBseWluZyB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAnaHRtbCdcbiAgICovXG4gIHNlbGVjdG9yPzogc3RyaW5nO1xuICAvKipcbiAgICogT2JzZXJ2ZSBgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcilgIGNoYW5nZXMgdXNpbmcgTXV0YXRpb25PYnNlcnZlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBvYnNlcnZlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWVcbiAgICpcbiAgICogQGRlZmF1bHQgJ2x0cidcbiAgICovXG4gIGluaXRpYWxWYWx1ZT86IFVzZVRleHREaXJlY3Rpb25WYWx1ZTtcbn1cbi8qKlxuICogUmVhY3RpdmUgZGlyIG9mIHRoZSBlbGVtZW50J3MgdGV4dC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VUZXh0RGlyZWN0aW9uXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUZXh0RGlyZWN0aW9uKG9wdGlvbnM/OiBVc2VUZXh0RGlyZWN0aW9uT3B0aW9ucyk6IHZ1ZTAuV3JpdGFibGVDb21wdXRlZFJlZjxVc2VUZXh0RGlyZWN0aW9uVmFsdWUsIFVzZVRleHREaXJlY3Rpb25WYWx1ZT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VUZXh0U2VsZWN0aW9uL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VUZXh0U2VsZWN0aW9uT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7fVxuaW50ZXJmYWNlIFVzZVRleHRTZWxlY3Rpb25SZXR1cm4ge1xuICB0ZXh0OiBDb21wdXRlZFJlZjxzdHJpbmc+O1xuICByZWN0czogQ29tcHV0ZWRSZWY8RE9NUmVjdFtdPjtcbiAgcmFuZ2VzOiBDb21wdXRlZFJlZjxSYW5nZVtdPjtcbiAgc2VsZWN0aW9uOiBTaGFsbG93UmVmPFNlbGVjdGlvbiB8IG51bGw+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZWx5IHRyYWNrIHVzZXIgdGV4dCBzZWxlY3Rpb24gYmFzZWQgb24gW2BXaW5kb3cuZ2V0U2VsZWN0aW9uYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9nZXRTZWxlY3Rpb24pLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVRleHRTZWxlY3Rpb25cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRleHRTZWxlY3Rpb24ob3B0aW9ucz86IFVzZVRleHRTZWxlY3Rpb25PcHRpb25zKTogVXNlVGV4dFNlbGVjdGlvblJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRleHRhcmVhQXV0b3NpemUvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVRleHRhcmVhQXV0b3NpemVPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqIFRleHRhcmVhIGVsZW1lbnQgdG8gYXV0b3NpemUuICovXG4gIGVsZW1lbnQ/OiBNYXliZVJlZjxIVE1MVGV4dEFyZWFFbGVtZW50IHwgdW5kZWZpbmVkIHwgbnVsbD47XG4gIC8qKiBUZXh0YXJlYSBjb250ZW50LiAqL1xuICBpbnB1dD86IE1heWJlUmVmPHN0cmluZz47XG4gIC8qKiBXYXRjaCBzb3VyY2VzIHRoYXQgc2hvdWxkIHRyaWdnZXIgYSB0ZXh0YXJlYSByZXNpemUuICovXG4gIHdhdGNoPzogV2F0Y2hTb3VyY2UgfCBNdWx0aVdhdGNoU291cmNlcztcbiAgLyoqIEZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSB0ZXh0YXJlYSBzaXplIGNoYW5nZXMuICovXG4gIG9uUmVzaXplPzogKCkgPT4gdm9pZDtcbiAgLyoqIFNwZWNpZnkgc3R5bGUgdGFyZ2V0IHRvIGFwcGx5IHRoZSBoZWlnaHQgYmFzZWQgb24gdGV4dGFyZWEgY29udGVudC4gSWYgbm90IHByb3ZpZGVkIGl0IHdpbGwgdXNlIHRleHRhcmVhIGl0IHNlbGYuICAqL1xuICBzdHlsZVRhcmdldD86IE1heWJlUmVmPEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPjtcbiAgLyoqIFNwZWNpZnkgdGhlIHN0eWxlIHByb3BlcnR5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIG1hbmlwdWxhdGUgaGVpZ2h0LiBDYW4gYmUgYGhlaWdodCB8IG1pbkhlaWdodGAuIERlZmF1bHQgdmFsdWUgaXMgYGhlaWdodGAuICovXG4gIHN0eWxlUHJvcD86ICdoZWlnaHQnIHwgJ21pbkhlaWdodCc7XG59XG5pbnRlcmZhY2UgVXNlVGV4dGFyZWFBdXRvc2l6ZVJldHVybiB7XG4gIHRleHRhcmVhOiBSZWY8SFRNTFRleHRBcmVhRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGw+O1xuICBpbnB1dDogUmVmPHN0cmluZz47XG4gIHRyaWdnZXJSZXNpemU6ICgpID0+IHZvaWQ7XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRleHRhcmVhQXV0b3NpemUob3B0aW9ucz86IFVzZVRleHRhcmVhQXV0b3NpemVPcHRpb25zKTogVXNlVGV4dGFyZWFBdXRvc2l6ZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRocm90dGxlZFJlZkhpc3RvcnkvaW5kZXguZC50c1xudHlwZSBVc2VUaHJvdHRsZWRSZWZIaXN0b3J5T3B0aW9uczxSYXcsIFNlcmlhbGl6ZWQgPSBSYXc+ID0gT21pdDxVc2VSZWZIaXN0b3J5T3B0aW9uczxSYXcsIFNlcmlhbGl6ZWQ+LCAnZXZlbnRGaWx0ZXInPiAmIHtcbiAgdGhyb3R0bGU/OiBNYXliZVJlZjxudW1iZXI+O1xuICB0cmFpbGluZz86IGJvb2xlYW47XG59O1xudHlwZSBVc2VUaHJvdHRsZWRSZWZIaXN0b3J5UmV0dXJuPFJhdywgU2VyaWFsaXplZCA9IFJhdz4gPSBVc2VSZWZIaXN0b3J5UmV0dXJuPFJhdywgU2VyaWFsaXplZD47XG4vKipcbiAqIFNob3J0aGFuZCBmb3IgW3VzZVJlZkhpc3RvcnldKGh0dHBzOi8vdnVldXNlLm9yZy91c2VSZWZIaXN0b3J5KSB3aXRoIHRocm90dGxlZCBmaWx0ZXIuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlVGhyb3R0bGVkUmVmSGlzdG9yeVxuICogQHBhcmFtIHNvdXJjZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUaHJvdHRsZWRSZWZIaXN0b3J5PFJhdywgU2VyaWFsaXplZCA9IFJhdz4oc291cmNlOiBSZWY8UmF3Piwgb3B0aW9ucz86IFVzZVRocm90dGxlZFJlZkhpc3RvcnlPcHRpb25zPFJhdywgU2VyaWFsaXplZD4pOiBVc2VUaHJvdHRsZWRSZWZIaXN0b3J5UmV0dXJuPFJhdywgU2VyaWFsaXplZD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VUaW1lQWdvL2luZGV4LmQudHNcbnR5cGUgVXNlVGltZUFnb0Zvcm1hdHRlcjxUID0gbnVtYmVyPiA9ICh2YWx1ZTogVCwgaXNQYXN0OiBib29sZWFuKSA9PiBzdHJpbmc7XG50eXBlIFVzZVRpbWVBZ29Vbml0TmFtZXNEZWZhdWx0ID0gJ3NlY29uZCcgfCAnbWludXRlJyB8ICdob3VyJyB8ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJztcbmludGVyZmFjZSBVc2VUaW1lQWdvTWVzc2FnZXNCdWlsdEluIHtcbiAganVzdE5vdzogc3RyaW5nO1xuICBwYXN0OiBzdHJpbmcgfCBVc2VUaW1lQWdvRm9ybWF0dGVyPHN0cmluZz47XG4gIGZ1dHVyZTogc3RyaW5nIHwgVXNlVGltZUFnb0Zvcm1hdHRlcjxzdHJpbmc+O1xuICBpbnZhbGlkOiBzdHJpbmc7XG59XG50eXBlIFVzZVRpbWVBZ29NZXNzYWdlczxVbml0TmFtZXMgZXh0ZW5kcyBzdHJpbmcgPSBVc2VUaW1lQWdvVW5pdE5hbWVzRGVmYXVsdD4gPSBVc2VUaW1lQWdvTWVzc2FnZXNCdWlsdEluICYgUmVjb3JkPFVuaXROYW1lcywgc3RyaW5nIHwgVXNlVGltZUFnb0Zvcm1hdHRlcjxudW1iZXI+PjtcbmludGVyZmFjZSBGb3JtYXRUaW1lQWdvT3B0aW9uczxVbml0TmFtZXMgZXh0ZW5kcyBzdHJpbmcgPSBVc2VUaW1lQWdvVW5pdE5hbWVzRGVmYXVsdD4ge1xuICAvKipcbiAgICogTWF4aW11bSB1bml0IChvZiBkaWZmIGluIG1pbGxpc2Vjb25kcykgdG8gZGlzcGxheSB0aGUgZnVsbCBkYXRlIGluc3RlYWQgb2YgcmVsYXRpdmVcbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBtYXg/OiBVbml0TmFtZXMgfCBudW1iZXI7XG4gIC8qKlxuICAgKiBGb3JtYXR0ZXIgZm9yIGZ1bGwgZGF0ZVxuICAgKi9cbiAgZnVsbERhdGVGb3JtYXR0ZXI/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuICAvKipcbiAgICogTWVzc2FnZXMgZm9yIGZvcm1hdHRpbmcgdGhlIHN0cmluZ1xuICAgKi9cbiAgbWVzc2FnZXM/OiBVc2VUaW1lQWdvTWVzc2FnZXM8VW5pdE5hbWVzPjtcbiAgLyoqXG4gICAqIE1pbmltdW0gZGlzcGxheSB0aW1lIHVuaXQgKGRlZmF1bHQgaXMgbWludXRlKVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2hvd1NlY29uZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSb3VuZGluZyBtZXRob2QgdG8gYXBwbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdyb3VuZCdcbiAgICovXG4gIHJvdW5kaW5nPzogJ3JvdW5kJyB8ICdjZWlsJyB8ICdmbG9vcicgfCBudW1iZXI7XG4gIC8qKlxuICAgKiBDdXN0b20gdW5pdHNcbiAgICovXG4gIHVuaXRzPzogVXNlVGltZUFnb1VuaXQ8VW5pdE5hbWVzPltdO1xufVxuaW50ZXJmYWNlIFVzZVRpbWVBZ29PcHRpb25zPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbiwgVW5pdE5hbWVzIGV4dGVuZHMgc3RyaW5nID0gVXNlVGltZUFnb1VuaXROYW1lc0RlZmF1bHQ+IGV4dGVuZHMgRm9ybWF0VGltZUFnb09wdGlvbnM8VW5pdE5hbWVzPiwgQ29uZmlndXJhYmxlU2NoZWR1bGVyIHtcbiAgLyoqXG4gICAqIEV4cG9zZSBtb3JlIGNvbnRyb2xzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb250cm9scz86IENvbnRyb2xzO1xuICAvKipcbiAgICogSW50ZXJ2YWxzIHRvIHVwZGF0ZSwgc2V0IDAgdG8gZGlzYWJsZSBhdXRvIHVwZGF0ZVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBzY2hlZHVsZXJgIG9wdGlvbiBpbnN0ZWFkXG4gICAqIEBkZWZhdWx0IDMwXzAwMFxuICAgKi9cbiAgdXBkYXRlSW50ZXJ2YWw/OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgVXNlVGltZUFnb1VuaXQ8VW5pdCBleHRlbmRzIHN0cmluZyA9IFVzZVRpbWVBZ29Vbml0TmFtZXNEZWZhdWx0PiB7XG4gIG1heDogbnVtYmVyO1xuICB2YWx1ZTogbnVtYmVyO1xuICBuYW1lOiBVbml0O1xufVxudHlwZSBVc2VUaW1lQWdvUmV0dXJuPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IENvbnRyb2xzIGV4dGVuZHMgdHJ1ZSA/IHtcbiAgdGltZUFnbzogQ29tcHV0ZWRSZWY8c3RyaW5nPjtcbn0gJiBQYXVzYWJsZSA6IENvbXB1dGVkUmVmPHN0cmluZz47XG4vKipcbiAqIFJlYWN0aXZlIHRpbWUgYWdvIGZvcm1hdHRlci5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VUaW1lQWdvXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUaW1lQWdvPFVuaXROYW1lcyBleHRlbmRzIHN0cmluZyA9IFVzZVRpbWVBZ29Vbml0TmFtZXNEZWZhdWx0Pih0aW1lOiBNYXliZVJlZk9yR2V0dGVyPERhdGUgfCBudW1iZXIgfCBzdHJpbmc+LCBvcHRpb25zPzogVXNlVGltZUFnb09wdGlvbnM8ZmFsc2UsIFVuaXROYW1lcz4pOiBVc2VUaW1lQWdvUmV0dXJuPGZhbHNlPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlVGltZUFnbzxVbml0TmFtZXMgZXh0ZW5kcyBzdHJpbmcgPSBVc2VUaW1lQWdvVW5pdE5hbWVzRGVmYXVsdD4odGltZTogTWF5YmVSZWZPckdldHRlcjxEYXRlIHwgbnVtYmVyIHwgc3RyaW5nPiwgb3B0aW9uczogVXNlVGltZUFnb09wdGlvbnM8dHJ1ZSwgVW5pdE5hbWVzPik6IFVzZVRpbWVBZ29SZXR1cm48dHJ1ZT47XG5kZWNsYXJlIGZ1bmN0aW9uIGZvcm1hdFRpbWVBZ288VW5pdE5hbWVzIGV4dGVuZHMgc3RyaW5nID0gVXNlVGltZUFnb1VuaXROYW1lc0RlZmF1bHQ+KGZyb206IERhdGUsIG9wdGlvbnM/OiBGb3JtYXRUaW1lQWdvT3B0aW9uczxVbml0TmFtZXM+LCBub3c/OiBEYXRlIHwgbnVtYmVyKTogc3RyaW5nO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVGltZUFnb0ludGwvaW5kZXguZC50c1xudHlwZSBMb2NhbGUgPSBJbnRsLlVuaWNvZGVCQ1A0N0xvY2FsZUlkZW50aWZpZXIgfCBJbnRsLkxvY2FsZTtcbmludGVyZmFjZSBGb3JtYXRUaW1lQWdvSW50bE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGxvY2FsZSB0byBmb3JtYXQgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL1JlbGF0aXZlVGltZUZvcm1hdC9SZWxhdGl2ZVRpbWVGb3JtYXQjbG9jYWxlc1xuICAgKi9cbiAgbG9jYWxlPzogTG9jYWxlO1xuICAvKipcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL1JlbGF0aXZlVGltZUZvcm1hdC9SZWxhdGl2ZVRpbWVGb3JtYXQjb3B0aW9uc1xuICAgKi9cbiAgcmVsYXRpdmVUaW1lRm9ybWF0T3B0aW9ucz86IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0T3B0aW9ucztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5zZXJ0IHNwYWNlcyBiZXR3ZWVuIHBhcnRzLlxuICAgKlxuICAgKiBJZ25vcmVkIGlmIGBqb2luUGFydHNgIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbnNlcnRTcGFjZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gZnVuY3Rpb24gdG8gam9pbiB0aGUgcGFydHMgcmV0dXJuZWQgYnkgYEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LmZvcm1hdFRvUGFydHNgLlxuICAgKlxuICAgKiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgam9pbiBsb2dpYy5cbiAgICovXG4gIGpvaW5QYXJ0cz86IChwYXJ0czogSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRQYXJ0W10sIGxvY2FsZT86IEludGwuVW5pY29kZUJDUDQ3TG9jYWxlSWRlbnRpZmllciB8IEludGwuTG9jYWxlKSA9PiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXN0b20gdW5pdHNcbiAgICovXG4gIHVuaXRzPzogVGltZUFnb1VuaXRbXTtcbn1cbmludGVyZmFjZSBVc2VUaW1lQWdvSW50bE9wdGlvbnM8Q29udHJvbHMgZXh0ZW5kcyBib29sZWFuPiBleHRlbmRzIEZvcm1hdFRpbWVBZ29JbnRsT3B0aW9ucywgQ29uZmlndXJhYmxlU2NoZWR1bGVyIHtcbiAgLyoqXG4gICAqIEV4cG9zZSBtb3JlIGNvbnRyb2xzIGFuZCB0aGUgcmF3IGBwYXJ0c2AgcmVzdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY29udHJvbHM/OiBDb250cm9scztcbiAgLyoqXG4gICAqIFVwZGF0ZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMsIHNldCAwIHRvIGRpc2FibGUgYXV0byB1cGRhdGVcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKiBAZGVmYXVsdCAzMF8wMDBcbiAgICovXG4gIHVwZGF0ZUludGVydmFsPzogbnVtYmVyO1xufVxudHlwZSBVc2VUaW1lQWdvUmV0dXJuJDE8Q29udHJvbHMgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+ID0gQ29udHJvbHMgZXh0ZW5kcyB0cnVlID8ge1xuICB0aW1lQWdvSW50bDogQ29tcHV0ZWRSZWY8c3RyaW5nPjtcbiAgcGFydHM6IENvbXB1dGVkUmVmPEludGwuUmVsYXRpdmVUaW1lRm9ybWF0UGFydFtdPjtcbn0gJiBQYXVzYWJsZSA6IENvbXB1dGVkUmVmPHN0cmluZz47XG5pbnRlcmZhY2UgVGltZUFnb1VuaXQge1xuICBuYW1lOiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdFVuaXQ7XG4gIG1zOiBudW1iZXI7XG59XG4vKipcbiAqIEEgcmVhY3RpdmUgd3JhcHBlciBmb3IgYEludGwuUmVsYXRpdmVUaW1lRm9ybWF0YC5cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUaW1lQWdvSW50bCh0aW1lOiBNYXliZVJlZk9yR2V0dGVyPERhdGUgfCBudW1iZXIgfCBzdHJpbmc+LCBvcHRpb25zPzogVXNlVGltZUFnb0ludGxPcHRpb25zPGZhbHNlPik6IFVzZVRpbWVBZ29SZXR1cm4kMTxmYWxzZT47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRpbWVBZ29JbnRsKHRpbWU6IE1heWJlUmVmT3JHZXR0ZXI8RGF0ZSB8IG51bWJlciB8IHN0cmluZz4sIG9wdGlvbnM6IFVzZVRpbWVBZ29JbnRsT3B0aW9uczx0cnVlPik6IFVzZVRpbWVBZ29SZXR1cm4kMTx0cnVlPjtcbi8qKlxuICogTm9uLXJlYWN0aXZlIHZlcnNpb24gb2YgdXNlVGltZUFnb0ludGxcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBmb3JtYXRUaW1lQWdvSW50bChmcm9tOiBEYXRlLCBvcHRpb25zPzogRm9ybWF0VGltZUFnb0ludGxPcHRpb25zLCBub3c/OiBEYXRlIHwgbnVtYmVyKTogc3RyaW5nO1xuLyoqXG4gKiBGb3JtYXQgcGFydHMgaW50byBhIHN0cmluZ1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIGZvcm1hdFRpbWVBZ29JbnRsUGFydHMocGFydHM6IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0UGFydFtdLCBvcHRpb25zPzogRm9ybWF0VGltZUFnb0ludGxPcHRpb25zKTogc3RyaW5nO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVGltZW91dFBvbGwvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVRpbWVvdXRQb2xsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTdGFydCB0aGUgdGltZXIgaW1tZWRpYXRlbHlcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGNhbGxiYWNrIGltbWVkaWF0ZWx5IGFmdGVyIGNhbGxpbmcgYHJlc3VtZWBcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGltbWVkaWF0ZUNhbGxiYWNrPzogYm9vbGVhbjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVGltZW91dFBvbGwoZm46ICgpID0+IEF3YWl0YWJsZTx2b2lkPiwgaW50ZXJ2YWw6IE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyPiwgb3B0aW9ucz86IFVzZVRpbWVvdXRGbk9wdGlvbnMpOiBQYXVzYWJsZTtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRpbWVzdGFtcC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlVGltZXN0YW1wT3B0aW9uczxDb250cm9scyBleHRlbmRzIGJvb2xlYW4+IGV4dGVuZHMgQ29uZmlndXJhYmxlU2NoZWR1bGVyIHtcbiAgLyoqXG4gICAqIEV4cG9zZSBtb3JlIGNvbnRyb2xzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb250cm9scz86IENvbnRyb2xzO1xuICAvKipcbiAgICogT2Zmc2V0IHZhbHVlIGFkZGluZyB0byB0aGUgdmFsdWVcbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgb2Zmc2V0PzogbnVtYmVyO1xuICAvKipcbiAgICogVXBkYXRlIHRoZSB0aW1lc3RhbXAgaW1tZWRpYXRlbHlcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVXBkYXRlIGludGVydmFsLCBvciB1c2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICogQGRlZmF1bHQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAqL1xuICBpbnRlcnZhbD86ICdyZXF1ZXN0QW5pbWF0aW9uRnJhbWUnIHwgbnVtYmVyO1xuICAvKipcbiAgICogQ2FsbGJhY2sgb24gZWFjaCB1cGRhdGVcbiAgICovXG4gIGNhbGxiYWNrPzogKHRpbWVzdGFtcDogbnVtYmVyKSA9PiB2b2lkO1xufVxudHlwZSBVc2VUaW1lc3RhbXBSZXR1cm48Q29udHJvbHMgZXh0ZW5kcyBib29sZWFuPiA9IENvbnRyb2xzIGV4dGVuZHMgdHJ1ZSA/ICh7XG4gIHRpbWVzdGFtcDogU2hhbGxvd1JlZjxudW1iZXI+O1xufSAmIFBhdXNhYmxlKSA6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbi8qKlxuICogUmVhY3RpdmUgY3VycmVudCB0aW1lc3RhbXAuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlVGltZXN0YW1wXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRpbWVzdGFtcChvcHRpb25zPzogVXNlVGltZXN0YW1wT3B0aW9uczxmYWxzZT4pOiBTaGFsbG93UmVmPG51bWJlcj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRpbWVzdGFtcChvcHRpb25zOiBVc2VUaW1lc3RhbXBPcHRpb25zPHRydWU+KToge1xuICB0aW1lc3RhbXA6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbn0gJiBQYXVzYWJsZTtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRpdGxlL2luZGV4LmQudHNcbnR5cGUgVXNlVGl0bGVPcHRpb25zQmFzZSA9IHtcbiAgLyoqXG4gICAqIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHRpdGxlIHdoZW4gdW5tb3VudGVkXG4gICAqIEBwYXJhbSBvcmlnaW5UaXRsZSBvcmlnaW5hbCB0aXRsZVxuICAgKiBAcmV0dXJucyByZXN0b3JlZCB0aXRsZVxuICAgKi9cbiAgcmVzdG9yZU9uVW5tb3VudD86IGZhbHNlIHwgKChvcmlnaW5hbFRpdGxlOiBzdHJpbmcsIGN1cnJlbnRUaXRsZTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTtcbn0gJiAoe1xuICAvKipcbiAgICogT2JzZXJ2ZSBgZG9jdW1lbnQudGl0bGVgIGNoYW5nZXMgdXNpbmcgTXV0YXRpb25PYnNlcnZlXG4gICAqIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggYHRpdGxlVGVtcGxhdGVgIG9wdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG9ic2VydmU/OiBib29sZWFuO1xufSB8IHtcbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSBzdHJpbmcgdG8gcGFyc2UgdGhlIHRpdGxlIChlLmcuLCAnJXMgfCBNeSBXZWJzaXRlJylcbiAgICogQ2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBgb2JzZXJ2ZWAgb3B0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnJXMnXG4gICAqL1xuICB0aXRsZVRlbXBsYXRlPzogTWF5YmVSZWY8c3RyaW5nPiB8ICgodGl0bGU6IHN0cmluZykgPT4gc3RyaW5nKTtcbn0pO1xudHlwZSBVc2VUaXRsZU9wdGlvbnMgPSBDb25maWd1cmFibGVEb2N1bWVudCAmIFVzZVRpdGxlT3B0aW9uc0Jhc2U7XG50eXBlIFVzZVRpdGxlUmV0dXJuID0gQ29tcHV0ZWRSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4gfCBSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4vKipcbiAqIFJlYWN0aXZlIGRvY3VtZW50IHRpdGxlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVRpdGxlXG4gKiBAcGFyYW0gbmV3VGl0bGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAZGVzY3JpcHRpb24gSXQncyBub3QgU1NSIGNvbXBhdGlibGUuIFlvdXIgdmFsdWUgd2lsbCBiZSBhcHBsaWVkIG9ubHkgb24gY2xpZW50LXNpZGUuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVGl0bGUobmV3VGl0bGU6IFJlYWRvbmx5UmVmT3JHZXR0ZXI8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VUaXRsZU9wdGlvbnMpOiBDb21wdXRlZFJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlVGl0bGUobmV3VGl0bGU/OiBNYXliZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPiwgb3B0aW9ucz86IFVzZVRpdGxlT3B0aW9ucyk6IFJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRyYW5zaXRpb24vaW5kZXguZC50c1xuLyoqXG4gKiBDdWJpYyBiZXppZXIgcG9pbnRzXG4gKi9cbnR5cGUgQ3ViaWNCZXppZXJQb2ludHMgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbi8qKlxuICogRWFzaW5nIGZ1bmN0aW9uXG4gKi9cbnR5cGUgRWFzaW5nRnVuY3Rpb24gPSAobjogbnVtYmVyKSA9PiBudW1iZXI7XG4vKipcbiAqIEludGVycG9sYXRpb24gZnVuY3Rpb25cbiAqL1xudHlwZSBJbnRlcnBvbGF0aW9uRnVuY3Rpb248VD4gPSAoZnJvbTogVCwgdG86IFQsIHQ6IG51bWJlcikgPT4gVDtcbi8qKlxuICogVHJhbnNpdGlvbiBvcHRpb25zXG4gKi9cbmludGVyZmFjZSBUcmFuc2l0aW9uT3B0aW9uczxUPiBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBNYW51YWxseSBhYm9ydCBhIHRyYW5zaXRpb25cbiAgICovXG4gIGFib3J0PzogKCkgPT4gYW55O1xuICAvKipcbiAgICogVHJhbnNpdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHNcbiAgICovXG4gIGR1cmF0aW9uPzogTWF5YmVSZWY8bnVtYmVyPjtcbiAgLyoqXG4gICAqIEVhc2luZyBmdW5jdGlvbiBvciBjdWJpYyBiZXppZXIgcG9pbnRzIHRvIGNhbGN1bGF0ZSB0cmFuc2l0aW9uIHByb2dyZXNzXG4gICAqL1xuICBlYXNpbmc/OiBNYXliZVJlZjxFYXNpbmdGdW5jdGlvbiB8IEN1YmljQmV6aWVyUG9pbnRzPjtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnRlcnBvbGF0aW9uIGZ1bmN0aW9uXG4gICAqL1xuICBpbnRlcnBvbGF0aW9uPzogSW50ZXJwb2xhdGlvbkZ1bmN0aW9uPFQ+O1xuICAvKipcbiAgICogRWFzaW5nIGZ1bmN0aW9uIG9yIGN1YmljIGJlemllciBwb2ludHMgdG8gY2FsY3VsYXRlIHRyYW5zaXRpb24gcHJvZ3Jlc3NcbiAgICogQGRlcHJlY2F0ZWQgVGhlIGB0cmFuc2l0aW9uYCBvcHRpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGBlYXNpbmdgIGluc3RlYWQuXG4gICAqL1xuICB0cmFuc2l0aW9uPzogTWF5YmVSZWY8RWFzaW5nRnVuY3Rpb24gfCBDdWJpY0JlemllclBvaW50cz47XG59XG5pbnRlcmZhY2UgVXNlVHJhbnNpdGlvbk9wdGlvbnM8VD4gZXh0ZW5kcyBUcmFuc2l0aW9uT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBNaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc3RhcnRpbmcgdHJhbnNpdGlvblxuICAgKi9cbiAgZGVsYXk/OiBNYXliZVJlZjxudW1iZXI+O1xuICAvKipcbiAgICogRGlzYWJsZXMgdGhlIHRyYW5zaXRpb25cbiAgICovXG4gIGRpc2FibGVkPzogTWF5YmVSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBleGVjdXRlIGFmdGVyIHRyYW5zaXRpb24gZmluaXNoZXNcbiAgICovXG4gIG9uRmluaXNoZWQ/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gZXhlY3V0ZSBhZnRlciB0cmFuc2l0aW9uIHN0YXJ0c1xuICAgKi9cbiAgb25TdGFydGVkPzogKCkgPT4gdm9pZDtcbn1cbmRlY2xhcmUgY29uc3QgX1RyYW5zaXRpb25QcmVzZXRzOiB7XG4gIHJlYWRvbmx5IGVhc2VJblNpbmU6IHJlYWRvbmx5IFswLjEyLCAwLCAwLjM5LCAwXTtcbiAgcmVhZG9ubHkgZWFzZU91dFNpbmU6IHJlYWRvbmx5IFswLjYxLCAxLCAwLjg4LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluT3V0U2luZTogcmVhZG9ubHkgWzAuMzcsIDAsIDAuNjMsIDFdO1xuICByZWFkb25seSBlYXNlSW5RdWFkOiByZWFkb25seSBbMC4xMSwgMCwgMC41LCAwXTtcbiAgcmVhZG9ubHkgZWFzZU91dFF1YWQ6IHJlYWRvbmx5IFswLjUsIDEsIDAuODksIDFdO1xuICByZWFkb25seSBlYXNlSW5PdXRRdWFkOiByZWFkb25seSBbMC40NSwgMCwgMC41NSwgMV07XG4gIHJlYWRvbmx5IGVhc2VJbkN1YmljOiByZWFkb25seSBbMC4zMiwgMCwgMC42NywgMF07XG4gIHJlYWRvbmx5IGVhc2VPdXRDdWJpYzogcmVhZG9ubHkgWzAuMzMsIDEsIDAuNjgsIDFdO1xuICByZWFkb25seSBlYXNlSW5PdXRDdWJpYzogcmVhZG9ubHkgWzAuNjUsIDAsIDAuMzUsIDFdO1xuICByZWFkb25seSBlYXNlSW5RdWFydDogcmVhZG9ubHkgWzAuNSwgMCwgMC43NSwgMF07XG4gIHJlYWRvbmx5IGVhc2VPdXRRdWFydDogcmVhZG9ubHkgWzAuMjUsIDEsIDAuNSwgMV07XG4gIHJlYWRvbmx5IGVhc2VJbk91dFF1YXJ0OiByZWFkb25seSBbMC43NiwgMCwgMC4yNCwgMV07XG4gIHJlYWRvbmx5IGVhc2VJblF1aW50OiByZWFkb25seSBbMC42NCwgMCwgMC43OCwgMF07XG4gIHJlYWRvbmx5IGVhc2VPdXRRdWludDogcmVhZG9ubHkgWzAuMjIsIDEsIDAuMzYsIDFdO1xuICByZWFkb25seSBlYXNlSW5PdXRRdWludDogcmVhZG9ubHkgWzAuODMsIDAsIDAuMTcsIDFdO1xuICByZWFkb25seSBlYXNlSW5FeHBvOiByZWFkb25seSBbMC43LCAwLCAwLjg0LCAwXTtcbiAgcmVhZG9ubHkgZWFzZU91dEV4cG86IHJlYWRvbmx5IFswLjE2LCAxLCAwLjMsIDFdO1xuICByZWFkb25seSBlYXNlSW5PdXRFeHBvOiByZWFkb25seSBbMC44NywgMCwgMC4xMywgMV07XG4gIHJlYWRvbmx5IGVhc2VJbkNpcmM6IHJlYWRvbmx5IFswLjU1LCAwLCAxLCAwLjQ1XTtcbiAgcmVhZG9ubHkgZWFzZU91dENpcmM6IHJlYWRvbmx5IFswLCAwLjU1LCAwLjQ1LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluT3V0Q2lyYzogcmVhZG9ubHkgWzAuODUsIDAsIDAuMTUsIDFdO1xuICByZWFkb25seSBlYXNlSW5CYWNrOiByZWFkb25seSBbMC4zNiwgMCwgMC42NiwgLTAuNTZdO1xuICByZWFkb25seSBlYXNlT3V0QmFjazogcmVhZG9ubHkgWzAuMzQsIDEuNTYsIDAuNjQsIDFdO1xuICByZWFkb25seSBlYXNlSW5PdXRCYWNrOiByZWFkb25seSBbMC42OCwgLTAuNiwgMC4zMiwgMS42XTtcbn07XG4vKipcbiAqIENvbW1vbiB0cmFuc2l0aW9uc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly9lYXNpbmdzLm5ldFxuICovXG5kZWNsYXJlIGNvbnN0IFRyYW5zaXRpb25QcmVzZXRzOiBSZWNvcmQ8a2V5b2YgdHlwZW9mIF9UcmFuc2l0aW9uUHJlc2V0cywgQ3ViaWNCZXppZXJQb2ludHM+ICYge1xuICBsaW5lYXI6IEVhc2luZ0Z1bmN0aW9uO1xufTtcbi8qKlxuICogVHJhbnNpdGlvbiBmcm9tIG9uZSB2YWx1ZSB0byBhbm90aGVyLlxuICpcbiAqIEBwYXJhbSBzb3VyY2VcbiAqIEBwYXJhbSBmcm9tXG4gKiBAcGFyYW0gdG9cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdHJhbnNpdGlvbjxUPihzb3VyY2U6IFJlZjxUPiwgZnJvbTogTWF5YmVSZWZPckdldHRlcjxUPiwgdG86IE1heWJlUmVmT3JHZXR0ZXI8VD4sIG9wdGlvbnM/OiBUcmFuc2l0aW9uT3B0aW9uczxUPik6IFByb21pc2VMaWtlPHZvaWQ+O1xuLyoqXG4gKiBUcmFuc2l0aW9uIGZyb20gb25lIHZhbHVlIHRvIGFub3RoZXIuXG4gKiBAZGVwcmVjYXRlZCBUaGUgYGV4ZWN1dGVUcmFuc2l0aW9uYCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgYHRyYW5zaXRpb25gIGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHNvdXJjZVxuICogQHBhcmFtIGZyb21cbiAqIEBwYXJhbSB0b1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBleGVjdXRlVHJhbnNpdGlvbjxUPihzb3VyY2U6IFJlZjxUPiwgZnJvbTogTWF5YmVSZWZPckdldHRlcjxUPiwgdG86IE1heWJlUmVmT3JHZXR0ZXI8VD4sIG9wdGlvbnM/OiBUcmFuc2l0aW9uT3B0aW9uczxUPik6IFByb21pc2VMaWtlPHZvaWQ+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUcmFuc2l0aW9uPFQgZXh0ZW5kcyBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj5bXT4oc291cmNlOiBbLi4uVF0sIG9wdGlvbnM/OiBVc2VUcmFuc2l0aW9uT3B0aW9uczxUPik6IENvbXB1dGVkUmVmPHsgW0sgaW4ga2V5b2YgVF06IG51bWJlciB9PjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlVHJhbnNpdGlvbjxUIGV4dGVuZHMgTWF5YmVSZWZPckdldHRlcjxudW1iZXJbXT4+KHNvdXJjZTogVCwgb3B0aW9ucz86IFVzZVRyYW5zaXRpb25PcHRpb25zPFQ+KTogQ29tcHV0ZWRSZWY8bnVtYmVyW10+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUcmFuc2l0aW9uPFQ+KHNvdXJjZTogTWF5YmVSZWZPckdldHRlcjxUPiwgb3B0aW9ucz86IFVzZVRyYW5zaXRpb25PcHRpb25zPFQ+KTogQ29tcHV0ZWRSZWY8VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VVcmxTZWFyY2hQYXJhbXMvaW5kZXguZC50c1xudHlwZSBVcmxQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXSB8IHN0cmluZz47XG5pbnRlcmZhY2UgVXNlVXJsU2VhcmNoUGFyYW1zT3B0aW9uczxUPiBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZW1vdmVOdWxsaXNoVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZW1vdmVGYWxzeVZhbHVlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgaW5pdGlhbFZhbHVlPzogVDtcbiAgLyoqXG4gICAqIFdyaXRlIGJhY2sgdG8gYHdpbmRvdy5oaXN0b3J5YCBhdXRvbWF0aWNhbGx5XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHdyaXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdyaXRlIG1vZGUgZm9yIGB3aW5kb3cuaGlzdG9yeWAgd2hlbiBgd3JpdGVgIGlzIGVuYWJsZWRcbiAgICogLSBgcmVwbGFjZWA6IHJlcGxhY2UgdGhlIGN1cnJlbnQgaGlzdG9yeSBlbnRyeVxuICAgKiAtIGBwdXNoYDogcHVzaCBhIG5ldyBoaXN0b3J5IGVudHJ5XG4gICAqIEBkZWZhdWx0ICdyZXBsYWNlJ1xuICAgKi9cbiAgd3JpdGVNb2RlPzogJ3JlcGxhY2UnIHwgJ3B1c2gnO1xuICAvKipcbiAgICogQ3VzdG9tIGZ1bmN0aW9uIHRvIHNlcmlhbGl6ZSBVUkwgcGFyYW1ldGVyc1xuICAgKiBXaGVuIHByb3ZpZGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IFVSTFNlYXJjaFBhcmFtcy50b1N0cmluZygpXG4gICAqIEBwYXJhbSBwYXJhbXMgVGhlIFVSTFNlYXJjaFBhcmFtcyBvYmplY3QgdG8gc2VyaWFsaXplXG4gICAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemVkIHF1ZXJ5IHN0cmluZyAoc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBsZWFkaW5nICc/JyBvciAnIycpXG4gICAqL1xuICBzdHJpbmdpZnk/OiAocGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpID0+IHN0cmluZztcbn1cbi8qKlxuICogUmVhY3RpdmUgVVJMU2VhcmNoUGFyYW1zXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlVXJsU2VhcmNoUGFyYW1zXG4gKiBAcGFyYW0gbW9kZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VVcmxTZWFyY2hQYXJhbXM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBVcmxQYXJhbXM+KG1vZGU/OiAnaGlzdG9yeScgfCAnaGFzaCcgfCAnaGFzaC1wYXJhbXMnLCBvcHRpb25zPzogVXNlVXJsU2VhcmNoUGFyYW1zT3B0aW9uczxUPik6IFQ7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VVc2VyTWVkaWEvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVVzZXJNZWRpYU9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICAvKipcbiAgICogSWYgdGhlIHN0cmVhbSBpcyBlbmFibGVkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBlbmFibGVkPzogTWF5YmVSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBzdHJlYW0gd2hlbiBkZXZpY2VJZHMgb3IgY29uc3RyYWludHMgY2hhbmdlZFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhdXRvU3dpdGNoPzogTWF5YmVSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHJlcXVlc3RlZCBNZWRpYVN0cmVhbVxuICAgKiBJZiBwcm92aWRlZCwgdGhlIGNvbnN0cmFpbnRzIHdpbGwgb3ZlcnJpZGUgdmlkZW9EZXZpY2VJZCBhbmQgYXVkaW9EZXZpY2VJZFxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgY29uc3RyYWludHM/OiBNYXliZVJlZjxNZWRpYVN0cmVhbUNvbnN0cmFpbnRzPjtcbn1cbmludGVyZmFjZSBVc2VVc2VyTWVkaWFSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHN0cmVhbTogUmVmPE1lZGlhU3RyZWFtIHwgdW5kZWZpbmVkPjtcbiAgc3RhcnQ6ICgpID0+IFByb21pc2U8TWVkaWFTdHJlYW0gfCB1bmRlZmluZWQ+O1xuICBzdG9wOiAoKSA9PiB2b2lkO1xuICByZXN0YXJ0OiAoKSA9PiBQcm9taXNlPE1lZGlhU3RyZWFtIHwgdW5kZWZpbmVkPjtcbiAgY29uc3RyYWludHM6IFJlZjxNZWRpYVN0cmVhbUNvbnN0cmFpbnRzIHwgdW5kZWZpbmVkPjtcbiAgZW5hYmxlZDogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgYXV0b1N3aXRjaDogU2hhbGxvd1JlZjxib29sZWFuPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgYG1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWFgIHN0cmVhbWluZ1xuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVVzZXJNZWRpYVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VVc2VyTWVkaWEob3B0aW9ucz86IFVzZVVzZXJNZWRpYU9wdGlvbnMpOiBVc2VVc2VyTWVkaWFSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VWTW9kZWwvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVZNb2RlbE9wdGlvbnM8VCwgUGFzc2l2ZSBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4ge1xuICAvKipcbiAgICogV2hlbiBwYXNzaXZlIGlzIHNldCB0byBgdHJ1ZWAsIGl0IHdpbGwgdXNlIGB3YXRjaGAgdG8gc3luYyB3aXRoIHByb3BzIGFuZCByZWYuXG4gICAqIEluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgYHYtbW9kZWxgIG9yIGAuc3luY2AgdG8gd29yay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHBhc3NpdmU/OiBQYXNzaXZlO1xuICAvKipcbiAgICogV2hlbiBldmVudE5hbWUgaXMgc2V0LCBpdCdzIHZhbHVlIHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUgdGhlIGVtaXQgZXZlbnQgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBldmVudE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRlbXB0aW5nIHRvIGNoZWNrIGZvciBjaGFuZ2VzIG9mIHByb3BlcnRpZXMgaW4gYSBkZWVwbHkgbmVzdGVkIG9iamVjdCBvciBhcnJheS5cbiAgICogQXBwbHkgb25seSB3aGVuIGBwYXNzaXZlYCBvcHRpb24gaXMgc2V0IHRvIGB0cnVlYFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGVlcD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZpbmluZyBkZWZhdWx0IHZhbHVlIGZvciByZXR1cm4gcmVmIHdoZW4gbm8gdmFsdWUgaXMgcGFzc2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIGRlZmF1bHRWYWx1ZT86IFQ7XG4gIC8qKlxuICAgKiBDbG9uZSB0aGUgcHJvcHMuXG4gICAqIEFjY2VwdHMgYSBjdXN0b20gY2xvbmUgZnVuY3Rpb24uXG4gICAqIFdoZW4gc2V0dGluZyB0byBgdHJ1ZWAsIGl0IHdpbGwgdXNlIGBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSlgIHRvIGNsb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2xvbmU/OiBib29sZWFuIHwgQ2xvbmVGbjxUPjtcbiAgLyoqXG4gICAqIFRoZSBob29rIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBlbWl0IGV2ZW50IGNhbiBiZSB1c2VkIGZvciBmb3JtIHZhbGlkYXRpb24uXG4gICAqIGlmIGZhbHNlIGlzIHJldHVybmVkLCB0aGUgZW1pdCBldmVudCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgc2hvdWxkRW1pdD86ICh2OiBUKSA9PiBib29sZWFuO1xufVxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHYtbW9kZWwgYmluZGluZywgcHJvcHMgKyBlbWl0IC0+IHJlZlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVZNb2RlbFxuICogQHBhcmFtIHByb3BzXG4gKiBAcGFyYW0ga2V5IChkZWZhdWx0ICdtb2RlbFZhbHVlJylcbiAqIEBwYXJhbSBlbWl0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVk1vZGVsPFAkMSBleHRlbmRzIG9iamVjdCwgSyQxIGV4dGVuZHMga2V5b2YgUCQxLCBOYW1lIGV4dGVuZHMgc3RyaW5nPihwcm9wczogUCQxLCBrZXk/OiBLJDEsIGVtaXQ/OiAobmFtZTogTmFtZSwgLi4uYXJnczogYW55W10pID0+IHZvaWQsIG9wdGlvbnM/OiBVc2VWTW9kZWxPcHRpb25zPFAkMVtLJDFdLCBmYWxzZT4pOiBXcml0YWJsZUNvbXB1dGVkUmVmPFAkMVtLJDFdPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlVk1vZGVsPFAkMSBleHRlbmRzIG9iamVjdCwgSyQxIGV4dGVuZHMga2V5b2YgUCQxLCBOYW1lIGV4dGVuZHMgc3RyaW5nPihwcm9wczogUCQxLCBrZXk/OiBLJDEsIGVtaXQ/OiAobmFtZTogTmFtZSwgLi4uYXJnczogYW55W10pID0+IHZvaWQsIG9wdGlvbnM/OiBVc2VWTW9kZWxPcHRpb25zPFAkMVtLJDFdLCB0cnVlPik6IFJlZjxVbndyYXBSZWY8UCQxW0skMV0+Pjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVZNb2RlbHMvaW5kZXguZC50c1xuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHByb3BzIHYtbW9kZWwgYmluZGluZy4gVGhpbmsgbGlrZSBgdG9SZWZzKHByb3BzKWAgYnV0IGNoYW5nZXMgd2lsbCBhbHNvIGVtaXQgb3V0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVZNb2RlbHNcbiAqIEBwYXJhbSBwcm9wc1xuICogQHBhcmFtIGVtaXRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VWTW9kZWxzPFAkMSBleHRlbmRzIG9iamVjdCwgTmFtZSBleHRlbmRzIHN0cmluZz4ocHJvcHM6IFAkMSwgZW1pdD86IChuYW1lOiBOYW1lLCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCwgb3B0aW9ucz86IFVzZVZNb2RlbE9wdGlvbnM8YW55LCB0cnVlPik6IFRvUmVmczxQJDE+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VWTW9kZWxzPFAkMSBleHRlbmRzIG9iamVjdCwgTmFtZSBleHRlbmRzIHN0cmluZz4ocHJvcHM6IFAkMSwgZW1pdD86IChuYW1lOiBOYW1lLCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCwgb3B0aW9ucz86IFVzZVZNb2RlbE9wdGlvbnM8YW55LCBmYWxzZT4pOiBUb1JlZnM8UCQxPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVZpYnJhdGUvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVZpYnJhdGVPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlTmF2aWdhdG9yLCBDb25maWd1cmFibGVTY2hlZHVsZXIge1xuICAvKipcbiAgICpcbiAgICogVmlicmF0aW9uIFBhdHRlcm5cbiAgICpcbiAgICogQW4gYXJyYXkgb2YgdmFsdWVzIGRlc2NyaWJlcyBhbHRlcm5hdGluZyBwZXJpb2RzIGluIHdoaWNoIHRoZVxuICAgKiBkZXZpY2UgaXMgdmlicmF0aW5nIGFuZCBub3QgdmlicmF0aW5nLiBFYWNoIHZhbHVlIGluIHRoZSBhcnJheVxuICAgKiBpcyBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlciwgdGhlbiBpbnRlcnByZXRlZCBhbHRlcm5hdGVseSBhc1xuICAgKiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGUgZGV2aWNlIHNob3VsZCB2aWJyYXRlIGFuZCB0aGVcbiAgICogbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCBzaG91bGQgbm90IGJlIHZpYnJhdGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKlxuICAgKi9cbiAgcGF0dGVybj86IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPG51bWJlcj4+O1xuICAvKipcbiAgICogSW50ZXJ2YWwgdG8gcnVuIGEgcGVyc2lzdGVudCB2aWJyYXRpb24sIGluIG1zXG4gICAqXG4gICAqIFBhc3MgYDBgIHRvIGRpc2FibGVcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKiBAZGVmYXVsdCAwXG4gICAqXG4gICAqL1xuICBpbnRlcnZhbDogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZVZpYnJhdGVSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHBhdHRlcm46IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPG51bWJlcj4+O1xuICBpbnRlcnZhbENvbnRyb2xzPzogUGF1c2FibGU7XG4gIHZpYnJhdGU6IChwYXR0ZXJuPzogQXJyYXlhYmxlPG51bWJlcj4pID0+IHZvaWQ7XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIHZpYnJhdGVcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VWaWJyYXRlXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9WaWJyYXRpb25fQVBJXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVmlicmF0ZShvcHRpb25zPzogVXNlVmlicmF0ZU9wdGlvbnMpOiBVc2VWaWJyYXRlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVmlydHVhbExpc3QvaW5kZXguZC50c1xudHlwZSBVc2VWaXJ0dWFsTGlzdEl0ZW1TaXplID0gbnVtYmVyIHwgKChpbmRleDogbnVtYmVyKSA9PiBudW1iZXIpO1xuaW50ZXJmYWNlIFVzZUhvcml6b250YWxWaXJ0dWFsTGlzdE9wdGlvbnMgZXh0ZW5kcyBVc2VWaXJ0dWFsTGlzdE9wdGlvbnNCYXNlIHtcbiAgLyoqXG4gICAqIGl0ZW0gd2lkdGgsIGFjY2VwdCBhIHBpeGVsIHZhbHVlIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB3aWR0aFxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBpdGVtV2lkdGg6IFVzZVZpcnR1YWxMaXN0SXRlbVNpemU7XG59XG5pbnRlcmZhY2UgVXNlVmVydGljYWxWaXJ0dWFsTGlzdE9wdGlvbnMgZXh0ZW5kcyBVc2VWaXJ0dWFsTGlzdE9wdGlvbnNCYXNlIHtcbiAgLyoqXG4gICAqIGl0ZW0gaGVpZ2h0LCBhY2NlcHQgYSBwaXhlbCB2YWx1ZSBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgaGVpZ2h0XG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGl0ZW1IZWlnaHQ6IFVzZVZpcnR1YWxMaXN0SXRlbVNpemU7XG59XG5pbnRlcmZhY2UgVXNlVmlydHVhbExpc3RPcHRpb25zQmFzZSB7XG4gIC8qKlxuICAgKiB0aGUgZXh0cmEgYnVmZmVyIGl0ZW1zIG91dHNpZGUgb2YgdGhlIHZpZXcgYXJlYVxuICAgKlxuICAgKiBAZGVmYXVsdCA1XG4gICAqL1xuICBvdmVyc2Nhbj86IG51bWJlcjtcbn1cbnR5cGUgVXNlVmlydHVhbExpc3RPcHRpb25zID0gVXNlSG9yaXpvbnRhbFZpcnR1YWxMaXN0T3B0aW9ucyB8IFVzZVZlcnRpY2FsVmlydHVhbExpc3RPcHRpb25zO1xuaW50ZXJmYWNlIFVzZVZpcnR1YWxMaXN0SXRlbTxUPiB7XG4gIGRhdGE6IFQ7XG4gIGluZGV4OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgVXNlVmlydHVhbExpc3RSZXR1cm48VD4ge1xuICBsaXN0OiBSZWY8VXNlVmlydHVhbExpc3RJdGVtPFQ+W10+O1xuICBzY3JvbGxUbzogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIGNvbnRhaW5lclByb3BzOiB7XG4gICAgcmVmOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPjtcbiAgICBvblNjcm9sbDogKCkgPT4gdm9pZDtcbiAgICBzdHlsZTogU3R5bGVWYWx1ZTtcbiAgfTtcbiAgd3JhcHBlclByb3BzOiBDb21wdXRlZFJlZjx7XG4gICAgc3R5bGU6IHtcbiAgICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgICBoZWlnaHQ6IHN0cmluZztcbiAgICAgIG1hcmdpblRvcDogc3RyaW5nO1xuICAgIH0gfCB7XG4gICAgICB3aWR0aDogc3RyaW5nO1xuICAgICAgaGVpZ2h0OiBzdHJpbmc7XG4gICAgICBtYXJnaW5MZWZ0OiBzdHJpbmc7XG4gICAgICBkaXNwbGF5OiBzdHJpbmc7XG4gICAgfTtcbiAgfT47XG59XG4vKipcbiAqIFBsZWFzZSBjb25zaWRlciB1c2luZyBbYHZ1ZS12aXJ0dWFsLXNjcm9sbGVyYF0oaHR0cHM6Ly9naXRodWIuY29tL0Frcnl1bS92dWUtdmlydHVhbC1zY3JvbGxlcikgaWYgeW91IGFyZSBsb29raW5nIGZvciBtb3JlIGZlYXR1cmVzLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVZpcnR1YWxMaXN0PFQgPSBhbnk+KGxpc3Q6IE1heWJlUmVmPHJlYWRvbmx5IFRbXT4sIG9wdGlvbnM6IFVzZVZpcnR1YWxMaXN0T3B0aW9ucyk6IFVzZVZpcnR1YWxMaXN0UmV0dXJuPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlV2FrZUxvY2svaW5kZXguZC50c1xudHlwZSBXYWtlTG9ja1R5cGUgPSAnc2NyZWVuJztcbmludGVyZmFjZSBXYWtlTG9ja1NlbnRpbmVsIGV4dGVuZHMgRXZlbnRUYXJnZXQge1xuICB0eXBlOiBXYWtlTG9ja1R5cGU7XG4gIHJlbGVhc2VkOiBib29sZWFuO1xuICByZWxlYXNlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxudHlwZSBVc2VXYWtlTG9ja09wdGlvbnMgPSBDb25maWd1cmFibGVOYXZpZ2F0b3IgJiBDb25maWd1cmFibGVEb2N1bWVudDtcbmludGVyZmFjZSBVc2VXYWtlTG9ja1JldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgc2VudGluZWw6IFNoYWxsb3dSZWY8V2FrZUxvY2tTZW50aW5lbCB8IG51bGw+O1xuICBpc0FjdGl2ZTogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIHJlcXVlc3Q6ICh0eXBlOiBXYWtlTG9ja1R5cGUpID0+IFByb21pc2U8dm9pZD47XG4gIGZvcmNlUmVxdWVzdDogKHR5cGU6IFdha2VMb2NrVHlwZSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVsZWFzZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgU2NyZWVuIFdha2UgTG9jayBBUEkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlV2FrZUxvY2tcbiAqIEBwYXJhbSBvcHRpb25zXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VXYWtlTG9jayhvcHRpb25zPzogVXNlV2FrZUxvY2tPcHRpb25zKTogVXNlV2FrZUxvY2tSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VXZWJOb3RpZmljYXRpb24vaW5kZXguZC50c1xuaW50ZXJmYWNlIFdlYk5vdGlmaWNhdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRpdGxlIHJlYWQtb25seSBwcm9wZXJ0eSBvZiB0aGUgTm90aWZpY2F0aW9uIGludGVyZmFjZSBpbmRpY2F0ZXNcbiAgICogdGhlIHRpdGxlIG9mIHRoZSBub3RpZmljYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGJvZHkgc3RyaW5nIG9mIHRoZSBub3RpZmljYXRpb24gYXMgc3BlY2lmaWVkIGluIHRoZSBjb25zdHJ1Y3RvcidzXG4gICAqIG9wdGlvbnMgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnJ1xuICAgKi9cbiAgYm9keT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgbm90aWZpY2F0aW9uIGFzIHNwZWNpZmllZCBpbiB0aGUgY29uc3RydWN0b3Inc1xuICAgKiBvcHRpb25zIHBhcmFtZXRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIGRpcj86ICdhdXRvJyB8ICdsdHInIHwgJ3J0bCc7XG4gIC8qKlxuICAgKiBUaGUgbGFuZ3VhZ2UgY29kZSBvZiB0aGUgbm90aWZpY2F0aW9uIGFzIHNwZWNpZmllZCBpbiB0aGUgY29uc3RydWN0b3Inc1xuICAgKiBvcHRpb25zIHBhcmFtZXRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgRE9NU3RyaW5nXG4gICAqL1xuICBsYW5nPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBub3RpZmljYXRpb24oaWYgYW55KSBhcyBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yJ3Mgb3B0aW9uc1xuICAgKiBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICB0YWc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgVVJMIG9mIHRoZSBpbWFnZSB1c2VkIGFzIGFuIGljb24gb2YgdGhlIG5vdGlmaWNhdGlvbiBhcyBzcGVjaWZpZWRcbiAgICogaW4gdGhlIGNvbnN0cnVjdG9yJ3Mgb3B0aW9ucyBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICBpY29uPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHVzZXIgc2hvdWxkIGJlIG5vdGlmaWVkIGFmdGVyIGEgbmV3IG5vdGlmaWNhdGlvblxuICAgKiByZXBsYWNlcyBhbiBvbGQgb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVub3RpZnk/OiBib29sZWFuO1xuICAvKipcbiAgICogQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG91bGQgcmVtYWluIGFjdGl2ZSB1bnRpbCB0aGVcbiAgICogdXNlciBjbGlja3Mgb3IgZGlzbWlzc2VzIGl0LCByYXRoZXIgdGhhbiBjbG9zaW5nIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXF1aXJlSW50ZXJhY3Rpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHNpbGVudCByZWFkLW9ubHkgcHJvcGVydHkgb2YgdGhlIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2Ugc3BlY2lmaWVzXG4gICAqIHdoZXRoZXIgdGhlIG5vdGlmaWNhdGlvbiBzaG91bGQgYmUgc2lsZW50LCBpLmUuLCBubyBzb3VuZHMgb3IgdmlicmF0aW9uc1xuICAgKiBzaG91bGQgYmUgaXNzdWVkLCByZWdhcmRsZXNzIG9mIHRoZSBkZXZpY2Ugc2V0dGluZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzaWxlbnQ/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgdmlicmF0aW9uIHBhdHRlcm4gZm9yIGRldmljZXMgd2l0aCB2aWJyYXRpb24gaGFyZHdhcmUgdG8gZW1pdC5cbiAgICogQSB2aWJyYXRpb24gcGF0dGVybiwgYXMgc3BlY2lmaWVkIGluIHRoZSBWaWJyYXRpb24gQVBJIHNwZWNcbiAgICpcbiAgICogQHNlZSBodHRwczovL3czYy5naXRodWIuaW8vdmlicmF0aW9uL1xuICAgKi9cbiAgdmlicmF0ZT86IG51bWJlcltdO1xufVxuaW50ZXJmYWNlIFVzZVdlYk5vdGlmaWNhdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3csIFdlYk5vdGlmaWNhdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogUmVxdWVzdCBmb3IgcGVybWlzc2lvbnMgb25Nb3VudGVkIGlmIGl0J3Mgbm90IGdyYW50ZWQuXG4gICAqXG4gICAqIENhbiBiZSBkaXNhYmxlZCBhbmQgY2FsbGluZyBgZW5zdXJlUGVybWlzc2lvbnNgIHRvIGdyYW50IGFmdGVyd29yZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlcXVlc3RQZXJtaXNzaW9ucz86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgVXNlV2ViTm90aWZpY2F0aW9uUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBub3RpZmljYXRpb246IFJlZjxOb3RpZmljYXRpb24gfCBudWxsPjtcbiAgZW5zdXJlUGVybWlzc2lvbnM6ICgpID0+IFByb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD47XG4gIHBlcm1pc3Npb25HcmFudGVkOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBzaG93OiAob3ZlcnJpZGVzPzogV2ViTm90aWZpY2F0aW9uT3B0aW9ucykgPT4gUHJvbWlzZTxOb3RpZmljYXRpb24gfCB1bmRlZmluZWQ+O1xuICBjbG9zZTogKCkgPT4gdm9pZDtcbiAgb25DbGljazogRXZlbnRIb29rT248RXZlbnQ+O1xuICBvblNob3c6IEV2ZW50SG9va09uPEV2ZW50PjtcbiAgb25FcnJvcjogRXZlbnRIb29rT248RXZlbnQ+O1xuICBvbkNsb3NlOiBFdmVudEhvb2tPbjxFdmVudD47XG59XG4vKipcbiAqIFJlYWN0aXZlIHVzZVdlYk5vdGlmaWNhdGlvblxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVdlYk5vdGlmaWNhdGlvblxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvbm90aWZpY2F0aW9uXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlV2ViTm90aWZpY2F0aW9uKG9wdGlvbnM/OiBVc2VXZWJOb3RpZmljYXRpb25PcHRpb25zKTogVXNlV2ViTm90aWZpY2F0aW9uUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlV2ViU29ja2V0L2luZGV4LmQudHNcbnR5cGUgV2ViU29ja2V0U3RhdHVzID0gJ09QRU4nIHwgJ0NPTk5FQ1RJTkcnIHwgJ0NMT1NFRCc7XG50eXBlIFdlYlNvY2tldEhlYXJ0YmVhdE1lc3NhZ2UgPSBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IEJsb2I7XG5pbnRlcmZhY2UgVXNlV2ViU29ja2V0T3B0aW9ucyB7XG4gIG9uQ29ubmVjdGVkPzogKHdzOiBXZWJTb2NrZXQpID0+IHZvaWQ7XG4gIG9uRGlzY29ubmVjdGVkPzogKHdzOiBXZWJTb2NrZXQsIGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB2b2lkO1xuICBvbkVycm9yPzogKHdzOiBXZWJTb2NrZXQsIGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgb25NZXNzYWdlPzogKHdzOiBXZWJTb2NrZXQsIGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBTZW5kIGhlYXJ0YmVhdCBmb3IgZXZlcnkgeCBtaWxsaXNlY29uZHMgcGFzc2VkXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoZWFydGJlYXQ/OiBib29sZWFuIHwgQ29uZmlndXJhYmxlU2NoZWR1bGVyICYge1xuICAgIC8qKlxuICAgICAqIE1lc3NhZ2UgZm9yIHRoZSBoZWFydGJlYXRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdwaW5nJ1xuICAgICAqL1xuICAgIG1lc3NhZ2U/OiBNYXliZVJlZk9yR2V0dGVyPFdlYlNvY2tldEhlYXJ0YmVhdE1lc3NhZ2U+O1xuICAgIC8qKlxuICAgICAqIFJlc3BvbnNlIG1lc3NhZ2UgZm9yIHRoZSBoZWFydGJlYXQsIGlmIHVuZGVmaW5lZCB0aGUgbWVzc2FnZSB3aWxsIGJlIHVzZWRcbiAgICAgKi9cbiAgICByZXNwb25zZU1lc3NhZ2U/OiBNYXliZVJlZk9yR2V0dGVyPFdlYlNvY2tldEhlYXJ0YmVhdE1lc3NhZ2U+O1xuICAgIC8qKlxuICAgICAqIEludGVydmFsLCBpbiBtaWxsaXNlY29uZHNcbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICAgKiBAZGVmYXVsdCAxMDAwXG4gICAgICovXG4gICAgaW50ZXJ2YWw/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogSGVhcnRiZWF0IHJlc3BvbnNlIHRpbWVvdXQsIGluIG1pbGxpc2Vjb25kc1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgMTAwMFxuICAgICAqL1xuICAgIHBvbmdUaW1lb3V0PzogbnVtYmVyO1xuICB9O1xuICAvKipcbiAgICogRW5hYmxlZCBhdXRvIHJlY29ubmVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgYXV0b1JlY29ubmVjdD86IGJvb2xlYW4gfCB7XG4gICAgLyoqXG4gICAgICogTWF4aW11bSByZXRyeSB0aW1lcy5cbiAgICAgKlxuICAgICAqIE9yIHlvdSBjYW4gcGFzcyBhIHByZWRpY2F0ZSBmdW5jdGlvbiAod2hpY2ggcmV0dXJucyB0cnVlIGlmIHlvdSB3YW50IHRvIHJldHJ5KS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0xXG4gICAgICovXG4gICAgcmV0cmllcz86IG51bWJlciB8ICgocmV0cmllZDogbnVtYmVyKSA9PiBib29sZWFuKTtcbiAgICAvKipcbiAgICAgKiBEZWxheSBmb3IgcmVjb25uZWN0LCBpbiBtaWxsaXNlY29uZHNcbiAgICAgKlxuICAgICAqIE9yIHlvdSBjYW4gcGFzcyBhIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgZGVsYXkgYmFzZWQgb24gdGhlIG51bWJlciBvZiByZXRyaWVzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgMTAwMFxuICAgICAqL1xuICAgIGRlbGF5PzogbnVtYmVyIHwgKChyZXRyaWVzOiBudW1iZXIpID0+IG51bWJlcik7XG4gICAgLyoqXG4gICAgICogT24gbWF4aW11bSByZXRyeSB0aW1lcyByZWFjaGVkLlxuICAgICAqL1xuICAgIG9uRmFpbGVkPzogRm47XG4gIH07XG4gIC8qKlxuICAgKiBJbW1lZGlhdGVseSBvcGVuIHRoZSBjb25uZWN0aW9uIHdoZW4gY2FsbGluZyB0aGlzIGNvbXBvc2FibGVcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgY29ubmVjdCB0byB0aGUgd2Vic29ja2V0IHdoZW4gVVJMIGNoYW5nZXNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgYXV0b0Nvbm5lY3Q/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBjbG9zZSBhIGNvbm5lY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgYXV0b0Nsb3NlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygb25lIG9yIG1vcmUgc3ViLXByb3RvY29sIHN0cmluZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHByb3RvY29scz86IHN0cmluZ1tdO1xufVxuaW50ZXJmYWNlIFVzZVdlYlNvY2tldFJldHVybjxUPiB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGxhdGVzdCBkYXRhIHJlY2VpdmVkIHZpYSB0aGUgd2Vic29ja2V0LFxuICAgKiBjYW4gYmUgd2F0Y2hlZCB0byByZXNwb25kIHRvIGluY29taW5nIG1lc3NhZ2VzXG4gICAqL1xuICBkYXRhOiBSZWY8VCB8IG51bGw+O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgd2Vic29ja2V0IHN0YXR1cywgY2FuIGJlIG9ubHkgb25lIG9mOlxuICAgKiAnT1BFTicsICdDT05ORUNUSU5HJywgJ0NMT1NFRCdcbiAgICovXG4gIHN0YXR1czogU2hhbGxvd1JlZjxXZWJTb2NrZXRTdGF0dXM+O1xuICAvKipcbiAgICogQ2xvc2VzIHRoZSB3ZWJzb2NrZXQgY29ubmVjdGlvbiBncmFjZWZ1bGx5LlxuICAgKi9cbiAgY2xvc2U6IFdlYlNvY2tldFsnY2xvc2UnXTtcbiAgLyoqXG4gICAqIFJlb3BlbiB0aGUgd2Vic29ja2V0IGNvbm5lY3Rpb24uXG4gICAqIElmIHRoZXJlIHRoZSBjdXJyZW50IG9uZSBpcyBhY3RpdmUsIHdpbGwgY2xvc2UgaXQgYmVmb3JlIG9wZW5pbmcgYSBuZXcgb25lLlxuICAgKi9cbiAgb3BlbjogRm47XG4gIC8qKlxuICAgKiBTZW5kcyBkYXRhIHRocm91Z2ggdGhlIHdlYnNvY2tldCBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcGFyYW0gdXNlQnVmZmVyIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgeWV0IG9wZW4sIHN0b3JlIHRoZSBkYXRhIGludG8gdGhlIGJ1ZmZlciBhbmQgc2VudCB0aGVtIG9uZSBjb25uZWN0ZWQuIERlZmF1bHQgdG8gdHJ1ZS5cbiAgICovXG4gIHNlbmQ6IChkYXRhOiBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IEJsb2IsIHVzZUJ1ZmZlcj86IGJvb2xlYW4pID0+IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIFdlYlNvY2tldCBpbnN0YW5jZS5cbiAgICovXG4gIHdzOiBSZWY8V2ViU29ja2V0IHwgdW5kZWZpbmVkPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgV2ViU29ja2V0IGNsaWVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VXZWJTb2NrZXRcbiAqIEBwYXJhbSB1cmxcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VXZWJTb2NrZXQ8RGF0YSA9IGFueT4odXJsOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZyB8IFVSTCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VXZWJTb2NrZXRPcHRpb25zKTogVXNlV2ViU29ja2V0UmV0dXJuPERhdGE+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlV2ViV29ya2VyL2luZGV4LmQudHNcbnR5cGUgUG9zdE1lc3NhZ2UgPSB0eXBlb2YgV29ya2VyLnByb3RvdHlwZVsncG9zdE1lc3NhZ2UnXTtcbmludGVyZmFjZSBVc2VXZWJXb3JrZXJSZXR1cm48RGF0YSA9IGFueT4ge1xuICBkYXRhOiBSZWY8RGF0YT47XG4gIHBvc3Q6IFBvc3RNZXNzYWdlO1xuICB0ZXJtaW5hdGU6ICgpID0+IHZvaWQ7XG4gIHdvcmtlcjogU2hhbGxvd1JlZjxXb3JrZXIgfCB1bmRlZmluZWQ+O1xufVxudHlwZSBXb3JrZXJGbiA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IFdvcmtlcjtcbi8qKlxuICogU2ltcGxlIFdlYiBXb3JrZXJzIHJlZ2lzdHJhdGlvbiBhbmQgY29tbXVuaWNhdGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VXZWJXb3JrZXJcbiAqIEBwYXJhbSB1cmxcbiAqIEBwYXJhbSB3b3JrZXJPcHRpb25zXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVdlYldvcmtlcjxUID0gYW55Pih1cmw6IHN0cmluZywgd29ya2VyT3B0aW9ucz86IFdvcmtlck9wdGlvbnMsIG9wdGlvbnM/OiBDb25maWd1cmFibGVXaW5kb3cpOiBVc2VXZWJXb3JrZXJSZXR1cm48VD47XG4vKipcbiAqIFNpbXBsZSBXZWIgV29ya2VycyByZWdpc3RyYXRpb24gYW5kIGNvbW11bmljYXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlV2ViV29ya2VyXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlV2ViV29ya2VyPFQgPSBhbnk+KHdvcmtlcjogV29ya2VyIHwgV29ya2VyRm4pOiBVc2VXZWJXb3JrZXJSZXR1cm48VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VXZWJXb3JrZXJGbi9pbmRleC5kLnRzXG50eXBlIFdlYldvcmtlclN0YXR1cyA9ICdQRU5ESU5HJyB8ICdTVUNDRVNTJyB8ICdSVU5OSU5HJyB8ICdFUlJPUicgfCAnVElNRU9VVF9FWFBJUkVEJztcbmludGVyZmFjZSBVc2VXZWJXb3JrZXJPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIGtpbGxpbmcgdGhlIHdvcmtlclxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbiBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgbmVlZGVkIHRvIHJ1biB0aGUgd29ya2VyXG4gICAqL1xuICBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIGxvY2FsIGRlcGVuZGVuY2llcyBuZWVkZWQgdG8gcnVuIHRoZSB3b3JrZXJcbiAgICovXG4gIGxvY2FsRGVwZW5kZW5jaWVzPzogRnVuY3Rpb25bXTtcbn1cbmludGVyZmFjZSBVc2VXZWJXb3JrZXJGblJldHVybjxUIGV4dGVuZHMgKC4uLmZuQXJnczogYW55W10pID0+IGFueT4ge1xuICB3b3JrZXJGbjogKC4uLmZuQXJnczogUGFyYW1ldGVyczxUPikgPT4gUHJvbWlzZTxSZXR1cm5UeXBlPFQ+PjtcbiAgd29ya2VyU3RhdHVzOiBTaGFsbG93UmVmPFdlYldvcmtlclN0YXR1cz47XG4gIHdvcmtlclRlcm1pbmF0ZTogKHN0YXR1cz86IFdlYldvcmtlclN0YXR1cykgPT4gdm9pZDtcbn1cbi8qKlxuICogUnVuIGV4cGVuc2l2ZSBmdW5jdGlvbiB3aXRob3V0IGJsb2NraW5nIHRoZSBVSSwgdXNpbmcgYSBzaW1wbGUgc3ludGF4IHRoYXQgbWFrZXMgdXNlIG9mIFByb21pc2UuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlV2ViV29ya2VyRm5cbiAqIEBwYXJhbSBmblxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VXZWJXb3JrZXJGbjxUIGV4dGVuZHMgKC4uLmZuQXJnczogYW55W10pID0+IGFueT4oZm46IFQsIG9wdGlvbnM/OiBVc2VXZWJXb3JrZXJPcHRpb25zKTogVXNlV2ViV29ya2VyRm5SZXR1cm48VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VXaW5kb3dGb2N1cy9pbmRleC5kLnRzXG4vKipcbiAqIFJlYWN0aXZlbHkgdHJhY2sgd2luZG93IGZvY3VzIHdpdGggYHdpbmRvdy5vbmZvY3VzYCBhbmQgYHdpbmRvdy5vbmJsdXJgLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVdpbmRvd0ZvY3VzXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VXaW5kb3dGb2N1cyhvcHRpb25zPzogQ29uZmlndXJhYmxlV2luZG93KTogU2hhbGxvd1JlZjxib29sZWFuPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVdpbmRvd1Njcm9sbC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlV2luZG93U2Nyb2xsT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdywgVXNlU2Nyb2xsT3B0aW9ucyB7fVxuaW50ZXJmYWNlIFVzZVdpbmRvd1Njcm9sbFJldHVybiBleHRlbmRzIFVzZVNjcm9sbFJldHVybiB7fVxuLyoqXG4gKiBSZWFjdGl2ZSB3aW5kb3cgc2Nyb2xsLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVdpbmRvd1Njcm9sbFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VXaW5kb3dTY3JvbGwob3B0aW9ucz86IFVzZVdpbmRvd1Njcm9sbE9wdGlvbnMpOiBVc2VXaW5kb3dTY3JvbGxSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VXaW5kb3dTaXplL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VXaW5kb3dTaXplT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIGluaXRpYWxXaWR0aD86IG51bWJlcjtcbiAgaW5pdGlhbEhlaWdodD86IG51bWJlcjtcbiAgLyoqXG4gICAqIExpc3RlbiB0byB3aW5kb3cgYG9yaWVudGF0aW9uY2hhbmdlYCBldmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBsaXN0ZW5PcmllbnRhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzY3JvbGxiYXIgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSB3aWR0aCBhbmQgaGVpZ2h0XG4gICAqIE9ubHkgZWZmZWN0aXZlIHdoZW4gYHR5cGVgIGlzIGAnaW5uZXInYFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbmNsdWRlU2Nyb2xsYmFyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZSBgd2luZG93LmlubmVyV2lkdGhgIG9yIGB3aW5kb3cub3V0ZXJXaWR0aGAgb3IgYHdpbmRvdy52aXN1YWxWaWV3cG9ydGBcbiAgICogdmlzdWFsVmlld3BvcnQgZG9jdW1lbnRhdGlvbiBmcm9tIE1ETihodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9BUEkvVmlzdWFsVmlld3BvcnQpXG4gICAqIEBkZWZhdWx0ICdpbm5lcidcbiAgICovXG4gIHR5cGU/OiAnaW5uZXInIHwgJ291dGVyJyB8ICd2aXN1YWwnO1xufVxuaW50ZXJmYWNlIFVzZVdpbmRvd1NpemVSZXR1cm4ge1xuICB3aWR0aDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBoZWlnaHQ6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgd2luZG93IHNpemUuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlV2luZG93U2l6ZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVdpbmRvd1NpemUob3B0aW9ucz86IFVzZVdpbmRvd1NpemVPcHRpb25zKTogVXNlV2luZG93U2l6ZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuZXhwb3J0IHsgQWZ0ZXJGZXRjaENvbnRleHQsIEFzeW5jQ29tcHV0ZWRPbkNhbmNlbCwgQXN5bmNDb21wdXRlZE9wdGlvbnMsIEJhc2ljQ29sb3JNb2RlLCBCYXNpY0NvbG9yU2NoZW1hLCBCYXR0ZXJ5TWFuYWdlciwgQmVmb3JlRmV0Y2hDb250ZXh0LCBCcmVha3BvaW50cywgQnJvd3NlckxvY2F0aW9uU3RhdGUsIENsb25lRm4sIENvbG9yU2NoZW1lVHlwZSwgQ29tcHV0ZWRJbmplY3RHZXR0ZXIsIENvbXB1dGVkSW5qZWN0R2V0dGVyV2l0aERlZmF1bHQsIENvbXB1dGVkSW5qZWN0U2V0dGVyLCBDb25maWd1cmFibGVEZWVwUmVmcywgQ29uZmlndXJhYmxlRG9jdW1lbnQsIENvbmZpZ3VyYWJsZURvY3VtZW50T3JTaGFkb3dSb290LCBDb25maWd1cmFibGVMb2NhdGlvbiwgQ29uZmlndXJhYmxlTmF2aWdhdG9yLCBDb25maWd1cmFibGVTY2hlZHVsZXIsIENvbmZpZ3VyYWJsZVdpbmRvdywgQ29udHJhc3RUeXBlLCBDcmVhdGVGZXRjaE9wdGlvbnMsIENyZWF0ZVJldXNhYmxlVGVtcGxhdGVPcHRpb25zLCBDdWJpY0JlemllclBvaW50cywgRGVmYXVsdE1hZ2ljS2V5c0FsaWFzTWFwLCBEZWZpbmVUZW1wbGF0ZUNvbXBvbmVudCwgRGV2aWNlTW90aW9uT3B0aW9ucywgRG9jdW1lbnRFdmVudE5hbWUsIEVhc2luZ0Z1bmN0aW9uLCBFbGVtZW50U2l6ZSwgRXZlbnRCdXNFdmVudHMsIEV2ZW50QnVzSWRlbnRpZmllciwgRXZlbnRCdXNLZXksIEV2ZW50QnVzTGlzdGVuZXIsIEV2ZW50U291cmNlU3RhdHVzLCBFeWVEcm9wcGVyLCBFeWVEcm9wcGVyT3Blbk9wdGlvbnMsIEZpbGVTeXN0ZW1BY2Nlc3NTaG93T3BlbkZpbGVPcHRpb25zLCBGaWxlU3lzdGVtQWNjZXNzU2hvd1NhdmVGaWxlT3B0aW9ucywgRmlsZVN5c3RlbUFjY2Vzc1dpbmRvdywgRmlsZVN5c3RlbUZpbGVIYW5kbGUsIEZvcm1hdFRpbWVBZ29JbnRsT3B0aW9ucywgRm9ybWF0VGltZUFnb09wdGlvbnMsIEdlbmVyYWxFdmVudExpc3RlbmVyLCBHZW5lcmFsUGVybWlzc2lvbkRlc2NyaXB0b3IsIEludGVycG9sYXRpb25GdW5jdGlvbiwgS2V5RmlsdGVyLCBLZXlNb2RpZmllciwgS2V5UHJlZGljYXRlLCBLZXlTdHJva2VFdmVudE5hbWUsIE1hZ2ljS2V5c0ludGVybmFsLCBNYXliZUNvbXB1dGVkRWxlbWVudFJlZiwgTWF5YmVFbGVtZW50LCBNYXliZUVsZW1lbnRSZWYsIE1lbW9yeUluZm8sIE1vdXNlSW5FbGVtZW50T3B0aW9ucywgTW91c2VQcmVzc2VkT3B0aW9ucywgTmF2aWdhdG9yTGFuZ3VhZ2VTdGF0ZSwgTmV0d29ya0VmZmVjdGl2ZVR5cGUsIE5ldHdvcmtTdGF0ZSwgTmV0d29ya1R5cGUsIE9uQ2xpY2tPdXRzaWRlSGFuZGxlciwgT25DbGlja091dHNpZGVPcHRpb25zLCBPbkNsaWNrT3V0c2lkZVJldHVybiwgT25FbGVtZW50UmVtb3ZhbE9wdGlvbnMsIE9uRmV0Y2hFcnJvckNvbnRleHQsIE9uS2V5U3Ryb2tlT3B0aW9ucywgT25Mb25nUHJlc3NNb2RpZmllcnMsIE9uTG9uZ1ByZXNzT3B0aW9ucywgT25Mb25nUHJlc3NSZXR1cm4sIE9yaWVudGF0aW9uTG9ja1R5cGUsIE9yaWVudGF0aW9uVHlwZSwgUG9pbnRlclR5cGUsIFBvc2l0aW9uLCBSZWR1Y2VkTW90aW9uVHlwZSwgUmVkdWNlZFRyYW5zcGFyZW5jeVR5cGUsIFJlbmRlcmFibGVDb21wb25lbnQsIFJlc2l6ZU9ic2VydmVyQ2FsbGJhY2ssIFJlc2l6ZU9ic2VydmVyRW50cnksIFJlc2l6ZU9ic2VydmVyU2l6ZSwgUmV1c2FibGVUZW1wbGF0ZVBhaXIsIFJldXNlVGVtcGxhdGVDb21wb25lbnQsIFNTUkhhbmRsZXJzTWFwLCBTY3JlZW5PcmllbnRhdGlvbiwgU2VyaWFsaXplciwgU2VyaWFsaXplckFzeW5jLCBTaGFkb3dSb290RXZlbnROYW1lLCBTdG9yYWdlRXZlbnRMaWtlLCBTdG9yYWdlTGlrZSwgU3RvcmFnZUxpa2VBc3luYywgU3RvcmFnZVNlcmlhbGl6ZXJzLCBTdXBwb3J0YWJsZSwgVGVtcGxhdGVQcm9taXNlLCBUZW1wbGF0ZVByb21pc2VPcHRpb25zLCBUZW1wbGF0ZVByb21pc2VQcm9wcywgVGVtcGxhdGVSZWZzTGlzdCwgVGltZUFnb1VuaXQsIFRvRGF0YVVSTE9wdGlvbnMsIFRyYW5zaXRpb25PcHRpb25zLCBUcmFuc2l0aW9uUHJlc2V0cywgVW5SZWZFbGVtZW50UmV0dXJuLCBVbnJlZkZuLCBVcmxQYXJhbXMsIFVzZUFjdGl2ZUVsZW1lbnRPcHRpb25zLCBVc2VBY3RpdmVFbGVtZW50UmV0dXJuLCBVc2VBbmltYXRlS2V5ZnJhbWVzLCBVc2VBbmltYXRlT3B0aW9ucywgVXNlQW5pbWF0ZVJldHVybiwgVXNlQXN5bmNRdWV1ZU9wdGlvbnMsIFVzZUFzeW5jUXVldWVSZXN1bHQsIFVzZUFzeW5jUXVldWVSZXR1cm4sIFVzZUFzeW5jUXVldWVUYXNrLCBVc2VBc3luY1N0YXRlT3B0aW9ucywgVXNlQXN5bmNTdGF0ZVJldHVybiwgVXNlQXN5bmNTdGF0ZVJldHVybkJhc2UsIFVzZUJhc2U2NE9iamVjdE9wdGlvbnMsIFVzZUJhc2U2NE9wdGlvbnMsIFVzZUJhc2U2NFJldHVybiwgVXNlQmF0dGVyeU9wdGlvbnMsIFVzZUJhdHRlcnlSZXR1cm4sIFVzZUJsdWV0b290aE9wdGlvbnMsIFVzZUJsdWV0b290aFJlcXVlc3REZXZpY2VPcHRpb25zLCBVc2VCbHVldG9vdGhSZXR1cm4sIFVzZUJyZWFrcG9pbnRSZXR1cm4sIFVzZUJyZWFrcG9pbnRzT3B0aW9ucywgVXNlQnJvYWRjYXN0Q2hhbm5lbE9wdGlvbnMsIFVzZUJyb2FkY2FzdENoYW5uZWxSZXR1cm4sIFVzZUJyb3dzZXJMb2NhdGlvbk9wdGlvbnMsIFVzZUJyb3dzZXJMb2NhdGlvblJldHVybiwgVXNlQ2FjaGVkT3B0aW9ucywgVXNlQ2FjaGVkUmV0dXJuLCBVc2VDbGlwYm9hcmRJdGVtc09wdGlvbnMsIFVzZUNsaXBib2FyZEl0ZW1zUmV0dXJuLCBVc2VDbGlwYm9hcmRPcHRpb25zLCBVc2VDbGlwYm9hcmRSZXR1cm4sIFVzZUNsb25lZE9wdGlvbnMsIFVzZUNsb25lZFJldHVybiwgVXNlQ29sb3JNb2RlT3B0aW9ucywgVXNlQ29sb3JNb2RlUmV0dXJuLCBVc2VDb25maXJtRGlhbG9nUmV0dXJuLCBVc2VDb25maXJtRGlhbG9nUmV2ZWFsUmVzdWx0LCBVc2VDb3VudGRvd25PcHRpb25zLCBVc2VDb3VudGRvd25SZXR1cm4sIFVzZUNzc1N1cHBvcnRzT3B0aW9ucywgVXNlQ3NzU3VwcG9ydHNSZXR1cm4sIFVzZUNzc1Zhck9wdGlvbnMsIFVzZUN5Y2xlTGlzdE9wdGlvbnMsIFVzZUN5Y2xlTGlzdFJldHVybiwgVXNlRGFya09wdGlvbnMsIFVzZURhcmtSZXR1cm4sIFVzZURldmljZU1vdGlvbk9wdGlvbnMsIFVzZURldmljZU1vdGlvblJldHVybiwgVXNlRGV2aWNlT3JpZW50YXRpb25PcHRpb25zLCBVc2VEZXZpY2VPcmllbnRhdGlvblJldHVybiwgVXNlRGV2aWNlUGl4ZWxSYXRpb09wdGlvbnMsIFVzZURldmljZVBpeGVsUmF0aW9SZXR1cm4sIFVzZURldmljZXNMaXN0T3B0aW9ucywgVXNlRGV2aWNlc0xpc3RSZXR1cm4sIFVzZURpc3BsYXlNZWRpYU9wdGlvbnMsIFVzZURpc3BsYXlNZWRpYVJldHVybiwgVXNlRG9jdW1lbnRWaXNpYmlsaXR5T3B0aW9ucywgVXNlRG9jdW1lbnRWaXNpYmlsaXR5UmV0dXJuLCBVc2VEcmFnZ2FibGVPcHRpb25zLCBVc2VEcmFnZ2FibGVSZXR1cm4sIFVzZURyb3Bab25lT3B0aW9ucywgVXNlRHJvcFpvbmVSZXR1cm4sIFVzZUVsZW1lbnRCb3VuZGluZ09wdGlvbnMsIFVzZUVsZW1lbnRCb3VuZGluZ1JldHVybiwgVXNlRWxlbWVudEJ5UG9pbnRPcHRpb25zLCBVc2VFbGVtZW50QnlQb2ludFJldHVybiwgVXNlRWxlbWVudEhvdmVyT3B0aW9ucywgVXNlRWxlbWVudFNpemVPcHRpb25zLCBVc2VFbGVtZW50U2l6ZVJldHVybiwgVXNlRWxlbWVudFZpc2liaWxpdHlPcHRpb25zLCBVc2VFbGVtZW50VmlzaWJpbGl0eVJldHVybiwgVXNlRXZlbnRCdXNSZXR1cm4sIFVzZUV2ZW50U291cmNlT3B0aW9ucywgVXNlRXZlbnRTb3VyY2VSZXR1cm4sIFVzZUV5ZURyb3BwZXJPcHRpb25zLCBVc2VFeWVEcm9wcGVyUmV0dXJuLCBVc2VGYXZpY29uT3B0aW9ucywgVXNlRmF2aWNvblJldHVybiwgVXNlRmV0Y2hPcHRpb25zLCBVc2VGZXRjaFJldHVybiwgVXNlRmlsZURpYWxvZ09wdGlvbnMsIFVzZUZpbGVEaWFsb2dSZXR1cm4sIFVzZUZpbGVTeXN0ZW1BY2Nlc3NDb21tb25PcHRpb25zLCBVc2VGaWxlU3lzdGVtQWNjZXNzT3B0aW9ucywgVXNlRmlsZVN5c3RlbUFjY2Vzc1JldHVybiwgVXNlRmlsZVN5c3RlbUFjY2Vzc1Nob3dTYXZlRmlsZU9wdGlvbnMsIFVzZUZvY3VzT3B0aW9ucywgVXNlRm9jdXNSZXR1cm4sIFVzZUZvY3VzV2l0aGluUmV0dXJuLCBVc2VGcHNPcHRpb25zLCBVc2VGdWxsc2NyZWVuT3B0aW9ucywgVXNlRnVsbHNjcmVlblJldHVybiwgVXNlR2FtZXBhZE9wdGlvbnMsIFVzZUdhbWVwYWRSZXR1cm4sIFVzZUdlb2xvY2F0aW9uT3B0aW9ucywgVXNlR2VvbG9jYXRpb25SZXR1cm4sIFVzZUhvcml6b250YWxWaXJ0dWFsTGlzdE9wdGlvbnMsIFVzZUlkbGVPcHRpb25zLCBVc2VJZGxlUmV0dXJuLCBVc2VJbWFnZU9wdGlvbnMsIFVzZUltYWdlUmV0dXJuLCBVc2VJbmZpbml0ZVNjcm9sbE9wdGlvbnMsIFVzZUluZmluaXRlU2Nyb2xsUmV0dXJuLCBVc2VJbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMsIFVzZUludGVyc2VjdGlvbk9ic2VydmVyUmV0dXJuLCBVc2VLZXlNb2RpZmllclJldHVybiwgVXNlTWFnaWNLZXlzT3B0aW9ucywgVXNlTWFnaWNLZXlzUmV0dXJuLCBVc2VNYW51YWxSZWZIaXN0b3J5T3B0aW9ucywgVXNlTWFudWFsUmVmSGlzdG9yeVJldHVybiwgVXNlTWVkaWFDb250cm9sc1JldHVybiwgVXNlTWVkaWFTb3VyY2UsIFVzZU1lZGlhVGV4dFRyYWNrLCBVc2VNZWRpYVRleHRUcmFja1NvdXJjZSwgVXNlTWVtb2l6ZUNhY2hlLCBVc2VNZW1vaXplT3B0aW9ucywgVXNlTWVtb2l6ZVJldHVybiwgVXNlTWVtb3J5T3B0aW9ucywgVXNlTWVtb3J5UmV0dXJuLCBVc2VNb2RpZmllck9wdGlvbnMsIFVzZU1vdXNlQ29vcmRUeXBlLCBVc2VNb3VzZUV2ZW50RXh0cmFjdG9yLCBVc2VNb3VzZUluRWxlbWVudFJldHVybiwgVXNlTW91c2VPcHRpb25zLCBVc2VNb3VzZVByZXNzZWRPcHRpb25zLCBVc2VNb3VzZVByZXNzZWRSZXR1cm4sIFVzZU1vdXNlUmV0dXJuLCBVc2VNb3VzZVNvdXJjZVR5cGUsIFVzZU11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zLCBVc2VNdXRhdGlvbk9ic2VydmVyUmV0dXJuLCBVc2VOYXZpZ2F0b3JMYW5ndWFnZU9wdGlvbnMsIFVzZU5hdmlnYXRvckxhbmd1YWdlUmV0dXJuLCBVc2VOZXR3b3JrT3B0aW9ucywgVXNlTmV0d29ya1JldHVybiwgVXNlTm93T3B0aW9ucywgVXNlTm93UmV0dXJuLCBVc2VPZmZzZXRQYWdpbmF0aW9uSW5maW5pdHlQYWdlUmV0dXJuLCBVc2VPZmZzZXRQYWdpbmF0aW9uT3B0aW9ucywgVXNlT2Zmc2V0UGFnaW5hdGlvblJldHVybiwgVXNlT25Mb25nUHJlc3NSZXR1cm4sIFVzZVBhZ2VMZWF2ZU9wdGlvbnMsIFVzZVBhZ2VMZWF2ZVJldHVybiwgVXNlUGFyYWxsYXhPcHRpb25zLCBVc2VQYXJhbGxheFJldHVybiwgVXNlUGVyZm9ybWFuY2VPYnNlcnZlck9wdGlvbnMsIFVzZVBlcm1pc3Npb25PcHRpb25zLCBVc2VQZXJtaXNzaW9uUmV0dXJuLCBVc2VQZXJtaXNzaW9uUmV0dXJuV2l0aENvbnRyb2xzLCBVc2VQb2ludGVyTG9ja09wdGlvbnMsIFVzZVBvaW50ZXJMb2NrUmV0dXJuLCBVc2VQb2ludGVyT3B0aW9ucywgVXNlUG9pbnRlclJldHVybiwgVXNlUG9pbnRlclN0YXRlLCBVc2VQb2ludGVyU3dpcGVPcHRpb25zLCBVc2VQb2ludGVyU3dpcGVSZXR1cm4sIFVzZVJhZkZuQ2FsbGJhY2tBcmd1bWVudHMsIFVzZVJhZkZuT3B0aW9ucywgVXNlUmVmSGlzdG9yeU9wdGlvbnMsIFVzZVJlZkhpc3RvcnlSZWNvcmQsIFVzZVJlZkhpc3RvcnlSZXR1cm4sIFVzZVJlc2l6ZU9ic2VydmVyT3B0aW9ucywgVXNlUmVzaXplT2JzZXJ2ZXJSZXR1cm4sIFVzZVNjcmVlbk9yaWVudGF0aW9uT3B0aW9ucywgVXNlU2NyZWVuT3JpZW50YXRpb25SZXR1cm4sIFVzZVNjcmVlblNhZmVBcmVhUmV0dXJuLCBVc2VTY3JpcHRUYWdPcHRpb25zLCBVc2VTY3JpcHRUYWdSZXR1cm4sIFVzZVNjcm9sbE9wdGlvbnMsIFVzZVNjcm9sbFJldHVybiwgVXNlU2hhcmVPcHRpb25zLCBVc2VTaGFyZVJldHVybiwgVXNlU29ydGVkQ29tcGFyZUZuLCBVc2VTb3J0ZWRGbiwgVXNlU29ydGVkT3B0aW9ucywgVXNlU3BlZWNoUmVjb2duaXRpb25PcHRpb25zLCBVc2VTcGVlY2hSZWNvZ25pdGlvblJldHVybiwgVXNlU3BlZWNoU3ludGhlc2lzT3B0aW9ucywgVXNlU3BlZWNoU3ludGhlc2lzUmV0dXJuLCBVc2VTcGVlY2hTeW50aGVzaXNTdGF0dXMsIFVzZVN0ZXBwZXJSZXR1cm4sIFVzZVN0b3JhZ2VBc3luY09wdGlvbnMsIFVzZVN0b3JhZ2VPcHRpb25zLCBVc2VTdHlsZVRhZ09wdGlvbnMsIFVzZVN0eWxlVGFnUmV0dXJuLCBVc2VTdXBwb3J0ZWRSZXR1cm4sIFVzZVN3aXBlRGlyZWN0aW9uLCBVc2VTd2lwZU9wdGlvbnMsIFVzZVN3aXBlUmV0dXJuLCBVc2VUZXh0RGlyZWN0aW9uT3B0aW9ucywgVXNlVGV4dERpcmVjdGlvblZhbHVlLCBVc2VUZXh0U2VsZWN0aW9uT3B0aW9ucywgVXNlVGV4dFNlbGVjdGlvblJldHVybiwgVXNlVGV4dGFyZWFBdXRvc2l6ZU9wdGlvbnMsIFVzZVRleHRhcmVhQXV0b3NpemVSZXR1cm4sIFVzZVRocm90dGxlZFJlZkhpc3RvcnlPcHRpb25zLCBVc2VUaHJvdHRsZWRSZWZIaXN0b3J5UmV0dXJuLCBVc2VUaW1lQWdvRm9ybWF0dGVyLCBVc2VUaW1lQWdvSW50bE9wdGlvbnMsIFVzZVRpbWVBZ29NZXNzYWdlcywgVXNlVGltZUFnb01lc3NhZ2VzQnVpbHRJbiwgVXNlVGltZUFnb09wdGlvbnMsIFVzZVRpbWVBZ29SZXR1cm4sIFVzZVRpbWVBZ29Vbml0LCBVc2VUaW1lQWdvVW5pdE5hbWVzRGVmYXVsdCwgVXNlVGltZW91dFBvbGxPcHRpb25zLCBVc2VUaW1lc3RhbXBPcHRpb25zLCBVc2VUaW1lc3RhbXBSZXR1cm4sIFVzZVRpdGxlT3B0aW9ucywgVXNlVGl0bGVPcHRpb25zQmFzZSwgVXNlVGl0bGVSZXR1cm4sIFVzZVRyYW5zaXRpb25PcHRpb25zLCBVc2VVcmxTZWFyY2hQYXJhbXNPcHRpb25zLCBVc2VVc2VyTWVkaWFPcHRpb25zLCBVc2VVc2VyTWVkaWFSZXR1cm4sIFVzZVZNb2RlbE9wdGlvbnMsIFVzZVZlcnRpY2FsVmlydHVhbExpc3RPcHRpb25zLCBVc2VWaWJyYXRlT3B0aW9ucywgVXNlVmlicmF0ZVJldHVybiwgVXNlVmlydHVhbExpc3RJdGVtLCBVc2VWaXJ0dWFsTGlzdE9wdGlvbnMsIFVzZVZpcnR1YWxMaXN0T3B0aW9uc0Jhc2UsIFVzZVZpcnR1YWxMaXN0UmV0dXJuLCBVc2VXYWtlTG9ja09wdGlvbnMsIFVzZVdha2VMb2NrUmV0dXJuLCBVc2VXZWJOb3RpZmljYXRpb25PcHRpb25zLCBVc2VXZWJOb3RpZmljYXRpb25SZXR1cm4sIFVzZVdlYlNvY2tldE9wdGlvbnMsIFVzZVdlYlNvY2tldFJldHVybiwgVXNlV2ViV29ya2VyRm5SZXR1cm4sIFVzZVdlYldvcmtlck9wdGlvbnMsIFVzZVdlYldvcmtlclJldHVybiwgVXNlV2luZG93U2Nyb2xsT3B0aW9ucywgVXNlV2luZG93U2Nyb2xsUmV0dXJuLCBVc2VXaW5kb3dTaXplT3B0aW9ucywgVXNlV2luZG93U2l6ZVJldHVybiwgVnVlSW5zdGFuY2UsIFdha2VMb2NrU2VudGluZWwsIFdlYk5vdGlmaWNhdGlvbk9wdGlvbnMsIFdlYlNvY2tldEhlYXJ0YmVhdE1lc3NhZ2UsIFdlYlNvY2tldFN0YXR1cywgV2ViV29ya2VyU3RhdHVzLCBXaW5kb3dFdmVudE5hbWUsIFdyaXRhYmxlQ29tcHV0ZWRJbmplY3RPcHRpb25zLCBXcml0YWJsZUNvbXB1dGVkSW5qZWN0T3B0aW9uc1dpdGhEZWZhdWx0LCBhc3luY0NvbXB1dGVkLCBicmVha3BvaW50c0FudERlc2lnbiwgYnJlYWtwb2ludHNCb290c3RyYXBWNSwgYnJlYWtwb2ludHNFbGVtZW50LCBicmVha3BvaW50c01hc3RlckNzcywgYnJlYWtwb2ludHNQcmltZUZsZXgsIGJyZWFrcG9pbnRzUXVhc2FyLCBicmVha3BvaW50c1NlbWF0aWMsIGJyZWFrcG9pbnRzVGFpbHdpbmQsIGJyZWFrcG9pbnRzVnVldGlmeSwgYnJlYWtwb2ludHNWdWV0aWZ5VjIsIGJyZWFrcG9pbnRzVnVldGlmeVYzLCBjbG9uZUZuSlNPTiwgY29tcHV0ZWRBc3luYywgY29tcHV0ZWRJbmplY3QsIGNyZWF0ZUZldGNoLCBjcmVhdGVSZXVzYWJsZVRlbXBsYXRlLCBjcmVhdGVUZW1wbGF0ZVByb21pc2UsIGNyZWF0ZVVucmVmRm4sIGN1c3RvbVN0b3JhZ2VFdmVudE5hbWUsIGRlZmF1bHREb2N1bWVudCwgZGVmYXVsdExvY2F0aW9uLCBkZWZhdWx0TmF2aWdhdG9yLCBkZWZhdWx0V2luZG93LCBleGVjdXRlVHJhbnNpdGlvbiwgZm9ybWF0VGltZUFnbywgZm9ybWF0VGltZUFnb0ludGwsIGZvcm1hdFRpbWVBZ29JbnRsUGFydHMsIGdldFNTUkhhbmRsZXIsIG1hcEdhbWVwYWRUb1hib3gzNjBDb250cm9sbGVyLCBvbkNsaWNrT3V0c2lkZSwgb25FbGVtZW50UmVtb3ZhbCwgb25LZXlEb3duLCBvbktleVByZXNzZWQsIG9uS2V5U3Ryb2tlLCBvbktleVVwLCBvbkxvbmdQcmVzcywgb25TdGFydFR5cGluZywgcHJvdmlkZVNTUldpZHRoLCBzZXRTU1JIYW5kbGVyLCB0ZW1wbGF0ZVJlZiwgdHJhbnNpdGlvbiwgdW5yZWZFbGVtZW50LCB1c2VBY3RpdmVFbGVtZW50LCB1c2VBbmltYXRlLCB1c2VBc3luY1F1ZXVlLCB1c2VBc3luY1N0YXRlLCB1c2VCYXNlNjQsIHVzZUJhdHRlcnksIHVzZUJsdWV0b290aCwgdXNlQnJlYWtwb2ludHMsIHVzZUJyb2FkY2FzdENoYW5uZWwsIHVzZUJyb3dzZXJMb2NhdGlvbiwgdXNlQ2FjaGVkLCB1c2VDbGlwYm9hcmQsIHVzZUNsaXBib2FyZEl0ZW1zLCB1c2VDbG9uZWQsIHVzZUNvbG9yTW9kZSwgdXNlQ29uZmlybURpYWxvZywgdXNlQ291bnRkb3duLCB1c2VDc3NTdXBwb3J0cywgdXNlQ3NzVmFyLCB1c2VDdXJyZW50RWxlbWVudCwgdXNlQ3ljbGVMaXN0LCB1c2VEYXJrLCB1c2VEZWJvdW5jZWRSZWZIaXN0b3J5LCB1c2VEZXZpY2VNb3Rpb24sIHVzZURldmljZU9yaWVudGF0aW9uLCB1c2VEZXZpY2VQaXhlbFJhdGlvLCB1c2VEZXZpY2VzTGlzdCwgdXNlRGlzcGxheU1lZGlhLCB1c2VEb2N1bWVudFZpc2liaWxpdHksIHVzZURyYWdnYWJsZSwgdXNlRHJvcFpvbmUsIHVzZUVsZW1lbnRCb3VuZGluZywgdXNlRWxlbWVudEJ5UG9pbnQsIHVzZUVsZW1lbnRIb3ZlciwgdXNlRWxlbWVudFNpemUsIHVzZUVsZW1lbnRWaXNpYmlsaXR5LCB1c2VFdmVudEJ1cywgdXNlRXZlbnRMaXN0ZW5lciwgdXNlRXZlbnRTb3VyY2UsIHVzZUV5ZURyb3BwZXIsIHVzZUZhdmljb24sIHVzZUZldGNoLCB1c2VGaWxlRGlhbG9nLCB1c2VGaWxlU3lzdGVtQWNjZXNzLCB1c2VGb2N1cywgdXNlRm9jdXNXaXRoaW4sIHVzZUZwcywgdXNlRnVsbHNjcmVlbiwgdXNlR2FtZXBhZCwgdXNlR2VvbG9jYXRpb24sIHVzZUlkbGUsIHVzZUltYWdlLCB1c2VJbmZpbml0ZVNjcm9sbCwgdXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsIHVzZUtleU1vZGlmaWVyLCB1c2VMb2NhbFN0b3JhZ2UsIHVzZU1hZ2ljS2V5cywgdXNlTWFudWFsUmVmSGlzdG9yeSwgdXNlTWVkaWFDb250cm9scywgdXNlTWVkaWFRdWVyeSwgdXNlTWVtb2l6ZSwgdXNlTWVtb3J5LCB1c2VNb3VudGVkLCB1c2VNb3VzZSwgdXNlTW91c2VJbkVsZW1lbnQsIHVzZU1vdXNlUHJlc3NlZCwgdXNlTXV0YXRpb25PYnNlcnZlciwgdXNlTmF2aWdhdG9yTGFuZ3VhZ2UsIHVzZU5ldHdvcmssIHVzZU5vdywgdXNlT2JqZWN0VXJsLCB1c2VPZmZzZXRQYWdpbmF0aW9uLCB1c2VPbmxpbmUsIHVzZVBhZ2VMZWF2ZSwgdXNlUGFyYWxsYXgsIHVzZVBhcmVudEVsZW1lbnQsIHVzZVBlcmZvcm1hbmNlT2JzZXJ2ZXIsIHVzZVBlcm1pc3Npb24sIHVzZVBvaW50ZXIsIHVzZVBvaW50ZXJMb2NrLCB1c2VQb2ludGVyU3dpcGUsIHVzZVByZWZlcnJlZENvbG9yU2NoZW1lLCB1c2VQcmVmZXJyZWRDb250cmFzdCwgdXNlUHJlZmVycmVkRGFyaywgdXNlUHJlZmVycmVkTGFuZ3VhZ2VzLCB1c2VQcmVmZXJyZWRSZWR1Y2VkTW90aW9uLCB1c2VQcmVmZXJyZWRSZWR1Y2VkVHJhbnNwYXJlbmN5LCB1c2VQcmV2aW91cywgdXNlUmFmRm4sIHVzZVJlZkhpc3RvcnksIHVzZVJlc2l6ZU9ic2VydmVyLCB1c2VTU1JXaWR0aCwgdXNlU2NyZWVuT3JpZW50YXRpb24sIHVzZVNjcmVlblNhZmVBcmVhLCB1c2VTY3JpcHRUYWcsIHVzZVNjcm9sbCwgdXNlU2Nyb2xsTG9jaywgdXNlU2Vzc2lvblN0b3JhZ2UsIHVzZVNoYXJlLCB1c2VTb3J0ZWQsIHVzZVNwZWVjaFJlY29nbml0aW9uLCB1c2VTcGVlY2hTeW50aGVzaXMsIHVzZVN0ZXBwZXIsIHVzZVN0b3JhZ2UsIHVzZVN0b3JhZ2VBc3luYywgdXNlU3R5bGVUYWcsIHVzZVN1cHBvcnRlZCwgdXNlU3dpcGUsIHVzZVRlbXBsYXRlUmVmc0xpc3QsIHVzZVRleHREaXJlY3Rpb24sIHVzZVRleHRTZWxlY3Rpb24sIHVzZVRleHRhcmVhQXV0b3NpemUsIHVzZVRocm90dGxlZFJlZkhpc3RvcnksIHVzZVRpbWVBZ28sIHVzZVRpbWVBZ29JbnRsLCB1c2VUaW1lb3V0UG9sbCwgdXNlVGltZXN0YW1wLCB1c2VUaXRsZSwgdXNlVHJhbnNpdGlvbiwgdXNlVXJsU2VhcmNoUGFyYW1zLCB1c2VVc2VyTWVkaWEsIHVzZVZNb2RlbCwgdXNlVk1vZGVscywgdXNlVmlicmF0ZSwgdXNlVmlydHVhbExpc3QsIHVzZVdha2VMb2NrLCB1c2VXZWJOb3RpZmljYXRpb24sIHVzZVdlYlNvY2tldCwgdXNlV2ViV29ya2VyLCB1c2VXZWJXb3JrZXJGbiwgdXNlV2luZG93Rm9jdXMsIHVzZVdpbmRvd1Njcm9sbCwgdXNlV2luZG93U2l6ZSB9OyIsImV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZUJyZWFrcG9pbnRzKCk6IGltcG9ydChcIkB2dWV1c2UvY29yZVwiKS5Vc2VCcmVha3BvaW50UmV0dXJuPFwic21cIiB8IFwibWRcIiB8IFwibGdcIiB8IFwieGxcIiB8IFwiMnhsXCI+O1xuIiwiaW1wb3J0IHR5cGUgeyBNYXliZVJlZiB9IGZyb20gJ3Z1ZSc7XG5leHBvcnQgaW50ZXJmYWNlIFJHQiB7XG4gICAgcjogbnVtYmVyO1xuICAgIGc6IG51bWJlcjtcbiAgICBiOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJHQkEgZXh0ZW5kcyBSR0Ige1xuICAgIGE6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSFNMIHtcbiAgICBoOiBudW1iZXI7XG4gICAgczogbnVtYmVyO1xuICAgIGw6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT0tMQ0gge1xuICAgIGw6IG51bWJlcjtcbiAgICBjOiBudW1iZXI7XG4gICAgaDogbnVtYmVyO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZXh0cmFjUkdCKGNvbG9yOiBzdHJpbmcpOiBSR0I7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBleHRyYWN0UkdCQShjb2xvcjogc3RyaW5nKTogUkdCQTtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGhleFRvUkdCKGhleDogc3RyaW5nKTogUkdCO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gaHNsVG9SZ2IoaHNsOiBzdHJpbmcpOiBSR0I7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiByZ2JUb0hzbChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogSFNMO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcmdiVG9IZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IHN0cmluZztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHJnYmFUb1N0cmluZyhyZ2JhOiBSR0JBKTogc3RyaW5nO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZXh0cmFjdE9LTENIKGNvbG9yOiBzdHJpbmcpOiBPS0xDSDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIG9rbGNoVG9SZ2IoY29sb3I6IHN0cmluZyk6IFJHQjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHJnYlRvT2tsY2gocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IE9LTENIO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlQ29sb3JUeXBlKHBheWxvYWQ/OiBNYXliZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPik6IGltcG9ydChcInZ1ZVwiKS5Xcml0YWJsZUNvbXB1dGVkUmVmPHN0cmluZyB8IG51bGwsIHN0cmluZyB8IG51bGw+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlUkdCKHBheWxvYWQ/OiBNYXliZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPik6IGltcG9ydChcInZ1ZVwiKS5Xcml0YWJsZUNvbXB1dGVkUmVmPFJHQiB8IG51bGwsIFJHQiB8IG51bGw+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlUkdCQShwYXlsb2FkPzogTWF5YmVSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxSR0JBIHwgbnVsbCwgUkdCQSB8IG51bGw+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlSFNMKHBheWxvYWQ/OiBNYXliZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPik6IGltcG9ydChcInZ1ZVwiKS5Xcml0YWJsZUNvbXB1dGVkUmVmPEhTTCB8IG51bGwsIEhTTCB8IG51bGw+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlSGV4KHBheWxvYWQ/OiBNYXliZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPik6IGltcG9ydChcInZ1ZVwiKS5Xcml0YWJsZUNvbXB1dGVkUmVmPHN0cmluZyB8IG51bGwsIHN0cmluZyB8IG51bGw+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlQ29sb3IocGF5bG9hZD86IE1heWJlUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KToge1xuICAgIHR5cGU6IGltcG9ydChcInZ1ZVwiKS5Xcml0YWJsZUNvbXB1dGVkUmVmPHN0cmluZyB8IG51bGwsIHN0cmluZyB8IG51bGw+O1xuICAgIGNvbG9yOiBpbXBvcnQoXCJ2dWVcIikuUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAgIGhleDogaW1wb3J0KFwidnVlXCIpLldyaXRhYmxlQ29tcHV0ZWRSZWY8c3RyaW5nIHwgbnVsbCwgc3RyaW5nIHwgbnVsbD47XG4gICAgcmdiOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxSR0IgfCBudWxsLCBSR0IgfCBudWxsPjtcbiAgICBoc2w6IGltcG9ydChcInZ1ZVwiKS5Xcml0YWJsZUNvbXB1dGVkUmVmPEhTTCB8IG51bGwsIEhTTCB8IG51bGw+O1xuICAgIG9rbGNoOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxPS0xDSCB8IG51bGwsIE9LTENIIHwgbnVsbD47XG4gICAgcmdiYTogaW1wb3J0KFwidnVlXCIpLldyaXRhYmxlQ29tcHV0ZWRSZWY8UkdCQSB8IG51bGwsIFJHQkEgfCBudWxsPjtcbn07XG4iLCJpbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcuL0xvZ2dlclNlcnZpY2UudHMnO1xuZXhwb3J0IGludGVyZmFjZSBFbW1pdHRlckxpc3RlbmVyT3B0aW9ucyB7XG4gICAgZXZlbnQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRW1taXR0ZXJMaXN0ZW5lciB7XG4gICAgKGRhdGE6IGFueSwgb3B0aW9uczogRW1taXR0ZXJMaXN0ZW5lck9wdGlvbnMpOiB2b2lkO1xufVxuaW50ZXJmYWNlIEVtbWl0dGVySGFuZGxlciB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBldmVudDogc3RyaW5nO1xuICAgIGxpc3RlbmVyOiBFbW1pdHRlckxpc3RlbmVyO1xuICAgIG9yaWdpbmFsTGlzdGVuZXI/OiBFbW1pdHRlckxpc3RlbmVyO1xufVxuaW50ZXJmYWNlIE9uT3B0aW9ucyB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgdW5pcXVlPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBPbkRlYm91bmNlT3B0aW9ucyBleHRlbmRzIE9uT3B0aW9ucyB7XG4gICAgZGVib3VuY2U/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEVtbWl0dGVyU2VydmljZU9wdGlvbnMge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBsb2dnZXI/OiBMb2dnZXJTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1taXR0ZXJTZXJ2aWNlPEV2ZW50cyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGhhbmRsZXJzOiBFbW1pdHRlckhhbmRsZXJbXTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucz86IEVtbWl0dGVyU2VydmljZU9wdGlvbnMpO1xuICAgIHN0YXRpYyBjcmVhdGU8RXZlbnRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KG9wdGlvbnM/OiBFbW1pdHRlclNlcnZpY2VPcHRpb25zKTogRW1taXR0ZXJTZXJ2aWNlPEV2ZW50cz47XG4gICAgc2V0RGVidWcoZGVidWc6IGJvb2xlYW4pOiB2b2lkO1xuICAgIHNldExvZ2dlcihsb2dnZXI6IExvZ2dlclNlcnZpY2UpOiB2b2lkO1xuICAgIG9uPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbihldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbmNlPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbmNlKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoYXJnczogYW55KSA9PiB2b2lkLCBvcHRpb25zPzogT25PcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyO1xuICAgIG9uRGVib3VuY2U8SyBleHRlbmRzIGtleW9mIEV2ZW50cz4oZXZlbnQ6IEssIGxpc3RlbmVyOiAoYXJnczogRXZlbnRzW0tdKSA9PiB2b2lkLCBvcHRpb25zPzogT25EZWJvdW5jZU9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb25EZWJvdW5jZShldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uRGVib3VuY2VPcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyO1xuICAgIG9uQW55T2Y8SyBleHRlbmRzIGtleW9mIEV2ZW50cz4oZXZlbnRzOiBLW10sIGxpc3RlbmVyOiAoYXJnczogRXZlbnRzW0tdKSA9PiB2b2lkLCBvcHRpb25zPzogT25PcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyW107XG4gICAgb25BbnlPZihldmVudHM6IHN0cmluZ1tdLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcltdO1xuICAgIG9mZihldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogRW1taXR0ZXJIYW5kbGVyWydsaXN0ZW5lciddKTogdm9pZDtcbiAgICBlbWl0PEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBhcmdzOiBFdmVudHNbS10pOiB2b2lkO1xuICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgYXJncz86IGFueSk6IHZvaWQ7XG4gICAgZW1pdEFuZFdhaXQ8SyBleHRlbmRzIGtleW9mIEV2ZW50cz4oZXZlbnQ6IEssIGFyZ3M6IEV2ZW50c1tLXSk6IFByb21pc2U8dm9pZD47XG4gICAgZW1pdEFuZFdhaXQoZXZlbnQ6IHN0cmluZywgYXJncz86IGFueSk6IFByb21pc2U8dm9pZD47XG4gICAgbGlzdCgpOiBFbW1pdHRlckhhbmRsZXJbXTtcbiAgICBsaXN0QnlFdmVudChldmVudDogc3RyaW5nKTogRW1taXR0ZXJIYW5kbGVyW107XG4gICAgcmVtb3ZlKHBheWxvYWQ6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZDtcbiAgICBjbGVhcigpOiB2b2lkO1xuICAgIGhhc0hhbmRsZXJzKCk6IGJvb2xlYW47XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZEdyaWRVbml0IHtcbiAgICBiYXNlPzogbnVtYmVyO1xuICAgIHNtPzogbnVtYmVyO1xuICAgIG1kPzogbnVtYmVyO1xuICAgIGxnPzogbnVtYmVyO1xuICAgIHhsPzogbnVtYmVyO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGFzaGJvYXJkV2lkZ2V0RGF0YSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVmaW5pdGlvbl9pZDogc3RyaW5nO1xuICAgIGNvbHVtbnM6IERhc2hib2FyZEdyaWRVbml0O1xuICAgIHJvd3M6IERhc2hib2FyZEdyaWRVbml0O1xuICAgIHg6IERhc2hib2FyZEdyaWRVbml0O1xuICAgIHk6IERhc2hib2FyZEdyaWRVbml0O1xuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBQYXJ0aWFsPERhc2hib2FyZFdpZGdldERhdGE+KTtcbn1cbiIsImV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkV2lkZ2V0QWN0aW9uIHtcbiAgICBwcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY29tcG9uZW50OiBhbnk7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgY29tcG9uZW50KCk6IGFueTtcbiAgICBhY3Rpb25zKCk6IERhc2hib2FyZFdpZGdldEFjdGlvbltdO1xufVxuIiwiaW1wb3J0IEVtbWl0dGVyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0VtbWl0dGVyU2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSBEYXNoYm9hcmRXaWRnZXREYXRhIGZyb20gJy4vRGFzaGJvYXJkV2lkZ2V0RGF0YSc7XG5pbXBvcnQgRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbiBmcm9tICcuL0Rhc2hib2FyZFdpZGdldERlZmluaXRpb24nO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgREFTSEJPQVJEX1JPV19IRUlHSFQgPSA4MDtcbmludGVyZmFjZSBEYXNoYm9hcmRXaWRnZXRPcHRpb25zIHtcbiAgICBkYXRhOiBEYXNoYm9hcmRXaWRnZXREYXRhO1xuICAgIGRlZmluaXRpb246IERhc2hib2FyZFdpZGdldERlZmluaXRpb247XG59XG5pbnRlcmZhY2UgU3R5bGVzT3B0aW9ucyB7XG4gICAgY29udGlhbmVyV2lkdGg6IG51bWJlcjtcbiAgICBicmVha3BvaW50PzogJ2Jhc2UnIHwgJ3NtJyB8ICdtZCcgfCAneGwnO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGFzaGJvYXJkV2lkZ2V0IHtcbiAgICBkYXRhOiBEYXNoYm9hcmRXaWRnZXREYXRhO1xuICAgIGRlZmluaXRpb246IERhc2hib2FyZFdpZGdldERlZmluaXRpb247XG4gICAgZW1taXR0ZXI6IEVtbWl0dGVyU2VydmljZTtcbiAgICBjb25zdHJ1Y3Rvcih7IGRhdGEsIGRlZmluaXRpb24gfTogRGFzaGJvYXJkV2lkZ2V0T3B0aW9ucyk7XG4gICAgc3RhdGljIGZyb21EYXRhKGRhdGE6IERhc2hib2FyZFdpZGdldERhdGEpOiBEYXNoYm9hcmRXaWRnZXQ7XG4gICAgc2V0RW1taXR0ZXIoZW1taXR0ZXI6IEVtbWl0dGVyU2VydmljZSk6IHZvaWQ7XG4gICAgZ2V0IGlkKCk6IHN0cmluZztcbiAgICBnZXQgbmFtZSgpOiBzdHJpbmc7XG4gICAgc2V0IG5hbWUodmFsdWU6IHN0cmluZyk7XG4gICAgZ2V0IG9wdGlvbnMoKTogRGFzaGJvYXJkV2lkZ2V0RGF0YVsnb3B0aW9ucyddO1xuICAgIGdldCBkZWZpbml0aW9uX2lkKCk6IHN0cmluZztcbiAgICBjb21wb25lbnQoKTogYW55O1xuICAgIGFjdGlvbnMoKTogaW1wb3J0KFwiLi9EYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uXCIpLkRhc2hib2FyZFdpZGdldEFjdGlvbltdO1xuICAgIGdldCBjb2x1bW5zKCk6IERhc2hib2FyZFdpZGdldERhdGFbJ2NvbHVtbnMnXTtcbiAgICBzZXQgY29sdW1ucyhwYXlsb2FkOiBEYXNoYm9hcmRXaWRnZXREYXRhWydjb2x1bW5zJ10pO1xuICAgIGdldCByb3dzKCk6IERhc2hib2FyZFdpZGdldERhdGFbJ3Jvd3MnXTtcbiAgICBzZXQgcm93cyhwYXlsb2FkOiBEYXNoYm9hcmRXaWRnZXREYXRhWydyb3dzJ10pO1xuICAgIGdldCB4KCk6IERhc2hib2FyZFdpZGdldERhdGFbJ3gnXTtcbiAgICBzZXQgeChwYXlsb2FkOiBEYXNoYm9hcmRXaWRnZXREYXRhWyd4J10pO1xuICAgIGdldCB5KCk6IERhc2hib2FyZFdpZGdldERhdGFbJ3knXTtcbiAgICBzZXQgeShwYXlsb2FkOiBEYXNoYm9hcmRXaWRnZXREYXRhWyd5J10pO1xuICAgIGdldCBjbGFzc2VzKCk6IHN0cmluZztcbiAgICBjb21wdXRlU3R5bGVzKG9wdGlvbnM6IFN0eWxlc09wdGlvbnMpOiBzdHJpbmc7XG4gICAgdXBkYXRlKHBheWxvYWQ6IFBhcnRpYWw8RGFzaGJvYXJkV2lkZ2V0RGF0YT4pOiB2b2lkO1xuICAgIHNldE9wdGlvbihrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gICAgc2V0WChicmVha3BvaW50OiAnYmFzZScgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnLCB2YWx1ZT86IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQ7XG4gICAgc2V0WShicmVha3BvaW50OiAnYmFzZScgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnLCB2YWx1ZT86IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQ7XG4gICAgc2V0Q29sdW1uKGJyZWFrcG9pbnQ6ICdiYXNlJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcsIHZhbHVlPzogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZDtcbiAgICBzZXRSb3coYnJlYWtwb2ludDogJ2Jhc2UnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJywgdmFsdWU/OiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0ICogYXMgdiBmcm9tICd2YWxpYm90JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IG51bWJlcjogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgYm9vbGVhbjogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5Cb29sZWFuU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBib29sZWFuLCBib29sZWFuPl0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZGF0ZTogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5EYXRlU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBEYXRlLCBEYXRlPiwgdi5UcmFuc2Zvcm1BY3Rpb248RGF0ZSwgc3RyaW5nPl0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZGF0ZXRpbWU6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuRGF0ZVNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgRGF0ZSwgc3RyaW5nIHwgbnVsbD5dPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGFycmF5OiA8VCBleHRlbmRzIHYuQmFzZVNjaGVtYTxhbnksIGFueSwgYW55Pj4oc2NoZW1hPzogVCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTxULCB1bmRlZmluZWQ+XT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhcnJheU51bWJlcjogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTx2LkJhc2VTY2hlbWE8YW55LCBhbnksIGFueT4sIHVuZGVmaW5lZD5dPiwgdi5UcmFuc2Zvcm1BY3Rpb248YW55W10sIG51bWJlcltdPl0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgb2JqZWN0OiAoKSA9PiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LlJlY29yZFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFueVNjaGVtYSwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHtcbiAgICBbeDogc3RyaW5nXTogYW55O1xufSwge1xuICAgIFt4OiBzdHJpbmddOiBhbnk7XG59Piwgdi5UcmFuc2Zvcm1BY3Rpb248e1xuICAgIFt4OiBzdHJpbmddOiBhbnk7XG59LCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pl0+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXJsKCk6IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuUmVjb3JkU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQW55U2NoZW1hLCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwge1xuICAgIFt4OiBzdHJpbmddOiBhbnk7XG59LCB7XG4gICAgW3g6IHN0cmluZ106IGFueTtcbn0+LCB2LlRyYW5zZm9ybUFjdGlvbjx7XG4gICAgW3g6IHN0cmluZ106IGFueTtcbn0sIFJlY29yZDxzdHJpbmcsIGFueT4+XT47XG5leHBvcnQgZGVjbGFyZSBuYW1lc3BhY2UgdXJsIHtcbiAgICB2YXIgbnVtYmVyOiAoKSA9PiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2Lk51bWJlclNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248YW55LCBudW1iZXI+LCB2LkludGVnZXJBY3Rpb248bnVtYmVyLCB1bmRlZmluZWQ+XT47XG4gICAgdmFyIGJvb2xlYW46ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQm9vbGVhblNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgYm9vbGVhbiwgYm9vbGVhbj5dPjtcbiAgICB2YXIgZGF0ZTogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5EYXRlU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBEYXRlLCBEYXRlPiwgdi5UcmFuc2Zvcm1BY3Rpb248RGF0ZSwgc3RyaW5nPl0+O1xuICAgIHZhciBkYXRldGltZTogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5EYXRlU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBEYXRlLCBzdHJpbmcgfCBudWxsPl0+O1xuICAgIHZhciBhcnJheTogPFQgZXh0ZW5kcyB2LkJhc2VTY2hlbWE8YW55LCBhbnksIGFueT4+KHNjaGVtYT86IFQpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8VCwgdW5kZWZpbmVkPl0+O1xuICAgIHZhciBhcnJheU51bWJlcjogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTx2LkJhc2VTY2hlbWE8YW55LCBhbnksIGFueT4sIHVuZGVmaW5lZD5dPiwgdi5UcmFuc2Zvcm1BY3Rpb248YW55W10sIG51bWJlcltdPl0+O1xuICAgIHZhciBvYmplY3Q6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuUmVjb3JkU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQW55U2NoZW1hLCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwge1xuICAgICAgICBbeDogc3RyaW5nXTogYW55O1xuICAgIH0sIHtcbiAgICAgICAgW3g6IHN0cmluZ106IGFueTtcbiAgICB9Piwgdi5UcmFuc2Zvcm1BY3Rpb248e1xuICAgICAgICBbeDogc3RyaW5nXTogYW55O1xuICAgIH0sIFJlY29yZDxzdHJpbmcsIGFueT4+XT47XG59XG4iLCJpbXBvcnQgKiBhcyB2IGZyb20gJ3ZhbGlib3QnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qga2V5VmFsdWU6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj5dPjtcbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25QYXJhbXMge1xuICAgIG1heExpbWl0PzogbnVtYmVyO1xuICAgIG9yZGVyRmllbGRzPzogc3RyaW5nW107XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBiYXNlOiAob3B0aW9ucz86IFBhZ2luYXRpb25QYXJhbXMpID0+IHYuT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBwYWdlOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxhbnksIG51bWJlcj4sIHYuSW50ZWdlckFjdGlvbjxudW1iZXIsIHVuZGVmaW5lZD5dPiwgMT47XG4gICAgcmVhZG9ubHkgbGltaXQ6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+LCBudW1iZXI+O1xuICAgIHJlYWRvbmx5IG9yZGVyQnk6IHYuTnVsbGlzaFNjaGVtYTx2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPHYuUGlja2xpc3RTY2hlbWE8c3RyaW5nW10sIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dPiB8IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0+LCByZWFkb25seSBbXT47XG4gICAgcmVhZG9ubHkgb3JkZXJEaXJlY3Rpb246IHYuTnVsbGlzaFNjaGVtYTx2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPHYuVW5pb25TY2hlbWE8W3YuTGl0ZXJhbFNjaGVtYTxcImFzY1wiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJkZXNjXCIsIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XT4sIHJlYWRvbmx5IFtdPjtcbn0sIHVuZGVmaW5lZD47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwYWdpbmF0aW9uKG9wdGlvbnM/OiBQYWdpbmF0aW9uUGFyYW1zKTogdi5PYmplY3RTY2hlbWE8e1xuICAgIHJlYWRvbmx5IHBhZ2U6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+LCAxPjtcbiAgICByZWFkb25seSBsaW1pdDogdi5PcHRpb25hbFNjaGVtYTx2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2Lk51bWJlclNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248YW55LCBudW1iZXI+LCB2LkludGVnZXJBY3Rpb248bnVtYmVyLCB1bmRlZmluZWQ+XT4sIG51bWJlcj47XG4gICAgcmVhZG9ubHkgb3JkZXJCeTogdi5OdWxsaXNoU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5QaWNrbGlzdFNjaGVtYTxzdHJpbmdbXSwgdW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0+IHwgdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XT4sIHJlYWRvbmx5IFtdPjtcbiAgICByZWFkb25seSBvcmRlckRpcmVjdGlvbjogdi5OdWxsaXNoU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5VbmlvblNjaGVtYTxbdi5MaXRlcmFsU2NoZW1hPFwiYXNjXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcImRlc2NcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dPiwgcmVhZG9ubHkgW10+O1xufSwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIG5hbWVzcGFjZSBwYWdpbmF0aW9uIHtcbiAgICB2YXIgYmFzZTogKG9wdGlvbnM/OiBQYWdpbmF0aW9uUGFyYW1zKSA9PiB2Lk9iamVjdFNjaGVtYTx7XG4gICAgICAgIHJlYWRvbmx5IHBhZ2U6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+LCAxPjtcbiAgICAgICAgcmVhZG9ubHkgbGltaXQ6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+LCBudW1iZXI+O1xuICAgICAgICByZWFkb25seSBvcmRlckJ5OiB2Lk51bGxpc2hTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTx2LlBpY2tsaXN0U2NoZW1hPHN0cmluZ1tdLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XT4gfCB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dPiwgcmVhZG9ubHkgW10+O1xuICAgICAgICByZWFkb25seSBvcmRlckRpcmVjdGlvbjogdi5OdWxsaXNoU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5VbmlvblNjaGVtYTxbdi5MaXRlcmFsU2NoZW1hPFwiYXNjXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcImRlc2NcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dPiwgcmVhZG9ubHkgW10+O1xuICAgIH0sIHVuZGVmaW5lZD47XG59XG4iLCJleHBvcnQgKiBmcm9tICcuL3VybFZhbGlkYXRvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2tleVZhbHVlVmFsaWRhdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vcGFnaW5hdGlvblZhbGlkYXRvci50cyc7XG4iLCJpbXBvcnQgKiBhcyB2IGZyb20gJ3ZhbGlib3QnO1xuaW1wb3J0ICogYXMgZXh0cmFzIGZyb20gJyNzaGFyZWQvdmFsaWRhdG9ycy9pbmRleC50cyc7XG5leHBvcnQgdHlwZSBWYWxpYm90ID0gdHlwZW9mIHYgJiB7XG4gICAgZXh0cmFzOiB0eXBlb2YgZXh0cmFzO1xufTtcbmV4cG9ydCB0eXBlIFZhbGlib3RTY2hlbWEgPSB2LkJhc2VTY2hlbWE8dW5rbm93biwgdW5rbm93biwgdi5CYXNlSXNzdWU8dW5rbm93bj4+O1xuZXhwb3J0IHR5cGUgVmFsaWJvdE9iamVjdFNjaGVtYSA9IHYuT2JqZWN0U2NoZW1hPGFueSwgYW55PjtcbmV4cG9ydCB0eXBlIFZhbGlib3RTY2hlbWFBc3luYyA9IHYuQmFzZVNjaGVtYUFzeW5jPHVua25vd24sIHVua25vd24sIHYuQmFzZUlzc3VlPHVua25vd24+PjtcbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yQ2FsbGJhY2s8VCBleHRlbmRzIFZhbGlib3RTY2hlbWE+IHtcbiAgICAoX3Y6IFZhbGlib3QpOiBUO1xufVxuZXhwb3J0IHR5cGUgVmFsaWRhdG9yQ2FsbGJhY2tBc3luYzxUIGV4dGVuZHMgVmFsaWJvdFNjaGVtYUFzeW5jPiA9IHtcbiAgICAoX3Y6IFZhbGlib3QpOiBUO1xufTtcbmV4cG9ydCB0eXBlIFZhbGlkYXRvclJlc3VsdDxUIGV4dGVuZHMgdi5CYXNlU2NoZW1hPGFueSwgYW55LCBhbnk+PiA9IHYuSW5mZXJPdXRwdXQ8VD47XG5leHBvcnQgdHlwZSBWYWxpZGF0ZVBheWxvYWQ8VCBleHRlbmRzIFZhbGlib3RTY2hlbWEgPSBWYWxpYm90U2NoZW1hPiA9IFZhbGlkYXRvckNhbGxiYWNrPFQ+IHwgVDtcbmV4cG9ydCB0eXBlIFZhbGlkYXRlUmVzdWx0PFQgZXh0ZW5kcyBWYWxpZGF0ZVBheWxvYWQ+ID0gVCBleHRlbmRzIFZhbGlib3RTY2hlbWEgPyB2LkluZmVyT3V0cHV0PFQ+IDogVCBleHRlbmRzIFZhbGlkYXRvckNhbGxiYWNrPGluZmVyIFU+ID8gdi5JbmZlck91dHB1dDxVPiA6IHVua25vd247XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYWxpZGF0b3JTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgdjogVmFsaWJvdDtcbiAgICBjcmVhdGU8VCBleHRlbmRzIFZhbGlib3RTY2hlbWE+KGNiOiBWYWxpZGF0b3JDYWxsYmFjazxUPik6IFQ7XG4gICAgdmFsaWRhdGU8VCBleHRlbmRzIFZhbGlib3RTY2hlbWE+KHBheWxvYWQ6IGFueSwgY2I6IFZhbGlkYXRlUGF5bG9hZDxUPik6IHYuSW5mZXJPdXRwdXQ8VD47XG4gICAgdmFsaWRhdGVBc3luYzxUIGV4dGVuZHMgVmFsaWJvdFNjaGVtYUFzeW5jPihwYXlsb2FkOiBhbnksIGNiOiBWYWxpZGF0b3JDYWxsYmFja0FzeW5jPFQ+IHwgVCk6IFByb21pc2U8di5JbmZlck91dHB1dDxUPj47XG4gICAgaXNWYWxpZDxUIGV4dGVuZHMgVmFsaWJvdFNjaGVtYT4ocGF5bG9hZDogYW55LCBjYjogVmFsaWRhdGVQYXlsb2FkPFQ+KTogYm9vbGVhbjtcbn1cbiIsImltcG9ydCB0eXBlIHsgVmFsaWRhdG9yUmVzdWx0IH0gZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9WYWxpZGF0b3JTZXJ2aWNlLnRzJztcbmV4cG9ydCB0eXBlIERhc2hib2FyZFNjaGVtYSA9IFZhbGlkYXRvclJlc3VsdDxSZXR1cm5UeXBlPHR5cGVvZiBkYXNoYm9hcmRTY2hlbWE+PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGRhc2hib2FyZFNjaGVtYSgpOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9iamVjdFNjaGVtYTx7XG4gICAgcmVhZG9ubHkgaWQ6IGltcG9ydChcInZhbGlib3RcIikuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgbmFtZTogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBkZXNjcmlwdGlvbjogaW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGNyZWF0ZWRfYXQ6IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgdXBkYXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBkZWxldGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bGxhYmxlU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgbWV0YXM6IGltcG9ydChcInZhbGlib3RcIikuT3B0aW9uYWxTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5SZWNvcmRTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgaW1wb3J0KFwidmFsaWJvdFwiKS5BbnlTY2hlbWEsIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG59LCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgbmFtZXNwYWNlIGRhc2hib2FyZFNjaGVtYSB7XG4gICAgdmFyIGNyZWF0ZTogT21pdDxpbXBvcnQoXCJ2YWxpYm90XCIpLk9iamVjdFNjaGVtYTx7XG4gICAgICAgIHJlYWRvbmx5IGlkOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBuYW1lOiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBkZXNjcmlwdGlvbjogaW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBjcmVhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSB1cGRhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBkZWxldGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bGxhYmxlU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgICAgIHJlYWRvbmx5IG1ldGFzOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuUmVjb3JkU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIGltcG9ydChcInZhbGlib3RcIikuQW55U2NoZW1hLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIH0sIHVuZGVmaW5lZD4sIFwiZW50cmllc1wiIHwgXCJ+dHlwZXNcIiB8IFwifnJ1blwiIHwgXCJ+c3RhbmRhcmRcIj4gJiB7XG4gICAgICAgIHJlYWRvbmx5IGVudHJpZXM6IFBpY2s8e1xuICAgICAgICAgICAgcmVhZG9ubHkgaWQ6IGltcG9ydChcInZhbGlib3RcIikuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgICAgICAgICByZWFkb25seSBuYW1lOiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgZGVzY3JpcHRpb246IGltcG9ydChcInZhbGlib3RcIikuTnVsbGFibGVTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICAgICAgICAgIHJlYWRvbmx5IGNyZWF0ZWRfYXQ6IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgICAgICAgICByZWFkb25seSB1cGRhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgZGVsZXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgbWV0YXM6IGltcG9ydChcInZhbGlib3RcIikuT3B0aW9uYWxTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5SZWNvcmRTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgaW1wb3J0KFwidmFsaWJvdFwiKS5BbnlTY2hlbWEsIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgICAgIH0sIFwiZGVzY3JpcHRpb25cIiB8IFwibmFtZVwiPjtcbiAgICAgICAgcmVhZG9ubHkgXCJ+c3RhbmRhcmRcIjogaW1wb3J0KFwidmFsaWJvdFwiKS5TdGFuZGFyZFByb3BzPHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfT47XG4gICAgICAgIHJlYWRvbmx5IFwifnJ1blwiOiAoZGF0YXNldDogaW1wb3J0KFwidmFsaWJvdFwiKS5Vbmtub3duRGF0YXNldCwgY29uZmlnOiBpbXBvcnQoXCJ2YWxpYm90XCIpLkNvbmZpZzxpbXBvcnQoXCJ2YWxpYm90XCIpLkJhc2VJc3N1ZTx1bmtub3duPj4pID0+IGltcG9ydChcInZhbGlib3RcIikuT3V0cHV0RGF0YXNldDx7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfSwgaW1wb3J0KFwidmFsaWJvdFwiKS5PYmplY3RJc3N1ZSB8IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nSXNzdWU+O1xuICAgICAgICByZWFkb25seSBcIn50eXBlc1wiPzoge1xuICAgICAgICAgICAgcmVhZG9ubHkgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZG9ubHkgb3V0cHV0OiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRvbmx5IGlzc3VlOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9iamVjdElzc3VlIHwgaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdJc3N1ZTtcbiAgICAgICAgfSB8IHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIHZhciB1cGRhdGU6IE9taXQ8T21pdDxpbXBvcnQoXCJ2YWxpYm90XCIpLk9iamVjdFNjaGVtYTx7XG4gICAgICAgIHJlYWRvbmx5IGlkOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBuYW1lOiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBkZXNjcmlwdGlvbjogaW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBjcmVhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSB1cGRhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBkZWxldGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bGxhYmxlU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgICAgIHJlYWRvbmx5IG1ldGFzOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuUmVjb3JkU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIGltcG9ydChcInZhbGlib3RcIikuQW55U2NoZW1hLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIH0sIHVuZGVmaW5lZD4sIFwiZW50cmllc1wiIHwgXCJ+dHlwZXNcIiB8IFwifnJ1blwiIHwgXCJ+c3RhbmRhcmRcIj4gJiB7XG4gICAgICAgIHJlYWRvbmx5IGVudHJpZXM6IFBpY2s8e1xuICAgICAgICAgICAgcmVhZG9ubHkgaWQ6IGltcG9ydChcInZhbGlib3RcIikuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgICAgICAgICByZWFkb25seSBuYW1lOiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgZGVzY3JpcHRpb246IGltcG9ydChcInZhbGlib3RcIikuTnVsbGFibGVTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICAgICAgICAgIHJlYWRvbmx5IGNyZWF0ZWRfYXQ6IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgICAgICAgICByZWFkb25seSB1cGRhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgZGVsZXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgbWV0YXM6IGltcG9ydChcInZhbGlib3RcIikuT3B0aW9uYWxTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5SZWNvcmRTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgaW1wb3J0KFwidmFsaWJvdFwiKS5BbnlTY2hlbWEsIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgICAgIH0sIFwiZGVzY3JpcHRpb25cIiB8IFwibmFtZVwiPjtcbiAgICAgICAgcmVhZG9ubHkgXCJ+c3RhbmRhcmRcIjogaW1wb3J0KFwidmFsaWJvdFwiKS5TdGFuZGFyZFByb3BzPHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfT47XG4gICAgICAgIHJlYWRvbmx5IFwifnJ1blwiOiAoZGF0YXNldDogaW1wb3J0KFwidmFsaWJvdFwiKS5Vbmtub3duRGF0YXNldCwgY29uZmlnOiBpbXBvcnQoXCJ2YWxpYm90XCIpLkNvbmZpZzxpbXBvcnQoXCJ2YWxpYm90XCIpLkJhc2VJc3N1ZTx1bmtub3duPj4pID0+IGltcG9ydChcInZhbGlib3RcIikuT3V0cHV0RGF0YXNldDx7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfSwgaW1wb3J0KFwidmFsaWJvdFwiKS5PYmplY3RJc3N1ZSB8IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nSXNzdWU+O1xuICAgICAgICByZWFkb25seSBcIn50eXBlc1wiPzoge1xuICAgICAgICAgICAgcmVhZG9ubHkgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZG9ubHkgb3V0cHV0OiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRvbmx5IGlzc3VlOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9iamVjdElzc3VlIHwgaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdJc3N1ZTtcbiAgICAgICAgfSB8IHVuZGVmaW5lZDtcbiAgICB9LCBcImVudHJpZXNcIiB8IFwifnR5cGVzXCIgfCBcIn5ydW5cIiB8IFwifnN0YW5kYXJkXCI+ICYge1xuICAgICAgICByZWFkb25seSBlbnRyaWVzOiB7XG4gICAgICAgICAgICByZWFkb25seSBkZXNjcmlwdGlvbjogaW1wb3J0KFwidmFsaWJvdFwiKS5PcHRpb25hbFNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLk51bGxhYmxlU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgICAgICAgICByZWFkb25seSBuYW1lOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgICAgIH07XG4gICAgICAgIHJlYWRvbmx5IFwifnN0YW5kYXJkXCI6IGltcG9ydChcInZhbGlib3RcIikuU3RhbmRhcmRQcm9wczx7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9PjtcbiAgICAgICAgcmVhZG9ubHkgXCJ+cnVuXCI6IChkYXRhc2V0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlVua25vd25EYXRhc2V0LCBjb25maWc6IGltcG9ydChcInZhbGlib3RcIikuQ29uZmlnPGltcG9ydChcInZhbGlib3RcIikuQmFzZUlzc3VlPHVua25vd24+PikgPT4gaW1wb3J0KFwidmFsaWJvdFwiKS5PdXRwdXREYXRhc2V0PHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH0sIGltcG9ydChcInZhbGlib3RcIikuT2JqZWN0SXNzdWUgfCBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ0lzc3VlPjtcbiAgICAgICAgcmVhZG9ubHkgXCJ+dHlwZXNcIj86IHtcbiAgICAgICAgICAgIHJlYWRvbmx5IGlucHV0OiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZG9ubHkgb3V0cHV0OiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZG9ubHkgaXNzdWU6IGltcG9ydChcInZhbGlib3RcIikuT2JqZWN0SXNzdWUgfCBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ0lzc3VlO1xuICAgICAgICB9IHwgdW5kZWZpbmVkO1xuICAgIH07XG59XG4iLCJpbXBvcnQgRW1taXR0ZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvRW1taXR0ZXJTZXJ2aWNlLnRzJztcbmltcG9ydCBEYXNoYm9hcmRXaWRnZXREYXRhIGZyb20gJy4vRGFzaGJvYXJkV2lkZ2V0RGF0YSc7XG5pbXBvcnQgRGFzaGJvYXJkV2lkZ2V0IGZyb20gJy4vRGFzaGJvYXJkV2lkZ2V0JztcbmltcG9ydCB0eXBlIHsgRGFzaGJvYXJkU2NoZW1hIH0gZnJvbSAnI3NoYXJlZC9zY2hlbWFzL2Rhc2hib2FyZFNjaGVtYS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZE9wdGlvbnMge1xuICAgIGRhc2hib2FyZDogRGFzaGJvYXJkU2NoZW1hO1xuICAgIHdpZGdldHM/OiBEYXNoYm9hcmRXaWRnZXREYXRhW107XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXNoYm9hcmQge1xuICAgIG5hbWU6IERhc2hib2FyZFNjaGVtYVsnbmFtZSddO1xuICAgIGRlc2NyaXB0aW9uOiBEYXNoYm9hcmRTY2hlbWFbJ2Rlc2NyaXB0aW9uJ107XG4gICAgd2lkZ2V0czogRGFzaGJvYXJkV2lkZ2V0W107XG4gICAgZW1taXR0ZXI6IEVtbWl0dGVyU2VydmljZTtcbiAgICBjb250YWluZXJXaWR0aDogbnVtYmVyO1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgc2V0TmFtZShuYW1lOiBzdHJpbmcpOiB0aGlzO1xuICAgIHNldERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB0aGlzO1xuICAgIHNldENvbnRhaW5lcldpZHRoKHdpZHRoOiBudW1iZXIpOiB0aGlzO1xuICAgIHNldFdpZGdldHMod2lkZ2V0czogRGFzaGJvYXJkV2lkZ2V0RGF0YVtdKTogdGhpcztcbiAgICBmaW5kTGFzdFJvdygpOiBudW1iZXI7XG4gICAgYWRkV2lkZ2V0KHBheWxvYWQ/OiBQYXJ0aWFsPERhc2hib2FyZFdpZGdldERhdGE+KTogdm9pZDtcbiAgICByZW1vdmVXaWRnZXQoaW5kZXg6IG51bWJlcik6IHZvaWQ7XG4gICAgcmVtb3ZlV2lkZ2V0QnlJZChpZDogc3RyaW5nKTogdm9pZDtcbiAgICB1cGRhdGVXaWRnZXQoaW5kZXg6IG51bWJlciwgd2lkZ2V0OiBEYXNoYm9hcmRXaWRnZXQpOiB2b2lkO1xuICAgIGR1cGxpY2F0ZVdpZGdldChpbmRleDogbnVtYmVyKTogdm9pZDtcbn1cbiIsImltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCB0eXBlIERhc2hib2FyZEVudGl0eSBmcm9tICcjY2xpZW50L2VudGl0aWVzL0Rhc2hib2FyZC50cyc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwcm92aWRlRGFzaGJvYXJkKGVudGl0eTogUmVmPERhc2hib2FyZEVudGl0eT4pOiB2b2lkO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlRGFzaGJvYXJkKCk6IFJlZjxEYXNoYm9hcmRFbnRpdHk+O1xuIiwiaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuaW1wb3J0IHR5cGUgRGFzaGJvYXJkV2lkZ2V0IGZyb20gJyNjbGllbnQvZW50aXRpZXMvRGFzaGJvYXJkV2lkZ2V0LnRzJztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHByb3ZpZGVEYXNoYm9hcmRXaWRnZXQoZW50aXR5OiBSZWY8RGFzaGJvYXJkV2lkZ2V0Pik6IHZvaWQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1c2VEYXNoYm9hcmRXaWRnZXQoKTogUmVmPERhc2hib2FyZFdpZGdldD47XG4iLCJpbXBvcnQgdHlwZSB7IE1heWJlUmVmLCBSZWYgfSBmcm9tICd2dWUnO1xuZXhwb3J0IGludGVyZmFjZSBVc2VGZXRjaFBhZ2luYXRpb25PcHRpb25zIHtcbiAgICBrZXk/OiBzdHJpbmc7XG4gICAgcXVlcnk/OiBNYXliZVJlZjxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcbiAgICBwYWdlPzogTWF5YmVSZWY8bnVtYmVyPjtcbiAgICBzZXJpYWxpemU/OiAoaXRlbTogYW55KSA9PiBhbnk7XG4gICAgcmVmaW5lPzogKGl0ZW1zOiBhbnlbXSkgPT4gYW55W107XG4gICAgbGltaXQ/OiBudW1iZXI7XG4gICAgb3JkZXJCeT86IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbDtcbiAgICBvcmRlckRpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnIHwgKCdhc2MnIHwgJ2Rlc2MnKVtdIHwgbnVsbDtcbiAgICBkZWJvdW5jZT86IG51bWJlcjtcbiAgICBpbW1lZGlhdGU/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlRmV0Y2hQYWdpbmF0aW9uPFQgPSBhbnk+KHVybDogc3RyaW5nLCBvcHRpb25zPzogVXNlRmV0Y2hQYWdpbmF0aW9uT3B0aW9ucyk6IHtcbiAgICBwYWdlOiBSZWY8bnVtYmVyLCBudW1iZXI+O1xuICAgIGxpbWl0OiBSZWY8bnVtYmVyLCBudW1iZXI+O1xuICAgIG9yZGVyQnk6IFJlZjxzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwsIHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbD47XG4gICAgb3JkZXJEaXJlY3Rpb246IFJlZjxcImFzY1wiIHwgXCJkZXNjXCIgfCAoXCJhc2NcIiB8IFwiZGVzY1wiKVtdIHwgbnVsbCwgXCJhc2NcIiB8IFwiZGVzY1wiIHwgKFwiYXNjXCIgfCBcImRlc2NcIilbXSB8IG51bGw+O1xuICAgIHRvdGFsOiBpbXBvcnQoXCJ2dWVcIikuQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgICB0b3RhbFBhZ2VzOiBpbXBvcnQoXCJ2dWVcIikuQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgICBpdGVtczogaW1wb3J0KFwidnVlXCIpLkNvbXB1dGVkUmVmPFRbXT47XG4gICAgbG9hZGluZzogUmVmPGJvb2xlYW4sIGJvb2xlYW4+O1xuICAgIGxvYWQ6ICgpID0+IFByb21pc2U8dm9pZD47XG4gICAgcmVzZXQ6ICgpID0+IFByb21pc2U8dm9pZD47XG4gICAgcXVlcnk6IFJlZjxSZWNvcmQ8c3RyaW5nLCBhbnk+LCBSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcbiAgICBoeWRyYXRlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufTtcbiIsImludGVyZmFjZSBFbnRyeSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IGFueTtcbiAgICBzb3VyY2U6IHN0cmluZztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ1NlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBlbnRyaWVzOiBNYXA8c3RyaW5nLCBFbnRyeT47XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBsaXN0KCk6IEVudHJ5W107XG4gICAgcGFyc2VWYWx1ZSh2YWx1ZTogYW55KTogYW55O1xuICAgIGxvYWRGcm9tUmVjb3JkKHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55Piwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICBsb2FkRnJvbUVudHJpZXMoZW50cmllczogW3N0cmluZywgYW55XVtdLCBzb3VyY2U/OiBzdHJpbmcpOiB2b2lkO1xuICAgIHRvUmVjb3JkKCk6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbjtcbiAgICBnZXQ8VCA9IGFueSB8IHVuZGVmaW5lZD4oa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IGFueSk6IFQ7XG4gICAgZ2V0T25lPFQgPSBhbnkgfCB1bmRlZmluZWQ+KGtleXM6IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBUO1xuICAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICB1bnNldChrZXk6IHN0cmluZyk6IHZvaWQ7XG4gICAgY2xlYXIoKTogdm9pZDtcbiAgICBkdW1wKCk6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5leHBvcnQge307XG4iLCJ0eXBlIENvbnN0cnVjdG9yPFQgPSBvYmplY3Q+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcbnR5cGUgRW50cnlLZXkgPSBzdHJpbmcgfCBzeW1ib2wgfCBDb25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRhaW5lclNlcnZpY2Uge1xuICAgIHByaXZhdGUgZW50cmllcztcbiAgICBsb2FkRnJvbVJlY29yZChyZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkO1xuICAgIHRvUmVjb3JkKCk6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcHJpdmF0ZSBnZXRLZXk7XG4gICAgc2V0KHBheWxvYWQ6IEVudHJ5S2V5LCB2YWx1ZTogYW55KTogdGhpcztcbiAgICBoYXMocGF5bG9hZDogRW50cnlLZXkpOiBib29sZWFuO1xuICAgIGdldDxUPihwYXlsb2FkOiBFbnRyeUtleSk6IFQ7XG4gICAgdW5zZXQocGF5bG9hZDogRW50cnlLZXkpOiB2b2lkO1xuICAgIHNpbmdsZXRvbjxUPihjbGFzc0NvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPik6IFQ7XG4gICAgbG9hZChlbnRyaWVzOiBSZWNvcmQ8YW55LCBhbnk+KTogdm9pZDtcbiAgICBwcm94eTxUID0gdW5rbm93bj4oa2V5OiBFbnRyeUtleSk6IFQ7XG4gICAga2V5cygpOiBFbnRyeUtleVtdO1xufVxuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlSWQocHJlZml4Pzogc3RyaW5nKTogc3RyaW5nO1xuIiwiaW1wb3J0IHsgZGVmaW5lQWJpbGl0eSB9IGZyb20gJ0BjYXNsL2FiaWxpdHknO1xuaW1wb3J0IFBlcm1pc3Npb24gZnJvbSAnLi9QZXJtaXNzaW9uRW50aXR5LnRzJztcbmltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBY2xFbnRpdHkge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBhYmlsaXR5OiBSZXR1cm5UeXBlPHR5cGVvZiBkZWZpbmVBYmlsaXR5PjtcbiAgICBwZXJtaXNzaW9uczogUGVybWlzc2lvbltdO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxBY2xFbnRpdHk+KTtcbiAgICBjYW4oYWN0aW9uOiBzdHJpbmcsIHN1YmplY3Q6IGFueSwgb2JqZWN0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IGJvb2xlYW47XG4gICAgY2Fubm90KGFjdGlvbjogc3RyaW5nLCBzdWJqZWN0OiBhbnksIG9iamVjdD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuO1xuICAgIHN1YmplY3Qoc3ViamVjdDogc3RyaW5nLCBvYmplY3Q6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ICYgaW1wb3J0KFwiQGNhc2wvYWJpbGl0eVwiKS5Gb3JjZWRTdWJqZWN0PHN0cmluZz47XG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIE1vZHVsZU1hbmlmZXN0QnVpbGRJbXBvcnQge1xuICAgIGZyb206IHN0cmluZztcbiAgICB0bz86IHN0cmluZztcbiAgICB0eXBlOiAnZ2xvYmFsX2ltcG9ydCc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZU1hbmlmZXN0QnVpbGQge1xuICAgIGltcG9ydHM/OiBNb2R1bGVNYW5pZmVzdEJ1aWxkSW1wb3J0W107XG59XG5kZWNsYXJlIGNvbnN0IE1vZHVsZU1hbmlmZXN0X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlTWFuaWZlc3QgZXh0ZW5kcyBNb2R1bGVNYW5pZmVzdF9iYXNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBhdXRob3I/OiBzdHJpbmc7XG4gICAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBidWlsZD86IE1vZHVsZU1hbmlmZXN0QnVpbGQ7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgTW9kdWxlTWFuaWZlc3QgZnJvbSAnLi9Nb2R1bGVNYW5pZmVzdEVudGl0eS50cyc7XG5pbXBvcnQgTGlmZWN5Y2xlSG9vayBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0xpZmVjeWNsZUhvb2sudHMnO1xuaW50ZXJmYWNlIE1vZHVsZVVwZ3JhZGVJbmZvIHtcbiAgICBzb3VyY2U6ICdnaXQnIHwgJ3ppcCc7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZGVjbGFyZSBjb25zdCBNb2R1bGVfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3IgJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I8e30+ICYgdHlwZW9mIExpZmVjeWNsZUhvb2s7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2R1bGUgZXh0ZW5kcyBNb2R1bGVfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgYnVpbGQ6IE1vZHVsZU1hbmlmZXN0WydidWlsZCddO1xuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xuICAgIHVwZ3JhZGVfaW5mbz86IE1vZHVsZVVwZ3JhZGVJbmZvO1xuICAgIHNldERhdGEoZGF0YTogUGFydGlhbDxNb2R1bGUgfCBNb2R1bGVNYW5pZmVzdD4pOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiZGVjbGFyZSBjb25zdCBQbHVnaW5FbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbHVnaW5FbnRpdHkgZXh0ZW5kcyBQbHVnaW5FbnRpdHlfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYWxpYXNlczogc3RyaW5nW107XG4gICAgdmVyc2lvbl9jaGFubmVsOiBzdHJpbmc7XG4gICAgdmVyc2lvbl9hdmFpbGFibGVfY2hhbm5lbHM6IHN0cmluZ1tdO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgdHlwZSBWYWxpYm90T2JqZWN0U2NoZW1hLCB0eXBlIFZhbGlib3RTY2hlbWEsIHR5cGUgVmFsaWRhdGVQYXlsb2FkLCB0eXBlIFZhbGlkYXRvclJlc3VsdCB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xuaW1wb3J0IHsgdG9UeXBlZFNjaGVtYSBhcyB2ZWVWYWxpZGF0ZVRvVHlwZWRTY2hlbWEgfSBmcm9tICdAdmVlLXZhbGlkYXRlL3ZhbGlib3QnO1xuaW1wb3J0IHsgdHlwZSBGb3JtQ29udGV4dCwgdHlwZSBGb3JtT3B0aW9ucywgdHlwZSBHZW5lcmljT2JqZWN0IH0gZnJvbSAndmVlLXZhbGlkYXRlJztcbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWJvdEZvcm1PcHRpb25zPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hID0gVmFsaWJvdFNjaGVtYT4gZXh0ZW5kcyBPbWl0PEZvcm1PcHRpb25zPFZhbGlkYXRlUGF5bG9hZDxUPiwgVmFsaWRhdG9yUmVzdWx0PFQ+PiwgJ3ZhbGlkYXRpb25TY2hlbWEnPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFZhbGlib3RGb3JtUmVzdWx0T2JqZWN0PFQgZXh0ZW5kcyBWYWxpYm90T2JqZWN0U2NoZW1hPiBleHRlbmRzIEdlbmVyaWNPYmplY3QsIEZvcm1Db250ZXh0PFZhbGlkYXRvclJlc3VsdDxUPj4ge1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlRm9ybTogdHlwZW9mIHVzZVZhbGlib3RGb3JtO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdG9UeXBlZFNjaGVtYTogdHlwZW9mIHZlZVZhbGlkYXRlVG9UeXBlZFNjaGVtYTtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZVZhbGlib3RGb3JtPFQgZXh0ZW5kcyBWYWxpYm90T2JqZWN0U2NoZW1hID0gVmFsaWJvdE9iamVjdFNjaGVtYT4oc2NoZW1hOiBULCBvcHRpb25zPzogVmFsaWJvdEZvcm1PcHRpb25zPFQ+KTogRm9ybUNvbnRleHQ8VmFsaWRhdG9yUmVzdWx0PFQ+PjtcbiIsImV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZUxheW91dE9wdGlvbnMoKTogaW1wb3J0KFwidnVlXCIpLlJlZjxhbnksIGFueT47XG4iLCJpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gICAgdGltZW91dD86IG51bWJlcjtcbn1cbmludGVyZmFjZSBMb2FkaW5nUmVmIGV4dGVuZHMgUmVmPGJvb2xlYW4+IHtcbiAgICBzZXQ6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZUxvYWRpbmcoZGVmYXVsdFZhbHVlPzogYm9vbGVhbiwgb3B0aW9ucz86IE9wdGlvbnMpOiBMb2FkaW5nUmVmO1xuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGludGVyZmFjZSBNZW51QmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG9yZGVyPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBNZW51U2luZ2xlIGV4dGVuZHMgTWVudUJhc2Uge1xuICAgIGljb246IHN0cmluZztcbiAgICB0bzogc3RyaW5nO1xuICAgIHRhcmdldD86ICdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWVudVdpdGhDaGlsZHJlbiBleHRlbmRzIE1lbnVCYXNlIHtcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgY2hpbGRyZW46IE9taXQ8TWVudVNpbmdsZSwgJ2ljb24nPltdO1xufVxuZXhwb3J0IGludGVyZmFjZSBNZW51R3JvdXAgZXh0ZW5kcyBNZW51QmFzZSB7XG4gICAgZ3JvdXA6IGJvb2xlYW47XG4gICAgaXRlbXM6IE1lbnVJdGVtW107XG59XG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xuICAgIGdyb3VwPzogc3RyaW5nO1xuICAgIG9yZGVyPzogbnVtYmVyO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgcGFyZW50Pzogc3RyaW5nO1xuICAgIGxheW91dD86IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIFVzZU1lbnUgPSBSZXR1cm5UeXBlPHR5cGVvZiB1c2VNZW51PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZU1lbnUoKToge1xuICAgIGl0ZW1zOiBpbXBvcnQoXCJ2dWVcIikuQ29tcHV0ZWRSZWY8e1xuICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICB0bz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgdGFyZ2V0PzogXCJfYmxhbmtcIiB8IFwiX3NlbGZcIiB8IFwiX3BhcmVudFwiIHwgXCJfdG9wXCIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGdyb3VwPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBvcmRlcj86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWNvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcGFyZW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBsYXlvdXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgfVtdPjtcbiAgICBhZGQ6ICguLi5pdGVtOiBNZW51SXRlbVtdKSA9PiB2b2lkO1xuICAgIHJlbW92ZTogKGl0ZW06IE1lbnVJdGVtIHwgTWVudUl0ZW1bXCJpZFwiXSkgPT4gdm9pZDtcbiAgICByZW1vdmVHcm91cDogKGdyb3VwSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgICByZW1vdmVNYW55OiAoaXRlbUlkczogc3RyaW5nW10pID0+IHZvaWQ7XG4gICAgcmVtb3ZlTWFueUdyb3VwOiAoZ3JvdXBJZHM6IHN0cmluZ1tdKSA9PiB2b2lkO1xuICAgIGNsZWFyOiAoKSA9PiB2b2lkO1xufTtcbiIsImltcG9ydCB7IHVzZVJvdXRlUXVlcnkgYXMgdnVlVXNlclJvdXRlUXVlcnkgfSBmcm9tICdAdnVldXNlL3JvdXRlcic7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VSb3V0ZVF1ZXJ5OiB0eXBlb2YgdnVlVXNlclJvdXRlUXVlcnk7XG4iLCJpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5leHBvcnQgaW50ZXJmYWNlIFVzZVN0YXRlT3B0aW9ucyB7XG4gICAgZGVmYXVsdD86ICgpID0+IGFueTtcbiAgICB0cmFuc2Zvcm0/OiAodmFsdWU6IGFueSkgPT4gYW55O1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlU3RhdGU8VD4oa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiBVc2VTdGF0ZU9wdGlvbnMpOiBSZWY8VD47XG4iLCJpbXBvcnQgQWNsRW50aXR5IGZyb20gJyNzaGFyZWQvZW50aXRpZXMvQWNsRW50aXR5LnRzJztcbmRlY2xhcmUgY29uc3QgYWNsOiBBY2xFbnRpdHk7XG5leHBvcnQgZGVmYXVsdCBhY2w7XG4iLCJpbXBvcnQgQXV0aFNlcnZpY2UgZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9BdXRoU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGF1dGg6IEF1dGhTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgYXV0aDtcbiIsImltcG9ydCBDb25maWdTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvQ29uZmlnU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGNvbmZpZzogQ29uZmlnU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGNvbmZpZztcbiIsImltcG9ydCBDb250YWluZXJTZXJ2aWNlIGZyb20gXCIjc2hhcmVkL3NlcnZpY2VzL0NvbnRhaW5lclNlcnZpY2UudHNcIjtcbmRlY2xhcmUgY29uc3QgX2RlZmF1bHQ6IENvbnRhaW5lclNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBfZGVmYXVsdDtcbiIsImltcG9ydCB0eXBlIERhc2hib2FyZFdpZGdldERlZmluaXRpb24gZnJvbSAnI2NsaWVudC9lbnRpdGllcy9EYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhc2hib2FyZFdpZGdldFJlZ2lzdHJ5IHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkZWZpbml0aW9ucztcbiAgICByZWdpc3RlciguLi5kZWZpbml0aW9uOiBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uW10pOiB2b2lkO1xuICAgIGdldChpZDogc3RyaW5nKTogRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbiB8IG51bGw7XG4gICAgbGlzdCgpOiBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uW107XG59XG4iLCJpbXBvcnQgRGFzaGJvYXJkV2lkZ2V0UmVnaXN0cnkgZnJvbSAnI2NsaWVudC9yZWdpc3RyeS9EYXNoYm9hcmRXaWRnZXRSZWdpc3RyeS50cyc7XG5kZWNsYXJlIGNvbnN0IGRhc2hib2FyZFJlZ2lzdHJ5OiBEYXNoYm9hcmRXaWRnZXRSZWdpc3RyeTtcbmV4cG9ydCBkZWZhdWx0IGRhc2hib2FyZFJlZ2lzdHJ5O1xuIiwiaW1wb3J0IHsgRW1taXR0ZXJTZXJ2aWNlIH0gZnJvbSAnI3NoYXJlZC9pbmRleC50cyc7XG5kZWNsYXJlIGNvbnN0IGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5leHBvcnQgZGVmYXVsdCBlbW1pdHRlcjtcbiIsImltcG9ydCBGZXRjaFNlcnZpY2UgZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9GZXRjaFNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBmZXRjaGVyOiBGZXRjaFNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBmZXRjaGVyO1xuIiwiZGVjbGFyZSBjb25zdCBsYXlvdXQ6IGFueTtcbmV4cG9ydCBkZWZhdWx0IGxheW91dDtcbiIsImltcG9ydCBMaWZlY3ljbGVTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGxpZmVjeWNsZTogTGlmZWN5Y2xlU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGxpZmVjeWNsZTtcbiIsImltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGxvZ2dlcjtcbiIsImltcG9ydCBNZW51U2VydmljZSBmcm9tICcjY2xpZW50L3NlcnZpY2VzL01lbnVTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgbWVudTogTWVudVNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBtZW51O1xuIiwiaW1wb3J0IHR5cGUgeyBSb3V0ZUxvY2F0aW9uTm9ybWFsaXplZEdlbmVyaWMgfSBmcm9tICd2dWUtcm91dGVyJztcbmRlY2xhcmUgY29uc3Qgcm91dGU6IFJvdXRlTG9jYXRpb25Ob3JtYWxpemVkR2VuZXJpYztcbmV4cG9ydCBkZWZhdWx0IHJvdXRlO1xuIiwiaW1wb3J0IHR5cGUgeyBSb3V0ZXIgfSBmcm9tICcjY2xpZW50L3NlcnZpY2VzL1JvdXRlclNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCByb3V0ZXI6IFJvdXRlcjtcbmV4cG9ydCBkZWZhdWx0IHJvdXRlcjtcbiIsImltcG9ydCBUb2FzdFNlcnZpY2UgZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9Ub2FzdFNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCB0b2FzdDogVG9hc3RTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgdG9hc3Q7XG4iLCJpbXBvcnQgKiBhcyBWZWVWYWxpZGF0ZSBmcm9tICd2ZWUtdmFsaWRhdGUnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgVkVFX1ZBTElEQVRFX0NPTlRBSU5FUl9LRVkgPSBcInZlZS12YWxpZGF0ZVwiO1xuZGVjbGFyZSBjb25zdCB2ZWVWYWxpZGF0ZTogdHlwZW9mIFZlZVZhbGlkYXRlO1xuZXhwb3J0IGRlZmF1bHQgdmVlVmFsaWRhdGU7XG4iLCJpbXBvcnQgKiBhcyBWdWUgZnJvbSAndnVlJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IFZVRV9DT05UQUlORVJfS0VZID0gXCJWdWVcIjtcbmRlY2xhcmUgY29uc3QgdnVlOiB0eXBlb2YgVnVlO1xuZXhwb3J0IGRlZmF1bHQgdnVlO1xuIiwiaW1wb3J0ICogYXMgVnVlUm91dGVyIGZyb20gJ3Z1ZS1yb3V0ZXInO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgVlVFX1JPVVRFUl9DT05UQUlORVJfS0VZID0gXCJWdWVSb3V0ZXJcIjtcbmRlY2xhcmUgY29uc3QgdnVlUm91dGVyOiB0eXBlb2YgVnVlUm91dGVyO1xuZXhwb3J0IGRlZmF1bHQgdnVlUm91dGVyO1xuIiwiaW1wb3J0IERhc2hib2FyZFdpZGdldERlZmluaXRpb24gZnJvbSAnLi9EYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uJztcbmltcG9ydCB0eXBlIERhc2hib2FyZFdpZGdldERhdGEgZnJvbSAnLi9EYXNoYm9hcmRXaWRnZXREYXRhJztcbi8qKlxuICAgICogQ29tcG9uZW50IHRvIGJlIHVzZWQgZm9yIGNoYXJ0IHdpZGdldHMgaW4gdGhlIGRhc2hib2FyZC5cbiAgICAqIFBsdWdpbnMgY2FuIGV4dGVuZCB0aGlzIGNsYXNzIHRvIGNyZWF0ZSB0aGVpciBvd24gY2hhcnQgd2lkZ2V0cy5cbiAgICAqIEBleGFtcGxlXG4gICAgKiBjbGFzcyBNeUNoYXJ0V2lkZ2V0IGV4dGVuZHMgRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbkNoYXJ0IHtcbiAgICAqICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAqICAgICAgICAgc3VwZXIoKVxuICAgICogICAgICAgICB0aGlzLm5hbWUgPSAnTXkgQ2hhcnQgV2lkZ2V0J1xuICAgICogICAgICAgICB0aGlzLmlkID0gJ215LWNoYXJ0LXdpZGdldCdcbiAgICAqICAgICB9XG4gICAgKiB9XG4gICAgKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhc2hib2FyZFdpZGdldERlZmluaXRpb25DaGFydCBleHRlbmRzIERhc2hib2FyZFdpZGdldERlZmluaXRpb24ge1xuICAgIHByaXZhdGUgc3RhdGljIHJlbmRlcmVyO1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgc3RhdGljIHNldFJlbmRlcmVyKHJlbmRlcmVyOiBhbnkpOiB2b2lkO1xuICAgIGNvbXBvbmVudCgpOiBhbnk7XG4gICAgY2hhcnRPcHRpb25zKHBheWxvYWQ6IERhc2hib2FyZFdpZGdldERhdGFbJ29wdGlvbnMnXSk6IFByb21pc2U8YW55Pjtcbn1cbiIsImltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvTW9kdWxlRW50aXR5LnRzJztcbmRlY2xhcmUgY29uc3QgTW9kdWxlX2Jhc2U6IHR5cGVvZiBCYXNlO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlIGV4dGVuZHMgTW9kdWxlX2Jhc2Uge1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IEJhc2UgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9QbHVnaW5FbnRpdHkudHMnO1xuaW1wb3J0IHR5cGUgeyBBdXRvT3B0aW9ucyB9IGZyb20gJyNjbGllbnQvc2VydmljZXMvUm91dGVyU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IFBsdWdpbkVudGl0eV9iYXNlOiB0eXBlb2YgQmFzZTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsdWdpbkVudGl0eSBleHRlbmRzIFBsdWdpbkVudGl0eV9iYXNlIHtcbiAgICBhZGRQYWdlc0ZvbGRlcihpbXBvcnRzOiBhbnksIG9wdGlvbnM/OiBBdXRvT3B0aW9ucyk6IHZvaWQ7XG4gICAgbG9hZCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBBdXRvT3B0aW9ucyB9IGZyb20gJyNjbGllbnQvc2VydmljZXMvUm91dGVyU2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSB7IERlZmluZUNvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgdHlwZSB7IFJvdXRlUmVjb3JkUmF3IH0gZnJvbSAndnVlLXJvdXRlcic7XG4vKiogQGRlcHJlY2F0ZWQgVXNlIGF1dG8gZnJvbSBSb3V0ZXJTZXJ2aWNlIGluc3RlYWQgKi9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGF1dG9Sb3V0ZXMoaW1wb3J0czogUmVjb3JkPHN0cmluZywgRGVmaW5lQ29tcG9uZW50IHwgKCgpID0+IFByb21pc2U8RGVmaW5lQ29tcG9uZW50Pik+LCBvcHRpb25zPzogQXV0b09wdGlvbnMpOiBSb3V0ZVJlY29yZFJhd1tdO1xuIiwiZXhwb3J0IGludGVyZmFjZSBEYXRhVGFibGVDb2x1bW48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZmllbGQ/OiBrZXlvZiBUIHwgKChyb3c6IFQpID0+IGFueSkgfCAoc3RyaW5nICYge30pO1xuICAgIHNvcnRhYmxlPzogYm9vbGVhbjtcbiAgICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGRlZmluZUNvbHVtbnM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+KGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbjxUPltdKTogRGF0YVRhYmxlQ29sdW1uPFQ+W107XG4iLCJleHBvcnQgaW50ZXJmYWNlIERlZmluZUZvcm1GaWVsZCB7XG4gICAgY29tcG9uZW50OiAndGV4dC1maWVsZCcgfCAndGV4dGFyZWEnIHwgJ3NlbGVjdCcgfCAnYXV0b2NvbXBsZXRlJyB8ICdzd2l0Y2gnIHwgJ2ZpbGUtdXBsb2FkJyB8ICdpbWFnZS11cGxvYWQnIHwgJ2NvbG9yLXBpY2tlcicgfCAnc3RyaW5nLWxpc3QtaW5wdXQnIHwgJ2pzb24taW5wdXQnIHwgJ2RhdGUtcGlja2VyJyB8ICdoaWRkZW4nO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGRlZmluZUZvcm1GaWVsZHMoZmllbGQ6IFJlY29yZDxzdHJpbmcsIERlZmluZUZvcm1GaWVsZD4pOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbmVGb3JtRmllbGQ+O1xuIiwiLyoqIEBkZXByZWNhdGVkIFVzZSBmZXRjaGVyIGZhY2FkZSAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgJGZldGNoOiBpbXBvcnQoXCIuLlwiKS5GZXRjaFNlcnZpY2U7XG4iLCJpbnRlcmZhY2UgUGlja09wdGlvbnMge1xuICAgIGFjY2VwdD86IHN0cmluZztcbiAgICBtdWx0aXBsZT86IGJvb2xlYW47XG59XG50eXBlIFBpY2tSZXN1bHQ8VCBleHRlbmRzIFBpY2tPcHRpb25zPiA9IFRbJ211bHRpcGxlJ10gZXh0ZW5kcyB0cnVlID8gRmlsZVtdIDogRmlsZSB8IG51bGw7XG5kZWNsYXJlIGZ1bmN0aW9uIHBpY2s8VCBleHRlbmRzIFBpY2tPcHRpb25zPihvcHRpb25zOiBUKTogUHJvbWlzZTxQaWNrUmVzdWx0PFQ+PjtcbmRlY2xhcmUgZnVuY3Rpb24gdG9VaW50OEFycmF5KGZpbGU6IEZpbGUpOiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xuaW50ZXJmYWNlIFVwbG9hZE9wdGlvbnMge1xuICAgIGRyaXZlSWQ6IHN0cmluZztcbiAgICBmaWxlOiBGaWxlO1xuICAgIGRpcmVjdG9yeT86IHN0cmluZztcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXBsb2FkKG9wdGlvbnM6IFVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPGFueT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCAkZmlsZToge1xuICAgIHBpY2s6IHR5cGVvZiBwaWNrO1xuICAgIHVwbG9hZDogdHlwZW9mIHVwbG9hZDtcbiAgICB0b1VpbnQ4QXJyYXk6IHR5cGVvZiB0b1VpbnQ4QXJyYXk7XG59O1xuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcGFyc2VUbyh0bzogc3RyaW5nKTogc3RyaW5nO1xuIiwiZXhwb3J0IGRlY2xhcmUgY29uc3QgJHRvYXN0OiAoKG1lc3NhZ2U6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQsIGRhdGE/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkV4dGVybmFsVG9hc3QpID0+IHN0cmluZyB8IG51bWJlcikgJiB7XG4gICAgc3VjY2VzczogKG1lc3NhZ2U6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQsIGRhdGE/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkV4dGVybmFsVG9hc3QpID0+IHN0cmluZyB8IG51bWJlcjtcbiAgICBpbmZvOiAobWVzc2FnZTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCwgZGF0YT86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuRXh0ZXJuYWxUb2FzdCkgPT4gc3RyaW5nIHwgbnVtYmVyO1xuICAgIHdhcm5pbmc6IChtZXNzYWdlOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50LCBkYXRhPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5FeHRlcm5hbFRvYXN0KSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gICAgZXJyb3I6IChtZXNzYWdlOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50LCBkYXRhPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5FeHRlcm5hbFRvYXN0KSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gICAgY3VzdG9tOiAoY29tcG9uZW50OiBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50LCBkYXRhPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5FeHRlcm5hbFRvYXN0KSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gICAgbWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQsIGRhdGE/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkV4dGVybmFsVG9hc3QpID0+IHN0cmluZyB8IG51bWJlcjtcbiAgICBwcm9taXNlOiA8VG9hc3REYXRhPihwcm9taXNlOiBQcm9taXNlPFRvYXN0RGF0YT4gfCAoKCkgPT4gUHJvbWlzZTxUb2FzdERhdGE+KSwgZGF0YT86ICh7XG4gICAgICAgIGlkPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpY29uPzogaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgdG9hc3RlcklkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb21wb25lbnQ/OiBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICBjb21wb25lbnRQcm9wcz86IGFueTtcbiAgICAgICAgcmljaENvbG9ycz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGludmVydD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGNsb3NlQnV0dG9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgZGlzbWlzc2libGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBkdXJhdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgaW1wb3J0YW50PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgYWN0aW9uPzogKGltcG9ydChcInZ1ZS1zb25uZXJcIikuQWN0aW9uIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNhbmNlbD86IChpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkFjdGlvbiB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgdW5kZWZpbmVkO1xuICAgICAgICBvbkRpc21pc3M/OiAoKHRvYXN0OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlRvYXN0VCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgIG9uQXV0b0Nsb3NlPzogKCh0b2FzdDogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Ub2FzdFQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgICBjYW5jZWxCdXR0b25TdHlsZT86IGltcG9ydChcInZ1ZVwiKS5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkO1xuICAgICAgICBhY3Rpb25CdXR0b25TdHlsZT86IGltcG9ydChcInZ1ZVwiKS5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkO1xuICAgICAgICBzdHlsZT86IGltcG9ydChcInZ1ZVwiKS5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkO1xuICAgICAgICB1bnN0eWxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGNsYXNzPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjbGFzc2VzPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Ub2FzdENsYXNzZXMgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlc2NyaXB0aW9uQ2xhc3M/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHBvc2l0aW9uPzogKFwidG9wLWxlZnRcIiB8IFwidG9wLXJpZ2h0XCIgfCBcImJvdHRvbS1sZWZ0XCIgfCBcImJvdHRvbS1yaWdodFwiIHwgXCJ0b3AtY2VudGVyXCIgfCBcImJvdHRvbS1jZW50ZXJcIikgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNsb3NlQnV0dG9uUG9zaXRpb24/OiAoXCJ0b3AtbGVmdFwiIHwgXCJ0b3AtcmlnaHRcIiB8IFwiYm90dG9tLWxlZnRcIiB8IFwiYm90dG9tLXJpZ2h0XCIpIHwgdW5kZWZpbmVkO1xuICAgICAgICB0ZXN0SWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgfSAmIHtcbiAgICAgICAgbG9hZGluZz86IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQ7XG4gICAgICAgIHN1Y2Nlc3M/OiAoc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8ICgoZGF0YTogVG9hc3REYXRhKSA9PiBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgc3RyaW5nIHwgUHJvbWlzZTxpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgc3RyaW5nPikpIHwgKGltcG9ydChcInZ1ZS1zb25uZXJcIikuUHJvbWlzZUlFeHRlbmRlZFJlc3VsdCB8ICgoZGF0YTogVG9hc3REYXRhKSA9PiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlByb21pc2VJRXh0ZW5kZWRSZXN1bHQgfCBQcm9taXNlPGltcG9ydChcInZ1ZS1zb25uZXJcIikuUHJvbWlzZUlFeHRlbmRlZFJlc3VsdD4pKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgZXJyb3I/OiAoc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8ICgoZGF0YTogYW55KSA9PiBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgc3RyaW5nIHwgUHJvbWlzZTxpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgc3RyaW5nPikpIHwgKGltcG9ydChcInZ1ZS1zb25uZXJcIikuUHJvbWlzZUlFeHRlbmRlZFJlc3VsdCB8ICgoZGF0YTogYW55KSA9PiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlByb21pc2VJRXh0ZW5kZWRSZXN1bHQgfCBQcm9taXNlPGltcG9ydChcInZ1ZS1zb25uZXJcIikuUHJvbWlzZUlFeHRlbmRlZFJlc3VsdD4pKTtcbiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgKChkYXRhOiBhbnkpID0+IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCBzdHJpbmcgfCBQcm9taXNlPGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCBzdHJpbmc+KTtcbiAgICAgICAgZmluYWxseT86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIH0pIHwgdW5kZWZpbmVkKSA9PiAoc3RyaW5nICYge1xuICAgICAgICB1bndyYXA6ICgpID0+IFByb21pc2U8VG9hc3REYXRhPjtcbiAgICB9KSB8IChudW1iZXIgJiB7XG4gICAgICAgIHVud3JhcDogKCkgPT4gUHJvbWlzZTxUb2FzdERhdGE+O1xuICAgIH0pIHwge1xuICAgICAgICB1bndyYXA6ICgpID0+IFByb21pc2U8VG9hc3REYXRhPjtcbiAgICB9IHwgdW5kZWZpbmVkO1xuICAgIGRpc21pc3M6IChpZD86IG51bWJlciB8IHN0cmluZykgPT4gc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGxvYWRpbmc6IChtZXNzYWdlOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50LCBkYXRhPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5FeHRlcm5hbFRvYXN0KSA9PiBzdHJpbmcgfCBudW1iZXI7XG59ICYge1xuICAgIGdldEhpc3Rvcnk6ICgpID0+IChpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlRvYXN0VDxpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50PiB8IGltcG9ydChcInZ1ZS1zb25uZXJcIikuVG9hc3RUb0Rpc21pc3MpW107XG4gICAgZ2V0VG9hc3RzOiAoKSA9PiAoaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Ub2FzdFQ8aW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudD4gfCBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlRvYXN0VG9EaXNtaXNzKVtdO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTmF2aWdhdGlvbkd1YXJkLCBSb3V0ZUxvY2F0aW9uTm9ybWFsaXplZCB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuZXhwb3J0IGludGVyZmFjZSBBdXRoR3VhcmRPcHRpb25zIHtcbiAgICByZWRpcmVjdDogc3RyaW5nIHwgKCh0bzogUm91dGVMb2NhdGlvbk5vcm1hbGl6ZWQpID0+IHN0cmluZyk7XG4gICAgZXhjbHVkZT86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlQXV0aEd1YXJkKG9wdGlvbnM6IEF1dGhHdWFyZE9wdGlvbnMpOiBOYXZpZ2F0aW9uR3VhcmQ7XG5kZWNsYXJlIGNvbnN0IGF1dGhHdWFyZDogTmF2aWdhdGlvbkd1YXJkO1xuZXhwb3J0IGRlZmF1bHQgYXV0aEd1YXJkO1xuIiwiZXhwb3J0IGludGVyZmFjZSBHdWVzdEd1YXJkT3B0aW9ucyB7XG4gICAgcmVkaXJlY3Q6IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZUd1ZXN0R3VhcmQob3B0aW9uczogR3Vlc3RHdWFyZE9wdGlvbnMpOiAoKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5kZWNsYXJlIGNvbnN0IGd1ZXN0R3VhcmQ6ICgpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbmV4cG9ydCBkZWZhdWx0IGd1ZXN0R3VhcmQ7XG4iLCJpbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25HdWFyZCB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuZGVjbGFyZSBjb25zdCBzZXR1cEd1YXJkOiBOYXZpZ2F0aW9uR3VhcmQ7XG5leHBvcnQgZGVmYXVsdCBzZXR1cEd1YXJkO1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlsxN10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFXLGdCQUFjO0NBQUM7RUFBSyxNQUFHLENBQUcsRUFBRTtDQUFFO0VBQUM7RUFBSTtFQUFFO0VBQUs7Q0FBQzs7OztBQ0R0RCxJQUFJLHdCQUFzQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxtQkFBZ0I7Q0FBQTtPQUFVLENBQU0sUUFBUSxzQkFBZ0I7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDVELElBQUksWUFBWTtDQUFDO0VBQUssTUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUksT0FBSTtDQUFBO09BQVksQ0FBQSxVQUFVO0NBQU07RUFBQztFQUFFO0VBQU07RUFBRztFQUFBO0NBQUE7Ozs7QUNDaEQsSUFBSSxrQkFBa0I7Q0FBQztFQUFHLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLGFBQVU7Q0FBSTtPQUFXO0VBQUM7RUFBTTtFQUFZO0VBQU07RUFBTTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSDVELElBQUEsZ0JBQVU7Q0FBQTtPQUFjLEVBQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTtBQUN4QixJQUFJLGNBQVc7Q0FBQTtPQUFNO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0ZyQixJQUFPLGVBQVU7Q0FBQTtPQUFhO0VBQU87RUFBQztFQUFZO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2xELElBQUksZUFBZTtDQUFBO0VBQUEsTUFBUTtFQUFBO0VBQUk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNDL0IsSUFBQSxzQkFBcUI7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUE0QjtFQUFBO0VBQWE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBOUQsSUFBQSxtQkFBcUI7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUF5QjtFQUFBO0VBQWE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDNELElBQUEsZ0JBQW9CO0NBQUM7T0FBQTtFQUFBO0VBQWM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFB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QUFDMUMsSUFBVSxjQUFXO0NBQUE7T0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3JCLElBQUEsT0FBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDQSxJQUFPLGVBQVU7Q0FBQTtPQUFZLENBQUEsT0FBQTtDQUFBLENBQUEsR0FBQTtDQUFBOzs7O0FDTjdCLElBQUEsZUFBZTtDQUFLO09BQUMsQ0FBQSxRQUFhLE9BQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNpSWxDLElBQUksc0JBQWtCO0NBQUE7RUFBVSxRQUFDO0VBQUE7RUFBUztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VB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QVk7RUFBQyxFQUFFO0VBQUMsRUFBZTtFQUFZLEVBQUE7RUFBZSxFQUFBO0VBQWEsRUFBQTtFQUFjLEVBQUE7RUFBZTtFQUFhLEVBQUE7RUFBYyxFQUFVO0VBQWM7Q0FBQTtFQUFBO0VBQUE7RUFBWTtFQUFFO0VBQUE7RUFBQTtFQUFBO0VBQWdCO0VBQU07RUFBRztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNuTixJQUFRLE1BQVM7Q0FBQTtPQUFHO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNwQixJQUFHLE1BQUE7Q0FBQTtFQUFBLE1BQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNSSCxJQUFPLFdBQWM7Q0FBQTtPQUFjO0VBQUMsRUFBRTtFQUFDO0VBQWUsRUFBUTtFQUFpQixFQUFBO0VBQWM7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFnQjtFQUFNO0VBQUU7RUFBTTtFQUFDO0NBQUE7Ozs7QUNBNUgsSUFBTyxtQkFBVTtDQUFBO09BQWlCLEVBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ2xDLElBQUksT0FBVztDQUFBO09BQU07RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDckIsSUFBSSxhQUFvQjtDQUFDO09BQUM7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBQSxhQUFBO0NBQUE7T0FBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUVGQSxJQUFXLFVBQVU7Q0FBQztPQUFXLENBQUEsR0FBQSxnQkFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNqQyxJQUFXLGdCQUFjO0NBQUE7T0FBQSxDQUFBLEVBQUEsV0FBQSxFQUFBLFdBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN6QixJQUFDLHNCQUFBO0NBQUE7T0FBQSxDQUFBLEVBQUEsYUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFFRCxJQUFXLG9CQUFvQjtDQUFDO0VBQUksTUFBQTtFQUFBO0VBQXNCO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFFMUQsSUFBTyxrQkFBVTtDQUFBO0VBQWtCLE1BQUU7RUFBQSxFQUFBO0VBQVE7RUFBYSxFQUFFO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDNUQsSUFBUyxrQkFBVztDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ1BwQixJQUFPLGtCQUFpQjtDQUFBO09BQWlCO0VBQUM7RUFBaUI7RUFBRTtFQUFhO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFFLElBQUksa0JBQXFCO0NBQUE7T0FBVTtFQUFBLEVBQWE7RUFBVSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUQsSUFBSSxrQkFBdUI7Q0FBQTtPQUFVO0VBQUEsRUFBYTtFQUFVLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VB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QUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUEsY0FBQTtFQUFBO0VBQUEsY0FBQTtFQUFBLGNBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUEsY0FBQTtFQUFBLGNBQUE7RUFBQSxjQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsTUFBQTtFQUFBLGNBQUE7RUFBQSxjQUFBO0VBQUEsTUFBQTtFQUFBLGNBQUE7RUFBQSxjQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDlKLElBQU8sbUJBQVU7Q0FBQTtPQUFpQixDQUFBLHdCQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDbEMsSUFBSSxrQkFBeUI7Q0FBQTtPQUFBLENBQUEsa0JBQTRCLGdCQUFPO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2hFLElBQUksWUFBVTtDQUFBO09BQVEsQ0FBQSxnQkFBQTtDQUFBLENBQUEsR0FBQTtDQUFBOzs7O0FDSHRCLElBQU8sb0JBQVU7Q0FBQTtPQUFrQixFQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7QUFDbkMsSUFBSSxtQkFBZ0I7Q0FBQTtPQUFBLENBQUEsa0JBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ3BCLElBQUEsYUFBQTtDQUFBO09BQUEsRUFBQTtDQUFBLEVBQUE7Q0FBQTs7OztBQ0RBLElBQUEsYUFBYztDQUFBO09BQVksQ0FBQSxnQkFBZTtDQUFBLENBQUEsR0FBQTtDQUFBIn0=
1175
+ export { $fetch, $file, $toast, AuthGuardOptions, AuthService, AutoOptions, DASHBOARD_ROW_HEIGHT, Dashboard, DashboardGridUnit, DashboardOptions, DashboardWidget, DashboardWidgetAction, DashboardWidgetData, DashboardWidgetDefinition, DashboardWidgetDefinitionChart, DashboardWidgetRegistry, DataTableColumn, DefineFormField, FetchBrowserService, FetchNodeService, FetchOptions, FetchService, GuestGuardOptions, HSL, LayoutService, LifecycleService, ListFilter, MenuBase, MenuGroup, MenuItem, MenuItem$1 as MenuItemEntity, MenuService, MenuSingle, MenuWithChildren, Module as ModuleEntity, OKLCH, PluginEntity, RGB, RGBA, Router, ToastService, UNHEAD_VUE_CONTAINER_KEY, UseFetchPaginationOptions, UseMenu, UseStateOptions, VEE_VALIDATE_CONTAINER_KEY, VUE_CONTAINER_KEY, VUE_ROUTER_CONTAINER_KEY, ValibotFormOptions, ValibotFormResultObject, acl, auth, authGuard, auto, autoRoutes, clsx, cn, config, _default as container, createAuthGuard, createGuestGuard, createId, createRouter, dashboardRegistry, defineColumns, defineFormFields, emmitter, extracRGB, extractOKLCH, extractRGBA, fetcher, guestGuard, hexToRGB, hslToRgb, layout, lifecycle, logger, menu, oklchToRgb, parseTo, provideDashboard, provideDashboardWidget, rgbToHex, rgbToHsl, rgbToOklch, rgbaToString, route, router, setupGuard, toTypedSchema, toast, twMerge, unheadVue, useBreakpoints, useColor, useColorType, useDashboard, useDashboardWidget, useFetchPagination, useForm, useHSL, useHead, useHex, useLayoutOptions, useLoading, useMenu, useRGB, useRGBA, useRouteQuery, useState, useValibotForm, veeValidate, vue, vueRouter };
1176
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC91dGlscy9jb21wb3NlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1Blcm1pc3Npb25FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUm9sZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Vc2VyRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0F1dGhTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZldGNoU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9GZXRjaEJyb3dzZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZldGNoTm9kZVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvc2VydmljZXMvTGF5b3V0U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0xpZmVjeWNsZUhvb2suZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9MaWZlY3ljbGVTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2VudGl0aWVzL01lbnVJdGVtRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL01lbnVTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL1JvdXRlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvc2VydmljZXMvVG9hc3RTZXJ2aWNlLmQudHMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZXVzZS9jb3JlL2Rpc3QvaW5kZXguZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvY29tcG9zYWJsZXMvdXNlQnJlYWtwb2ludC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VDb2xvci5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9FbW1pdHRlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZW50aXRpZXMvRGFzaGJvYXJkV2lkZ2V0RGF0YS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9lbnRpdGllcy9EYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2VudGl0aWVzL0Rhc2hib2FyZFdpZGdldC5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC92YWxpZGF0b3JzL3VybFZhbGlkYXRvci5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC92YWxpZGF0b3JzL2tleVZhbHVlVmFsaWRhdG9yLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3ZhbGlkYXRvcnMvcGFnaW5hdGlvblZhbGlkYXRvci5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC92YWxpZGF0b3JzL2luZGV4LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL1ZhbGlkYXRvclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2NoZW1hcy9kYXNoYm9hcmRTY2hlbWEuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZW50aXRpZXMvRGFzaGJvYXJkLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2NvbXBvc2FibGVzL3VzZURhc2hib2FyZC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VEYXNoYm9hcmRXaWRnZXQuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvY29tcG9zYWJsZXMvdXNlRmV0Y2hQYWdpbmF0aW9uLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvQ29udGFpbmVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC91dGlscy9jcmVhdGVJZC5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9BY2xFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTW9kdWxlTWFuaWZlc3RFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTW9kdWxlRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1BsdWdpbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VGb3JtLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvdW5oZWFkVnVlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2NvbXBvc2FibGVzL3VzZUhlYWQuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvY29tcG9zYWJsZXMvdXNlTGF5b3V0T3B0aW9ucy5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VMb2FkaW5nLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2NvbXBvc2FibGVzL3VzZU1lbnUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvY29tcG9zYWJsZXMvdXNlUm91dGVRdWVyeS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9jb21wb3NhYmxlcy91c2VTdGF0ZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2FjbC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2F1dGguZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9jb25maWcuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9jb250YWluZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvcmVnaXN0cnkvRGFzaGJvYXJkV2lkZ2V0UmVnaXN0cnkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9kYXNoYm9hcmRSZWdpc3RyeS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2VtbWl0dGVyLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvZmV0Y2hlci5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2xheW91dC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2xpZmVjeWNsZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2xvZ2dlci5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL21lbnUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9yb3V0ZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL3JvdXRlci5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL3RvYXN0LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvdmVlVmFsaWRhdGUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy92dWUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy92dWVSb3V0ZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZW50aXRpZXMvRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbkNoYXJ0LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2VudGl0aWVzL01vZHVsZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9lbnRpdGllcy9QbHVnaW5FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvdXRpbHMvYXV0b1BhZ2VzLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3V0aWxzL2RlZmluZUNvbHVtbnMuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvdXRpbHMvZGVmaW5lRm9ybUZpZWxkcy5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC91dGlscy9mZXRjaGVyLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3V0aWxzL2ZpbGUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvdXRpbHMvcGFyc2VUby5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC91dGlscy90b2FzdC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC91dGlscy90d01lcmdlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2d1YXJkcy9hdXRoR3VhcmQuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZ3VhcmRzL2d1ZXN0R3VhcmQuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZ3VhcmRzL3NldHVwR3VhcmQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVuaW9uVG9JbnRlcnNlY3Rpb24gfSBmcm9tICcuL3R5cGluZy50cyc7XG5leHBvcnQgdHlwZSBBbnlDbGFzcyA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueTtcbmV4cG9ydCB0eXBlIENvbnN0cnVjdG9yPFQgPSB7fT4gPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xuZXhwb3J0IHR5cGUgTWl4aW48VD4gPSAoYmFzZTogQ29uc3RydWN0b3IpID0+IENvbnN0cnVjdG9yPFQ+O1xuLyoqXG4gKiBDb21wb3NlcyBtdWx0aXBsZSBtaXhpbnMgaW50byBhIHNpbmdsZSBjbGFzcyB0aGF0IGNhbiBiZSBleHRlbmRlZC5cbiAqIEFsbG93cyBmb3IgbXVsdGlwbGUgaW5oZXJpdGFuY2UtbGlrZSBiZWhhdmlvciBieSBhcHBseWluZyBtaXhpbnMgc2VxdWVudGlhbGx5LlxuICpcbiAqIEBwYXJhbSBtaXhpbnMgLSBBcnJheSBvZiBtaXhpbiBmdW5jdGlvbnMgdG8gY29tcG9zZVxuICogQHJldHVybnMgQSBjbGFzcyBjb25zdHJ1Y3RvciB0aGF0IGluY2x1ZGVzIGFsbCBtaXhpbiBmdW5jdGlvbmFsaXR5XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFVzZXIgZXh0ZW5kcyBjb21wb3NlKFRpbWVzdGFtcCwgU29mdERlbGV0ZSkge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoKVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY29tcG9zZTxNIGV4dGVuZHMgQXJyYXk8KGJhc2U6IENvbnN0cnVjdG9yPGFueT4pID0+IENvbnN0cnVjdG9yPGFueT4+PiguLi5taXhpbnM6IE0pOiBVbmlvblRvSW50ZXJzZWN0aW9uPFJldHVyblR5cGU8TVtudW1iZXJdPj47XG4vKipcbiAqIEFsdGVybmF0aXZlIGNvbXBvc2UgZnVuY3Rpb24gdGhhdCBzdGFydHMgd2l0aCBhIGJhc2UgY2xhc3NcbiAqXG4gKiBAcGFyYW0gYmFzZUNsYXNzIC0gVGhlIGJhc2UgY2xhc3MgdG8gc3RhcnQgd2l0aFxuICogQHBhcmFtIG1peGlucyAtIEFycmF5IG9mIG1peGluIGZ1bmN0aW9ucyB0byBhcHBseVxuICogQHJldHVybnMgQSBjbGFzcyBjb25zdHJ1Y3RvciB0aGF0IGV4dGVuZHMgdGhlIGJhc2UgY2xhc3Mgd2l0aCBhbGwgbWl4aW4gZnVuY3Rpb25hbGl0eVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBVc2VyIGV4dGVuZHMgY29tcG9zZVdpdGgoQmFzZUVudGl0eSwgVGltZXN0YW1wLCBTb2Z0RGVsZXRlKSB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAqICAgICBzdXBlcigpXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjb21wb3NlV2l0aDxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yLCBNIGV4dGVuZHMgQXJyYXk8KGJhc2U6IENvbnN0cnVjdG9yKSA9PiBDb25zdHJ1Y3Rvcjxhbnk+Pj4oYmFzZUNsYXNzOiBUQmFzZSwgLi4ubWl4aW5zOiBNKTogVEJhc2UgJiBVbmlvblRvSW50ZXJzZWN0aW9uPFJldHVyblR5cGU8TVtudW1iZXJdPj47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBtaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPihTb3VyY2U6IFRCYXNlKTogPFRUYXJnZXQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oVGFyZ2V0OiBUVGFyZ2V0KSA9PiBUVGFyZ2V0ICYgVEJhc2U7XG4iLCJkZWNsYXJlIGNvbnN0IFBlcm1pc3Npb25FbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZXJtaXNzaW9uRW50aXR5IGV4dGVuZHMgUGVybWlzc2lvbkVudGl0eV9iYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICBvcmlnaW46IHN0cmluZztcbiAgICBzdWJqZWN0OiBzdHJpbmc7XG4gICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgY29uZGl0aW9uczogc3RyaW5nIHwgbnVsbCB8IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW47XG4gICAgZ2V0IHBhcnNlZENvbmRpdGlvbnMoKTogYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiZGVjbGFyZSBjb25zdCBSb2xlX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgfTtcbn0gJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgZGVsZXRlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb2xlIGV4dGVuZHMgUm9sZV9iYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIFBlcm1pc3Npb24gZnJvbSAnLi9QZXJtaXNzaW9uRW50aXR5LnRzJztcbmltcG9ydCB0eXBlIFJvbGUgZnJvbSAnLi9Sb2xlRW50aXR5LnRzJztcbmRlY2xhcmUgY29uc3QgVXNlckVudGl0eV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgIH07XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGRlbGV0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlckVudGl0eSBleHRlbmRzIFVzZXJFbnRpdHlfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICAgIHZlcmlmaWVkX2F0PzogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gICAgcGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uW107XG4gICAgcm9sZXM/OiBSb2xlW107XG4gICAgZ2V0IGluaXRpYWxzKCk6IHN0cmluZztcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBVc2VyIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvVXNlckVudGl0eS50cyc7XG5pbnRlcmZhY2UgTG9nb3V0T3B0aW9ucyB7XG4gICAgcmVkaXJlY3Q/OiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdXRoU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHVzZXI6IFVzZXIgfCBudWxsO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPEF1dGhTZXJ2aWNlPik7XG4gICAgbG9nb3V0KG9wdGlvbnM/OiBMb2dvdXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hPcHRpb25zIGV4dGVuZHMgUmVxdWVzdEluaXQge1xuICAgIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZldGNoU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBoYW5kbGVFcnJvcihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPGFueT47XG4gICAgcHJvdGVjdGVkIGJ1aWxkVXJsKHVybDogc3RyaW5nLCBxdWVyeT86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGJ1aWxkUmVxdWVzdEluaXQob3B0aW9uczogRmV0Y2hPcHRpb25zKTogUmVxdWVzdEluaXQ7XG4gICAgcHJvdGVjdGVkIHBhcnNlUmVzcG9uc2U8VD4ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxUPjtcbiAgICBmZXRjaDxUPihfdXJsOiBzdHJpbmcsIF9vcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICB0cnk8VCA9IGFueT4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFtFcnJvciwgbnVsbF0gfCBbbnVsbCwgQXdhaXRlZDxUPl0+O1xuICAgIGdldDxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG4gICAgcG9zdDxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG4gICAgcHV0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBkZWxldGU8VCA9IGFueT4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBGZXRjaE9wdGlvbnMgfSBmcm9tICcuL0ZldGNoU2VydmljZS50cyc7XG5pbXBvcnQgRmV0Y2hTZXJ2aWNlIGZyb20gJy4vRmV0Y2hTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZldGNoQnJvd3NlclNlcnZpY2UgZXh0ZW5kcyBGZXRjaFNlcnZpY2Uge1xuICAgIGZldGNoPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbn1cbiIsImltcG9ydCB0eXBlIHsgRmV0Y2hPcHRpb25zIH0gZnJvbSAnLi9GZXRjaFNlcnZpY2UudHMnO1xuaW1wb3J0IEZldGNoU2VydmljZSBmcm9tICcuL0ZldGNoU2VydmljZS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZXRjaE5vZGVTZXJ2aWNlIGV4dGVuZHMgRmV0Y2hTZXJ2aWNlIHtcbiAgICBmZXRjaDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG4gICAgcHJvdGVjdGVkIGZldGNoRXh0ZXJuYWw8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICAgIHByb3RlY3RlZCBmZXRjaEludGVybmFsPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbn1cbiIsImltcG9ydCB0eXBlIHsgRGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF5b3V0U2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGNvbXBvbmVudHM6IE1hcDxzdHJpbmcsIERlZmluZUNvbXBvbmVudD47XG4gICAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBjdXJyZW5kSWQ6IHN0cmluZyB8IG51bGw7XG4gICAgc2V0Q3VycmVudChpZDogc3RyaW5nKTogdm9pZDtcbiAgICBhZGQobmFtZTogc3RyaW5nLCBjb21wb25lbnQ6IERlZmluZUNvbXBvbmVudCwgb3B0aW9ucz86IGFueSk6IHZvaWQ7XG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG4gICAgZ2V0KG5hbWU6IHN0cmluZyk6IERlZmluZUNvbXBvbmVudDtcbiAgICBnZXRPcHRpb25zKCk6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgZ2V0Q3VycmVudCgpOiBEZWZpbmVDb21wb25lbnQgfCBudWxsO1xuICAgIHNldE9wdGlvbnMob3B0aW9ucz86IGFueSk6IHZvaWQ7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgbWV0YT86IGFueSk6IHZvaWQ7XG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZyB8IEVycm9yLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBjaGlsZChvcHRpb25zOiBhbnkpOiBMb2dnZXJTZXJ2aWNlO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlmZWN5Y2xlSG9vayB7XG4gICAgaG9va19pZDogc3RyaW5nO1xuICAgIGhvb2tfYWxpYXNlcz86IHN0cmluZ1tdO1xuICAgIG9yZGVyPzogbnVtYmVyO1xuICAgIHN1Ymhvb2tzPzogTGlmZWN5Y2xlSG9va1tdO1xuICAgIHJlZ2lzdGVyKCk6IFByb21pc2U8dm9pZD47XG4gICAgbG9hZCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGJvb3QoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+O1xuICAgIC8qKiBAZGVwcmVjYXRlZCBVc2UgcmVnaXN0ZXIgKi9cbiAgICBvblJlZ2lzdGVyKCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSBsb2FkICovXG4gICAgb25Mb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSBib290ICovXG4gICAgb25Cb290KCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSBzaHV0ZG93biAqL1xuICAgIG9uU2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJy4vTG9nZ2VyU2VydmljZS50cyc7XG5pbXBvcnQgTGlmZWN5Y2xlSG9vayBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0xpZmVjeWNsZUhvb2sudHMnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gJyNzaGFyZWQvdXRpbHMvY29tcG9zZS50cyc7XG50eXBlIExpZmVjeWNsZU1ldGhvZCA9ICdyZWdpc3RlcicgfCAnbG9hZCcgfCAnYm9vdCcgfCAnc2h1dGRvd24nO1xuaW50ZXJmYWNlIExpc3RPcHRpb25zIHtcbiAgICBpbmNsdWRlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgZXhjbHVkZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVTZXJ2aWNlT3B0aW9ucyB7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIGhvb2tzPzogTWFwPHN0cmluZywgTGlmZWN5Y2xlSG9vaz47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbiAgICBvbkVycm9yPzogKGVycm9yOiBFcnJvciwgY29udGV4dDoge1xuICAgICAgICBob29rSWQ6IHN0cmluZztcbiAgICAgICAgbWV0aG9kOiBMaWZlY3ljbGVNZXRob2Q7XG4gICAgfSkgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpZmVjeWNsZVNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBob29rczogTWFwPHN0cmluZywgTGlmZWN5Y2xlSG9vaz47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBMaWZlY3ljbGVTZXJ2aWNlT3B0aW9ucyk7XG4gICAgc2V0T25FcnJvcihoYW5kbGVyOiBSZXF1aXJlZDxMaWZlY3ljbGVTZXJ2aWNlT3B0aW9ucz5bJ29uRXJyb3InXSk6IHZvaWQ7XG4gICAgb25FcnJvcihlcnJvcjogRXJyb3IsIGNvbnRleHQ6IHtcbiAgICAgICAgaG9va0lkOiBzdHJpbmc7XG4gICAgICAgIG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kO1xuICAgIH0pOiB2b2lkO1xuICAgIG1hcEFsaWFzZXMoYXJnczogc3RyaW5nW10pOiBzdHJpbmdbXTtcbiAgICBsaXN0KG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IExpZmVjeWNsZUhvb2tbXTtcbiAgICBhZGQoLi4ucGF5bG9hZDogKExpZmVjeWNsZUhvb2sgfCBDb25zdHJ1Y3RvcjxMaWZlY3ljbGVIb29rPilbXSk6IHZvaWQ7XG4gICAgZW1pdE1ldGhvZChtZXRob2Q6IExpZmVjeWNsZU1ldGhvZCwgb3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBlbWl0KHBheWxvYWQ6IExpZmVjeWNsZU1ldGhvZCB8IExpZmVjeWNsZU1ldGhvZFtdLCBvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIG9uKG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kLCBoYW5kbGVyOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZDtcbiAgICByZWdpc3RlcihvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWQob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBib290KG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgc2h1dGRvd24ob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBjbGVhcigpOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IEJhc2VMaWZlY3ljbGVTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVTZXJ2aWNlIGV4dGVuZHMgQmFzZUxpZmVjeWNsZVNlcnZpY2Uge1xuICAgIGFkZEltcG9ydHMoaW1wb3J0czogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQ7XG59XG4iLCJkZWNsYXJlIGNvbnN0IE1lbnVJdGVtX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudUl0ZW0gZXh0ZW5kcyBNZW51SXRlbV9iYXNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbGF5b3V0OiBzdHJpbmc7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xuICAgIGdyb3VwPzogc3RyaW5nO1xuICAgIG9yZGVyPzogbnVtYmVyO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgcGFyZW50Pzogc3RyaW5nO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IE1lbnVJdGVtIGZyb20gJyNjbGllbnQvZW50aXRpZXMvTWVudUl0ZW1FbnRpdHkudHMnO1xuZXhwb3J0IGludGVyZmFjZSBMaXN0RmlsdGVyIHtcbiAgICBsYXlvdXQ/OiBzdHJpbmc7XG4gICAgZ3JvdXA/OiBzdHJpbmc7XG4gICAgcGFyZW50Pzogc3RyaW5nO1xuICAgIGFsbG93ZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudVNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBpdGVtczogTWFwPHN0cmluZywgTWVudUl0ZW0+O1xuICAgIGFkZCguLi5pdGVtOiBPbWl0PFBhcnRpYWw8TWVudUl0ZW0+LCAnbWVyZ2UnIHwgJ2Zyb20nPltdKTogdm9pZDtcbiAgICByZW1vdmUoaWQ6IE1lbnVJdGVtWydpZCddKTogdm9pZDtcbiAgICBsaXN0KGZpbHRlcj86IExpc3RGaWx0ZXIpOiBNZW51SXRlbVtdO1xuICAgIGNsZWFyKCk6IHZvaWQ7XG59XG4iLCJpbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25HdWFyZCwgUm91dGVyIGFzIFZ1ZVJvdXRlciB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZVJlY29yZFJhdyB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuaW1wb3J0IHR5cGUgeyBEZWZpbmVDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXIgZXh0ZW5kcyBWdWVSb3V0ZXIge1xuICAgIGF1dG86IHR5cGVvZiBhdXRvO1xufVxuZXhwb3J0IGludGVyZmFjZSBBdXRvT3B0aW9ucyB7XG4gICAgZ3VhcmRzPzogTmF2aWdhdGlvbkd1YXJkW10gfCAoKHJlY29yZDogUm91dGVSZWNvcmRSYXcpID0+IE5hdmlnYXRpb25HdWFyZFtdKTtcbiAgICBzdHJpcD86IChzdHJpbmcgfCBSZWdFeHApW107XG4gICAgZXhjbHVkZT86IChzdHJpbmcgfCBSZWdFeHApW107XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlZmluZT86IChyZWNvcmRzOiBSb3V0ZVJlY29yZFJhd1tdKSA9PiBSb3V0ZVJlY29yZFJhd1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXV0byhpbXBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbmVDb21wb25lbnQgfCAoKCkgPT4gUHJvbWlzZTxEZWZpbmVDb21wb25lbnQ+KT4sIG9wdGlvbnM/OiBBdXRvT3B0aW9ucyk6IFJvdXRlUmVjb3JkUmF3W107XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVSb3V0ZXIoKTogUm91dGVyO1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9hc3RTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbn1cbiIsImltcG9ydCAqIGFzIF92dWV1c2Vfc2hhcmVkMCBmcm9tIFwiQHZ1ZXVzZS9zaGFyZWRcIjtcbmltcG9ydCB7IEFycmF5YWJsZSwgQXdhaXRhYmxlLCBDb25maWd1cmFibGVFdmVudEZpbHRlciwgQ29uZmlndXJhYmxlRmx1c2gsIENvbmZpZ3VyYWJsZUZsdXNoU3luYywgRXZlbnRIb29rT24sIEZuLCBJc0FueSwgUGF1c2FibGUsIFJlYWRvbmx5UmVmT3JHZXR0ZXIsIFJlbW92YWJsZVJlZiwgU2hhbGxvd09yRGVlcFJlZiwgU3RvcHBhYmxlLCBVc2VUaW1lb3V0Rm5PcHRpb25zIH0gZnJvbSBcIkB2dWV1c2Uvc2hhcmVkXCI7XG5pbXBvcnQgKiBhcyB2dWUwIGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IEFwcCwgQ29tcG9uZW50LCBDb21wb25lbnRPYmplY3RQcm9wc09wdGlvbnMsIENvbXBvbmVudFB1YmxpY0luc3RhbmNlLCBDb21wdXRlZFJlZiwgRGVmaW5lQ29tcG9uZW50LCBJbmplY3Rpb25LZXksIE1heWJlUmVmLCBNYXliZVJlZk9yR2V0dGVyLCBNdWx0aVdhdGNoU291cmNlcywgUmVmLCBTaGFsbG93UmVmLCBTbG90LCBTdHlsZVZhbHVlLCBUb1JlZnMsIFRyYW5zaXRpb25Hcm91cFByb3BzLCBVbndyYXBOZXN0ZWRSZWZzLCBVbndyYXBSZWYsIFdhdGNoT3B0aW9ucywgV2F0Y2hPcHRpb25zQmFzZSwgV2F0Y2hTb3VyY2UsIFdhdGNoU3RvcEhhbmRsZSwgV3JpdGFibGVDb21wdXRlZFJlZiB9IGZyb20gXCJ2dWVcIjtcbmV4cG9ydCAqIGZyb20gXCJAdnVldXNlL3NoYXJlZFwiO1xuXG4vLyNyZWdpb24gY29tcHV0ZWRBc3luYy9pbmRleC5kLnRzXG4vKipcbiAqIEhhbmRsZSBvdmVybGFwcGluZyBhc3luYyBldmFsdWF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gY2FuY2VsQ2FsbGJhY2sgVGhlIHByb3ZpZGVkIGNhbGxiYWNrIGlzIGludm9rZWQgd2hlbiBhIHJlLWV2YWx1YXRpb24gb2YgdGhlIGNvbXB1dGVkIHZhbHVlIGlzIHRyaWdnZXJlZCBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBmaW5pc2hlZFxuICovXG50eXBlIEFzeW5jQ29tcHV0ZWRPbkNhbmNlbCA9IChjYW5jZWxDYWxsYmFjazogRm4pID0+IHZvaWQ7XG5pbnRlcmZhY2UgQXN5bmNDb21wdXRlZE9wdGlvbnM8TGF6eSA9IGJvb2xlYW4+IGV4dGVuZHMgQ29uZmlndXJhYmxlRmx1c2hTeW5jIHtcbiAgLyoqXG4gICAqIFNob3VsZCB2YWx1ZSBiZSBldmFsdWF0ZWQgbGF6aWx5XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBsYXp5PzogTGF6eTtcbiAgLyoqXG4gICAqIFJlZiBwYXNzZWQgdG8gcmVjZWl2ZSB0aGUgdXBkYXRlZCBvZiBhc3luYyBldmFsdWF0aW9uXG4gICAqL1xuICBldmFsdWF0aW5nPzogUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogVXNlIHNoYWxsb3dSZWZcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgc2hhbGxvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIGVycm9yIGlzIGNhdWdodC5cbiAgICovXG4gIG9uRXJyb3I/OiAoZTogdW5rbm93bikgPT4gdm9pZDtcbn1cbi8qKlxuICogQ3JlYXRlIGFuIGFzeW5jaHJvbm91cyBjb21wdXRlZCBkZXBlbmRlbmN5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL2NvbXB1dGVkQXN5bmNcbiAqIEBwYXJhbSBldmFsdWF0aW9uQ2FsbGJhY2sgICAgIFRoZSBwcm9taXNlLXJldHVybmluZyBjYWxsYmFjayB3aGljaCBnZW5lcmF0ZXMgdGhlIGNvbXB1dGVkIHZhbHVlXG4gKiBAcGFyYW0gaW5pdGlhbFN0YXRlICAgICAgICAgICBUaGUgaW5pdGlhbCBzdGF0ZSwgdXNlZCB1bnRpbCB0aGUgZmlyc3QgZXZhbHVhdGlvbiBmaW5pc2hlc1xuICogQHBhcmFtIG9wdGlvbnNPclJlZiAgICAgICAgICAgQWRkaXRpb25hbCBvcHRpb25zIG9yIGEgcmVmIHBhc3NlZCB0byByZWNlaXZlIHRoZSB1cGRhdGVzIG9mIHRoZSBhc3luYyBldmFsdWF0aW9uXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gY29tcHV0ZWRBc3luYzxUPihldmFsdWF0aW9uQ2FsbGJhY2s6IChvbkNhbmNlbDogQXN5bmNDb21wdXRlZE9uQ2FuY2VsKSA9PiBUIHwgUHJvbWlzZTxUPiwgaW5pdGlhbFN0YXRlOiBULCBvcHRpb25zT3JSZWY6IEFzeW5jQ29tcHV0ZWRPcHRpb25zPHRydWU+KTogQ29tcHV0ZWRSZWY8VD47XG5kZWNsYXJlIGZ1bmN0aW9uIGNvbXB1dGVkQXN5bmM8VD4oZXZhbHVhdGlvbkNhbGxiYWNrOiAob25DYW5jZWw6IEFzeW5jQ29tcHV0ZWRPbkNhbmNlbCkgPT4gVCB8IFByb21pc2U8VD4sIGluaXRpYWxTdGF0ZTogdW5kZWZpbmVkLCBvcHRpb25zT3JSZWY6IEFzeW5jQ29tcHV0ZWRPcHRpb25zPHRydWU+KTogQ29tcHV0ZWRSZWY8VCB8IHVuZGVmaW5lZD47XG5kZWNsYXJlIGZ1bmN0aW9uIGNvbXB1dGVkQXN5bmM8VD4oZXZhbHVhdGlvbkNhbGxiYWNrOiAob25DYW5jZWw6IEFzeW5jQ29tcHV0ZWRPbkNhbmNlbCkgPT4gVCB8IFByb21pc2U8VD4sIGluaXRpYWxTdGF0ZTogVCwgb3B0aW9uc09yUmVmPzogUmVmPGJvb2xlYW4+IHwgQXN5bmNDb21wdXRlZE9wdGlvbnMpOiBSZWY8VD47XG5kZWNsYXJlIGZ1bmN0aW9uIGNvbXB1dGVkQXN5bmM8VD4oZXZhbHVhdGlvbkNhbGxiYWNrOiAob25DYW5jZWw6IEFzeW5jQ29tcHV0ZWRPbkNhbmNlbCkgPT4gVCB8IFByb21pc2U8VD4sIGluaXRpYWxTdGF0ZT86IHVuZGVmaW5lZCwgb3B0aW9uc09yUmVmPzogUmVmPGJvb2xlYW4+IHwgQXN5bmNDb21wdXRlZE9wdGlvbnMpOiBSZWY8VCB8IHVuZGVmaW5lZD47XG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBjb21wdXRlZEFzeW5jYCBpbnN0ZWFkICovXG5kZWNsYXJlIGNvbnN0IGFzeW5jQ29tcHV0ZWQ6IHR5cGVvZiBjb21wdXRlZEFzeW5jO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gY29tcHV0ZWRJbmplY3QvaW5kZXguZC50c1xudHlwZSBDb21wdXRlZEluamVjdEdldHRlcjxULCBLJDE+ID0gKHNvdXJjZTogVCB8IHVuZGVmaW5lZCwgb2xkVmFsdWU/OiBLJDEpID0+IEskMTtcbnR5cGUgQ29tcHV0ZWRJbmplY3RHZXR0ZXJXaXRoRGVmYXVsdDxULCBLJDE+ID0gKHNvdXJjZTogVCwgb2xkVmFsdWU/OiBLJDEpID0+IEskMTtcbnR5cGUgQ29tcHV0ZWRJbmplY3RTZXR0ZXI8VD4gPSAodjogVCkgPT4gdm9pZDtcbmludGVyZmFjZSBXcml0YWJsZUNvbXB1dGVkSW5qZWN0T3B0aW9uczxULCBLJDE+IHtcbiAgZ2V0OiBDb21wdXRlZEluamVjdEdldHRlcjxULCBLJDE+O1xuICBzZXQ6IENvbXB1dGVkSW5qZWN0U2V0dGVyPEskMT47XG59XG5pbnRlcmZhY2UgV3JpdGFibGVDb21wdXRlZEluamVjdE9wdGlvbnNXaXRoRGVmYXVsdDxULCBLJDE+IHtcbiAgZ2V0OiBDb21wdXRlZEluamVjdEdldHRlcldpdGhEZWZhdWx0PFQsIEskMT47XG4gIHNldDogQ29tcHV0ZWRJbmplY3RTZXR0ZXI8SyQxPjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gY29tcHV0ZWRJbmplY3Q8VCwgSyQxID0gYW55PihrZXk6IEluamVjdGlvbktleTxUPiB8IHN0cmluZywgZ2V0dGVyOiBDb21wdXRlZEluamVjdEdldHRlcjxULCBLJDE+KTogQ29tcHV0ZWRSZWY8SyQxIHwgdW5kZWZpbmVkPjtcbmRlY2xhcmUgZnVuY3Rpb24gY29tcHV0ZWRJbmplY3Q8VCwgSyQxID0gYW55PihrZXk6IEluamVjdGlvbktleTxUPiB8IHN0cmluZywgb3B0aW9uczogV3JpdGFibGVDb21wdXRlZEluamVjdE9wdGlvbnM8VCwgSyQxPik6IENvbXB1dGVkUmVmPEskMSB8IHVuZGVmaW5lZD47XG5kZWNsYXJlIGZ1bmN0aW9uIGNvbXB1dGVkSW5qZWN0PFQsIEskMSA9IGFueT4oa2V5OiBJbmplY3Rpb25LZXk8VD4gfCBzdHJpbmcsIGdldHRlcjogQ29tcHV0ZWRJbmplY3RHZXR0ZXJXaXRoRGVmYXVsdDxULCBLJDE+LCBkZWZhdWx0U291cmNlOiBULCB0cmVhdERlZmF1bHRBc0ZhY3Rvcnk/OiBmYWxzZSk6IENvbXB1dGVkUmVmPEskMT47XG5kZWNsYXJlIGZ1bmN0aW9uIGNvbXB1dGVkSW5qZWN0PFQsIEskMSA9IGFueT4oa2V5OiBJbmplY3Rpb25LZXk8VD4gfCBzdHJpbmcsIG9wdGlvbnM6IFdyaXRhYmxlQ29tcHV0ZWRJbmplY3RPcHRpb25zV2l0aERlZmF1bHQ8VCwgSyQxPiwgZGVmYXVsdFNvdXJjZTogVCB8ICgoKSA9PiBUKSwgdHJlYXREZWZhdWx0QXNGYWN0b3J5OiB0cnVlKTogQ29tcHV0ZWRSZWY8SyQxPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIGNyZWF0ZVJldXNhYmxlVGVtcGxhdGUvaW5kZXguZC50c1xudHlwZSBPYmplY3RMaXRlcmFsV2l0aFBvdGVudGlhbE9iamVjdExpdGVyYWxzID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZD47XG50eXBlIEdlbmVyYXRlU2xvdHNGcm9tU2xvdE1hcDxUIGV4dGVuZHMgT2JqZWN0TGl0ZXJhbFdpdGhQb3RlbnRpYWxPYmplY3RMaXRlcmFscz4gPSB7IFtLIGluIGtleW9mIFRdOiBTbG90PFRbS10+IH07XG50eXBlIERlZmluZVRlbXBsYXRlQ29tcG9uZW50PEJpbmRpbmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiwgTWFwU2xvdE5hbWVUb1Nsb3RQcm9wcyBleHRlbmRzIE9iamVjdExpdGVyYWxXaXRoUG90ZW50aWFsT2JqZWN0TGl0ZXJhbHM+ID0gRGVmaW5lQ29tcG9uZW50ICYge1xuICBuZXcgKCk6IHtcbiAgICAkc2xvdHM6IHtcbiAgICAgIGRlZmF1bHQ6IChfOiBCaW5kaW5ncyAmIHtcbiAgICAgICAgJHNsb3RzOiBHZW5lcmF0ZVNsb3RzRnJvbVNsb3RNYXA8TWFwU2xvdE5hbWVUb1Nsb3RQcm9wcz47XG4gICAgICB9KSA9PiBhbnk7XG4gICAgfTtcbiAgfTtcbn07XG50eXBlIFJldXNlVGVtcGxhdGVDb21wb25lbnQ8QmluZGluZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBNYXBTbG90TmFtZVRvU2xvdFByb3BzIGV4dGVuZHMgT2JqZWN0TGl0ZXJhbFdpdGhQb3RlbnRpYWxPYmplY3RMaXRlcmFscz4gPSBEZWZpbmVDb21wb25lbnQ8QmluZGluZ3M+ICYge1xuICBuZXcgKCk6IHtcbiAgICAkc2xvdHM6IEdlbmVyYXRlU2xvdHNGcm9tU2xvdE1hcDxNYXBTbG90TmFtZVRvU2xvdFByb3BzPjtcbiAgfTtcbn07XG50eXBlIFJldXNhYmxlVGVtcGxhdGVQYWlyPEJpbmRpbmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiwgTWFwU2xvdE5hbWVUb1Nsb3RQcm9wcyBleHRlbmRzIE9iamVjdExpdGVyYWxXaXRoUG90ZW50aWFsT2JqZWN0TGl0ZXJhbHM+ID0gW0RlZmluZVRlbXBsYXRlQ29tcG9uZW50PEJpbmRpbmdzLCBNYXBTbG90TmFtZVRvU2xvdFByb3BzPiwgUmV1c2VUZW1wbGF0ZUNvbXBvbmVudDxCaW5kaW5ncywgTWFwU2xvdE5hbWVUb1Nsb3RQcm9wcz5dICYge1xuICBkZWZpbmU6IERlZmluZVRlbXBsYXRlQ29tcG9uZW50PEJpbmRpbmdzLCBNYXBTbG90TmFtZVRvU2xvdFByb3BzPjtcbiAgcmV1c2U6IFJldXNlVGVtcGxhdGVDb21wb25lbnQ8QmluZGluZ3MsIE1hcFNsb3ROYW1lVG9TbG90UHJvcHM+O1xufTtcbmludGVyZmFjZSBDcmVhdGVSZXVzYWJsZVRlbXBsYXRlT3B0aW9uczxQcm9wcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgLyoqXG4gICAqIEluaGVyaXQgYXR0cnMgZnJvbSByZXVzZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGluaGVyaXRBdHRycz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcm9wcyBkZWZpbml0aW9uIGZvciByZXVzZSBjb21wb25lbnQuXG4gICAqL1xuICBwcm9wcz86IENvbXBvbmVudE9iamVjdFByb3BzT3B0aW9uczxQcm9wcz47XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBgZGVmaW5lYCBhbmQgYHJldXNlYCBjb21wb25lbnRzIGluIHBhaXIsXG4gKiBJdCBhbHNvIGFsbG93IHRvIHBhc3MgYSBnZW5lcmljIHRvIGJpbmQgd2l0aCB0eXBlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL2NyZWF0ZVJldXNhYmxlVGVtcGxhdGVcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZVJldXNhYmxlVGVtcGxhdGU8QmluZGluZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBNYXBTbG90TmFtZVRvU2xvdFByb3BzIGV4dGVuZHMgT2JqZWN0TGl0ZXJhbFdpdGhQb3RlbnRpYWxPYmplY3RMaXRlcmFscyA9IFJlY29yZDwnZGVmYXVsdCcsIHVuZGVmaW5lZD4+KG9wdGlvbnM/OiBDcmVhdGVSZXVzYWJsZVRlbXBsYXRlT3B0aW9uczxCaW5kaW5ncz4pOiBSZXVzYWJsZVRlbXBsYXRlUGFpcjxCaW5kaW5ncywgTWFwU2xvdE5hbWVUb1Nsb3RQcm9wcz47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBjcmVhdGVUZW1wbGF0ZVByb21pc2UvaW5kZXguZC50c1xuaW50ZXJmYWNlIFRlbXBsYXRlUHJvbWlzZVByb3BzPFJldHVybiwgQXJncyBleHRlbmRzIGFueVtdID0gW10+IHtcbiAgLyoqXG4gICAqIFRoZSBwcm9taXNlIGluc3RhbmNlLlxuICAgKi9cbiAgcHJvbWlzZTogUHJvbWlzZTxSZXR1cm4+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgcHJvbWlzZS5cbiAgICovXG4gIHJlc29sdmU6ICh2OiBSZXR1cm4gfCBQcm9taXNlPFJldHVybj4pID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBSZWplY3QgdGhlIHByb21pc2UuXG4gICAqL1xuICByZWplY3Q6ICh2OiBhbnkpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBBcmd1bWVudHMgcGFzc2VkIHRvIFRlbXBsYXRlUHJvbWlzZS5zdGFydCgpXG4gICAqL1xuICBhcmdzOiBBcmdzO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBwcm9taXNlIGlzIHJlc29sdmluZy5cbiAgICogV2hlbiBwYXNzaW5nIGFub3RoZXIgcHJvbWlzZSB0byBgcmVzb2x2ZWAsIHRoaXMgd2lsbCBiZSBzZXQgdG8gYHRydWVgIHVudGlsIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuICAgKi9cbiAgaXNSZXNvbHZpbmc6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIHBhc3NlZCB0byBjcmVhdGVUZW1wbGF0ZVByb21pc2UoKVxuICAgKi9cbiAgb3B0aW9uczogVGVtcGxhdGVQcm9taXNlT3B0aW9ucztcbiAgLyoqXG4gICAqIFVuaXF1ZSBrZXkgZm9yIGxpc3QgcmVuZGVyaW5nLlxuICAgKi9cbiAga2V5OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgVGVtcGxhdGVQcm9taXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBwcm9taXNlIGNhbiBiZSBjYWxsZWQgb25seSBvbmNlIGF0IGEgdGltZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNpbmdsZXRvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmFuc2l0aW9uIHByb3BzIGZvciB0aGUgcHJvbWlzZS5cbiAgICovXG4gIHRyYW5zaXRpb24/OiBUcmFuc2l0aW9uR3JvdXBQcm9wcztcbn1cbnR5cGUgVGVtcGxhdGVQcm9taXNlPFJldHVybiwgQXJncyBleHRlbmRzIGFueVtdID0gW10+ID0gRGVmaW5lQ29tcG9uZW50PG9iamVjdD4gJiB7XG4gIG5ldyAoKToge1xuICAgICRzbG90czoge1xuICAgICAgZGVmYXVsdDogKF86IFRlbXBsYXRlUHJvbWlzZVByb3BzPFJldHVybiwgQXJncz4pID0+IGFueTtcbiAgICB9O1xuICB9O1xufSAmIHtcbiAgc3RhcnQ6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPFJldHVybj47XG59O1xuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcGxhdGUgcHJvbWlzZSBjb21wb25lbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvY3JlYXRlVGVtcGxhdGVQcm9taXNlXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVUZW1wbGF0ZVByb21pc2U8UmV0dXJuLCBBcmdzIGV4dGVuZHMgYW55W10gPSBbXT4ob3B0aW9ucz86IFRlbXBsYXRlUHJvbWlzZU9wdGlvbnMpOiBUZW1wbGF0ZVByb21pc2U8UmV0dXJuLCBBcmdzPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIGNyZWF0ZVVucmVmRm4vaW5kZXguZC50c1xudHlwZSBVbnJlZkZuPFQ+ID0gVCBleHRlbmRzICgoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUikgPyAoLi4uYXJnczogeyBbSyBpbiBrZXlvZiBBXTogTWF5YmVSZWY8QVtLXT4gfSkgPT4gUiA6IG5ldmVyO1xuLyoqXG4gKiBNYWtlIGEgcGxhaW4gZnVuY3Rpb24gYWNjZXB0aW5nIHJlZiBhbmQgcmF3IHZhbHVlcyBhcyBhcmd1bWVudHMuXG4gKiBSZXR1cm5zIHRoZSBzYW1lIHZhbHVlIHRoZSB1bmNvbnZlcnRlZCBmdW5jdGlvbiByZXR1cm5zLCB3aXRoIHByb3BlciB0eXBpbmcuXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVVbnJlZkZuPFQgZXh0ZW5kcyBGdW5jdGlvbj4oZm46IFQpOiBVbnJlZkZuPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gX2NvbmZpZ3VyYWJsZS5kLnRzXG5pbnRlcmZhY2UgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgd2luZG93PzogV2luZG93O1xufVxuaW50ZXJmYWNlIENvbmZpZ3VyYWJsZURvY3VtZW50IHtcbiAgZG9jdW1lbnQ/OiBEb2N1bWVudDtcbn1cbmludGVyZmFjZSBDb25maWd1cmFibGVEb2N1bWVudE9yU2hhZG93Um9vdCB7XG4gIGRvY3VtZW50PzogRG9jdW1lbnRPclNoYWRvd1Jvb3Q7XG59XG5pbnRlcmZhY2UgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHtcbiAgbmF2aWdhdG9yPzogTmF2aWdhdG9yO1xufVxuaW50ZXJmYWNlIENvbmZpZ3VyYWJsZUxvY2F0aW9uIHtcbiAgbG9jYXRpb24/OiBMb2NhdGlvbjtcbn1cbmRlY2xhcmUgY29uc3QgZGVmYXVsdFdpbmRvdzogKFdpbmRvdyAmIHR5cGVvZiBnbG9iYWxUaGlzKSB8IHVuZGVmaW5lZDtcbmRlY2xhcmUgY29uc3QgZGVmYXVsdERvY3VtZW50OiBEb2N1bWVudCB8IHVuZGVmaW5lZDtcbmRlY2xhcmUgY29uc3QgZGVmYXVsdE5hdmlnYXRvcjogTmF2aWdhdG9yIHwgdW5kZWZpbmVkO1xuZGVjbGFyZSBjb25zdCBkZWZhdWx0TG9jYXRpb246IExvY2F0aW9uIHwgdW5kZWZpbmVkO1xuaW50ZXJmYWNlIENvbmZpZ3VyYWJsZURlZXBSZWZzPEQgZXh0ZW5kcyBib29sZWFuPiB7XG4gIC8qKlxuICAgKiBSZXR1cm4gZGVlcCByZWZzIGluc3RlYWQgb2Ygc2hhbGxvdyByZWZzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlIC0gd2lsbCBiZSBjaGFuZ2VkIHRvIGBmYWxzZWAgYnkgZGVmYXVsdCBpbiB0aGUgbmV4dCBtYWpvclxuICAgKi9cbiAgZGVlcFJlZnM/OiBEO1xufVxuaW50ZXJmYWNlIENvbmZpZ3VyYWJsZVNjaGVkdWxlciB7XG4gIC8qKlxuICAgKiBDdXN0b20gc2NoZWR1bGVyIHRvIHVzZSBmb3IgaW50ZXJ2YWwgZXhlY3V0aW9uLlxuICAgKi9cbiAgc2NoZWR1bGVyPzogKGNiOiBGbikgPT4gUGF1c2FibGU7XG59XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1bnJlZkVsZW1lbnQvaW5kZXguZC50c1xudHlwZSBWdWVJbnN0YW5jZSA9IENvbXBvbmVudFB1YmxpY0luc3RhbmNlO1xudHlwZSBNYXliZUVsZW1lbnRSZWY8VCBleHRlbmRzIE1heWJlRWxlbWVudCA9IE1heWJlRWxlbWVudD4gPSBNYXliZVJlZjxUPjtcbnR5cGUgTWF5YmVDb21wdXRlZEVsZW1lbnRSZWY8VCBleHRlbmRzIE1heWJlRWxlbWVudCA9IE1heWJlRWxlbWVudD4gPSBNYXliZVJlZk9yR2V0dGVyPFQ+O1xudHlwZSBNYXliZUVsZW1lbnQgPSBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQgfCBWdWVJbnN0YW5jZSB8IHVuZGVmaW5lZCB8IG51bGw7XG50eXBlIFVuUmVmRWxlbWVudFJldHVybjxUIGV4dGVuZHMgTWF5YmVFbGVtZW50ID0gTWF5YmVFbGVtZW50PiA9IFQgZXh0ZW5kcyBWdWVJbnN0YW5jZSA/IEV4Y2x1ZGU8TWF5YmVFbGVtZW50LCBWdWVJbnN0YW5jZT4gOiBUIHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBHZXQgdGhlIGRvbSBlbGVtZW50IG9mIGEgcmVmIG9mIGVsZW1lbnQgb3IgVnVlIGNvbXBvbmVudCBpbnN0YW5jZVxuICpcbiAqIEBwYXJhbSBlbFJlZlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVucmVmRWxlbWVudDxUIGV4dGVuZHMgTWF5YmVFbGVtZW50PihlbFJlZjogTWF5YmVDb21wdXRlZEVsZW1lbnRSZWY8VD4pOiBVblJlZkVsZW1lbnRSZXR1cm48VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBvbkNsaWNrT3V0c2lkZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgT25DbGlja091dHNpZGVPcHRpb25zPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCB0cmlnZ2VyIHRoZSBldmVudCxcbiAgICogcHJvdmlkZWQgYXMgUmVmcyBvciBDU1MgU2VsZWN0b3JzLlxuICAgKi9cbiAgaWdub3JlPzogTWF5YmVSZWZPckdldHRlcjwoTWF5YmVFbGVtZW50UmVmIHwgc3RyaW5nKVtdPjtcbiAgLyoqXG4gICAqIFVzZSBjYXB0dXJpbmcgcGhhc2UgZm9yIGludGVybmFsIGV2ZW50IGxpc3RlbmVyLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBjYXB0dXJlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJ1biBoYW5kbGVyIGZ1bmN0aW9uIGlmIGZvY3VzIG1vdmVzIHRvIGFuIGlmcmFtZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRldGVjdElmcmFtZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBVc2UgY29udHJvbHMgdG8gY2FuY2VsL3RyaWdnZXIgbGlzdGVuZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb250cm9scz86IENvbnRyb2xzO1xufVxudHlwZSBPbkNsaWNrT3V0c2lkZUhhbmRsZXI8VCBleHRlbmRzIE9uQ2xpY2tPdXRzaWRlT3B0aW9uczxib29sZWFuPiA9IE9uQ2xpY2tPdXRzaWRlT3B0aW9ucz4gPSAoZXZlbnQ6IChUWydkZXRlY3RJZnJhbWUnXSBleHRlbmRzIHRydWUgPyBGb2N1c0V2ZW50IDogbmV2ZXIpIHwgKFRbJ2NvbnRyb2xzJ10gZXh0ZW5kcyB0cnVlID8gRXZlbnQgOiBuZXZlcikgfCBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG50eXBlIE9uQ2xpY2tPdXRzaWRlUmV0dXJuPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IENvbnRyb2xzIGV4dGVuZHMgZmFsc2UgPyBGbiA6IHtcbiAgc3RvcDogRm47XG4gIGNhbmNlbDogRm47XG4gIHRyaWdnZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG59O1xuLyoqXG4gKiBMaXN0ZW4gZm9yIGNsaWNrcyBvdXRzaWRlIG9mIGFuIGVsZW1lbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvb25DbGlja091dHNpZGVcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBoYW5kbGVyXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIG9uQ2xpY2tPdXRzaWRlPFQgZXh0ZW5kcyBPbkNsaWNrT3V0c2lkZU9wdGlvbnM+KHRhcmdldDogTWF5YmVDb21wdXRlZEVsZW1lbnRSZWYsIGhhbmRsZXI6IE9uQ2xpY2tPdXRzaWRlSGFuZGxlcjxUPiwgb3B0aW9ucz86IFQpOiBGbjtcbmRlY2xhcmUgZnVuY3Rpb24gb25DbGlja091dHNpZGU8VCBleHRlbmRzIE9uQ2xpY2tPdXRzaWRlT3B0aW9uczx0cnVlPj4odGFyZ2V0OiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZiwgaGFuZGxlcjogT25DbGlja091dHNpZGVIYW5kbGVyPFQ+LCBvcHRpb25zOiBUKToge1xuICBzdG9wOiBGbjtcbiAgY2FuY2VsOiBGbjtcbiAgdHJpZ2dlcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbn07XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBvbkVsZW1lbnRSZW1vdmFsL2luZGV4LmQudHNcbmludGVyZmFjZSBPbkVsZW1lbnRSZW1vdmFsT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdywgQ29uZmlndXJhYmxlRG9jdW1lbnRPclNoYWRvd1Jvb3QsIFdhdGNoT3B0aW9uc0Jhc2Uge31cbi8qKlxuICogRmlyZXMgd2hlbiB0aGUgZWxlbWVudCBvciBhbnkgZWxlbWVudCBjb250YWluaW5nIGl0IGlzIHJlbW92ZWQuXG4gKlxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIG9uRWxlbWVudFJlbW92YWwodGFyZ2V0OiBNYXliZUVsZW1lbnRSZWYsIGNhbGxiYWNrOiAobXV0YXRpb25SZWNvcmRzOiBNdXRhdGlvblJlY29yZFtdKSA9PiB2b2lkLCBvcHRpb25zPzogT25FbGVtZW50UmVtb3ZhbE9wdGlvbnMpOiBGbjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIG9uS2V5U3Ryb2tlL2luZGV4LmQudHNcbnR5cGUgS2V5UHJlZGljYXRlID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBib29sZWFuO1xudHlwZSBLZXlGaWx0ZXIgPSB0cnVlIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBLZXlQcmVkaWNhdGU7XG50eXBlIEtleVN0cm9rZUV2ZW50TmFtZSA9ICdrZXlkb3duJyB8ICdrZXlwcmVzcycgfCAna2V5dXAnO1xuaW50ZXJmYWNlIE9uS2V5U3Ryb2tlT3B0aW9ucyB7XG4gIGV2ZW50TmFtZT86IEtleVN0cm9rZUV2ZW50TmFtZTtcbiAgdGFyZ2V0PzogTWF5YmVSZWZPckdldHRlcjxFdmVudFRhcmdldCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICBwYXNzaXZlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgdG8gaWdub3JlIHJlcGVhdGVkIGV2ZW50cyB3aGVuIHRoZSBrZXkgaXMgYmVpbmcgaGVsZCBkb3duLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGVkdXBlPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuPjtcbn1cbi8qKlxuICogTGlzdGVuIGZvciBrZXlib2FyZCBrZXlzdHJva2VzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL29uS2V5U3Ryb2tlXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gb25LZXlTdHJva2Uoa2V5OiBLZXlGaWx0ZXIsIGhhbmRsZXI6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IE9uS2V5U3Ryb2tlT3B0aW9ucyk6ICgpID0+IHZvaWQ7XG5kZWNsYXJlIGZ1bmN0aW9uIG9uS2V5U3Ryb2tlKGhhbmRsZXI6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IE9uS2V5U3Ryb2tlT3B0aW9ucyk6ICgpID0+IHZvaWQ7XG4vKipcbiAqIExpc3RlbiB0byB0aGUga2V5ZG93biBldmVudCBvZiB0aGUgZ2l2ZW4ga2V5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL29uS2V5U3Ryb2tlXG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gaGFuZGxlclxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBvbktleURvd24oa2V5OiBLZXlGaWx0ZXIsIGhhbmRsZXI6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IE9taXQ8T25LZXlTdHJva2VPcHRpb25zLCAnZXZlbnROYW1lJz4pOiAoKSA9PiB2b2lkO1xuLyoqXG4gKiBMaXN0ZW4gdG8gdGhlIGtleXByZXNzIGV2ZW50IG9mIHRoZSBnaXZlbiBrZXkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvb25LZXlTdHJva2VcbiAqIEBwYXJhbSBrZXlcbiAqIEBwYXJhbSBoYW5kbGVyXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIG9uS2V5UHJlc3NlZChrZXk6IEtleUZpbHRlciwgaGFuZGxlcjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogT21pdDxPbktleVN0cm9rZU9wdGlvbnMsICdldmVudE5hbWUnPik6ICgpID0+IHZvaWQ7XG4vKipcbiAqIExpc3RlbiB0byB0aGUga2V5dXAgZXZlbnQgb2YgdGhlIGdpdmVuIGtleS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy9vbktleVN0cm9rZVxuICogQHBhcmFtIGtleVxuICogQHBhcmFtIGhhbmRsZXJcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gb25LZXlVcChrZXk6IEtleUZpbHRlciwgaGFuZGxlcjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogT21pdDxPbktleVN0cm9rZU9wdGlvbnMsICdldmVudE5hbWUnPik6ICgpID0+IHZvaWQ7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBvbkxvbmdQcmVzcy9pbmRleC5kLnRzXG5pbnRlcmZhY2UgT25Mb25nUHJlc3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRpbWUgaW4gbXMgdGlsbCBgbG9uZ3ByZXNzYCBnZXRzIGNhbGxlZFxuICAgKlxuICAgKiBAZGVmYXVsdCA1MDBcbiAgICovXG4gIGRlbGF5PzogbnVtYmVyIHwgKChldjogUG9pbnRlckV2ZW50KSA9PiBudW1iZXIpO1xuICBtb2RpZmllcnM/OiBPbkxvbmdQcmVzc01vZGlmaWVycztcbiAgLyoqXG4gICAqIEFsbG93YW5jZSBvZiBtb3ZpbmcgZGlzdGFuY2UgaW4gcGl4ZWxzLFxuICAgKiBUaGUgYWN0aW9uIHdpbGwgZ2V0IGNhbmNlbGVkIFdoZW4gbW92aW5nIHRvbyBmYXIgZnJvbSB0aGUgcG9pbnRlcmRvd24gcG9zaXRpb24uXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICBkaXN0YW5jZVRocmVzaG9sZD86IG51bWJlciB8IGZhbHNlO1xuICAvKipcbiAgICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIHJlZiBlbGVtZW50IGlzIHJlbGVhc2VkLlxuICAgKiBAcGFyYW0gZHVyYXRpb24gaG93IGxvbmcgdGhlIGVsZW1lbnQgd2FzIHByZXNzZWQgaW4gbXNcbiAgICogQHBhcmFtIGRpc3RhbmNlIGRpc3RhbmNlIGZyb20gdGhlIHBvaW50ZXJkb3duIHBvc2l0aW9uXG4gICAqIEBwYXJhbSBpc0xvbmdQcmVzcyB3aGV0aGVyIHRoZSBhY3Rpb24gd2FzIGEgbG9uZyBwcmVzcyBvciBub3RcbiAgICovXG4gIG9uTW91c2VVcD86IChkdXJhdGlvbjogbnVtYmVyLCBkaXN0YW5jZTogbnVtYmVyLCBpc0xvbmdQcmVzczogYm9vbGVhbikgPT4gdm9pZDtcbn1cbmludGVyZmFjZSBPbkxvbmdQcmVzc01vZGlmaWVycyB7XG4gIHN0b3A/OiBib29sZWFuO1xuICBvbmNlPzogYm9vbGVhbjtcbiAgcHJldmVudD86IGJvb2xlYW47XG4gIGNhcHR1cmU/OiBib29sZWFuO1xuICBzZWxmPzogYm9vbGVhbjtcbn1cbnR5cGUgT25Mb25nUHJlc3NSZXR1cm4gPSAoKSA9PiB2b2lkO1xuLyoqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgT25Mb25nUHJlc3NSZXR1cm59IGluc3RlYWQgKi9cbnR5cGUgVXNlT25Mb25nUHJlc3NSZXR1cm4gPSBPbkxvbmdQcmVzc1JldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gb25Mb25nUHJlc3ModGFyZ2V0OiBNYXliZUVsZW1lbnRSZWYsIGhhbmRsZXI6IChldnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IE9uTG9uZ1ByZXNzT3B0aW9ucyk6IE9uTG9uZ1ByZXNzUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gb25TdGFydFR5cGluZy9pbmRleC5kLnRzXG4vKipcbiAqIEZpcmVzIHdoZW4gdXNlcnMgc3RhcnQgdHlwaW5nIG9uIG5vbi1lZGl0YWJsZSBlbGVtZW50cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy9vblN0YXJ0VHlwaW5nXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gb25TdGFydFR5cGluZyhjYWxsYmFjazogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogQ29uZmlndXJhYmxlRG9jdW1lbnQpOiB2b2lkO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdGVtcGxhdGVSZWYvaW5kZXguZC50c1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgVnVlJ3MgYnVpbHQtaW4gYHVzZVRlbXBsYXRlUmVmYCBpbnN0ZWFkLlxuICpcbiAqIFNob3J0aGFuZCBmb3IgYmluZGluZyByZWYgdG8gdGVtcGxhdGUgZWxlbWVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy90ZW1wbGF0ZVJlZlxuICogQHBhcmFtIGtleVxuICogQHBhcmFtIGluaXRpYWxWYWx1ZVxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdGVtcGxhdGVSZWY8VCBleHRlbmRzIEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB8IENvbXBvbmVudCB8IG51bGwsIEtleXMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KGtleTogS2V5cywgaW5pdGlhbFZhbHVlPzogVCB8IG51bGwpOiBSZWFkb25seTxSZWY8VD4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQWN0aXZlRWxlbWVudC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQWN0aXZlRWxlbWVudE9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3csIENvbmZpZ3VyYWJsZURvY3VtZW50T3JTaGFkb3dSb290IHtcbiAgLyoqXG4gICAqIFNlYXJjaCBhY3RpdmUgZWxlbWVudCBkZWVwbHkgaW5zaWRlIHNoYWRvdyBkb21cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZGVlcD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmFjayBhY3RpdmUgZWxlbWVudCB3aGVuIGl0J3MgcmVtb3ZlZCBmcm9tIHRoZSBET01cbiAgICogVXNpbmcgYSBNdXRhdGlvbk9ic2VydmVyIHVuZGVyIHRoZSBob29kXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB0cmlnZ2VyT25SZW1vdmFsPzogYm9vbGVhbjtcbn1cbnR5cGUgVXNlQWN0aXZlRWxlbWVudFJldHVybjxUIGV4dGVuZHMgSFRNTEVsZW1lbnQgPSBIVE1MRWxlbWVudD4gPSBTaGFsbG93UmVmPFQgfCBudWxsIHwgdW5kZWZpbmVkPjtcbi8qKlxuICogUmVhY3RpdmUgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQWN0aXZlRWxlbWVudFxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUFjdGl2ZUVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50PihvcHRpb25zPzogVXNlQWN0aXZlRWxlbWVudE9wdGlvbnMpOiBVc2VBY3RpdmVFbGVtZW50UmV0dXJuPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdHlwZXMuZC50c1xuaW50ZXJmYWNlIFBvc2l0aW9uIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgUmVuZGVyYWJsZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHJlbmRlcmVkIGFzXG4gICAqXG4gICAqIEBkZWZhdWx0ICdkaXYnXG4gICAqL1xuICBhcz86IG9iamVjdCB8IHN0cmluZztcbn1cbnR5cGUgUG9pbnRlclR5cGUgPSAnbW91c2UnIHwgJ3RvdWNoJyB8ICdwZW4nO1xuaW50ZXJmYWNlIFN1cHBvcnRhYmxlIHtcbiAgaXNTdXBwb3J0ZWQ6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xufVxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQW5pbWF0ZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQW5pbWF0ZU9wdGlvbnMgZXh0ZW5kcyBLZXlmcmFtZUFuaW1hdGlvbk9wdGlvbnMsIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBXaWxsIGF1dG9tYXRpY2FsbHkgcnVuIHBsYXkgd2hlbiBgdXNlQW5pbWF0ZWAgaXMgdXNlZFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0byBjb21taXRzIHRoZSBlbmQgc3R5bGluZyBzdGF0ZSBvZiBhbiBhbmltYXRpb24gdG8gdGhlIGVsZW1lbnQgYmVpbmcgYW5pbWF0ZWRcbiAgICogSW4gZ2VuZXJhbCwgeW91IHNob3VsZCB1c2UgYGZpbGxgIG9wdGlvbiB3aXRoIHRoaXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb21taXRTdHlsZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0byBwZXJzaXN0cyB0aGUgYW5pbWF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwZXJzaXN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEV4ZWN1dGVkIGFmdGVyIGFuaW1hdGlvbiBpbml0aWFsaXphdGlvblxuICAgKi9cbiAgb25SZWFkeT86IChhbmltYXRlOiBBbmltYXRpb24pID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIGVycm9yIGlzIGNhdWdodC5cbiAgICovXG4gIG9uRXJyb3I/OiAoZTogdW5rbm93bikgPT4gdm9pZDtcbn1cbnR5cGUgVXNlQW5pbWF0ZUtleWZyYW1lcyA9IE1heWJlUmVmPEtleWZyYW1lW10gfCBQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMgfCBudWxsPjtcbmludGVyZmFjZSBVc2VBbmltYXRlUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBhbmltYXRlOiBTaGFsbG93UmVmPEFuaW1hdGlvbiB8IHVuZGVmaW5lZD47XG4gIHBsYXk6ICgpID0+IHZvaWQ7XG4gIHBhdXNlOiAoKSA9PiB2b2lkO1xuICByZXZlcnNlOiAoKSA9PiB2b2lkO1xuICBmaW5pc2g6ICgpID0+IHZvaWQ7XG4gIGNhbmNlbDogKCkgPT4gdm9pZDtcbiAgcGVuZGluZzogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIHBsYXlTdGF0ZTogQ29tcHV0ZWRSZWY8QW5pbWF0aW9uUGxheVN0YXRlPjtcbiAgcmVwbGFjZVN0YXRlOiBDb21wdXRlZFJlZjxBbmltYXRpb25SZXBsYWNlU3RhdGU+O1xuICBzdGFydFRpbWU6IFdyaXRhYmxlQ29tcHV0ZWRSZWY8Q1NTTnVtYmVyaXNoIHwgbnVtYmVyIHwgbnVsbD47XG4gIGN1cnJlbnRUaW1lOiBXcml0YWJsZUNvbXB1dGVkUmVmPENTU051bWJlcmlzaCB8IG51bGw+O1xuICB0aW1lbGluZTogV3JpdGFibGVDb21wdXRlZFJlZjxBbmltYXRpb25UaW1lbGluZSB8IG51bGw+O1xuICBwbGF5YmFja1JhdGU6IFdyaXRhYmxlQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgV2ViIEFuaW1hdGlvbnMgQVBJXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQW5pbWF0ZVxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGtleWZyYW1lc1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VBbmltYXRlKHRhcmdldDogTWF5YmVDb21wdXRlZEVsZW1lbnRSZWYsIGtleWZyYW1lczogVXNlQW5pbWF0ZUtleWZyYW1lcywgb3B0aW9ucz86IG51bWJlciB8IFVzZUFuaW1hdGVPcHRpb25zKTogVXNlQW5pbWF0ZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUFzeW5jUXVldWUvaW5kZXguZC50c1xudHlwZSBVc2VBc3luY1F1ZXVlVGFzazxUPiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gVCB8IFByb21pc2U8VD47XG50eXBlIE1hcFF1ZXVlVGFzazxUIGV4dGVuZHMgYW55W10+ID0geyBbSyBpbiBrZXlvZiBUXTogVXNlQXN5bmNRdWV1ZVRhc2s8VFtLXT4gfTtcbmludGVyZmFjZSBVc2VBc3luY1F1ZXVlUmVzdWx0PFQ+IHtcbiAgc3RhdGU6ICdhYm9ydGVkJyB8ICdmdWxmaWxsZWQnIHwgJ3BlbmRpbmcnIHwgJ3JlamVjdGVkJztcbiAgZGF0YTogVCB8IG51bGw7XG59XG5pbnRlcmZhY2UgVXNlQXN5bmNRdWV1ZVJldHVybjxUPiB7XG4gIGFjdGl2ZUluZGV4OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHJlc3VsdDogVDtcbn1cbmludGVyZmFjZSBVc2VBc3luY1F1ZXVlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJbnRlcnJ1cHQgdGFza3Mgd2hlbiBjdXJyZW50IHRhc2sgZmFpbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGludGVycnVwdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmlnZ2VyIGl0IHdoZW4gdGhlIHRhc2tzIGZhaWxzLlxuICAgKlxuICAgKi9cbiAgb25FcnJvcj86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIGl0IHdoZW4gdGhlIHRhc2tzIGVuZHMuXG4gICAqXG4gICAqL1xuICBvbkZpbmlzaGVkPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEEgQWJvcnRTaWduYWwgdGhhdCBjYW4gYmUgdXNlZCB0byBhYm9ydCB0aGUgdGFzay5cbiAgICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuLyoqXG4gKiBBc3luY2hyb25vdXMgcXVldWUgdGFzayBjb250cm9sbGVyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUFzeW5jUXVldWVcbiAqIEBwYXJhbSB0YXNrc1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VBc3luY1F1ZXVlPFQgZXh0ZW5kcyBhbnlbXSwgUyA9IE1hcFF1ZXVlVGFzazxUPj4odGFza3M6IFMgJiBBcnJheTxVc2VBc3luY1F1ZXVlVGFzazxhbnk+Piwgb3B0aW9ucz86IFVzZUFzeW5jUXVldWVPcHRpb25zKTogVXNlQXN5bmNRdWV1ZVJldHVybjx7IFtQIGluIGtleW9mIFRdOiBVc2VBc3luY1F1ZXVlUmVzdWx0PFRbUF0+IH0+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQXN5bmNTdGF0ZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQXN5bmNTdGF0ZVJldHVybkJhc2U8RGF0YSwgUGFyYW1zIGV4dGVuZHMgYW55W10sIFNoYWxsb3cgZXh0ZW5kcyBib29sZWFuPiB7XG4gIHN0YXRlOiBTaGFsbG93IGV4dGVuZHMgdHJ1ZSA/IFJlZjxEYXRhPiA6IFJlZjxVbndyYXBSZWY8RGF0YT4+O1xuICBpc1JlYWR5OiBSZWY8Ym9vbGVhbj47XG4gIGlzTG9hZGluZzogUmVmPGJvb2xlYW4+O1xuICBlcnJvcjogUmVmPHVua25vd24+O1xuICBleGVjdXRlOiAoZGVsYXk/OiBudW1iZXIsIC4uLmFyZ3M6IFBhcmFtcykgPT4gUHJvbWlzZTxEYXRhIHwgdW5kZWZpbmVkPjtcbiAgZXhlY3V0ZUltbWVkaWF0ZTogKC4uLmFyZ3M6IFBhcmFtcykgPT4gUHJvbWlzZTxEYXRhIHwgdW5kZWZpbmVkPjtcbn1cbnR5cGUgVXNlQXN5bmNTdGF0ZVJldHVybjxEYXRhLCBQYXJhbXMgZXh0ZW5kcyBhbnlbXSwgU2hhbGxvdyBleHRlbmRzIGJvb2xlYW4+ID0gVXNlQXN5bmNTdGF0ZVJldHVybkJhc2U8RGF0YSwgUGFyYW1zLCBTaGFsbG93PiAmIFByb21pc2VMaWtlPFVzZUFzeW5jU3RhdGVSZXR1cm5CYXNlPERhdGEsIFBhcmFtcywgU2hhbGxvdz4+O1xuaW50ZXJmYWNlIFVzZUFzeW5jU3RhdGVPcHRpb25zPFNoYWxsb3cgZXh0ZW5kcyBib29sZWFuLCBEID0gYW55PiB7XG4gIC8qKlxuICAgKiBEZWxheSBmb3IgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiB0aGUgcHJvbWlzZSB3aGVuIFwiaW1tZWRpYXRlXCIgaXMgdHJ1ZS4gSW4gbWlsbGlzZWNvbmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBkZWxheT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIHByb21pc2UgcmlnaHQgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQuXG4gICAqIFdpbGwgYXBwbHkgdGhlIGRlbGF5IGlmIGFueS5cbiAgICpcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHlvdSB3aWxsIG5lZWQgdG8gZXhlY3V0ZSBpdCBtYW51YWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoZW4gZXJyb3IgaXMgY2F1Z2h0LlxuICAgKi9cbiAgb25FcnJvcj86IChlOiB1bmtub3duKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGJhY2sgd2hlbiBzdWNjZXNzIGlzIGNhdWdodC5cbiAgICogQHBhcmFtIHtEfSBkYXRhXG4gICAqL1xuICBvblN1Y2Nlc3M/OiAoZGF0YTogRCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXRlIHRvIGluaXRpYWxTdGF0ZSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBwcm9taXNlLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiBjYWxsaW5nIHRoZSBleGVjdXRlIGZ1bmN0aW9uIG1vcmUgdGhhbiBvbmNlIChmb3JcbiAgICogZXhhbXBsZSwgdG8gcmVmcmVzaCBkYXRhKS4gV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBjdXJyZW50IHN0YXRlIHJlbWFpbnNcbiAgICogdW5jaGFuZ2VkIHVudGlsIHRoZSBwcm9taXNlIHJlc29sdmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZXNldE9uRXhlY3V0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBVc2Ugc2hhbGxvd1JlZi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgc2hhbGxvdz86IFNoYWxsb3c7XG4gIC8qKlxuICAgKlxuICAgKiBBbiBlcnJvciBpcyB0aHJvd24gd2hlbiBleGVjdXRpbmcgdGhlIGV4ZWN1dGUgZnVuY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHRocm93RXJyb3I/OiBib29sZWFuO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBhc3luYyBzdGF0ZS4gV2lsbCBub3QgYmxvY2sgeW91ciBzZXR1cCBmdW5jdGlvbiBhbmQgd2lsbCB0cmlnZ2VyIGNoYW5nZXMgb25jZVxuICogdGhlIHByb21pc2UgaXMgcmVhZHkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQXN5bmNTdGF0ZVxuICogQHBhcmFtIHByb21pc2UgICAgICAgICBUaGUgcHJvbWlzZSAvIGFzeW5jIGZ1bmN0aW9uIHRvIGJlIHJlc29sdmVkXG4gKiBAcGFyYW0gaW5pdGlhbFN0YXRlICAgIFRoZSBpbml0aWFsIHN0YXRlLCB1c2VkIHVudGlsIHRoZSBmaXJzdCBldmFsdWF0aW9uIGZpbmlzaGVzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUFzeW5jU3RhdGU8RGF0YSwgUGFyYW1zIGV4dGVuZHMgYW55W10gPSBhbnlbXSwgU2hhbGxvdyBleHRlbmRzIGJvb2xlYW4gPSB0cnVlPihwcm9taXNlOiBQcm9taXNlPERhdGE+IHwgKCguLi5hcmdzOiBQYXJhbXMpID0+IFByb21pc2U8RGF0YT4pLCBpbml0aWFsU3RhdGU6IE1heWJlUmVmPERhdGE+LCBvcHRpb25zPzogVXNlQXN5bmNTdGF0ZU9wdGlvbnM8U2hhbGxvdywgRGF0YT4pOiBVc2VBc3luY1N0YXRlUmV0dXJuPERhdGEsIFBhcmFtcywgU2hhbGxvdz47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VCYXNlNjQvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUJhc2U2NE9wdGlvbnMge1xuICAvKipcbiAgICogT3V0cHV0IGFzIERhdGEgVVJMIGZvcm1hdFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkYXRhVXJsPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBUb0RhdGFVUkxPcHRpb25zIGV4dGVuZHMgVXNlQmFzZTY0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNSU1FIHR5cGVcbiAgICovXG4gIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJbWFnZSBxdWFsaXR5IG9mIGpwZWcgb3Igd2VicFxuICAgKi9cbiAgcXVhbGl0eT86IGFueTtcbn1cbmludGVyZmFjZSBVc2VCYXNlNjRPYmplY3RPcHRpb25zPFQ+IGV4dGVuZHMgVXNlQmFzZTY0T3B0aW9ucyB7XG4gIHNlcmlhbGl6ZXI/OiAodjogVCkgPT4gc3RyaW5nO1xufVxuaW50ZXJmYWNlIFVzZUJhc2U2NFJldHVybiB7XG4gIGJhc2U2NDogU2hhbGxvd1JlZjxzdHJpbmc+O1xuICBwcm9taXNlOiBTaGFsbG93UmVmPFByb21pc2U8c3RyaW5nPj47XG4gIGV4ZWN1dGU6ICgpID0+IFByb21pc2U8c3RyaW5nPjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmFzZTY0KHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxzdHJpbmcgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlQmFzZTY0T3B0aW9ucyk6IFVzZUJhc2U2NFJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmFzZTY0KHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxCbG9iIHwgdW5kZWZpbmVkPiwgb3B0aW9ucz86IFVzZUJhc2U2NE9wdGlvbnMpOiBVc2VCYXNlNjRSZXR1cm47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUJhc2U2NCh0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlCdWZmZXIgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlQmFzZTY0T3B0aW9ucyk6IFVzZUJhc2U2NFJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmFzZTY0KHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxIVE1MQ2FudmFzRWxlbWVudCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBUb0RhdGFVUkxPcHRpb25zKTogVXNlQmFzZTY0UmV0dXJuO1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCYXNlNjQodGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxJbWFnZUVsZW1lbnQgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVG9EYXRhVVJMT3B0aW9ucyk6IFVzZUJhc2U2NFJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmFzZTY0PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4odGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBvcHRpb25zPzogVXNlQmFzZTY0T2JqZWN0T3B0aW9uczxUPik6IFVzZUJhc2U2NFJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmFzZTY0PFQgZXh0ZW5kcyBNYXA8c3RyaW5nLCB1bmtub3duPj4odGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBvcHRpb25zPzogVXNlQmFzZTY0T2JqZWN0T3B0aW9uczxUPik6IFVzZUJhc2U2NFJldHVybjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmFzZTY0PFQgZXh0ZW5kcyBTZXQ8dW5rbm93bj4+KHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxUPiwgb3B0aW9ucz86IFVzZUJhc2U2NE9iamVjdE9wdGlvbnM8VD4pOiBVc2VCYXNlNjRSZXR1cm47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUJhc2U2NDxUPih0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8VFtdPiwgb3B0aW9ucz86IFVzZUJhc2U2NE9iamVjdE9wdGlvbnM8VFtdPik6IFVzZUJhc2U2NFJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUJhdHRlcnkvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUJhdHRlcnlPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHt9XG5pbnRlcmZhY2UgVXNlQmF0dGVyeVJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgY2hhcmdpbmc6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIGNoYXJnaW5nVGltZTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBkaXNjaGFyZ2luZ1RpbWU6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgbGV2ZWw6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbn1cbmludGVyZmFjZSBCYXR0ZXJ5TWFuYWdlciBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgY2hhcmdpbmc6IGJvb2xlYW47XG4gIGNoYXJnaW5nVGltZTogbnVtYmVyO1xuICBkaXNjaGFyZ2luZ1RpbWU6IG51bWJlcjtcbiAgbGV2ZWw6IG51bWJlcjtcbn1cbi8qKlxuICogUmVhY3RpdmUgQmF0dGVyeSBTdGF0dXMgQVBJLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUJhdHRlcnlcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUJhdHRlcnkob3B0aW9ucz86IFVzZUJhdHRlcnlPcHRpb25zKTogVXNlQmF0dGVyeVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUJsdWV0b290aC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQmx1ZXRvb3RoUmVxdWVzdERldmljZU9wdGlvbnMge1xuICAvKipcbiAgICpcbiAgICogQW4gYXJyYXkgb2YgQmx1ZXRvb3RoU2NhbkZpbHRlcnMuIFRoaXMgZmlsdGVyIGNvbnNpc3RzIG9mIGFuIGFycmF5XG4gICAqIG9mIEJsdWV0b290aFNlcnZpY2VVVUlEcywgYSBuYW1lIHBhcmFtZXRlciwgYW5kIGEgbmFtZVByZWZpeCBwYXJhbWV0ZXIuXG4gICAqXG4gICAqL1xuICBmaWx0ZXJzPzogQmx1ZXRvb3RoTEVTY2FuRmlsdGVyW10gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKlxuICAgKiBBbiBhcnJheSBvZiBCbHVldG9vdGhTZXJ2aWNlVVVJRHMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0JsdWV0b290aFJlbW90ZUdBVFRTZXJ2aWNlL3V1aWRcbiAgICpcbiAgICovXG4gIG9wdGlvbmFsU2VydmljZXM/OiBCbHVldG9vdGhTZXJ2aWNlVVVJRFtdIHwgdW5kZWZpbmVkO1xufVxuaW50ZXJmYWNlIFVzZUJsdWV0b290aE9wdGlvbnMgZXh0ZW5kcyBVc2VCbHVldG9vdGhSZXF1ZXN0RGV2aWNlT3B0aW9ucywgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHtcbiAgLyoqXG4gICAqXG4gICAqIEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgdGhlIHJlcXVlc3Rpbmcgc2NyaXB0IGNhbiBhY2NlcHQgYWxsIEJsdWV0b290aFxuICAgKiBkZXZpY2VzLiBUaGUgZGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogISEgVGhpcyBtYXkgcmVzdWx0IGluIGEgYnVuY2ggb2YgdW5yZWxhdGVkIGRldmljZXMgYmVpbmcgc2hvd25cbiAgICogaW4gdGhlIGNob29zZXIgYW5kIGVuZXJneSBiZWluZyB3YXN0ZWQgYXMgdGhlcmUgYXJlIG5vIGZpbHRlcnMuXG4gICAqXG4gICAqXG4gICAqIFVzZSBpdCB3aXRoIGNhdXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqXG4gICAqL1xuICBhY2NlcHRBbGxEZXZpY2VzPzogYm9vbGVhbjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQmx1ZXRvb3RoKG9wdGlvbnM/OiBVc2VCbHVldG9vdGhPcHRpb25zKTogVXNlQmx1ZXRvb3RoUmV0dXJuO1xuaW50ZXJmYWNlIFVzZUJsdWV0b290aFJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgaXNDb25uZWN0ZWQ6IFJlYWRvbmx5PFNoYWxsb3dSZWY8Ym9vbGVhbj4+O1xuICBkZXZpY2U6IFNoYWxsb3dSZWY8Qmx1ZXRvb3RoRGV2aWNlIHwgdW5kZWZpbmVkPjtcbiAgcmVxdWVzdERldmljZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2VydmVyOiBTaGFsbG93UmVmPEJsdWV0b290aFJlbW90ZUdBVFRTZXJ2ZXIgfCB1bmRlZmluZWQ+O1xuICBlcnJvcjogU2hhbGxvd1JlZjx1bmtub3duIHwgbnVsbD47XG59XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VCcmVha3BvaW50cy9icmVha3BvaW50cy5kLnRzXG4vKipcbiAqIEJyZWFrcG9pbnRzIGZyb20gVGFpbHdpbmQgVjJcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWtwb2ludHNcbiAqL1xuZGVjbGFyZSBjb25zdCBicmVha3BvaW50c1RhaWx3aW5kOiB7XG4gIHNtOiBudW1iZXI7XG4gIG1kOiBudW1iZXI7XG4gIGxnOiBudW1iZXI7XG4gIHhsOiBudW1iZXI7XG4gICcyeGwnOiBudW1iZXI7XG59O1xuLyoqXG4gKiBCcmVha3BvaW50cyBmcm9tIEJvb3RzdHJhcCBWNVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9nZXRib290c3RyYXAuY29tL2RvY3MvNS4wL2xheW91dC9icmVha3BvaW50c1xuICovXG5kZWNsYXJlIGNvbnN0IGJyZWFrcG9pbnRzQm9vdHN0cmFwVjU6IHtcbiAgeHM6IG51bWJlcjtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbiAgeHhsOiBudW1iZXI7XG59O1xuLyoqXG4gKiBCcmVha3BvaW50cyBmcm9tIFZ1ZXRpZnkgVjJcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdjIudnVldGlmeWpzLmNvbS9lbi9mZWF0dXJlcy9icmVha3BvaW50cy9cbiAqL1xuZGVjbGFyZSBjb25zdCBicmVha3BvaW50c1Z1ZXRpZnlWMjoge1xuICB4czogbnVtYmVyO1xuICBzbTogbnVtYmVyO1xuICBtZDogbnVtYmVyO1xuICBsZzogbnVtYmVyO1xuICB4bDogbnVtYmVyO1xufTtcbi8qKlxuICogQnJlYWtwb2ludHMgZnJvbSBWdWV0aWZ5IFYzXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXRpZnlqcy5jb20vZW4vc3R5bGVzL2Zsb2F0LyNvdmVydmlld1xuICovXG5kZWNsYXJlIGNvbnN0IGJyZWFrcG9pbnRzVnVldGlmeVYzOiB7XG4gIHhzOiBudW1iZXI7XG4gIHNtOiBudW1iZXI7XG4gIG1kOiBudW1iZXI7XG4gIGxnOiBudW1iZXI7XG4gIHhsOiBudW1iZXI7XG4gIHh4bDogbnVtYmVyO1xufTtcbi8qKlxuICogQWxpYXMgdG8gYGJyZWFrcG9pbnRzVnVldGlmeVYyYFxuICpcbiAqIEBkZXByZWNhdGVkIGV4cGxpY3RseSB1c2UgYGJyZWFrcG9pbnRzVnVldGlmeVYyYCBvciBgYnJlYWtwb2ludHNWdWV0aWZ5VjNgIGluc3RlYWRcbiAqL1xuZGVjbGFyZSBjb25zdCBicmVha3BvaW50c1Z1ZXRpZnk6IHtcbiAgeHM6IG51bWJlcjtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbn07XG4vKipcbiAqIEJyZWFrcG9pbnRzIGZyb20gQW50IERlc2lnblxuICpcbiAqIEBzZWUgaHR0cHM6Ly9hbnQuZGVzaWduL2NvbXBvbmVudHMvbGF5b3V0LyNicmVha3BvaW50LXdpZHRoXG4gKi9cbmRlY2xhcmUgY29uc3QgYnJlYWtwb2ludHNBbnREZXNpZ246IHtcbiAgeHM6IG51bWJlcjtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbiAgeHhsOiBudW1iZXI7XG59O1xuLyoqXG4gKiBCcmVha3BvaW50cyBmcm9tIFF1YXNhciBWMlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9xdWFzYXIuZGV2L3N0eWxlL2JyZWFrcG9pbnRzXG4gKi9cbmRlY2xhcmUgY29uc3QgYnJlYWtwb2ludHNRdWFzYXI6IHtcbiAgeHM6IG51bWJlcjtcbiAgc206IG51bWJlcjtcbiAgbWQ6IG51bWJlcjtcbiAgbGc6IG51bWJlcjtcbiAgeGw6IG51bWJlcjtcbn07XG4vKipcbiAqIFNlbWF0aWMgQnJlYWtwb2ludHNcbiAqL1xuZGVjbGFyZSBjb25zdCBicmVha3BvaW50c1NlbWF0aWM6IHtcbiAgbW9iaWxlUzogbnVtYmVyO1xuICBtb2JpbGVNOiBudW1iZXI7XG4gIG1vYmlsZUw6IG51bWJlcjtcbiAgdGFibGV0OiBudW1iZXI7XG4gIGxhcHRvcDogbnVtYmVyO1xuICBsYXB0b3BMOiBudW1iZXI7XG4gIGRlc2t0b3A0SzogbnVtYmVyO1xufTtcbi8qKlxuICogQnJlYWtwb2ludHMgZnJvbSBNYXN0ZXIgQ1NTXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MubWFzdGVyLmNvL2Nzcy9icmVha3BvaW50c1xuICovXG5kZWNsYXJlIGNvbnN0IGJyZWFrcG9pbnRzTWFzdGVyQ3NzOiB7XG4gICczeHMnOiBudW1iZXI7XG4gICcyeHMnOiBudW1iZXI7XG4gIHhzOiBudW1iZXI7XG4gIHNtOiBudW1iZXI7XG4gIG1kOiBudW1iZXI7XG4gIGxnOiBudW1iZXI7XG4gIHhsOiBudW1iZXI7XG4gICcyeGwnOiBudW1iZXI7XG4gICczeGwnOiBudW1iZXI7XG4gICc0eGwnOiBudW1iZXI7XG59O1xuLyoqXG4gKiBCcmVha3BvaW50cyBmcm9tIFByaW1lRmxleFxuICpcbiAqIEBzZWUgaHR0cHM6Ly9wcmltZWZsZXgub3JnL2luc3RhbGxhdGlvblxuICovXG5kZWNsYXJlIGNvbnN0IGJyZWFrcG9pbnRzUHJpbWVGbGV4OiB7XG4gIHNtOiBudW1iZXI7XG4gIG1kOiBudW1iZXI7XG4gIGxnOiBudW1iZXI7XG4gIHhsOiBudW1iZXI7XG59O1xuLyoqXG4gKiBCcmVha3BvaW50cyBmcm9tIEVsZW1lbnRVSS9FbGVtZW50UGx1c1xuICpcbiAqIEBzZWUgaHR0cHM6Ly9lbGVtZW50LmVsZW1lLmlvLyMvZW4tVVMvY29tcG9uZW50L2xheW91dFxuICogQHNlZSBodHRwczovL2VsZW1lbnQtcGx1cy5vcmcvZW4tVVMvY29tcG9uZW50L2xheW91dC5odG1sXG4gKi9cbmRlY2xhcmUgY29uc3QgYnJlYWtwb2ludHNFbGVtZW50OiB7XG4gIHhzOiBudW1iZXI7XG4gIHNtOiBudW1iZXI7XG4gIG1kOiBudW1iZXI7XG4gIGxnOiBudW1iZXI7XG4gIHhsOiBudW1iZXI7XG59O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQnJlYWtwb2ludHMvaW5kZXguZC50c1xudHlwZSBCcmVha3BvaW50czxLJDEgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gUmVjb3JkPEskMSwgTWF5YmVSZWZPckdldHRlcjxudW1iZXIgfCBzdHJpbmc+PjtcbmludGVyZmFjZSBVc2VCcmVha3BvaW50c09wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICAvKipcbiAgICogVGhlIHF1ZXJ5IHN0cmF0ZWd5IHRvIHVzZSBmb3IgdGhlIGdlbmVyYXRlZCBzaG9ydGN1dCBtZXRob2RzIGxpa2UgYC5sZ2BcbiAgICpcbiAgICogJ21pbi13aWR0aCcgLSAubGcgd2lsbCBiZSB0cnVlIHdoZW4gdGhlIHZpZXdwb3J0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbGcgYnJlYWtwb2ludCAobW9iaWxlLWZpcnN0KVxuICAgKiAnbWF4LXdpZHRoJyAtIC5sZyB3aWxsIGJlIHRydWUgd2hlbiB0aGUgdmlld3BvcnQgaXMgc21hbGxlciB0aGFuIHRoZSB4bCBicmVha3BvaW50IChkZXNrdG9wLWZpcnN0KVxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1pbi13aWR0aFwiXG4gICAqL1xuICBzdHJhdGVneT86ICdtaW4td2lkdGgnIHwgJ21heC13aWR0aCc7XG4gIHNzcldpZHRoPzogbnVtYmVyO1xufVxudHlwZSBVc2VCcmVha3BvaW50UmV0dXJuPEskMSBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSBSZWNvcmQ8SyQxLCBDb21wdXRlZFJlZjxib29sZWFuPj4gJiB7XG4gIGdyZWF0ZXJPckVxdWFsOiAoazogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgc21hbGxlck9yRXF1YWw6IChrOiBNYXliZVJlZk9yR2V0dGVyPEskMT4pID0+IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICBncmVhdGVyOiAoazogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgc21hbGxlcjogKGs6IE1heWJlUmVmT3JHZXR0ZXI8SyQxPikgPT4gQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIGJldHdlZW46IChhOiBNYXliZVJlZk9yR2V0dGVyPEskMT4sIGI6IE1heWJlUmVmT3JHZXR0ZXI8SyQxPikgPT4gQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIGlzR3JlYXRlcjogKGs6IE1heWJlUmVmT3JHZXR0ZXI8SyQxPikgPT4gYm9vbGVhbjtcbiAgaXNHcmVhdGVyT3JFcXVhbDogKGs6IE1heWJlUmVmT3JHZXR0ZXI8SyQxPikgPT4gYm9vbGVhbjtcbiAgaXNTbWFsbGVyOiAoazogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBib29sZWFuO1xuICBpc1NtYWxsZXJPckVxdWFsOiAoazogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBib29sZWFuO1xuICBpc0luQmV0d2VlbjogKGE6IE1heWJlUmVmT3JHZXR0ZXI8SyQxPiwgYjogTWF5YmVSZWZPckdldHRlcjxLJDE+KSA9PiBib29sZWFuO1xuICBjdXJyZW50OiAoKSA9PiBDb21wdXRlZFJlZjxLJDFbXT47XG4gIGFjdGl2ZTogKCkgPT4gQ29tcHV0ZWRSZWY8SyQxIHwgJyc+O1xufTtcbi8qKlxuICogUmVhY3RpdmVseSB2aWV3cG9ydCBicmVha3BvaW50c1xuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUJyZWFrcG9pbnRzXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCcmVha3BvaW50czxLJDEgZXh0ZW5kcyBzdHJpbmc+KGJyZWFrcG9pbnRzOiBCcmVha3BvaW50czxLJDE+LCBvcHRpb25zPzogVXNlQnJlYWtwb2ludHNPcHRpb25zKTogVXNlQnJlYWtwb2ludFJldHVybjxLJDE+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQnJvYWRjYXN0Q2hhbm5lbC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQnJvYWRjYXN0Q2hhbm5lbE9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNoYW5uZWwuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG4vKipcbiAqIFJlYWN0aXZlIEJyb2FkY2FzdENoYW5uZWxcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VCcm9hZGNhc3RDaGFubmVsXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Ccm9hZGNhc3RDaGFubmVsXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VCcm9hZGNhc3RDaGFubmVsPEQsIFAkMT4ob3B0aW9uczogVXNlQnJvYWRjYXN0Q2hhbm5lbE9wdGlvbnMpOiBVc2VCcm9hZGNhc3RDaGFubmVsUmV0dXJuPEQsIFAkMT47XG5pbnRlcmZhY2UgVXNlQnJvYWRjYXN0Q2hhbm5lbFJldHVybjxELCBQJDE+IGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBjaGFubmVsOiBSZWY8QnJvYWRjYXN0Q2hhbm5lbCB8IHVuZGVmaW5lZD47XG4gIGRhdGE6IFJlZjxEPjtcbiAgcG9zdDogKGRhdGE6IFAkMSkgPT4gdm9pZDtcbiAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gIGVycm9yOiBTaGFsbG93UmVmPEV2ZW50IHwgbnVsbD47XG4gIGlzQ2xvc2VkOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xufVxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQnJvd3NlckxvY2F0aW9uL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VCcm93c2VyTG9jYXRpb25PcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHt9XG5pbnRlcmZhY2UgQnJvd3NlckxvY2F0aW9uU3RhdGUge1xuICByZWFkb25seSB0cmlnZ2VyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YXRlPzogYW55O1xuICByZWFkb25seSBsZW5ndGg/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG9yaWdpbj86IHN0cmluZztcbiAgaGFzaD86IHN0cmluZztcbiAgaG9zdD86IHN0cmluZztcbiAgaG9zdG5hbWU/OiBzdHJpbmc7XG4gIGhyZWY/OiBzdHJpbmc7XG4gIHBhdGhuYW1lPzogc3RyaW5nO1xuICBwb3J0Pzogc3RyaW5nO1xuICBwcm90b2NvbD86IHN0cmluZztcbiAgc2VhcmNoPzogc3RyaW5nO1xufVxudHlwZSBVc2VCcm93c2VyTG9jYXRpb25SZXR1cm4gPSBSZWY8QnJvd3NlckxvY2F0aW9uU3RhdGU+O1xuLyoqXG4gKiBSZWFjdGl2ZSBicm93c2VyIGxvY2F0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUJyb3dzZXJMb2NhdGlvblxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQnJvd3NlckxvY2F0aW9uKG9wdGlvbnM/OiBVc2VCcm93c2VyTG9jYXRpb25PcHRpb25zKTogVXNlQnJvd3NlckxvY2F0aW9uUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQ2FjaGVkL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VDYWNoZWRPcHRpb25zPEQgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZT4gZXh0ZW5kcyBDb25maWd1cmFibGVEZWVwUmVmczxEPiwgV2F0Y2hPcHRpb25zIHt9XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUNhY2hlZDxULCBEIGV4dGVuZHMgYm9vbGVhbiA9IHRydWU+KHJlZlZhbHVlOiBSZWY8VD4sIGNvbXBhcmF0b3I/OiAoYTogVCwgYjogVCkgPT4gYm9vbGVhbiwgb3B0aW9ucz86IFVzZUNhY2hlZE9wdGlvbnM8RD4pOiBVc2VDYWNoZWRSZXR1cm48VCwgRD47XG50eXBlIFVzZUNhY2hlZFJldHVybjxUID0gYW55LCBEIGV4dGVuZHMgYm9vbGVhbiA9IHRydWU+ID0gU2hhbGxvd09yRGVlcFJlZjxULCBEPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUNsaXBib2FyZC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlQ2xpcGJvYXJkT3B0aW9uczxTb3VyY2U+IGV4dGVuZHMgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHtcbiAgLyoqXG4gICAqIEVuYWJsZWQgcmVhZGluZyBmb3IgY2xpcGJvYXJkXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvcHkgc291cmNlXG4gICAqL1xuICBzb3VyY2U/OiBTb3VyY2U7XG4gIC8qKlxuICAgKiBNaWxsaXNlY29uZHMgdG8gcmVzZXQgc3RhdGUgb2YgYGNvcGllZGAgcmVmXG4gICAqXG4gICAqIEBkZWZhdWx0IDE1MDBcbiAgICovXG4gIGNvcGllZER1cmluZz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgZmFsbGJhY2sgdG8gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKSBpZiBjbGlwYm9hcmQgaXMgdW5kZWZpbmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbGVnYWN5PzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VDbGlwYm9hcmRSZXR1cm48T3B0aW9uYWw+IGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICB0ZXh0OiBSZWFkb25seTxTaGFsbG93UmVmPHN0cmluZz4+O1xuICBjb3BpZWQ6IFJlYWRvbmx5PFNoYWxsb3dSZWY8Ym9vbGVhbj4+O1xuICBjb3B5OiBPcHRpb25hbCBleHRlbmRzIHRydWUgPyAodGV4dD86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPiA6ICh0ZXh0OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG59XG4vKipcbiAqIFJlYWN0aXZlIENsaXBib2FyZCBBUEkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQ2xpcGJvYXJkXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ2xpcGJvYXJkKG9wdGlvbnM/OiBVc2VDbGlwYm9hcmRPcHRpb25zPHVuZGVmaW5lZD4pOiBVc2VDbGlwYm9hcmRSZXR1cm48ZmFsc2U+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDbGlwYm9hcmQob3B0aW9uczogVXNlQ2xpcGJvYXJkT3B0aW9uczxNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4+KTogVXNlQ2xpcGJvYXJkUmV0dXJuPHRydWU+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQ2xpcGJvYXJkSXRlbXMvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUNsaXBib2FyZEl0ZW1zT3B0aW9uczxTb3VyY2U+IGV4dGVuZHMgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHtcbiAgLyoqXG4gICAqIEVuYWJsZWQgcmVhZGluZyBmb3IgY2xpcGJvYXJkXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvcHkgc291cmNlXG4gICAqL1xuICBzb3VyY2U/OiBTb3VyY2U7XG4gIC8qKlxuICAgKiBNaWxsaXNlY29uZHMgdG8gcmVzZXQgc3RhdGUgb2YgYGNvcGllZGAgcmVmXG4gICAqXG4gICAqIEBkZWZhdWx0IDE1MDBcbiAgICovXG4gIGNvcGllZER1cmluZz86IG51bWJlcjtcbn1cbmludGVyZmFjZSBVc2VDbGlwYm9hcmRJdGVtc1JldHVybjxPcHRpb25hbD4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIGNvbnRlbnQ6IFJlYWRvbmx5PFJlZjxDbGlwYm9hcmRJdGVtcz4+O1xuICBjb3BpZWQ6IFJlYWRvbmx5PFNoYWxsb3dSZWY8Ym9vbGVhbj4+O1xuICBjb3B5OiBPcHRpb25hbCBleHRlbmRzIHRydWUgPyAoY29udGVudD86IENsaXBib2FyZEl0ZW1zKSA9PiBQcm9taXNlPHZvaWQ+IDogKHRleHQ6IENsaXBib2FyZEl0ZW1zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBDbGlwYm9hcmQgQVBJLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUNsaXBib2FyZEl0ZW1zXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ2xpcGJvYXJkSXRlbXMob3B0aW9ucz86IFVzZUNsaXBib2FyZEl0ZW1zT3B0aW9uczx1bmRlZmluZWQ+KTogVXNlQ2xpcGJvYXJkSXRlbXNSZXR1cm48ZmFsc2U+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDbGlwYm9hcmRJdGVtcyhvcHRpb25zOiBVc2VDbGlwYm9hcmRJdGVtc09wdGlvbnM8TWF5YmVSZWZPckdldHRlcjxDbGlwYm9hcmRJdGVtcz4+KTogVXNlQ2xpcGJvYXJkSXRlbXNSZXR1cm48dHJ1ZT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VDbG9uZWQvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUNsb25lZE9wdGlvbnM8VCA9IGFueT4gZXh0ZW5kcyBXYXRjaE9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGNsb25lIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBpdCB1c2UgYEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKWAgdG8gY2xvbmUuXG4gICAqL1xuICBjbG9uZT86IChzb3VyY2U6IFQpID0+IFQ7XG4gIC8qKlxuICAgKiBNYW51YWxseSBzeW5jIHRoZSByZWZcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1hbnVhbD86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgVXNlQ2xvbmVkUmV0dXJuPFQ+IHtcbiAgLyoqXG4gICAqIENsb25lZCByZWZcbiAgICovXG4gIGNsb25lZDogUmVmPFQ+O1xuICAvKipcbiAgICogUmVmIGluZGljYXRlcyB3aGV0aGVyIHRoZSBjbG9uZWQgZGF0YSBpcyBtb2RpZmllZFxuICAgKi9cbiAgaXNNb2RpZmllZDogUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogU3luYyBjbG9uZWQgZGF0YSB3aXRoIHNvdXJjZSBtYW51YWxseVxuICAgKi9cbiAgc3luYzogKCkgPT4gdm9pZDtcbn1cbnR5cGUgQ2xvbmVGbjxGLCBUID0gRj4gPSAoeDogRikgPT4gVDtcbmRlY2xhcmUgZnVuY3Rpb24gY2xvbmVGbkpTT048VD4oc291cmNlOiBUKTogVDtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ2xvbmVkPFQ+KHNvdXJjZTogTWF5YmVSZWZPckdldHRlcjxUPiwgb3B0aW9ucz86IFVzZUNsb25lZE9wdGlvbnMpOiBVc2VDbG9uZWRSZXR1cm48VD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzc3ItaGFuZGxlcnMuZC50c1xuaW50ZXJmYWNlIFN0b3JhZ2VMaWtlQXN5bmMge1xuICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IEF3YWl0YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgc2V0SXRlbTogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiBBd2FpdGFibGU8dm9pZD47XG4gIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4gQXdhaXRhYmxlPHZvaWQ+O1xufVxuaW50ZXJmYWNlIFN0b3JhZ2VMaWtlIHtcbiAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xuICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4gdm9pZDtcbn1cbi8qKlxuICogQGV4cGVyaW1lbnRhbCBUaGUgQVBJIGlzIG5vdCBmaW5hbGl6ZWQgeWV0LiBJdCBtaWdodCBub3QgZm9sbG93IHNlbXZlci5cbiAqL1xuaW50ZXJmYWNlIFNTUkhhbmRsZXJzTWFwIHtcbiAgZ2V0RGVmYXVsdFN0b3JhZ2U6ICgpID0+IFN0b3JhZ2VMaWtlIHwgdW5kZWZpbmVkO1xuICBnZXREZWZhdWx0U3RvcmFnZUFzeW5jOiAoKSA9PiBTdG9yYWdlTGlrZUFzeW5jIHwgdW5kZWZpbmVkO1xuICB1cGRhdGVIVE1MQXR0cnM6IChzZWxlY3Rvcjogc3RyaW5nIHwgTWF5YmVFbGVtZW50UmVmLCBhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gZ2V0U1NSSGFuZGxlcjxUIGV4dGVuZHMga2V5b2YgU1NSSGFuZGxlcnNNYXA+KGtleTogVCwgZmFsbGJhY2s6IFNTUkhhbmRsZXJzTWFwW1RdKTogU1NSSGFuZGxlcnNNYXBbVF07XG5kZWNsYXJlIGZ1bmN0aW9uIGdldFNTUkhhbmRsZXI8VCBleHRlbmRzIGtleW9mIFNTUkhhbmRsZXJzTWFwPihrZXk6IFQsIGZhbGxiYWNrOiBTU1JIYW5kbGVyc01hcFtUXSB8IHVuZGVmaW5lZCk6IFNTUkhhbmRsZXJzTWFwW1RdIHwgdW5kZWZpbmVkO1xuZGVjbGFyZSBmdW5jdGlvbiBzZXRTU1JIYW5kbGVyPFQgZXh0ZW5kcyBrZXlvZiBTU1JIYW5kbGVyc01hcD4oa2V5OiBULCBmbjogU1NSSGFuZGxlcnNNYXBbVF0pOiB2b2lkO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU3RvcmFnZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgU2VyaWFsaXplcjxUPiB7XG4gIHJlYWQ6IChyYXc6IHN0cmluZykgPT4gVDtcbiAgd3JpdGU6ICh2YWx1ZTogVCkgPT4gc3RyaW5nO1xufVxuaW50ZXJmYWNlIFNlcmlhbGl6ZXJBc3luYzxUPiB7XG4gIHJlYWQ6IChyYXc6IHN0cmluZykgPT4gQXdhaXRhYmxlPFQ+O1xuICB3cml0ZTogKHZhbHVlOiBUKSA9PiBBd2FpdGFibGU8c3RyaW5nPjtcbn1cbmRlY2xhcmUgY29uc3QgU3RvcmFnZVNlcmlhbGl6ZXJzOiBSZWNvcmQ8J2Jvb2xlYW4nIHwgJ29iamVjdCcgfCAnbnVtYmVyJyB8ICdhbnknIHwgJ3N0cmluZycgfCAnbWFwJyB8ICdzZXQnIHwgJ2RhdGUnLCBTZXJpYWxpemVyPGFueT4+O1xuZGVjbGFyZSBjb25zdCBjdXN0b21TdG9yYWdlRXZlbnROYW1lID0gXCJ2dWV1c2Utc3RvcmFnZVwiO1xuaW50ZXJmYWNlIFN0b3JhZ2VFdmVudExpa2Uge1xuICBzdG9yYWdlQXJlYTogU3RvcmFnZUxpa2UgfCBudWxsO1xuICBrZXk6IFN0b3JhZ2VFdmVudFsna2V5J107XG4gIG9sZFZhbHVlOiBTdG9yYWdlRXZlbnRbJ29sZFZhbHVlJ107XG4gIG5ld1ZhbHVlOiBTdG9yYWdlRXZlbnRbJ25ld1ZhbHVlJ107XG59XG5pbnRlcmZhY2UgVXNlU3RvcmFnZU9wdGlvbnM8VD4gZXh0ZW5kcyBDb25maWd1cmFibGVFdmVudEZpbHRlciwgQ29uZmlndXJhYmxlV2luZG93LCBDb25maWd1cmFibGVGbHVzaCB7XG4gIC8qKlxuICAgKiBXYXRjaCBmb3IgZGVlcCBjaGFuZ2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRlZXA/OiBib29sZWFuO1xuICAvKipcbiAgICogTGlzdGVuIHRvIHN0b3JhZ2UgY2hhbmdlcywgdXNlZnVsIGZvciBtdWx0aXBsZSB0YWJzIGFwcGxpY2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGxpc3RlblRvU3RvcmFnZUNoYW5nZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogV3JpdGUgdGhlIGRlZmF1bHQgdmFsdWUgdG8gdGhlIHN0b3JhZ2Ugd2hlbiBpdCBkb2VzIG5vdCBleGlzdFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3cml0ZURlZmF1bHRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE1lcmdlIHRoZSBkZWZhdWx0IHZhbHVlIHdpdGggdGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgc3RvcmFnZS5cbiAgICpcbiAgICogV2hlbiBzZXR0aW5nIGl0IHRvIHRydWUsIGl0IHdpbGwgcGVyZm9ybSBhICoqc2hhbGxvdyBtZXJnZSoqIGZvciBvYmplY3RzLlxuICAgKiBZb3UgY2FuIHBhc3MgYSBmdW5jdGlvbiB0byBwZXJmb3JtIGN1c3RvbSBtZXJnZSAoZS5nLiBkZWVwIG1lcmdlKSwgZm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBtZXJnZURlZmF1bHRzPzogYm9vbGVhbiB8ICgoc3RvcmFnZVZhbHVlOiBULCBkZWZhdWx0czogVCkgPT4gVCk7XG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSBzZXJpYWxpemF0aW9uXG4gICAqL1xuICBzZXJpYWxpemVyPzogU2VyaWFsaXplcjxUPjtcbiAgLyoqXG4gICAqIE9uIGVycm9yIGNhbGxiYWNrXG4gICAqXG4gICAqIERlZmF1bHQgbG9nIGVycm9yIHRvIGBjb25zb2xlLmVycm9yYFxuICAgKi9cbiAgb25FcnJvcj86IChlcnJvcjogdW5rbm93bikgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFVzZSBzaGFsbG93IHJlZiBhcyByZWZlcmVuY2VcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNoYWxsb3c/OiBib29sZWFuO1xuICAvKipcbiAgICogV2FpdCBmb3IgdGhlIGNvbXBvbmVudCB0byBiZSBtb3VudGVkIGJlZm9yZSByZWFkaW5nIHRoZSBzdG9yYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaW5pdE9uTW91bnRlZD86IGJvb2xlYW47XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN0b3JhZ2Uoa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGRlZmF1bHRzOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZSwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPHN0cmluZz4pOiBSZW1vdmFibGVSZWY8c3RyaW5nPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RvcmFnZShrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgZGVmYXVsdHM6IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbj4sIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZSwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPGJvb2xlYW4+KTogUmVtb3ZhYmxlUmVmPGJvb2xlYW4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdG9yYWdlKGtleTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBkZWZhdWx0czogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+LCBzdG9yYWdlPzogU3RvcmFnZUxpa2UsIG9wdGlvbnM/OiBVc2VTdG9yYWdlT3B0aW9uczxudW1iZXI+KTogUmVtb3ZhYmxlUmVmPG51bWJlcj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN0b3JhZ2U8VD4oa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGRlZmF1bHRzOiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBzdG9yYWdlPzogU3RvcmFnZUxpa2UsIG9wdGlvbnM/OiBVc2VTdG9yYWdlT3B0aW9uczxUPik6IFJlbW92YWJsZVJlZjxUPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RvcmFnZTxUID0gdW5rbm93bj4oa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGRlZmF1bHRzOiBNYXliZVJlZk9yR2V0dGVyPG51bGw+LCBzdG9yYWdlPzogU3RvcmFnZUxpa2UsIG9wdGlvbnM/OiBVc2VTdG9yYWdlT3B0aW9uczxUPik6IFJlbW92YWJsZVJlZjxUPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUNvbG9yTW9kZS9pbmRleC5kLnRzXG50eXBlIEJhc2ljQ29sb3JNb2RlID0gJ2xpZ2h0JyB8ICdkYXJrJztcbnR5cGUgQmFzaWNDb2xvclNjaGVtYSA9IEJhc2ljQ29sb3JNb2RlIHwgJ2F1dG8nO1xuaW50ZXJmYWNlIFVzZUNvbG9yTW9kZU9wdGlvbnM8VCBleHRlbmRzIHN0cmluZyA9IEJhc2ljQ29sb3JNb2RlPiBleHRlbmRzIFVzZVN0b3JhZ2VPcHRpb25zPFQgfCBCYXNpY0NvbG9yTW9kZT4ge1xuICAvKipcbiAgICogQ1NTIFNlbGVjdG9yIGZvciB0aGUgdGFyZ2V0IGVsZW1lbnQgYXBwbHlpbmcgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgJ2h0bWwnXG4gICAqL1xuICBzZWxlY3Rvcj86IHN0cmluZyB8IE1heWJlRWxlbWVudFJlZjtcbiAgLyoqXG4gICAqIEhUTUwgYXR0cmlidXRlIGFwcGx5aW5nIHRoZSB0YXJnZXQgZWxlbWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAnY2xhc3MnXG4gICAqL1xuICBhdHRyaWJ1dGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBjb2xvciBtb2RlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhdXRvJ1xuICAgKi9cbiAgaW5pdGlhbFZhbHVlPzogTWF5YmVSZWZPckdldHRlcjxUIHwgQmFzaWNDb2xvclNjaGVtYT47XG4gIC8qKlxuICAgKiBQcmVmaXggd2hlbiBhZGRpbmcgdmFsdWUgdG8gdGhlIGF0dHJpYnV0ZVxuICAgKi9cbiAgbW9kZXM/OiBQYXJ0aWFsPFJlY29yZDxUIHwgQmFzaWNDb2xvclNjaGVtYSwgc3RyaW5nPj47XG4gIC8qKlxuICAgKiBBIGN1c3RvbSBoYW5kbGVyIGZvciBoYW5kbGUgdGhlIHVwZGF0ZXMuXG4gICAqIFdoZW4gc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBiZWhhdmlvciB3aWxsIGJlIG92ZXJyaWRkZW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgb25DaGFuZ2VkPzogKG1vZGU6IFQgfCBCYXNpY0NvbG9yTW9kZSwgZGVmYXVsdEhhbmRsZXI6ICgobW9kZTogVCB8IEJhc2ljQ29sb3JNb2RlKSA9PiB2b2lkKSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEN1c3RvbSBzdG9yYWdlIHJlZlxuICAgKlxuICAgKiBXaGVuIHByb3ZpZGVkLCBgdXNlU3RvcmFnZWAgd2lsbCBiZSBza2lwcGVkXG4gICAqL1xuICBzdG9yYWdlUmVmPzogUmVmPFQgfCBCYXNpY0NvbG9yU2NoZW1hPjtcbiAgLyoqXG4gICAqIEtleSB0byBwZXJzaXN0IHRoZSBkYXRhIGludG8gbG9jYWxTdG9yYWdlL3Nlc3Npb25TdG9yYWdlLlxuICAgKlxuICAgKiBQYXNzIGBudWxsYCB0byBkaXNhYmxlIHBlcnNpc3RlbmNlXG4gICAqXG4gICAqIEBkZWZhdWx0ICd2dWV1c2UtY29sb3Itc2NoZW1lJ1xuICAgKi9cbiAgc3RvcmFnZUtleT86IHN0cmluZyB8IG51bGw7XG4gIC8qKlxuICAgKiBTdG9yYWdlIG9iamVjdCwgY2FuIGJlIGxvY2FsU3RvcmFnZSBvciBzZXNzaW9uU3RvcmFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZTtcbiAgLyoqXG4gICAqIEVtaXQgYGF1dG9gIG1vZGUgZnJvbSBzdGF0ZVxuICAgKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHByZWZlcnJlZCBtb2RlIHdvbid0IGJlIHRyYW5zbGF0ZWQgaW50byBgbGlnaHRgIG9yIGBkYXJrYC5cbiAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgZmFjdCB0aGF0IGBhdXRvYCBtb2RlIHdhcyBzZWxlY3RlZCBuZWVkcyB0byBiZSBrbm93bi5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgc3RvcmUudmFsdWVgIHdoZW4gYGF1dG9gIG1vZGUgbmVlZHMgdG8gYmUga25vd25cbiAgICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvY29yZS91c2VDb2xvck1vZGUvI2FkdmFuY2VkLXVzYWdlXG4gICAqL1xuICBlbWl0QXV0bz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRyYW5zaXRpb24gb24gc3dpdGNoXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wYWNvLm1lL3dyaXRpbmcvZGlzYWJsZS10aGVtZS10cmFuc2l0aW9uc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkaXNhYmxlVHJhbnNpdGlvbj86IGJvb2xlYW47XG59XG50eXBlIFVzZUNvbG9yTW9kZVJldHVybjxUIGV4dGVuZHMgc3RyaW5nID0gQmFzaWNDb2xvck1vZGU+ID0gUmVmPFQgfCBCYXNpY0NvbG9yU2NoZW1hPiAmIHtcbiAgc3RvcmU6IFJlZjxUIHwgQmFzaWNDb2xvclNjaGVtYT47XG4gIHN5c3RlbTogQ29tcHV0ZWRSZWY8QmFzaWNDb2xvck1vZGU+O1xuICBzdGF0ZTogQ29tcHV0ZWRSZWY8VCB8IEJhc2ljQ29sb3JNb2RlPjtcbn07XG4vKipcbiAqIFJlYWN0aXZlIGNvbG9yIG1vZGUgd2l0aCBhdXRvIGRhdGEgcGVyc2lzdGVuY2UuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlQ29sb3JNb2RlXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUNvbG9yTW9kZTxUIGV4dGVuZHMgc3RyaW5nID0gQmFzaWNDb2xvck1vZGU+KG9wdGlvbnM/OiBVc2VDb2xvck1vZGVPcHRpb25zPFQ+KTogVXNlQ29sb3JNb2RlUmV0dXJuPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQ29uZmlybURpYWxvZy9pbmRleC5kLnRzXG50eXBlIFVzZUNvbmZpcm1EaWFsb2dSZXZlYWxSZXN1bHQ8QywgRD4gPSB7XG4gIGRhdGE/OiBDO1xuICBpc0NhbmNlbGVkOiBmYWxzZTtcbn0gfCB7XG4gIGRhdGE/OiBEO1xuICBpc0NhbmNlbGVkOiB0cnVlO1xufTtcbmludGVyZmFjZSBVc2VDb25maXJtRGlhbG9nUmV0dXJuPFJldmVhbERhdGEsIENvbmZpcm1EYXRhLCBDYW5jZWxEYXRhPiB7XG4gIC8qKlxuICAgKiBSZXZlYWxpbmcgc3RhdGVcbiAgICovXG4gIGlzUmV2ZWFsZWQ6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogT3BlbnMgdGhlIGRpYWxvZy5cbiAgICogQ3JlYXRlIHByb21pc2UgYW5kIHJldHVybiBpdC4gVHJpZ2dlcnMgYG9uUmV2ZWFsYCBob29rLlxuICAgKi9cbiAgcmV2ZWFsOiAoZGF0YT86IFJldmVhbERhdGEpID0+IFByb21pc2U8VXNlQ29uZmlybURpYWxvZ1JldmVhbFJlc3VsdDxDb25maXJtRGF0YSwgQ2FuY2VsRGF0YT4+O1xuICAvKipcbiAgICogQ29uZmlybXMgYW5kIGNsb3NlcyB0aGUgZGlhbG9nLiBUcmlnZ2VycyBhIGNhbGxiYWNrIGluc2lkZSBgb25Db25maXJtYCBob29rLlxuICAgKiBSZXNvbHZlcyBwcm9taXNlIGZyb20gYHJldmVhbCgpYCB3aXRoIGBkYXRhYCBhbmQgYGlzQ2FuY2VsZWRgIHJlZiB3aXRoIGBmYWxzZWAgdmFsdWUuXG4gICAqIENhbiBhY2NlcHQgYW55IGRhdGEgYW5kIHRvIHBhc3MgaXQgdG8gYG9uQ29uZmlybWAgaG9vay5cbiAgICovXG4gIGNvbmZpcm06IChkYXRhPzogQ29uZmlybURhdGEpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYW5jZWxzIGFuZCBjbG9zZXMgdGhlIGRpYWxvZy4gVHJpZ2dlcnMgYSBjYWxsYmFjayBpbnNpZGUgYG9uQ2FuY2VsYCBob29rLlxuICAgKiBSZXNvbHZlcyBwcm9taXNlIGZyb20gYHJldmVhbCgpYCB3aXRoIGBkYXRhYCBhbmQgYGlzQ2FuY2VsZWRgIHJlZiB3aXRoIGB0cnVlYCB2YWx1ZS5cbiAgICogQ2FuIGFjY2VwdCBhbnkgZGF0YSBhbmQgdG8gcGFzcyBpdCB0byBgb25DYW5jZWxgIGhvb2suXG4gICAqL1xuICBjYW5jZWw6IChkYXRhPzogQ2FuY2VsRGF0YSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEV2ZW50IEhvb2sgdG8gYmUgdHJpZ2dlcmVkIHJpZ2h0IGJlZm9yZSBkaWFsb2cgY3JlYXRpbmcuXG4gICAqL1xuICBvblJldmVhbDogRXZlbnRIb29rT248UmV2ZWFsRGF0YT47XG4gIC8qKlxuICAgKiBFdmVudCBIb29rIHRvIGJlIGNhbGxlZCBvbiBgY29uZmlybSgpYC5cbiAgICogR2V0cyBkYXRhIG9iamVjdCBmcm9tIGBjb25maXJtYCBmdW5jdGlvbi5cbiAgICovXG4gIG9uQ29uZmlybTogRXZlbnRIb29rT248Q29uZmlybURhdGE+O1xuICAvKipcbiAgICogRXZlbnQgSG9vayB0byBiZSBjYWxsZWQgb24gYGNhbmNlbCgpYC5cbiAgICogR2V0cyBkYXRhIG9iamVjdCBmcm9tIGBjYW5jZWxgIGZ1bmN0aW9uLlxuICAgKi9cbiAgb25DYW5jZWw6IEV2ZW50SG9va09uPENhbmNlbERhdGE+O1xufVxuLyoqXG4gKiBIb29rcyBmb3IgY3JlYXRpbmcgY29uZmlybSBkaWFsb2dzLiBVc2VmdWwgZm9yIG1vZGFsIHdpbmRvd3MsIHBvcHVwcyBhbmQgbG9naW5zLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUNvbmZpcm1EaWFsb2cvXG4gKiBAcGFyYW0gcmV2ZWFsZWQgYGJvb2xlYW5gIGByZWZgIHRoYXQgaGFuZGxlcyBhIG1vZGFsIHdpbmRvd1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ29uZmlybURpYWxvZzxSZXZlYWxEYXRhID0gYW55LCBDb25maXJtRGF0YSA9IGFueSwgQ2FuY2VsRGF0YSA9IGFueT4ocmV2ZWFsZWQ/OiBTaGFsbG93UmVmPGJvb2xlYW4+KTogVXNlQ29uZmlybURpYWxvZ1JldHVybjxSZXZlYWxEYXRhLCBDb25maXJtRGF0YSwgQ2FuY2VsRGF0YT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VDb3VudGRvd24vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUNvdW50ZG93bk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVTY2hlZHVsZXIge1xuICAvKipcbiAgICogIEludGVydmFsIGZvciB0aGUgY291bnRkb3duIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyAxMDAwbXMuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICovXG4gIGludGVydmFsPzogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGNvdW50ZG93biByZWFjaGVzIDAuXG4gICAqL1xuICBvbkNvbXBsZXRlPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCBvbiBlYWNoIHRpY2sgb2YgdGhlIGNvdW50ZG93bi5cbiAgICovXG4gIG9uVGljaz86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBTdGFydCB0aGUgY291bnRkb3duIGltbWVkaWF0ZWx5XG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgVXNlQ291bnRkb3duUmV0dXJuIGV4dGVuZHMgUGF1c2FibGUge1xuICAvKipcbiAgICogQ3VycmVudCBjb3VudGRvd24gdmFsdWUuXG4gICAqL1xuICByZW1haW5pbmc6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgY291bnRkb3duIGFuZCByZXBlYXRzTGVmdCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy5cbiAgICovXG4gIHJlc2V0OiAoY291bnRkb3duPzogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+KSA9PiB2b2lkO1xuICAvKipcbiAgICogU3RvcHMgdGhlIGNvdW50ZG93biBhbmQgcmVzZXRzIGl0cyBzdGF0ZS5cbiAgICovXG4gIHN0b3A6ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBSZXNldCB0aGUgY291bnRkb3duIGFuZCBzdGFydCBpdCBhZ2Fpbi5cbiAgICovXG4gIHN0YXJ0OiAoY291bnRkb3duPzogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+KSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBjb3VudGRvd24gdGltZXIgaW4gc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0gaW5pdGlhbENvdW50ZG93blxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VDb3VudGRvd25cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDb3VudGRvd24oaW5pdGlhbENvdW50ZG93bjogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+LCBvcHRpb25zPzogVXNlQ291bnRkb3duT3B0aW9ucyk6IFVzZUNvdW50ZG93blJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUNzc1N1cHBvcnRzL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VDc3NTdXBwb3J0c09wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICBzc3JWYWx1ZT86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgVXNlQ3NzU3VwcG9ydHNSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7fVxuZGVjbGFyZSBmdW5jdGlvbiB1c2VDc3NTdXBwb3J0cyhwcm9wZXJ0eTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCB2YWx1ZTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBvcHRpb25zPzogVXNlQ3NzU3VwcG9ydHNPcHRpb25zKTogVXNlQ3NzU3VwcG9ydHNSZXR1cm47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUNzc1N1cHBvcnRzKGNvbmRpdGlvblRleHQ6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgb3B0aW9ucz86IFVzZUNzc1N1cHBvcnRzT3B0aW9ucyk6IFVzZUNzc1N1cHBvcnRzUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQ3NzVmFyL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VDc3NWYXJPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgaW5pdGlhbFZhbHVlPzogc3RyaW5nO1xuICAvKipcbiAgICogVXNlIE11dGF0aW9uT2JzZXJ2ZXIgdG8gbW9uaXRvciB2YXJpYWJsZSBjaGFuZ2VzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBvYnNlcnZlPzogYm9vbGVhbjtcbn1cbi8qKlxuICogTWFuaXB1bGF0ZSBDU1MgdmFyaWFibGVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUNzc1ZhclxuICogQHBhcmFtIHByb3BcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlQ3NzVmFyKHByb3A6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4sIHRhcmdldD86IE1heWJlRWxlbWVudFJlZiwgb3B0aW9ucz86IFVzZUNzc1Zhck9wdGlvbnMpOiB2dWUwLlNoYWxsb3dSZWY8c3RyaW5nIHwgdW5kZWZpbmVkLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlQ3VycmVudEVsZW1lbnQvaW5kZXguZC50c1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VDdXJyZW50RWxlbWVudDxUIGV4dGVuZHMgTWF5YmVFbGVtZW50ID0gTWF5YmVFbGVtZW50LCBSJDEgZXh0ZW5kcyBWdWVJbnN0YW5jZSA9IFZ1ZUluc3RhbmNlLCBFIGV4dGVuZHMgTWF5YmVFbGVtZW50ID0gKE1heWJlRWxlbWVudCBleHRlbmRzIFQgPyBJc0FueTxSJDFbJyRlbCddPiBleHRlbmRzIGZhbHNlID8gUiQxWyckZWwnXSA6IFQgOiBUKT4ocm9vdENvbXBvbmVudD86IE1heWJlRWxlbWVudFJlZjxSJDE+KTogX3Z1ZXVzZV9zaGFyZWQwLkNvbXB1dGVkUmVmV2l0aENvbnRyb2w8RT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VDeWNsZUxpc3QvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUN5Y2xlTGlzdE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIHN0YXRlLlxuICAgKiBBIHJlZiBjYW4gYmUgcHJvdmlkZWQgdG8gcmV1c2UuXG4gICAqL1xuICBpbml0aWFsVmFsdWU/OiBNYXliZVJlZjxUPjtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGluZGV4IHdoZW5cbiAgICovXG4gIGZhbGxiYWNrSW5kZXg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDdXN0b20gZnVuY3Rpb24gdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICovXG4gIGdldEluZGV4T2Y/OiAodmFsdWU6IFQsIGxpc3Q6IFRbXSkgPT4gbnVtYmVyO1xufVxuLyoqXG4gKiBDeWNsZSB0aHJvdWdoIGEgbGlzdCBvZiBpdGVtc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUN5Y2xlTGlzdFxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUN5Y2xlTGlzdDxUPihsaXN0OiBNYXliZVJlZk9yR2V0dGVyPFRbXT4sIG9wdGlvbnM/OiBVc2VDeWNsZUxpc3RPcHRpb25zPFQ+KTogVXNlQ3ljbGVMaXN0UmV0dXJuPFQ+O1xuaW50ZXJmYWNlIFVzZUN5Y2xlTGlzdFJldHVybjxUPiB7XG4gIHN0YXRlOiBTaGFsbG93UmVmPFQ+O1xuICBpbmRleDogV3JpdGFibGVDb21wdXRlZFJlZjxudW1iZXI+O1xuICBuZXh0OiAobj86IG51bWJlcikgPT4gVDtcbiAgcHJldjogKG4/OiBudW1iZXIpID0+IFQ7XG4gIC8qKlxuICAgKiBHbyB0byBhIHNwZWNpZmljIGluZGV4XG4gICAqL1xuICBnbzogKGk6IG51bWJlcikgPT4gVDtcbn1cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZURhcmsvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURhcmtPcHRpb25zIGV4dGVuZHMgT21pdDxVc2VDb2xvck1vZGVPcHRpb25zPEJhc2ljQ29sb3JTY2hlbWE+LCAnbW9kZXMnIHwgJ29uQ2hhbmdlZCc+IHtcbiAgLyoqXG4gICAqIFZhbHVlIGFwcGx5aW5nIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB3aGVuIGlzRGFyaz10cnVlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdkYXJrJ1xuICAgKi9cbiAgdmFsdWVEYXJrPzogc3RyaW5nO1xuICAvKipcbiAgICogVmFsdWUgYXBwbHlpbmcgdG8gdGhlIHRhcmdldCBlbGVtZW50IHdoZW4gaXNEYXJrPWZhbHNlXG4gICAqXG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICB2YWx1ZUxpZ2h0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQSBjdXN0b20gaGFuZGxlciBmb3IgaGFuZGxlIHRoZSB1cGRhdGVzLlxuICAgKiBXaGVuIHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2lsbCBiZSBvdmVycmlkZGVuLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIG9uQ2hhbmdlZD86IChpc0Rhcms6IGJvb2xlYW4sIGRlZmF1bHRIYW5kbGVyOiAoKG1vZGU6IEJhc2ljQ29sb3JTY2hlbWEpID0+IHZvaWQpLCBtb2RlOiBCYXNpY0NvbG9yU2NoZW1hKSA9PiB2b2lkO1xufVxudHlwZSBVc2VEYXJrUmV0dXJuID0gV3JpdGFibGVDb21wdXRlZFJlZjxib29sZWFuPjtcbi8qKlxuICogUmVhY3RpdmUgZGFyayBtb2RlIHdpdGggYXV0byBkYXRhIHBlcnNpc3RlbmNlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZURhcmtcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRGFyayhvcHRpb25zPzogVXNlRGFya09wdGlvbnMpOiBVc2VEYXJrUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTWFudWFsUmVmSGlzdG9yeS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlUmVmSGlzdG9yeVJlY29yZDxUPiB7XG4gIHNuYXBzaG90OiBUO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cbmludGVyZmFjZSBVc2VNYW51YWxSZWZIaXN0b3J5T3B0aW9uczxSYXcsIFNlcmlhbGl6ZWQgPSBSYXc+IHtcbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGhpc3RvcnkgdG8gYmUga2VwdC4gRGVmYXVsdCB0byB1bmxpbWl0ZWQuXG4gICAqL1xuICBjYXBhY2l0eT86IG51bWJlcjtcbiAgLyoqXG4gICAqIENsb25lIHdoZW4gdGFraW5nIGEgc25hcHNob3QsIHNob3J0Y3V0IGZvciBkdW1wOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkuXG4gICAqIERlZmF1bHQgdG8gZmFsc2VcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNsb25lPzogYm9vbGVhbiB8IENsb25lRm48UmF3PjtcbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSBkYXRhIGludG8gdGhlIGhpc3RvcnlcbiAgICovXG4gIGR1bXA/OiAodjogUmF3KSA9PiBTZXJpYWxpemVkO1xuICAvKipcbiAgICogRGVzZXJpYWxpemUgZGF0YSBmcm9tIHRoZSBoaXN0b3J5XG4gICAqL1xuICBwYXJzZT86ICh2OiBTZXJpYWxpemVkKSA9PiBSYXc7XG4gIC8qKlxuICAgKiBzZXQgZGF0YSBzb3VyY2VcbiAgICovXG4gIHNldFNvdXJjZT86IChzb3VyY2U6IFJlZjxSYXc+LCB2OiBSYXcpID0+IHZvaWQ7XG59XG5pbnRlcmZhY2UgVXNlTWFudWFsUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQ+IHtcbiAgLyoqXG4gICAqIEJ5cGFzc2VkIHRyYWNraW5nIHJlZiBmcm9tIHRoZSBhcmd1bWVudFxuICAgKi9cbiAgc291cmNlOiBSZWY8UmF3PjtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGhpc3RvcnkgcmVjb3JkcyBmb3IgdW5kbywgbmV3ZXN0IGNvbWVzIHRvIGZpcnN0XG4gICAqL1xuICBoaXN0b3J5OiBSZWY8VXNlUmVmSGlzdG9yeVJlY29yZDxTZXJpYWxpemVkPltdPjtcbiAgLyoqXG4gICAqIExhc3QgaGlzdG9yeSBwb2ludCwgc291cmNlIGNhbiBiZSBkaWZmZXJlbnQgaWYgcGF1c2VkXG4gICAqL1xuICBsYXN0OiBSZWY8VXNlUmVmSGlzdG9yeVJlY29yZDxTZXJpYWxpemVkPj47XG4gIC8qKlxuICAgKiBTYW1lIGFzIHtAbGluayBVc2VNYW51YWxSZWZIaXN0b3J5UmV0dXJuLmhpc3RvcnkgfCBoaXN0b3J5fVxuICAgKi9cbiAgdW5kb1N0YWNrOiBSZWY8VXNlUmVmSGlzdG9yeVJlY29yZDxTZXJpYWxpemVkPltdPjtcbiAgLyoqXG4gICAqIFJlY29yZHMgYXJyYXkgZm9yIHJlZG9cbiAgICovXG4gIHJlZG9TdGFjazogUmVmPFVzZVJlZkhpc3RvcnlSZWNvcmQ8U2VyaWFsaXplZD5bXT47XG4gIC8qKlxuICAgKiBBIHJlZiByZXByZXNlbnRpbmcgaWYgdW5kbyBpcyBwb3NzaWJsZSAobm9uIGVtcHR5IHVuZG9TdGFjaylcbiAgICovXG4gIGNhblVuZG86IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogQSByZWYgcmVwcmVzZW50aW5nIGlmIHJlZG8gaXMgcG9zc2libGUgKG5vbiBlbXB0eSByZWRvU3RhY2spXG4gICAqL1xuICBjYW5SZWRvOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgLyoqXG4gICAqIFVuZG8gY2hhbmdlc1xuICAgKi9cbiAgdW5kbzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlZG8gY2hhbmdlc1xuICAgKi9cbiAgcmVkbzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENsZWFyIGFsbCB0aGUgaGlzdG9yeVxuICAgKi9cbiAgY2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgaGlzdG9yeSByZWNvcmRcbiAgICovXG4gIGNvbW1pdDogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlc2V0IHJlZidzIHZhbHVlIHdpdGggbGF0ZXN0IGhpc3RvcnlcbiAgICovXG4gIHJlc2V0OiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBUcmFjayB0aGUgY2hhbmdlIGhpc3Rvcnkgb2YgYSByZWYsIGFsc28gcHJvdmlkZXMgdW5kbyBhbmQgcmVkbyBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZU1hbnVhbFJlZkhpc3RvcnlcbiAqIEBwYXJhbSBzb3VyY2VcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlTWFudWFsUmVmSGlzdG9yeTxSYXcsIFNlcmlhbGl6ZWQgPSBSYXc+KHNvdXJjZTogUmVmPFJhdz4sIG9wdGlvbnM/OiBVc2VNYW51YWxSZWZIaXN0b3J5T3B0aW9uczxSYXcsIFNlcmlhbGl6ZWQ+KTogVXNlTWFudWFsUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUmVmSGlzdG9yeS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlUmVmSGlzdG9yeU9wdGlvbnM8UmF3LCBTZXJpYWxpemVkID0gUmF3PiBleHRlbmRzIENvbmZpZ3VyYWJsZUV2ZW50RmlsdGVyLCBDb25maWd1cmFibGVGbHVzaCB7XG4gIC8qKlxuICAgKiBXYXRjaCBmb3IgZGVlcCBjaGFuZ2VzLCBkZWZhdWx0IHRvIGZhbHNlXG4gICAqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGl0IHdpbGwgYWxzbyBjcmVhdGUgY2xvbmVzIGZvciB2YWx1ZXMgc3RvcmUgaW4gdGhlIGhpc3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlZXA/OiBib29sZWFuO1xuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSB0byBiZSBrZXB0LiBEZWZhdWx0IHRvIHVubGltaXRlZC5cbiAgICovXG4gIGNhcGFjaXR5PzogbnVtYmVyO1xuICAvKipcbiAgICogQ2xvbmUgd2hlbiB0YWtpbmcgYSBzbmFwc2hvdCwgc2hvcnRjdXQgZm9yIGR1bXA6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKS5cbiAgICogRGVmYXVsdCB0byBmYWxzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2xvbmU/OiBib29sZWFuIHwgQ2xvbmVGbjxSYXc+O1xuICAvKipcbiAgICogU2VyaWFsaXplIGRhdGEgaW50byB0aGUgaGlzdG9yeVxuICAgKi9cbiAgZHVtcD86ICh2OiBSYXcpID0+IFNlcmlhbGl6ZWQ7XG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBkYXRhIGZyb20gdGhlIGhpc3RvcnlcbiAgICovXG4gIHBhcnNlPzogKHY6IFNlcmlhbGl6ZWQpID0+IFJhdztcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0aGUgY29tbWl0IHNob3VsZCBwcm9jZWVkXG4gICAqIEBwYXJhbSBvbGRWYWx1ZSBQcmV2aW91cyB2YWx1ZVxuICAgKiBAcGFyYW0gbmV3VmFsdWUgTmV3IHZhbHVlXG4gICAqIEByZXR1cm5zIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBjb21taXQgc2hvdWxkIHByb2NlZWRcbiAgICovXG4gIHNob3VsZENvbW1pdD86IChvbGRWYWx1ZTogUmF3IHwgdW5kZWZpbmVkLCBuZXdWYWx1ZTogUmF3KSA9PiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZVJlZkhpc3RvcnlSZXR1cm48UmF3LCBTZXJpYWxpemVkPiBleHRlbmRzIFVzZU1hbnVhbFJlZkhpc3RvcnlSZXR1cm48UmF3LCBTZXJpYWxpemVkPiB7XG4gIC8qKlxuICAgKiBBIHJlZiByZXByZXNlbnRpbmcgaWYgdGhlIHRyYWNraW5nIGlzIGVuYWJsZWRcbiAgICovXG4gIGlzVHJhY2tpbmc6IFJlZjxib29sZWFuPjtcbiAgLyoqXG4gICAqIFBhdXNlIGNoYW5nZSB0cmFja2luZ1xuICAgKi9cbiAgcGF1c2U6ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBSZXN1bWUgY2hhbmdlIHRyYWNraW5nXG4gICAqXG4gICAqIEBwYXJhbSBbY29tbWl0XSBpZiB0cnVlLCBhIGhpc3RvcnkgcmVjb3JkIHdpbGwgYmUgY3JlYXRlIGFmdGVyIHJlc3VtaW5nXG4gICAqL1xuICByZXN1bWU6IChjb21taXQ/OiBib29sZWFuKSA9PiB2b2lkO1xuICAvKipcbiAgICogQSBzdWdhciBmb3IgYXV0byBwYXVzZSBhbmQgYXV0byByZXN1bWluZyB3aXRoaW4gYSBmdW5jdGlvbiBzY29wZVxuICAgKlxuICAgKiBAcGFyYW0gZm5cbiAgICovXG4gIGJhdGNoOiAoZm46IChjYW5jZWw6IEZuKSA9PiB2b2lkKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2xlYXIgdGhlIGRhdGEgYW5kIHN0b3AgdGhlIHdhdGNoXG4gICAqL1xuICBkaXNwb3NlOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBUcmFjayB0aGUgY2hhbmdlIGhpc3Rvcnkgb2YgYSByZWYsIGFsc28gcHJvdmlkZXMgdW5kbyBhbmQgcmVkbyBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVJlZkhpc3RvcnlcbiAqIEBwYXJhbSBzb3VyY2VcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUmVmSGlzdG9yeTxSYXcsIFNlcmlhbGl6ZWQgPSBSYXc+KHNvdXJjZTogUmVmPFJhdz4sIG9wdGlvbnM/OiBVc2VSZWZIaXN0b3J5T3B0aW9uczxSYXcsIFNlcmlhbGl6ZWQ+KTogVXNlUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRGVib3VuY2VkUmVmSGlzdG9yeS9pbmRleC5kLnRzXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgW3VzZVJlZkhpc3RvcnldKGh0dHBzOi8vdnVldXNlLm9yZy91c2VSZWZIaXN0b3J5KSB3aXRoIGRlYm91bmNlIGZpbHRlci5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VEZWJvdW5jZWRSZWZIaXN0b3J5XG4gKiBAcGFyYW0gc291cmNlXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZURlYm91bmNlZFJlZkhpc3Rvcnk8UmF3LCBTZXJpYWxpemVkID0gUmF3Pihzb3VyY2U6IFJlZjxSYXc+LCBvcHRpb25zPzogT21pdDxVc2VSZWZIaXN0b3J5T3B0aW9uczxSYXcsIFNlcmlhbGl6ZWQ+LCAnZXZlbnRGaWx0ZXInPiAmIHtcbiAgZGVib3VuY2U/OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj47XG59KTogVXNlUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRGV2aWNlTW90aW9uL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VEZXZpY2VNb3Rpb25PcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93LCBDb25maWd1cmFibGVFdmVudEZpbHRlciB7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IGZvciBwZXJtaXNzaW9ucyBpbW1lZGlhdGVseSBpZiBpdCdzIG5vdCBncmFudGVkLFxuICAgKiBvdGhlcndpc2UgbGFiZWwgYW5kIGRldmljZUlkcyBjb3VsZCBiZSBlbXB0eVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWVzdFBlcm1pc3Npb25zPzogYm9vbGVhbjtcbn1cbi8qKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIFVzZURldmljZU1vdGlvbk9wdGlvbnN9IGluc3RlYWQgKi9cbnR5cGUgRGV2aWNlTW90aW9uT3B0aW9ucyA9IFVzZURldmljZU1vdGlvbk9wdGlvbnM7XG5pbnRlcmZhY2UgVXNlRGV2aWNlTW90aW9uUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBhY2NlbGVyYXRpb246IFJlZjxEZXZpY2VNb3Rpb25FdmVudEFjY2VsZXJhdGlvbiB8IG51bGw+O1xuICBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5OiBSZWY8RGV2aWNlTW90aW9uRXZlbnRBY2NlbGVyYXRpb24gfCBudWxsPjtcbiAgcm90YXRpb25SYXRlOiBSZWY8RGV2aWNlTW90aW9uRXZlbnRSb3RhdGlvblJhdGUgfCBudWxsPjtcbiAgaW50ZXJ2YWw6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgcmVxdWlyZVBlcm1pc3Npb25zOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgZW5zdXJlUGVybWlzc2lvbnM6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHBlcm1pc3Npb25HcmFudGVkOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBEZXZpY2VNb3Rpb25FdmVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VEZXZpY2VNb3Rpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRGV2aWNlTW90aW9uKG9wdGlvbnM/OiBVc2VEZXZpY2VNb3Rpb25PcHRpb25zKTogVXNlRGV2aWNlTW90aW9uUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRGV2aWNlT3JpZW50YXRpb24vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURldmljZU9yaWVudGF0aW9uT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7fVxuaW50ZXJmYWNlIFVzZURldmljZU9yaWVudGF0aW9uUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBpc0Fic29sdXRlOiBTaGFsbG93UmVmPGJvb2xlYW4sIGJvb2xlYW4+O1xuICBhbHBoYTogUmVmPG51bWJlciB8IG51bGwsIG51bWJlciB8IG51bGw+O1xuICBiZXRhOiBSZWY8bnVtYmVyIHwgbnVsbCwgbnVtYmVyIHwgbnVsbD47XG4gIGdhbW1hOiBSZWY8bnVtYmVyIHwgbnVsbCwgbnVtYmVyIHwgbnVsbD47XG59XG4vKipcbiAqIFJlYWN0aXZlIERldmljZU9yaWVudGF0aW9uRXZlbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRGV2aWNlT3JpZW50YXRpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VEZXZpY2VPcmllbnRhdGlvbihvcHRpb25zPzogVXNlRGV2aWNlT3JpZW50YXRpb25PcHRpb25zKTogVXNlRGV2aWNlT3JpZW50YXRpb25SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VEZXZpY2VQaXhlbFJhdGlvL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VEZXZpY2VQaXhlbFJhdGlvT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7fVxuaW50ZXJmYWNlIFVzZURldmljZVBpeGVsUmF0aW9SZXR1cm4ge1xuICBwaXhlbFJhdGlvOiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHN0b3A6IFdhdGNoU3RvcEhhbmRsZTtcbn1cbi8qKlxuICogUmVhY3RpdmVseSB0cmFjayBgd2luZG93LmRldmljZVBpeGVsUmF0aW9gLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZURldmljZVBpeGVsUmF0aW9cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZURldmljZVBpeGVsUmF0aW8ob3B0aW9ucz86IFVzZURldmljZVBpeGVsUmF0aW9PcHRpb25zKTogVXNlRGV2aWNlUGl4ZWxSYXRpb1JldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZURldmljZXNMaXN0L2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VEZXZpY2VzTGlzdE9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICBvblVwZGF0ZWQ/OiAoZGV2aWNlczogTWVkaWFEZXZpY2VJbmZvW10pID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IGZvciBwZXJtaXNzaW9ucyBpbW1lZGlhdGVseSBpZiBpdCdzIG5vdCBncmFudGVkLFxuICAgKiBvdGhlcndpc2UgbGFiZWwgYW5kIGRldmljZUlkcyBjb3VsZCBiZSBlbXB0eVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWVzdFBlcm1pc3Npb25zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJlcXVlc3QgZm9yIHR5cGVzIG9mIG1lZGlhIHBlcm1pc3Npb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IHsgYXVkaW86IHRydWUsIHZpZGVvOiB0cnVlIH1cbiAgICovXG4gIGNvbnN0cmFpbnRzPzogTWVkaWFTdHJlYW1Db25zdHJhaW50cztcbn1cbmludGVyZmFjZSBVc2VEZXZpY2VzTGlzdFJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgLyoqXG4gICAqIEFsbCBkZXZpY2VzXG4gICAqL1xuICBkZXZpY2VzOiBSZWY8TWVkaWFEZXZpY2VJbmZvW10+O1xuICB2aWRlb0lucHV0czogQ29tcHV0ZWRSZWY8TWVkaWFEZXZpY2VJbmZvW10+O1xuICBhdWRpb0lucHV0czogQ29tcHV0ZWRSZWY8TWVkaWFEZXZpY2VJbmZvW10+O1xuICBhdWRpb091dHB1dHM6IENvbXB1dGVkUmVmPE1lZGlhRGV2aWNlSW5mb1tdPjtcbiAgcGVybWlzc2lvbkdyYW50ZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIGVuc3VyZVBlcm1pc3Npb25zOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBgZW51bWVyYXRlRGV2aWNlc2AgbGlzdGluZyBhdmFpbGFibGUgaW5wdXQvb3V0cHV0IGRldmljZXNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VEZXZpY2VzTGlzdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VEZXZpY2VzTGlzdChvcHRpb25zPzogVXNlRGV2aWNlc0xpc3RPcHRpb25zKTogVXNlRGV2aWNlc0xpc3RSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VEaXNwbGF5TWVkaWEvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURpc3BsYXlNZWRpYU9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVOYXZpZ2F0b3Ige1xuICAvKipcbiAgICogSWYgdGhlIHN0cmVhbSBpcyBlbmFibGVkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBlbmFibGVkPzogTWF5YmVSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJZiB0aGUgc3RyZWFtIHZpZGVvIG1lZGlhIGNvbnN0cmFpbnRzXG4gICAqL1xuICB2aWRlbz86IGJvb2xlYW4gfCBNZWRpYVRyYWNrQ29uc3RyYWludHMgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiB0aGUgc3RyZWFtIGF1ZGlvIG1lZGlhIGNvbnN0cmFpbnRzXG4gICAqL1xuICBhdWRpbz86IGJvb2xlYW4gfCBNZWRpYVRyYWNrQ29uc3RyYWludHMgfCB1bmRlZmluZWQ7XG59XG5pbnRlcmZhY2UgVXNlRGlzcGxheU1lZGlhUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBzdHJlYW06IFNoYWxsb3dSZWY8TWVkaWFTdHJlYW0gfCB1bmRlZmluZWQ+O1xuICBzdGFydDogKCkgPT4gUHJvbWlzZTxNZWRpYVN0cmVhbSB8IHVuZGVmaW5lZD47XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG4gIGVuYWJsZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG59XG4vKipcbiAqIFJlYWN0aXZlIGBtZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhYCBzdHJlYW1pbmdcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VEaXNwbGF5TWVkaWFcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRGlzcGxheU1lZGlhKG9wdGlvbnM/OiBVc2VEaXNwbGF5TWVkaWFPcHRpb25zKTogVXNlRGlzcGxheU1lZGlhUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRG9jdW1lbnRWaXNpYmlsaXR5L2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VEb2N1bWVudFZpc2liaWxpdHlPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlRG9jdW1lbnQge31cbnR5cGUgVXNlRG9jdW1lbnRWaXNpYmlsaXR5UmV0dXJuID0gU2hhbGxvd1JlZjxEb2N1bWVudFZpc2liaWxpdHlTdGF0ZT47XG4vKipcbiAqIFJlYWN0aXZlbHkgdHJhY2sgYGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZWAuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRG9jdW1lbnRWaXNpYmlsaXR5XG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VEb2N1bWVudFZpc2liaWxpdHkob3B0aW9ucz86IFVzZURvY3VtZW50VmlzaWJpbGl0eU9wdGlvbnMpOiBVc2VEb2N1bWVudFZpc2liaWxpdHlSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VEcmFnZ2FibGUvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZURyYWdnYWJsZU9wdGlvbnMge1xuICAvKipcbiAgICogT25seSBzdGFydCB0aGUgZHJhZ2dpbmcgd2hlbiBjbGljayBvbiB0aGUgZWxlbWVudCBkaXJlY3RseVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZXhhY3Q/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4+O1xuICAvKipcbiAgICogUHJldmVudCBldmVudHMgZGVmYXVsdHNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByZXZlbnREZWZhdWx0PzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuPjtcbiAgLyoqXG4gICAqIFByZXZlbnQgZXZlbnRzIHByb3BhZ2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzdG9wUHJvcGFnYXRpb24/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4+O1xuICAvKipcbiAgICogV2hldGhlciBkaXNwYXRjaCBldmVudHMgaW4gY2FwdHVyaW5nIHBoYXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGNhcHR1cmU/OiBib29sZWFuO1xuICAvKipcbiAgICogRWxlbWVudCB0byBhdHRhY2ggYHBvaW50ZXJtb3ZlYCBhbmQgYHBvaW50ZXJ1cGAgZXZlbnRzIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCB3aW5kb3dcbiAgICovXG4gIGRyYWdnaW5nRWxlbWVudD86IE1heWJlUmVmT3JHZXR0ZXI8SFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHwgV2luZG93IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgLyoqXG4gICAqIEVsZW1lbnQgZm9yIGNhbGN1bGF0aW5nIGJvdW5kcyAoSWYgbm90IHNldCwgaXQgd2lsbCB1c2UgdGhlIGV2ZW50J3MgdGFyZ2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBjb250YWluZXJFbGVtZW50PzogTWF5YmVSZWZPckdldHRlcjxIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgLyoqXG4gICAqIEhhbmRsZSB0aGF0IHRyaWdnZXJzIHRoZSBkcmFnIGV2ZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IHRhcmdldFxuICAgKi9cbiAgaGFuZGxlPzogTWF5YmVSZWZPckdldHRlcjxIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgLyoqXG4gICAqIFBvaW50ZXIgdHlwZXMgdGhhdCBsaXN0ZW4gdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFsnbW91c2UnLCAndG91Y2gnLCAncGVuJ11cbiAgICovXG4gIHBvaW50ZXJUeXBlcz86IFBvaW50ZXJUeXBlW107XG4gIC8qKlxuICAgKiBJbml0aWFsIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7IHg6IDAsIHk6IDAgfVxuICAgKi9cbiAgaW5pdGlhbFZhbHVlPzogTWF5YmVSZWZPckdldHRlcjxQb3NpdGlvbj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIHRoZSBkcmFnZ2luZyBzdGFydHMuIFJldHVybiBgZmFsc2VgIHRvIHByZXZlbnQgZHJhZ2dpbmcuXG4gICAqL1xuICBvblN0YXJ0PzogKHBvc2l0aW9uOiBQb3NpdGlvbiwgZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZCB8IGZhbHNlO1xuICAvKipcbiAgICogQ2FsbGJhY2sgZHVyaW5nIGRyYWdnaW5nLlxuICAgKi9cbiAgb25Nb3ZlPzogKHBvc2l0aW9uOiBQb3NpdGlvbiwgZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoZW4gZHJhZ2dpbmcgZW5kLlxuICAgKi9cbiAgb25FbmQ/OiAocG9zaXRpb246IFBvc2l0aW9uLCBldmVudDogUG9pbnRlckV2ZW50KSA9PiB2b2lkO1xuICAvKipcbiAgICogQXhpcyB0byBkcmFnIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYm90aCdcbiAgICovXG4gIGF4aXM/OiAneCcgfCAneScgfCAnYm90aCc7XG4gIC8qKlxuICAgKiBEaXNhYmxlZCBkcmFnIGFuZCBkcm9wLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4+O1xuICAvKipcbiAgICogTW91c2UgYnV0dG9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIHRyaWdnZXIgZHJhZyBldmVudHMuXG4gICAqXG4gICAqIC0gYDBgOiBNYWluIGJ1dHRvbiwgdXN1YWxseSB0aGUgbGVmdCBidXR0b24gb3IgdGhlIHVuLWluaXRpYWxpemVkIHN0YXRlXG4gICAqIC0gYDFgOiBBdXhpbGlhcnkgYnV0dG9uLCB1c3VhbGx5IHRoZSB3aGVlbCBidXR0b24gb3IgdGhlIG1pZGRsZSBidXR0b24gKGlmIHByZXNlbnQpXG4gICAqIC0gYDJgOiBTZWNvbmRhcnkgYnV0dG9uLCB1c3VhbGx5IHRoZSByaWdodCBidXR0b25cbiAgICogLSBgM2A6IEZvdXJ0aCBidXR0b24sIHR5cGljYWxseSB0aGUgQnJvd3NlciBCYWNrIGJ1dHRvblxuICAgKiAtIGA0YDogRmlmdGggYnV0dG9uLCB0eXBpY2FsbHkgdGhlIEJyb3dzZXIgRm9yd2FyZCBidXR0b25cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTW91c2VFdmVudC9idXR0b24jdmFsdWVcbiAgICogQGRlZmF1bHQgWzBdXG4gICAqL1xuICBidXR0b25zPzogTWF5YmVSZWZPckdldHRlcjxudW1iZXJbXT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlc3RyaWN0IGRyYWdnaW5nIHdpdGhpbiB0aGUgdmlzaWJsZSBhcmVhIG9mIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIElmIGVuYWJsZWQsIHRoZSBkcmFnZ2FibGUgZWxlbWVudCB3aWxsIG5vdCBsZWF2ZSB0aGUgdmlzaWJsZSBhcmVhIG9mIGl0cyBjb250YWluZXIsXG4gICAqIGVuc3VyaW5nIGl0IHJlbWFpbnMgd2l0aGluIHRoZSB2aWV3cG9ydCBvZiB0aGUgY29udGFpbmVyIGR1cmluZyB0aGUgZHJhZy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlc3RyaWN0SW5WaWV3PzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIGF1dG8tc2Nyb2xsIHdoZW4gZHJhZ2dpbmcgbmVhciB0aGUgZWRnZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhdXRvU2Nyb2xsPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuIHwge1xuICAgIC8qKlxuICAgICAqIFNwZWVkIG9mIGF1dG8tc2Nyb2xsLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgMlxuICAgICAqL1xuICAgIHNwZWVkPzogTWF5YmVSZWZPckdldHRlcjxudW1iZXIgfCBQb3NpdGlvbj47XG4gICAgLyoqXG4gICAgICogTWFyZ2luIGZyb20gdGhlIGVkZ2UgdG8gdHJpZ2dlciBhdXRvLXNjcm9sbC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDMwXG4gICAgICovXG4gICAgbWFyZ2luPzogTWF5YmVSZWZPckdldHRlcjxudW1iZXIgfCBQb3NpdGlvbj47XG4gICAgLyoqXG4gICAgICogRGlyZWN0aW9uIG9mIGF1dG8tc2Nyb2xsLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ2JvdGgnXG4gICAgICovXG4gICAgZGlyZWN0aW9uPzogJ3gnIHwgJ3knIHwgJ2JvdGgnO1xuICB9Pjtcbn1cbmludGVyZmFjZSBVc2VEcmFnZ2FibGVSZXR1cm4ge1xuICB4OiBSZWY8bnVtYmVyPjtcbiAgeTogUmVmPG51bWJlcj47XG4gIHBvc2l0aW9uOiBSZWY8UG9zaXRpb24+O1xuICBpc0RyYWdnaW5nOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgc3R5bGU6IENvbXB1dGVkUmVmPHN0cmluZz47XG59XG4vKipcbiAqIE1ha2UgZWxlbWVudHMgZHJhZ2dhYmxlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZURyYWdnYWJsZVxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VEcmFnZ2FibGUodGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlRHJhZ2dhYmxlT3B0aW9ucyk6IFVzZURyYWdnYWJsZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZURyb3Bab25lL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VEcm9wWm9uZVJldHVybiB7XG4gIGZpbGVzOiBTaGFsbG93UmVmPEZpbGVbXSB8IG51bGw+O1xuICBpc092ZXJEcm9wWm9uZTogU2hhbGxvd1JlZjxib29sZWFuPjtcbn1cbmludGVyZmFjZSBVc2VEcm9wWm9uZU9wdGlvbnMge1xuICAvKipcbiAgICogQWxsb3dlZCBkYXRhIHR5cGVzLCBpZiBub3Qgc2V0LCBhbGwgZGF0YSB0eXBlcyBhcmUgYWxsb3dlZC5cbiAgICogQWxzbyBjYW4gYmUgYSBmdW5jdGlvbiB0byBjaGVjayB0aGUgZGF0YSB0eXBlcy5cbiAgICovXG4gIGRhdGFUeXBlcz86IE1heWJlUmVmPHJlYWRvbmx5IHN0cmluZ1tdPiB8ICgodHlwZXM6IHJlYWRvbmx5IHN0cmluZ1tdKSA9PiBib29sZWFuKTtcbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gZGF0YVR5cGVzLCBidXQgZXhwb3NlcyB0aGUgRGF0YVRyYW5zZmVySXRlbUxpc3QgZm9yIGN1c3RvbSB2YWxpZGF0aW9uLlxuICAgKiBJZiBwcm92aWRlZCwgdGhpcyBmdW5jdGlvbiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZGF0YVR5cGVzLlxuICAgKi9cbiAgY2hlY2tWYWxpZGl0eT86IChpdGVtczogRGF0YVRyYW5zZmVySXRlbUxpc3QpID0+IGJvb2xlYW47XG4gIG9uRHJvcD86IChmaWxlczogRmlsZVtdIHwgbnVsbCwgZXZlbnQ6IERyYWdFdmVudCkgPT4gdm9pZDtcbiAgb25FbnRlcj86IChmaWxlczogRmlsZVtdIHwgbnVsbCwgZXZlbnQ6IERyYWdFdmVudCkgPT4gdm9pZDtcbiAgb25MZWF2ZT86IChmaWxlczogRmlsZVtdIHwgbnVsbCwgZXZlbnQ6IERyYWdFdmVudCkgPT4gdm9pZDtcbiAgb25PdmVyPzogKGZpbGVzOiBGaWxlW10gfCBudWxsLCBldmVudDogRHJhZ0V2ZW50KSA9PiB2b2lkO1xuICAvKipcbiAgICogQWxsb3cgbXVsdGlwbGUgZmlsZXMgdG8gYmUgZHJvcHBlZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByZXZlbnQgZGVmYXVsdCBiZWhhdmlvciBmb3IgdW5oYW5kbGVkIGV2ZW50cy4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBwcmV2ZW50RGVmYXVsdEZvclVuaGFuZGxlZD86IGJvb2xlYW47XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZURyb3Bab25lKHRhcmdldDogTWF5YmVSZWZPckdldHRlcjxIVE1MRWxlbWVudCB8IERvY3VtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VEcm9wWm9uZU9wdGlvbnMgfCBVc2VEcm9wWm9uZU9wdGlvbnNbJ29uRHJvcCddKTogVXNlRHJvcFpvbmVSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VFbGVtZW50Qm91bmRpbmcvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUVsZW1lbnRCb3VuZGluZ09wdGlvbnMge1xuICAvKipcbiAgICogUmVzZXQgdmFsdWVzIHRvIDAgb24gY29tcG9uZW50IHVubW91bnRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZXNldD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gd2luZG93IHJlc2l6ZSBldmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3aW5kb3dSZXNpemU/OiBib29sZWFuO1xuICAvKipcbiAgICogTGlzdGVuIHRvIHdpbmRvdyBzY3JvbGwgZXZlbnRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgd2luZG93U2Nyb2xsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEltbWVkaWF0ZWx5IGNhbGwgdXBkYXRlIG9uIGNvbXBvbmVudCBtb3VudGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaW1pbmcgdG8gcmVjYWxjdWxhdGUgdGhlIGJvdW5kaW5nIGJveFxuICAgKlxuICAgKiBTZXR0aW5nIHRvIGBuZXh0LWZyYW1lYCBjYW4gYmUgdXNlZnVsIHdoZW4gdXNpbmcgdGhpcyB0b2dldGhlciB3aXRoIHNvbWV0aGluZyBsaWtlIHtAbGluayB1c2VCcmVha3BvaW50c31cbiAgICogYW5kIHRoZXJlZm9yZSB0aGUgbGF5b3V0ICh3aGljaCBpbmZsdWVuY2VzIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIG9ic2VydmVkIGVsZW1lbnQpIGlzIG5vdCB1cGRhdGVkIG9uIHRoZSBjdXJyZW50IHRpY2suXG4gICAqXG4gICAqIEBkZWZhdWx0ICdzeW5jJ1xuICAgKi9cbiAgdXBkYXRlVGltaW5nPzogJ3N5bmMnIHwgJ25leHQtZnJhbWUnO1xufVxuaW50ZXJmYWNlIFVzZUVsZW1lbnRCb3VuZGluZ1JldHVybiB7XG4gIGhlaWdodDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBib3R0b206IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgbGVmdDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICByaWdodDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICB0b3A6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgd2lkdGg6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgeDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICB5OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHVwZGF0ZTogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogUmVhY3RpdmUgYm91bmRpbmcgYm94IG9mIGFuIEhUTUwgZWxlbWVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VFbGVtZW50Qm91bmRpbmdcbiAqIEBwYXJhbSB0YXJnZXRcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFbGVtZW50Qm91bmRpbmcodGFyZ2V0OiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZiwgb3B0aW9ucz86IFVzZUVsZW1lbnRCb3VuZGluZ09wdGlvbnMpOiBVc2VFbGVtZW50Qm91bmRpbmdSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VFbGVtZW50QnlQb2ludC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRWxlbWVudEJ5UG9pbnRPcHRpb25zPE11bHRpcGxlIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiBleHRlbmRzIENvbmZpZ3VyYWJsZURvY3VtZW50LCBDb25maWd1cmFibGVTY2hlZHVsZXIge1xuICB4OiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj47XG4gIHk6IE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyPjtcbiAgbXVsdGlwbGU/OiBNYXliZVJlZk9yR2V0dGVyPE11bHRpcGxlPjtcbiAgLyoqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWQgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWQgKi9cbiAgaW50ZXJ2YWw/OiAncmVxdWVzdEFuaW1hdGlvbkZyYW1lJyB8IG51bWJlcjtcbn1cbmludGVyZmFjZSBVc2VFbGVtZW50QnlQb2ludFJldHVybjxNdWx0aXBsZSBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4gZXh0ZW5kcyBTdXBwb3J0YWJsZSwgUGF1c2FibGUge1xuICBlbGVtZW50OiBTaGFsbG93UmVmPE11bHRpcGxlIGV4dGVuZHMgdHJ1ZSA/IEhUTUxFbGVtZW50W10gOiBIVE1MRWxlbWVudCB8IG51bGw+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBlbGVtZW50IGJ5IHBvaW50LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUVsZW1lbnRCeVBvaW50XG4gKiBAcGFyYW0gb3B0aW9ucyAtIFVzZUVsZW1lbnRCeVBvaW50T3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUVsZW1lbnRCeVBvaW50PE0gZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+KG9wdGlvbnM6IFVzZUVsZW1lbnRCeVBvaW50T3B0aW9uczxNPik6IFVzZUVsZW1lbnRCeVBvaW50UmV0dXJuPE0+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRWxlbWVudEhvdmVyL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VFbGVtZW50SG92ZXJPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHtcbiAgZGVsYXlFbnRlcj86IG51bWJlcjtcbiAgZGVsYXlMZWF2ZT86IG51bWJlcjtcbiAgdHJpZ2dlck9uUmVtb3ZhbD86IGJvb2xlYW47XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUVsZW1lbnRIb3ZlcihlbDogTWF5YmVSZWZPckdldHRlcjxFdmVudFRhcmdldCB8IG51bGwgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlRWxlbWVudEhvdmVyT3B0aW9ucyk6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VSZXNpemVPYnNlcnZlci9pbmRleC5kLnRzXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgaW50ZXJmYWNlIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIERPTSBsaWIuXG4gKiBVc2UgdGhlIGdsb2JhbCB7QGxpbmsgZ2xvYmFsVGhpcy5SZXNpemVPYnNlcnZlclNpemV9IGluc3RlYWQuXG4gKi9cbmludGVyZmFjZSBSZXNpemVPYnNlcnZlclNpemUge1xuICByZWFkb25seSBpbmxpbmVTaXplOiBudW1iZXI7XG4gIHJlYWRvbmx5IGJsb2NrU2l6ZTogbnVtYmVyO1xufVxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGludGVyZmFjZSBpcyBub3cgYXZhaWxhYmxlIGluIHRoZSBET00gbGliLlxuICogVXNlIHRoZSBnbG9iYWwge0BsaW5rIGdsb2JhbFRoaXMuUmVzaXplT2JzZXJ2ZXJFbnRyeX0gaW5zdGVhZC5cbiAqL1xuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyRW50cnkge1xuICByZWFkb25seSB0YXJnZXQ6IEVsZW1lbnQ7XG4gIHJlYWRvbmx5IGNvbnRlbnRSZWN0OiBET01SZWN0UmVhZE9ubHk7XG4gIHJlYWRvbmx5IGJvcmRlckJveFNpemU6IFJlYWRvbmx5QXJyYXk8UmVzaXplT2JzZXJ2ZXJTaXplPjtcbiAgcmVhZG9ubHkgY29udGVudEJveFNpemU6IFJlYWRvbmx5QXJyYXk8UmVzaXplT2JzZXJ2ZXJTaXplPjtcbiAgcmVhZG9ubHkgZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZTogUmVhZG9ubHlBcnJheTxSZXNpemVPYnNlcnZlclNpemU+O1xufVxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGludGVyZmFjZSBpcyBub3cgYXZhaWxhYmxlIGluIHRoZSBET00gbGliLlxuICogVXNlIHRoZSBnbG9iYWwge0BsaW5rIGdsb2JhbFRoaXMuUmVzaXplT2JzZXJ2ZXJDYWxsYmFja30gaW5zdGVhZC5cbiAqL1xudHlwZSBSZXNpemVPYnNlcnZlckNhbGxiYWNrID0gKGVudHJpZXM6IFJlYWRvbmx5QXJyYXk8UmVzaXplT2JzZXJ2ZXJFbnRyeT4sIG9ic2VydmVyOiBSZXNpemVPYnNlcnZlcikgPT4gdm9pZDtcbmludGVyZmFjZSBVc2VSZXNpemVPYnNlcnZlck9wdGlvbnMgZXh0ZW5kcyBSZXNpemVPYnNlcnZlck9wdGlvbnMsIENvbmZpZ3VyYWJsZVdpbmRvdyB7fVxuaW50ZXJmYWNlIFVzZVJlc2l6ZU9ic2VydmVyUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZXBvcnRzIGNoYW5nZXMgdG8gdGhlIGRpbWVuc2lvbnMgb2YgYW4gRWxlbWVudCdzIGNvbnRlbnQgb3IgdGhlIGJvcmRlci1ib3hcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VSZXNpemVPYnNlcnZlclxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVJlc2l6ZU9ic2VydmVyKHRhcmdldDogTWF5YmVDb21wdXRlZEVsZW1lbnRSZWYgfCBNYXliZUNvbXB1dGVkRWxlbWVudFJlZltdIHwgTWF5YmVSZWZPckdldHRlcjxNYXliZUVsZW1lbnRbXT4sIGNhbGxiYWNrOiBnbG9iYWxUaGlzLlJlc2l6ZU9ic2VydmVyQ2FsbGJhY2ssIG9wdGlvbnM/OiBVc2VSZXNpemVPYnNlcnZlck9wdGlvbnMpOiBVc2VSZXNpemVPYnNlcnZlclJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUVsZW1lbnRTaXplL2luZGV4LmQudHNcbmludGVyZmFjZSBFbGVtZW50U2l6ZSB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZUVsZW1lbnRTaXplT3B0aW9ucyBleHRlbmRzIFVzZVJlc2l6ZU9ic2VydmVyT3B0aW9ucyB7fVxuaW50ZXJmYWNlIFVzZUVsZW1lbnRTaXplUmV0dXJuIHtcbiAgd2lkdGg6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgaGVpZ2h0OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIHNpemUgb2YgYW4gSFRNTCBlbGVtZW50LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUVsZW1lbnRTaXplXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRWxlbWVudFNpemUodGFyZ2V0OiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZiwgaW5pdGlhbFNpemU/OiBFbGVtZW50U2l6ZSwgb3B0aW9ucz86IFVzZUVsZW1lbnRTaXplT3B0aW9ucyk6IFVzZUVsZW1lbnRTaXplUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBTdGFydCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1tZWRpYXRlbHkgb24gY3JlYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBFbGVtZW50IG9yIERvY3VtZW50IHdob3NlIGJvdW5kcyBhcmUgdXNlZCBhcyB0aGUgYm91bmRpbmcgYm94IHdoZW4gdGVzdGluZyBmb3IgaW50ZXJzZWN0aW9uLlxuICAgKi9cbiAgcm9vdD86IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmIHwgRG9jdW1lbnQ7XG4gIC8qKlxuICAgKiBBIHN0cmluZyB3aGljaCBzcGVjaWZpZXMgYSBzZXQgb2Ygb2Zmc2V0cyB0byBhZGQgdG8gdGhlIHJvb3QncyBib3VuZGluZ19ib3ggd2hlbiBjYWxjdWxhdGluZyBpbnRlcnNlY3Rpb25zLlxuICAgKi9cbiAgcm9vdE1hcmdpbj86IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEVpdGhlciBhIHNpbmdsZSBudW1iZXIgb3IgYW4gYXJyYXkgb2YgbnVtYmVycyBiZXR3ZWVuIDAuMCBhbmQgMS5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdGhyZXNob2xkPzogbnVtYmVyIHwgbnVtYmVyW107XG59XG5pbnRlcmZhY2UgVXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSwgUGF1c2FibGUge1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBEZXRlY3RzIHRoYXQgYSB0YXJnZXQgZWxlbWVudCdzIHZpc2liaWxpdHkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBjYWxsYmFja1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VJbnRlcnNlY3Rpb25PYnNlcnZlcih0YXJnZXQ6IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmIHwgTWF5YmVSZWZPckdldHRlcjxNYXliZUVsZW1lbnRbXT4gfCBNYXliZUNvbXB1dGVkRWxlbWVudFJlZltdLCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaywgb3B0aW9ucz86IFVzZUludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyk6IFVzZUludGVyc2VjdGlvbk9ic2VydmVyUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRWxlbWVudFZpc2liaWxpdHkvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUVsZW1lbnRWaXNpYmlsaXR5T3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdywgUGljazxVc2VJbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMsICdyb290TWFyZ2luJyB8ICd0aHJlc2hvbGQnPiB7XG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaW5pdGlhbFZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgaXMgdXNlZCBhcyB0aGUgdmlld3BvcnQgZm9yIGNoZWNraW5nIHZpc2liaWxpdHkgb2YgdGhlIHRhcmdldC5cbiAgICovXG4gIHNjcm9sbFRhcmdldD86IFVzZUludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9uc1sncm9vdCddO1xuICAvKipcbiAgICogU3RvcCB0cmFja2luZyB3aGVuIGVsZW1lbnQgdmlzaWJpbGl0eSBjaGFuZ2VzIGZvciB0aGUgZmlyc3QgdGltZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgb25jZT86IGJvb2xlYW47XG59XG50eXBlIFVzZUVsZW1lbnRWaXNpYmlsaXR5UmV0dXJuID0gU2hhbGxvd1JlZjxib29sZWFuPjtcbi8qKlxuICogVHJhY2tzIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgd2l0aGluIHRoZSB2aWV3cG9ydC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VFbGVtZW50VmlzaWJpbGl0eVxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUVsZW1lbnRWaXNpYmlsaXR5KGVsZW1lbnQ6IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmLCBvcHRpb25zPzogVXNlRWxlbWVudFZpc2liaWxpdHlPcHRpb25zKTogVXNlRWxlbWVudFZpc2liaWxpdHlSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VFdmVudEJ1cy9pbmRleC5kLnRzXG50eXBlIEV2ZW50QnVzTGlzdGVuZXI8VCA9IHVua25vd24sIFAkMSA9IGFueT4gPSAoZXZlbnQ6IFQsIHBheWxvYWQ/OiBQJDEpID0+IHZvaWQ7XG50eXBlIEV2ZW50QnVzRXZlbnRzPFQsIFAkMSA9IGFueT4gPSBTZXQ8RXZlbnRCdXNMaXN0ZW5lcjxULCBQJDE+PjtcbmludGVyZmFjZSBFdmVudEJ1c0tleTxUPiBleHRlbmRzIFN5bWJvbCB7fVxudHlwZSBFdmVudEJ1c0lkZW50aWZpZXI8VCA9IHVua25vd24+ID0gRXZlbnRCdXNLZXk8VD4gfCBzdHJpbmcgfCBudW1iZXI7XG5pbnRlcmZhY2UgVXNlRXZlbnRCdXNSZXR1cm48VCwgUCQxPiB7XG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gYW4gZXZlbnQuIFdoZW4gY2FsbGluZyBlbWl0LCB0aGUgbGlzdGVuZXJzIHdpbGwgZXhlY3V0ZS5cbiAgICogQHBhcmFtIGxpc3RlbmVyIHdhdGNoIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJucyBhIHN0b3AgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoZSBjdXJyZW50IGNhbGxiYWNrLlxuICAgKi9cbiAgb246IChsaXN0ZW5lcjogRXZlbnRCdXNMaXN0ZW5lcjxULCBQJDE+KSA9PiBGbjtcbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gYG9uYCwgYnV0IG9ubHkgZmlyZXMgb25jZVxuICAgKiBAcGFyYW0gbGlzdGVuZXIgd2F0Y2ggbGlzdGVuZXIuXG4gICAqIEByZXR1cm5zIGEgc3RvcCBmdW5jdGlvbiB0byByZW1vdmUgdGhlIGN1cnJlbnQgY2FsbGJhY2suXG4gICAqL1xuICBvbmNlOiAobGlzdGVuZXI6IEV2ZW50QnVzTGlzdGVuZXI8VCwgUCQxPikgPT4gRm47XG4gIC8qKlxuICAgKiBFbWl0IGFuIGV2ZW50LCB0aGUgY29ycmVzcG9uZGluZyBldmVudCBsaXN0ZW5lcnMgd2lsbCBleGVjdXRlLlxuICAgKiBAcGFyYW0gZXZlbnQgZGF0YSBzZW50LlxuICAgKi9cbiAgZW1pdDogKGV2ZW50PzogVCwgcGF5bG9hZD86IFAkMSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBsaXN0ZW5lci5cbiAgICogQHBhcmFtIGxpc3RlbmVyIHdhdGNoIGxpc3RlbmVyLlxuICAgKi9cbiAgb2ZmOiAobGlzdGVuZXI6IEV2ZW50QnVzTGlzdGVuZXI8VD4pID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDbGVhciBhbGwgZXZlbnRzXG4gICAqL1xuICByZXNldDogKCkgPT4gdm9pZDtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRXZlbnRCdXM8VCA9IHVua25vd24sIFAkMSA9IGFueT4oa2V5OiBFdmVudEJ1c0lkZW50aWZpZXI8VD4pOiBVc2VFdmVudEJ1c1JldHVybjxULCBQJDE+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRXZlbnRMaXN0ZW5lci9pbmRleC5kLnRzXG5pbnRlcmZhY2UgSW5mZXJFdmVudFRhcmdldDxFdmVudHM+IHtcbiAgYWRkRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBFdmVudHMsIGZuPzogYW55LCBvcHRpb25zPzogYW55KSA9PiBhbnk7XG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudDogRXZlbnRzLCBmbj86IGFueSwgb3B0aW9ucz86IGFueSkgPT4gYW55O1xufVxudHlwZSBXaW5kb3dFdmVudE5hbWUgPSBrZXlvZiBXaW5kb3dFdmVudE1hcDtcbnR5cGUgRG9jdW1lbnRFdmVudE5hbWUgPSBrZXlvZiBEb2N1bWVudEV2ZW50TWFwO1xudHlwZSBTaGFkb3dSb290RXZlbnROYW1lID0ga2V5b2YgU2hhZG93Um9vdEV2ZW50TWFwO1xuaW50ZXJmYWNlIEdlbmVyYWxFdmVudExpc3RlbmVyPEUgPSBFdmVudD4ge1xuICAoZXZ0OiBFKTogdm9pZDtcbn1cbi8qKlxuICogUmVnaXN0ZXIgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBvbiBtb3VudGVkLCBhbmQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBhdXRvbWF0aWNhbGx5IG9uIHVubW91bnRlZC5cbiAqXG4gKiBPdmVybG9hZCAxOiBPbWl0dGVkIFdpbmRvdyB0YXJnZXRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VFdmVudExpc3RlbmVyXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcjxFIGV4dGVuZHMga2V5b2YgV2luZG93RXZlbnRNYXA+KGV2ZW50OiBNYXliZVJlZk9yR2V0dGVyPEFycmF5YWJsZTxFPj4sIGxpc3RlbmVyOiBNYXliZVJlZjxBcnJheWFibGU8KHRoaXM6IFdpbmRvdywgZXY6IFdpbmRvd0V2ZW50TWFwW0VdKSA9PiBhbnk+Piwgb3B0aW9ucz86IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zPik6IEZuO1xuLyoqXG4gKiBSZWdpc3RlciB1c2luZyBhZGRFdmVudExpc3RlbmVyIG9uIG1vdW50ZWQsIGFuZCByZW1vdmVFdmVudExpc3RlbmVyIGF1dG9tYXRpY2FsbHkgb24gdW5tb3VudGVkLlxuICpcbiAqIE92ZXJsb2FkIDI6IEV4cGxpY2l0bHkgV2luZG93IHRhcmdldFxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUV2ZW50TGlzdGVuZXJcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBldmVudFxuICogQHBhcmFtIGxpc3RlbmVyXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUV2ZW50TGlzdGVuZXI8RSBleHRlbmRzIGtleW9mIFdpbmRvd0V2ZW50TWFwPih0YXJnZXQ6IFdpbmRvdywgZXZlbnQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPEU+PiwgbGlzdGVuZXI6IE1heWJlUmVmPEFycmF5YWJsZTwodGhpczogV2luZG93LCBldjogV2luZG93RXZlbnRNYXBbRV0pID0+IGFueT4+LCBvcHRpb25zPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM+KTogRm47XG4vKipcbiAqIFJlZ2lzdGVyIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgb24gbW91bnRlZCwgYW5kIHJlbW92ZUV2ZW50TGlzdGVuZXIgYXV0b21hdGljYWxseSBvbiB1bm1vdW50ZWQuXG4gKlxuICogT3ZlcmxvYWQgMzogRXhwbGljaXRseSBEb2N1bWVudCB0YXJnZXRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VFdmVudExpc3RlbmVyXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcjxFIGV4dGVuZHMga2V5b2YgRG9jdW1lbnRFdmVudE1hcD4odGFyZ2V0OiBEb2N1bWVudCwgZXZlbnQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPEU+PiwgbGlzdGVuZXI6IE1heWJlUmVmPEFycmF5YWJsZTwodGhpczogRG9jdW1lbnQsIGV2OiBEb2N1bWVudEV2ZW50TWFwW0VdKSA9PiBhbnk+Piwgb3B0aW9ucz86IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zPik6IEZuO1xuLyoqXG4gKiBSZWdpc3RlciB1c2luZyBhZGRFdmVudExpc3RlbmVyIG9uIG1vdW50ZWQsIGFuZCByZW1vdmVFdmVudExpc3RlbmVyIGF1dG9tYXRpY2FsbHkgb24gdW5tb3VudGVkLlxuICpcbiAqIE92ZXJsb2FkIDQ6IEV4cGxpY2l0bHkgU2hhZG93Um9vdCB0YXJnZXRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VFdmVudExpc3RlbmVyXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcjxFIGV4dGVuZHMga2V5b2YgU2hhZG93Um9vdEV2ZW50TWFwPih0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPFNoYWRvd1Jvb3Q+IHwgbnVsbCB8IHVuZGVmaW5lZD4sIGV2ZW50OiBNYXliZVJlZk9yR2V0dGVyPEFycmF5YWJsZTxFPj4sIGxpc3RlbmVyOiBNYXliZVJlZjxBcnJheWFibGU8KHRoaXM6IFNoYWRvd1Jvb3QsIGV2OiBTaGFkb3dSb290RXZlbnRNYXBbRV0pID0+IGFueT4+LCBvcHRpb25zPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM+KTogRm47XG4vKipcbiAqIFJlZ2lzdGVyIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgb24gbW91bnRlZCwgYW5kIHJlbW92ZUV2ZW50TGlzdGVuZXIgYXV0b21hdGljYWxseSBvbiB1bm1vdW50ZWQuXG4gKlxuICogT3ZlcmxvYWQgNTogRXhwbGljaXRseSBIVE1MRWxlbWVudCB0YXJnZXRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VFdmVudExpc3RlbmVyXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcjxFIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRFdmVudE1hcD4odGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPEFycmF5YWJsZTxIVE1MRWxlbWVudD4gfCBudWxsIHwgdW5kZWZpbmVkPiwgZXZlbnQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPEU+PiwgbGlzdGVuZXI6IE1heWJlUmVmPCh0aGlzOiBIVE1MRWxlbWVudCwgZXY6IEhUTUxFbGVtZW50RXZlbnRNYXBbRV0pID0+IGFueT4sIG9wdGlvbnM/OiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucz4pOiBGbjtcbi8qKlxuICogUmVnaXN0ZXIgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBvbiBtb3VudGVkLCBhbmQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBhdXRvbWF0aWNhbGx5IG9uIHVubW91bnRlZC5cbiAqXG4gKiBPdmVybG9hZCA2OiBDdXN0b20gZXZlbnQgdGFyZ2V0IHdpdGggZXZlbnQgdHlwZSBpbmZlclxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUV2ZW50TGlzdGVuZXJcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyPE5hbWVzIGV4dGVuZHMgc3RyaW5nLCBFdmVudFR5cGUgPSBFdmVudD4odGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPEFycmF5YWJsZTxJbmZlckV2ZW50VGFyZ2V0PE5hbWVzPj4gfCBudWxsIHwgdW5kZWZpbmVkPiwgZXZlbnQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPE5hbWVzPj4sIGxpc3RlbmVyOiBNYXliZVJlZjxBcnJheWFibGU8R2VuZXJhbEV2ZW50TGlzdGVuZXI8RXZlbnRUeXBlPj4+LCBvcHRpb25zPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM+KTogRm47XG4vKipcbiAqIFJlZ2lzdGVyIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIgb24gbW91bnRlZCwgYW5kIHJlbW92ZUV2ZW50TGlzdGVuZXIgYXV0b21hdGljYWxseSBvbiB1bm1vdW50ZWQuXG4gKlxuICogT3ZlcmxvYWQgNzogQ3VzdG9tIGV2ZW50IHRhcmdldCBmYWxsYmFja1xuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUV2ZW50TGlzdGVuZXJcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyPEV2ZW50VHlwZSA9IEV2ZW50Pih0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8QXJyYXlhYmxlPEV2ZW50VGFyZ2V0PiB8IG51bGwgfCB1bmRlZmluZWQ+LCBldmVudDogTWF5YmVSZWZPckdldHRlcjxBcnJheWFibGU8c3RyaW5nPj4sIGxpc3RlbmVyOiBNYXliZVJlZjxBcnJheWFibGU8R2VuZXJhbEV2ZW50TGlzdGVuZXI8RXZlbnRUeXBlPj4+LCBvcHRpb25zPzogTWF5YmVSZWZPckdldHRlcjxib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM+KTogRm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VFdmVudFNvdXJjZS9pbmRleC5kLnRzXG50eXBlIEV2ZW50U291cmNlU3RhdHVzID0gJ0NPTk5FQ1RJTkcnIHwgJ09QRU4nIHwgJ0NMT1NFRCc7XG5pbnRlcmZhY2UgVXNlRXZlbnRTb3VyY2VPcHRpb25zPERhdGE+IGV4dGVuZHMgRXZlbnRTb3VyY2VJbml0IHtcbiAgLyoqXG4gICAqIEVuYWJsZWQgYXV0byByZWNvbm5lY3RcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGF1dG9SZWNvbm5lY3Q/OiBib29sZWFuIHwge1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gcmV0cnkgdGltZXMuXG4gICAgICpcbiAgICAgKiBPciB5b3UgY2FuIHBhc3MgYSBwcmVkaWNhdGUgZnVuY3Rpb24gKHdoaWNoIHJldHVybnMgdHJ1ZSBpZiB5b3Ugd2FudCB0byByZXRyeSkuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtMVxuICAgICAqL1xuICAgIHJldHJpZXM/OiBudW1iZXIgfCAoKCkgPT4gYm9vbGVhbik7XG4gICAgLyoqXG4gICAgICogRGVsYXkgZm9yIHJlY29ubmVjdCwgaW4gbWlsbGlzZWNvbmRzXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAxMDAwXG4gICAgICovXG4gICAgZGVsYXk/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogT24gbWF4aW11bSByZXRyeSB0aW1lcyByZWFjaGVkLlxuICAgICAqL1xuICAgIG9uRmFpbGVkPzogRm47XG4gIH07XG4gIC8qKlxuICAgKiBJbW1lZGlhdGVseSBvcGVuIHRoZSBjb25uZWN0aW9uIHdoZW4gY2FsbGluZyB0aGlzIGNvbXBvc2FibGVcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgY29ubmVjdCB0byB0aGUgd2Vic29ja2V0IHdoZW4gVVJMIGNoYW5nZXNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgYXV0b0Nvbm5lY3Q/OiBib29sZWFuO1xuICAvKipcbiAgICogQ3VzdG9tIGRhdGEgc2VyaWFsaXphdGlvblxuICAgKi9cbiAgc2VyaWFsaXplcj86IHtcbiAgICByZWFkOiAodj86IHN0cmluZykgPT4gRGF0YTtcbiAgfTtcbn1cbmludGVyZmFjZSBVc2VFdmVudFNvdXJjZVJldHVybjxFdmVudHMgZXh0ZW5kcyBzdHJpbmdbXSwgRGF0YSA9IGFueT4ge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBsYXRlc3QgZGF0YSByZWNlaXZlZCB2aWEgdGhlIEV2ZW50U291cmNlLFxuICAgKiBjYW4gYmUgd2F0Y2hlZCB0byByZXNwb25kIHRvIGluY29taW5nIG1lc3NhZ2VzXG4gICAqL1xuICBkYXRhOiBTaGFsbG93UmVmPERhdGEgfCBudWxsPjtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb25uZWN0aW9uLCBjYW4gYmUgb25seSBvbmUgb2Y6XG4gICAqICdDT05ORUNUSU5HJywgJ09QRU4nICdDTE9TRUQnXG4gICAqL1xuICBzdGF0dXM6IFNoYWxsb3dSZWY8RXZlbnRTb3VyY2VTdGF0dXM+O1xuICAvKipcbiAgICogVGhlIGxhdGVzdCBuYW1lZCBldmVudFxuICAgKi9cbiAgZXZlbnQ6IFNoYWxsb3dSZWY8RXZlbnRzW251bWJlcl0gfCBudWxsPjtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGVycm9yXG4gICAqL1xuICBlcnJvcjogU2hhbGxvd1JlZjxFdmVudCB8IG51bGw+O1xuICAvKipcbiAgICogQ2xvc2VzIHRoZSBFdmVudFNvdXJjZSBjb25uZWN0aW9uIGdyYWNlZnVsbHkuXG4gICAqL1xuICBjbG9zZTogRXZlbnRTb3VyY2VbJ2Nsb3NlJ107XG4gIC8qKlxuICAgKiBSZW9wZW4gdGhlIEV2ZW50U291cmNlIGNvbm5lY3Rpb24uXG4gICAqIElmIHRoZXJlIHRoZSBjdXJyZW50IG9uZSBpcyBhY3RpdmUsIHdpbGwgY2xvc2UgaXQgYmVmb3JlIG9wZW5pbmcgYSBuZXcgb25lLlxuICAgKi9cbiAgb3BlbjogRm47XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgRXZlbnRTb3VyY2UgaW5zdGFuY2UuXG4gICAqL1xuICBldmVudFNvdXJjZTogUmVmPEV2ZW50U291cmNlIHwgbnVsbD47XG4gIC8qKlxuICAgKiBUaGUgbGFzdCBldmVudCBJRCBzdHJpbmcsIGZvciBzZXJ2ZXItc2VudCBldmVudHMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01lc3NhZ2VFdmVudC9sYXN0RXZlbnRJZFxuICAgKi9cbiAgbGFzdEV2ZW50SWQ6IFNoYWxsb3dSZWY8c3RyaW5nIHwgbnVsbD47XG59XG4vKipcbiAqIFJlYWN0aXZlIHdyYXBwZXIgZm9yIEV2ZW50U291cmNlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUV2ZW50U291cmNlXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFNvdXJjZS9FdmVudFNvdXJjZSBFdmVudFNvdXJjZVxuICogQHBhcmFtIHVybFxuICogQHBhcmFtIGV2ZW50c1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VFdmVudFNvdXJjZTxFdmVudHMgZXh0ZW5kcyBzdHJpbmdbXSwgRGF0YSA9IGFueT4odXJsOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZyB8IFVSTCB8IHVuZGVmaW5lZD4sIGV2ZW50cz86IEV2ZW50cywgb3B0aW9ucz86IFVzZUV2ZW50U291cmNlT3B0aW9uczxEYXRhPik6IFVzZUV2ZW50U291cmNlUmV0dXJuPEV2ZW50cywgRGF0YT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VFeWVEcm9wcGVyL2luZGV4LmQudHNcbmludGVyZmFjZSBFeWVEcm9wcGVyT3Blbk9wdGlvbnMge1xuICAvKipcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQWJvcnRTaWduYWxcbiAgICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuaW50ZXJmYWNlIEV5ZURyb3BwZXIge1xuICBuZXcgKCk6IEV5ZURyb3BwZXI7XG4gIG9wZW46IChvcHRpb25zPzogRXllRHJvcHBlck9wZW5PcHRpb25zKSA9PiBQcm9taXNlPHtcbiAgICBzUkdCSGV4OiBzdHJpbmc7XG4gIH0+O1xuICBbU3ltYm9sLnRvU3RyaW5nVGFnXTogJ0V5ZURyb3BwZXInO1xufVxuaW50ZXJmYWNlIFVzZUV5ZURyb3BwZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEluaXRpYWwgc1JHQkhleC5cbiAgICpcbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbn1cbmludGVyZmFjZSBVc2VFeWVEcm9wcGVyUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBzUkdCSGV4OiBTaGFsbG93UmVmPHN0cmluZz47XG4gIG9wZW46IChvcGVuT3B0aW9ucz86IEV5ZURyb3BwZXJPcGVuT3B0aW9ucykgPT4gUHJvbWlzZTx7XG4gICAgc1JHQkhleDogc3RyaW5nO1xuICB9IHwgdW5kZWZpbmVkPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgW0V5ZURyb3BwZXIgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXllRHJvcHBlcl9BUEkpXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRXllRHJvcHBlclxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRXllRHJvcHBlcihvcHRpb25zPzogVXNlRXllRHJvcHBlck9wdGlvbnMpOiBVc2VFeWVEcm9wcGVyUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRmF2aWNvbi9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRmF2aWNvbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVEb2N1bWVudCB7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIHJlbD86IHN0cmluZztcbn1cbnR5cGUgVXNlRmF2aWNvblJldHVybiA9IENvbXB1dGVkUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+IHwgUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+O1xuLyoqXG4gKiBSZWFjdGl2ZSBmYXZpY29uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUZhdmljb25cbiAqIEBwYXJhbSBuZXdJY29uXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZhdmljb24obmV3SWNvbjogUmVhZG9ubHlSZWZPckdldHRlcjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPiwgb3B0aW9ucz86IFVzZUZhdmljb25PcHRpb25zKTogQ29tcHV0ZWRSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZhdmljb24obmV3SWNvbj86IE1heWJlUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlRmF2aWNvbk9wdGlvbnMpOiBSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VGZXRjaC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRmV0Y2hSZXR1cm48VD4ge1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBmZXRjaCByZXF1ZXN0IGhhcyBmaW5pc2hlZFxuICAgKi9cbiAgaXNGaW5pc2hlZDogUmVhZG9ubHk8U2hhbGxvd1JlZjxib29sZWFuPj47XG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzQ29kZSBvZiB0aGUgSFRUUCBmZXRjaCByZXNwb25zZVxuICAgKi9cbiAgc3RhdHVzQ29kZTogU2hhbGxvd1JlZjxudW1iZXIgfCBudWxsPjtcbiAgLyoqXG4gICAqIFRoZSByYXcgcmVzcG9uc2Ugb2YgdGhlIGZldGNoIHJlc3BvbnNlXG4gICAqL1xuICByZXNwb25zZTogU2hhbGxvd1JlZjxSZXNwb25zZSB8IG51bGw+O1xuICAvKipcbiAgICogQW55IGZldGNoIGVycm9ycyB0aGF0IG1heSBoYXZlIG9jY3VycmVkXG4gICAqL1xuICBlcnJvcjogU2hhbGxvd1JlZjxhbnk+O1xuICAvKipcbiAgICogVGhlIGZldGNoIHJlc3BvbnNlIGJvZHkgb24gc3VjY2VzcywgbWF5IGVpdGhlciBiZSBKU09OIG9yIHRleHRcbiAgICovXG4gIGRhdGE6IFNoYWxsb3dSZWY8VCB8IG51bGw+O1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSByZXF1ZXN0IGlzIGN1cnJlbnRseSBiZWluZyBmZXRjaGVkLlxuICAgKi9cbiAgaXNGZXRjaGluZzogUmVhZG9ubHk8U2hhbGxvd1JlZjxib29sZWFuPj47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGZldGNoIHJlcXVlc3QgaXMgYWJsZSB0byBiZSBhYm9ydGVkXG4gICAqL1xuICBjYW5BYm9ydDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGZldGNoIHJlcXVlc3Qgd2FzIGFib3J0ZWRcbiAgICovXG4gIGFib3J0ZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBBYm9ydCB0aGUgZmV0Y2ggcmVxdWVzdFxuICAgKi9cbiAgYWJvcnQ6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBNYW51YWxseSBjYWxsIHRoZSBmZXRjaFxuICAgKiAoZGVmYXVsdCBub3QgdGhyb3dpbmcgZXJyb3IpXG4gICAqL1xuICBleGVjdXRlOiAodGhyb3dPbkZhaWxlZD86IGJvb2xlYW4pID0+IFByb21pc2U8YW55PjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIHRoZSBmZXRjaCByZXF1ZXN0IGhhcyBmaW5pc2hlZFxuICAgKi9cbiAgb25GZXRjaFJlc3BvbnNlOiBFdmVudEhvb2tPbjxSZXNwb25zZT47XG4gIC8qKlxuICAgKiBGaXJlcyBhZnRlciBhIGZldGNoIHJlcXVlc3QgZXJyb3JcbiAgICovXG4gIG9uRmV0Y2hFcnJvcjogRXZlbnRIb29rT247XG4gIC8qKlxuICAgKiBGaXJlcyBhZnRlciBhIGZldGNoIGhhcyBjb21wbGV0ZWRcbiAgICovXG4gIG9uRmV0Y2hGaW5hbGx5OiBFdmVudEhvb2tPbjtcbiAgZ2V0OiAoKSA9PiBVc2VGZXRjaFJldHVybjxUPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPFQ+PjtcbiAgcG9zdDogKHBheWxvYWQ/OiBNYXliZVJlZk9yR2V0dGVyPHVua25vd24+LCB0eXBlPzogc3RyaW5nKSA9PiBVc2VGZXRjaFJldHVybjxUPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPFQ+PjtcbiAgcHV0OiAocGF5bG9hZD86IE1heWJlUmVmT3JHZXR0ZXI8dW5rbm93bj4sIHR5cGU/OiBzdHJpbmcpID0+IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuICBkZWxldGU6IChwYXlsb2FkPzogTWF5YmVSZWZPckdldHRlcjx1bmtub3duPiwgdHlwZT86IHN0cmluZykgPT4gVXNlRmV0Y2hSZXR1cm48VD4gJiBQcm9taXNlTGlrZTxVc2VGZXRjaFJldHVybjxUPj47XG4gIHBhdGNoOiAocGF5bG9hZD86IE1heWJlUmVmT3JHZXR0ZXI8dW5rbm93bj4sIHR5cGU/OiBzdHJpbmcpID0+IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuICBoZWFkOiAocGF5bG9hZD86IE1heWJlUmVmT3JHZXR0ZXI8dW5rbm93bj4sIHR5cGU/OiBzdHJpbmcpID0+IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuICBvcHRpb25zOiAocGF5bG9hZD86IE1heWJlUmVmT3JHZXR0ZXI8dW5rbm93bj4sIHR5cGU/OiBzdHJpbmcpID0+IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuICBqc29uOiA8SlNPTiA9IGFueT4oKSA9PiBVc2VGZXRjaFJldHVybjxKU09OPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPEpTT04+PjtcbiAgdGV4dDogKCkgPT4gVXNlRmV0Y2hSZXR1cm48c3RyaW5nPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPHN0cmluZz4+O1xuICBibG9iOiAoKSA9PiBVc2VGZXRjaFJldHVybjxCbG9iPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPEJsb2I+PjtcbiAgYXJyYXlCdWZmZXI6ICgpID0+IFVzZUZldGNoUmV0dXJuPEFycmF5QnVmZmVyPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPEFycmF5QnVmZmVyPj47XG4gIGZvcm1EYXRhOiAoKSA9PiBVc2VGZXRjaFJldHVybjxGb3JtRGF0YT4gJiBQcm9taXNlTGlrZTxVc2VGZXRjaFJldHVybjxGb3JtRGF0YT4+O1xufVxudHlwZSBDb21iaW5hdGlvbiA9ICdvdmVyd3JpdGUnIHwgJ2NoYWluJztcbmludGVyZmFjZSBCZWZvcmVGZXRjaENvbnRleHQge1xuICAvKipcbiAgICogVGhlIGNvbXB1dGVkIHVybCBvZiB0aGUgY3VycmVudCByZXF1ZXN0XG4gICAqL1xuICB1cmw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZXF1ZXN0IG9wdGlvbnMgb2YgdGhlIGN1cnJlbnQgcmVxdWVzdFxuICAgKi9cbiAgb3B0aW9uczogUmVxdWVzdEluaXQ7XG4gIC8qKlxuICAgKiBDYW5jZWxzIHRoZSBjdXJyZW50IHJlcXVlc3RcbiAgICovXG4gIGNhbmNlbDogRm47XG59XG5pbnRlcmZhY2UgQWZ0ZXJGZXRjaENvbnRleHQ8VCA9IGFueT4ge1xuICByZXNwb25zZTogUmVzcG9uc2U7XG4gIGRhdGE6IFQgfCBudWxsO1xuICBjb250ZXh0OiBCZWZvcmVGZXRjaENvbnRleHQ7XG4gIGV4ZWN1dGU6ICh0aHJvd09uRmFpbGVkPzogYm9vbGVhbikgPT4gUHJvbWlzZTxhbnk+O1xufVxuaW50ZXJmYWNlIE9uRmV0Y2hFcnJvckNvbnRleHQ8VCA9IGFueSwgRSA9IGFueT4ge1xuICBlcnJvcjogRTtcbiAgZGF0YTogVCB8IG51bGw7XG4gIHJlc3BvbnNlOiBSZXNwb25zZSB8IG51bGw7XG4gIGNvbnRleHQ6IEJlZm9yZUZldGNoQ29udGV4dDtcbiAgZXhlY3V0ZTogKHRocm93T25GYWlsZWQ/OiBib29sZWFuKSA9PiBQcm9taXNlPGFueT47XG59XG5pbnRlcmZhY2UgVXNlRmV0Y2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZldGNoIGZ1bmN0aW9uXG4gICAqL1xuICBmZXRjaD86IHR5cGVvZiB3aW5kb3cuZmV0Y2g7XG4gIC8qKlxuICAgKiBXaWxsIGF1dG9tYXRpY2FsbHkgcnVuIGZldGNoIHdoZW4gYHVzZUZldGNoYCBpcyB1c2VkXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaWxsIGF1dG9tYXRpY2FsbHkgcmVmZXRjaCB3aGVuOlxuICAgKiAtIHRoZSBVUkwgaXMgY2hhbmdlZCBpZiB0aGUgVVJMIGlzIGEgcmVmXG4gICAqIC0gdGhlIHBheWxvYWQgaXMgY2hhbmdlZCBpZiB0aGUgcGF5bG9hZCBpcyBhIHJlZlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVmZXRjaD86IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJbml0aWFsIGRhdGEgYmVmb3JlIHRoZSByZXF1ZXN0IGZpbmlzaGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIGluaXRpYWxEYXRhPzogYW55O1xuICAvKipcbiAgICogVGltZW91dCBmb3IgYWJvcnQgcmVxdWVzdCBhZnRlciBudW1iZXIgb2YgbWlsbGlzZWNvbmRcbiAgICogYDBgIG1lYW5zIHVzZSBicm93c2VyIGRlZmF1bHRcbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEFsbG93IHVwZGF0ZSB0aGUgYGRhdGFgIHJlZiB3aGVuIGZldGNoIGVycm9yIHdoZW5ldmVyIHByb3ZpZGVkLCBvciBtdXRhdGVkIGluIHRoZSBgb25GZXRjaEVycm9yYCBjYWxsYmFja1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgdXBkYXRlRGF0YU9uRXJyb3I/OiBib29sZWFuO1xuICAvKipcbiAgICogV2lsbCBydW4gaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBmZXRjaCByZXF1ZXN0IGlzIGRpc3BhdGNoZWRcbiAgICovXG4gIGJlZm9yZUZldGNoPzogKGN0eDogQmVmb3JlRmV0Y2hDb250ZXh0KSA9PiBQcm9taXNlPFBhcnRpYWw8QmVmb3JlRmV0Y2hDb250ZXh0PiB8IHZvaWQ+IHwgUGFydGlhbDxCZWZvcmVGZXRjaENvbnRleHQ+IHwgdm9pZDtcbiAgLyoqXG4gICAqIFdpbGwgcnVuIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBmZXRjaCByZXF1ZXN0IGlzIHJldHVybmVkLlxuICAgKiBSdW5zIGFmdGVyIGFueSAyeHggcmVzcG9uc2VcbiAgICovXG4gIGFmdGVyRmV0Y2g/OiAoY3R4OiBBZnRlckZldGNoQ29udGV4dCkgPT4gUHJvbWlzZTxQYXJ0aWFsPEFmdGVyRmV0Y2hDb250ZXh0Pj4gfCBQYXJ0aWFsPEFmdGVyRmV0Y2hDb250ZXh0PjtcbiAgLyoqXG4gICAqIFdpbGwgcnVuIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBmZXRjaCByZXF1ZXN0IGlzIHJldHVybmVkLlxuICAgKiBSdW5zIGFmdGVyIGFueSA0eHggYW5kIDV4eCByZXNwb25zZVxuICAgKi9cbiAgb25GZXRjaEVycm9yPzogKGN0eDogT25GZXRjaEVycm9yQ29udGV4dCkgPT4gUHJvbWlzZTxQYXJ0aWFsPE9uRmV0Y2hFcnJvckNvbnRleHQ+PiB8IFBhcnRpYWw8T25GZXRjaEVycm9yQ29udGV4dD47XG59XG5pbnRlcmZhY2UgQ3JlYXRlRmV0Y2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIFVSTCB0aGF0IHdpbGwgYmUgcHJlZml4ZWQgdG8gYWxsIHVybHMgdW5sZXNzIHVybHMgYXJlIGFic29sdXRlXG4gICAqL1xuICBiYXNlVXJsPzogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+O1xuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBpbmhlcml0IGJlaGF2aW9yIGZvciBiZWZvcmVGZXRjaCwgYWZ0ZXJGZXRjaCwgb25GZXRjaEVycm9yXG4gICAqIEBkZWZhdWx0ICdjaGFpbidcbiAgICovXG4gIGNvbWJpbmF0aW9uPzogQ29tYmluYXRpb247XG4gIC8qKlxuICAgKiBEZWZhdWx0IE9wdGlvbnMgZm9yIHRoZSB1c2VGZXRjaCBmdW5jdGlvblxuICAgKi9cbiAgb3B0aW9ucz86IFVzZUZldGNoT3B0aW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHRoZSBmZXRjaCByZXF1ZXN0XG4gICAqL1xuICBmZXRjaE9wdGlvbnM/OiBSZXF1ZXN0SW5pdDtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlRmV0Y2goY29uZmlnPzogQ3JlYXRlRmV0Y2hPcHRpb25zKTogdHlwZW9mIHVzZUZldGNoO1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGZXRjaDxUPih1cmw6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPik6IFVzZUZldGNoUmV0dXJuPFQ+ICYgUHJvbWlzZUxpa2U8VXNlRmV0Y2hSZXR1cm48VD4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGZXRjaDxUPih1cmw6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgdXNlRmV0Y2hPcHRpb25zOiBVc2VGZXRjaE9wdGlvbnMpOiBVc2VGZXRjaFJldHVybjxUPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPFQ+PjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlRmV0Y2g8VD4odXJsOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIG9wdGlvbnM6IFJlcXVlc3RJbml0LCB1c2VGZXRjaE9wdGlvbnM/OiBVc2VGZXRjaE9wdGlvbnMpOiBVc2VGZXRjaFJldHVybjxUPiAmIFByb21pc2VMaWtlPFVzZUZldGNoUmV0dXJuPFQ+Pjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUZpbGVEaWFsb2cvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUZpbGVEaWFsb2dPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlRG9jdW1lbnQge1xuICAvKipcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgbXVsdGlwbGU/OiBNYXliZVJlZjxib29sZWFuPjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0ICcqJ1xuICAgKi9cbiAgYWNjZXB0PzogTWF5YmVSZWY8c3RyaW5nPjtcbiAgLyoqXG4gICAqIFNlbGVjdCB0aGUgaW5wdXQgc291cmNlIGZvciB0aGUgY2FwdHVyZSBmaWxlLlxuICAgKiBAc2VlIFtIVE1MSW5wdXRFbGVtZW50IENhcHR1cmVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9jYXB0dXJlKVxuICAgKi9cbiAgY2FwdHVyZT86IE1heWJlUmVmPHN0cmluZz47XG4gIC8qKlxuICAgKiBSZXNldCB3aGVuIG9wZW4gZmlsZSBkaWFsb2cuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXNldD86IE1heWJlUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogU2VsZWN0IGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgZmlsZXMuXG4gICAqIEBzZWUgW0hUTUxJbnB1dEVsZW1lbnQgd2Via2l0ZGlyZWN0b3J5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTElucHV0RWxlbWVudC93ZWJraXRkaXJlY3RvcnkpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXJlY3Rvcnk/OiBNYXliZVJlZjxib29sZWFuPjtcbiAgLyoqXG4gICAqIEluaXRpYWwgZmlsZXMgdG8gc2V0LlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBpbml0aWFsRmlsZXM/OiBBcnJheTxGaWxlPiB8IEZpbGVMaXN0O1xuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdG8gdXNlIGZvciBmaWxlIGRpYWxvZy5cbiAgICogQGRlZmF1bHQgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuICAgKi9cbiAgaW5wdXQ/OiBNYXliZUVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG59XG5pbnRlcmZhY2UgVXNlRmlsZURpYWxvZ1JldHVybiB7XG4gIGZpbGVzOiBSZWY8RmlsZUxpc3QgfCBudWxsPjtcbiAgb3BlbjogKGxvY2FsT3B0aW9ucz86IFBhcnRpYWw8VXNlRmlsZURpYWxvZ09wdGlvbnM+KSA9PiB2b2lkO1xuICByZXNldDogKCkgPT4gdm9pZDtcbiAgb25DaGFuZ2U6IEV2ZW50SG9va09uPEZpbGVMaXN0IHwgbnVsbD47XG4gIG9uQ2FuY2VsOiBFdmVudEhvb2tPbjtcbn1cbi8qKlxuICogT3BlbiBmaWxlIGRpYWxvZyB3aXRoIGVhc2UuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRmlsZURpYWxvZ1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGaWxlRGlhbG9nKG9wdGlvbnM/OiBVc2VGaWxlRGlhbG9nT3B0aW9ucyk6IFVzZUZpbGVEaWFsb2dSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VGaWxlU3lzdGVtQWNjZXNzL2luZGV4LmQudHNcbi8qKlxuICogd2luZG93LnNob3dPcGVuRmlsZVBpY2tlciBwYXJhbWV0ZXJzXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS93aW5kb3cvc2hvd09wZW5GaWxlUGlja2VyI3BhcmFtZXRlcnNcbiAqL1xuaW50ZXJmYWNlIEZpbGVTeXN0ZW1BY2Nlc3NTaG93T3BlbkZpbGVPcHRpb25zIHtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICB0eXBlcz86IEFycmF5PHtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBhY2NlcHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgfT47XG4gIGV4Y2x1ZGVBY2NlcHRBbGxPcHRpb24/OiBib29sZWFuO1xufVxuLyoqXG4gKiB3aW5kb3cuc2hvd1NhdmVGaWxlUGlja2VyIHBhcmFtZXRlcnNcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy9zaG93U2F2ZUZpbGVQaWNrZXIjcGFyYW1ldGVyc1xuICovXG5pbnRlcmZhY2UgRmlsZVN5c3RlbUFjY2Vzc1Nob3dTYXZlRmlsZU9wdGlvbnMge1xuICBzdWdnZXN0ZWROYW1lPzogc3RyaW5nO1xuICB0eXBlcz86IEFycmF5PHtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBhY2NlcHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgfT47XG4gIGV4Y2x1ZGVBY2NlcHRBbGxPcHRpb24/OiBib29sZWFuO1xufVxuLyoqXG4gKiBGaWxlSGFuZGxlXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlU3lzdGVtRmlsZUhhbmRsZVxuICovXG5pbnRlcmZhY2UgRmlsZVN5c3RlbUZpbGVIYW5kbGUge1xuICBnZXRGaWxlOiAoKSA9PiBQcm9taXNlPEZpbGU+O1xuICBjcmVhdGVXcml0YWJsZTogKCkgPT4gRmlsZVN5c3RlbVdyaXRhYmxlRmlsZVN0cmVhbTtcbn1cbi8qKlxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRmlsZVN5c3RlbVdyaXRhYmxlRmlsZVN0cmVhbVxuICovXG5pbnRlcmZhY2UgRmlsZVN5c3RlbVdyaXRhYmxlRmlsZVN0cmVhbSBleHRlbmRzIFdyaXRhYmxlU3RyZWFtIHtcbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZpbGVTeXN0ZW1Xcml0YWJsZUZpbGVTdHJlYW0vd3JpdGVcbiAgICovXG4gIHdyaXRlOiBGaWxlU3lzdGVtV3JpdGFibGVGaWxlU3RyZWFtV3JpdGU7XG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlU3lzdGVtV3JpdGFibGVGaWxlU3RyZWFtL3NlZWtcbiAgICovXG4gIHNlZWs6IChwb3NpdGlvbjogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAvKipcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRmlsZVN5c3RlbVdyaXRhYmxlRmlsZVN0cmVhbS90cnVuY2F0ZVxuICAgKi9cbiAgdHJ1bmNhdGU6IChzaXplOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD47XG59XG4vKipcbiAqIEZpbGVTdHJlYW0ud3JpdGVcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZpbGVTeXN0ZW1Xcml0YWJsZUZpbGVTdHJlYW0vd3JpdGVcbiAqL1xuaW50ZXJmYWNlIEZpbGVTeXN0ZW1Xcml0YWJsZUZpbGVTdHJlYW1Xcml0ZSB7XG4gIChkYXRhOiBzdHJpbmcgfCBCdWZmZXJTb3VyY2UgfCBCbG9iKTogUHJvbWlzZTx2b2lkPjtcbiAgKG9wdGlvbnM6IHtcbiAgICB0eXBlOiAnd3JpdGUnO1xuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gICAgZGF0YTogc3RyaW5nIHwgQnVmZmVyU291cmNlIHwgQmxvYjtcbiAgfSk6IFByb21pc2U8dm9pZD47XG4gIChvcHRpb25zOiB7XG4gICAgdHlwZTogJ3NlZWsnO1xuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPHZvaWQ+O1xuICAob3B0aW9uczoge1xuICAgIHR5cGU6ICd0cnVuY2F0ZSc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICB9KTogUHJvbWlzZTx2b2lkPjtcbn1cbi8qKlxuICogRmlsZVN0cmVhbS53cml0ZVxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRmlsZVN5c3RlbVdyaXRhYmxlRmlsZVN0cmVhbS93cml0ZVxuICovXG50eXBlIEZpbGVTeXN0ZW1BY2Nlc3NXaW5kb3cgPSBXaW5kb3cgJiB7XG4gIHNob3dTYXZlRmlsZVBpY2tlcjogKG9wdGlvbnM6IEZpbGVTeXN0ZW1BY2Nlc3NTaG93U2F2ZUZpbGVPcHRpb25zKSA9PiBQcm9taXNlPEZpbGVTeXN0ZW1GaWxlSGFuZGxlPjtcbiAgc2hvd09wZW5GaWxlUGlja2VyOiAob3B0aW9uczogRmlsZVN5c3RlbUFjY2Vzc1Nob3dPcGVuRmlsZU9wdGlvbnMpID0+IFByb21pc2U8RmlsZVN5c3RlbUZpbGVIYW5kbGVbXT47XG59O1xudHlwZSBVc2VGaWxlU3lzdGVtQWNjZXNzQ29tbW9uT3B0aW9ucyA9IFBpY2s8RmlsZVN5c3RlbUFjY2Vzc1Nob3dPcGVuRmlsZU9wdGlvbnMsICd0eXBlcycgfCAnZXhjbHVkZUFjY2VwdEFsbE9wdGlvbic+O1xudHlwZSBVc2VGaWxlU3lzdGVtQWNjZXNzU2hvd1NhdmVGaWxlT3B0aW9ucyA9IFBpY2s8RmlsZVN5c3RlbUFjY2Vzc1Nob3dTYXZlRmlsZU9wdGlvbnMsICdzdWdnZXN0ZWROYW1lJz47XG50eXBlIFVzZUZpbGVTeXN0ZW1BY2Nlc3NPcHRpb25zID0gQ29uZmlndXJhYmxlV2luZG93ICYgVXNlRmlsZVN5c3RlbUFjY2Vzc0NvbW1vbk9wdGlvbnMgJiB7XG4gIC8qKlxuICAgKiBmaWxlIGRhdGEgdHlwZVxuICAgKi9cbiAgZGF0YVR5cGU/OiBNYXliZVJlZk9yR2V0dGVyPCdUZXh0JyB8ICdBcnJheUJ1ZmZlcicgfCAnQmxvYic+O1xufTtcbi8qKlxuICogQ3JlYXRlIGFuZCByZWFkIGFuZCB3cml0ZSBsb2NhbCBmaWxlcy5cbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUZpbGVTeXN0ZW1BY2Nlc3NcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGaWxlU3lzdGVtQWNjZXNzKCk6IFVzZUZpbGVTeXN0ZW1BY2Nlc3NSZXR1cm48c3RyaW5nIHwgQXJyYXlCdWZmZXIgfCBCbG9iPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlRmlsZVN5c3RlbUFjY2VzcyhvcHRpb25zOiBVc2VGaWxlU3lzdGVtQWNjZXNzT3B0aW9ucyAmIHtcbiAgZGF0YVR5cGU6ICdUZXh0Jztcbn0pOiBVc2VGaWxlU3lzdGVtQWNjZXNzUmV0dXJuPHN0cmluZz47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZpbGVTeXN0ZW1BY2Nlc3Mob3B0aW9uczogVXNlRmlsZVN5c3RlbUFjY2Vzc09wdGlvbnMgJiB7XG4gIGRhdGFUeXBlOiAnQXJyYXlCdWZmZXInO1xufSk6IFVzZUZpbGVTeXN0ZW1BY2Nlc3NSZXR1cm48QXJyYXlCdWZmZXI+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGaWxlU3lzdGVtQWNjZXNzKG9wdGlvbnM6IFVzZUZpbGVTeXN0ZW1BY2Nlc3NPcHRpb25zICYge1xuICBkYXRhVHlwZTogJ0Jsb2InO1xufSk6IFVzZUZpbGVTeXN0ZW1BY2Nlc3NSZXR1cm48QmxvYj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZpbGVTeXN0ZW1BY2Nlc3Mob3B0aW9uczogVXNlRmlsZVN5c3RlbUFjY2Vzc09wdGlvbnMpOiBVc2VGaWxlU3lzdGVtQWNjZXNzUmV0dXJuPHN0cmluZyB8IEFycmF5QnVmZmVyIHwgQmxvYj47XG5pbnRlcmZhY2UgVXNlRmlsZVN5c3RlbUFjY2Vzc1JldHVybjxUID0gc3RyaW5nPiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgZGF0YTogU2hhbGxvd1JlZjxUIHwgdW5kZWZpbmVkPjtcbiAgZmlsZTogU2hhbGxvd1JlZjxGaWxlIHwgdW5kZWZpbmVkPjtcbiAgZmlsZU5hbWU6IENvbXB1dGVkUmVmPHN0cmluZz47XG4gIGZpbGVNSU1FOiBDb21wdXRlZFJlZjxzdHJpbmc+O1xuICBmaWxlU2l6ZTogQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgZmlsZUxhc3RNb2RpZmllZDogQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgb3BlbjogKF9vcHRpb25zPzogVXNlRmlsZVN5c3RlbUFjY2Vzc0NvbW1vbk9wdGlvbnMpID0+IEF3YWl0YWJsZTx2b2lkPjtcbiAgY3JlYXRlOiAoX29wdGlvbnM/OiBVc2VGaWxlU3lzdGVtQWNjZXNzU2hvd1NhdmVGaWxlT3B0aW9ucykgPT4gQXdhaXRhYmxlPHZvaWQ+O1xuICBzYXZlOiAoX29wdGlvbnM/OiBVc2VGaWxlU3lzdGVtQWNjZXNzU2hvd1NhdmVGaWxlT3B0aW9ucykgPT4gQXdhaXRhYmxlPHZvaWQ+O1xuICBzYXZlQXM6IChfb3B0aW9ucz86IFVzZUZpbGVTeXN0ZW1BY2Nlc3NTaG93U2F2ZUZpbGVPcHRpb25zKSA9PiBBd2FpdGFibGU8dm9pZD47XG4gIHVwZGF0ZURhdGE6ICgpID0+IEF3YWl0YWJsZTx2b2lkPjtcbn1cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUZvY3VzL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VGb2N1c09wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICAvKipcbiAgICogSW5pdGlhbCB2YWx1ZS4gSWYgc2V0IHRydWUsIHRoZW4gZm9jdXMgd2lsbCBiZSBzZXQgb24gdGhlIHRhcmdldFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaW5pdGlhbFZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJlcGxpY2F0ZSB0aGUgOmZvY3VzLXZpc2libGUgYmVoYXZpb3Igb2YgQ1NTXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmb2N1c1Zpc2libGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJldmVudCBzY3JvbGxpbmcgdG8gdGhlIGVsZW1lbnQgd2hlbiBpdCBpcyBmb2N1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJldmVudFNjcm9sbD86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgVXNlRm9jdXNSZXR1cm4ge1xuICAvKipcbiAgICogSWYgcmVhZCBhcyB0cnVlLCB0aGVuIHRoZSBlbGVtZW50IGhhcyBmb2N1cy4gSWYgcmVhZCBhcyBmYWxzZSwgdGhlbiB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGZvY3VzXG4gICAqIElmIHNldCB0byB0cnVlLCB0aGVuIHRoZSBlbGVtZW50IHdpbGwgYmUgZm9jdXNlZC4gSWYgc2V0IHRvIGZhbHNlLCB0aGUgZWxlbWVudCB3aWxsIGJlIGJsdXJyZWQuXG4gICAqL1xuICBmb2N1c2VkOiBXcml0YWJsZUNvbXB1dGVkUmVmPGJvb2xlYW4+O1xufVxuLyoqXG4gKiBUcmFjayBvciBzZXQgdGhlIGZvY3VzIHN0YXRlIG9mIGEgRE9NIGVsZW1lbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRm9jdXNcbiAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBlbGVtZW50IGZvciB0aGUgZm9jdXMgYW5kIGJsdXIgZXZlbnRzLlxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VGb2N1cyh0YXJnZXQ6IE1heWJlRWxlbWVudFJlZiwgb3B0aW9ucz86IFVzZUZvY3VzT3B0aW9ucyk6IFVzZUZvY3VzUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRm9jdXNXaXRoaW4vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUZvY3VzV2l0aGluUmV0dXJuIHtcbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIGVsZW1lbnQgb3IgYW55IG9mIGl0cyBkZXNjZW5kYW50cyBhcmUgZm9jdXNlZFxuICAgKi9cbiAgZm9jdXNlZDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG59XG4vKipcbiAqIFRyYWNrIGlmIGZvY3VzIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHRhcmdldCBlbGVtZW50XG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlRm9jdXNXaXRoaW5cbiAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBlbGVtZW50IHRvIHRyYWNrXG4gKiBAcGFyYW0gb3B0aW9ucyBGb2N1cyB3aXRoaW4gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUZvY3VzV2l0aGluKHRhcmdldDogTWF5YmVFbGVtZW50UmVmLCBvcHRpb25zPzogQ29uZmlndXJhYmxlV2luZG93KTogVXNlRm9jdXNXaXRoaW5SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VGcHMvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUZwc09wdGlvbnMge1xuICAvKipcbiAgICogQ2FsY3VsYXRlIHRoZSBGUFMgb24gZXZlcnkgeCBmcmFtZXMuXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICBldmVyeT86IG51bWJlcjtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRnBzKG9wdGlvbnM/OiBVc2VGcHNPcHRpb25zKTogU2hhbGxvd1JlZjxudW1iZXI+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlRnVsbHNjcmVlbi9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlRnVsbHNjcmVlbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVEb2N1bWVudCB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGV4aXQgZnVsbHNjcmVlbiB3aGVuIGNvbXBvbmVudCBpcyB1bm1vdW50ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGF1dG9FeGl0PzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VGdWxsc2NyZWVuUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBpc0Z1bGxzY3JlZW46IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIGVudGVyOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBleGl0OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB0b2dnbGU6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG4vKipcbiAqIFJlYWN0aXZlIEZ1bGxzY3JlZW4gQVBJLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUZ1bGxzY3JlZW5cbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlRnVsbHNjcmVlbih0YXJnZXQ/OiBNYXliZUVsZW1lbnRSZWYsIG9wdGlvbnM/OiBVc2VGdWxsc2NyZWVuT3B0aW9ucyk6IFVzZUZ1bGxzY3JlZW5SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VHYW1lcGFkL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VHYW1lcGFkT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdywgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHt9XG5pbnRlcmZhY2UgVXNlR2FtZXBhZFJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlLCBQYXVzYWJsZSB7XG4gIG9uQ29ubmVjdGVkOiBFdmVudEhvb2tPbjxudW1iZXI+O1xuICBvbkRpc2Nvbm5lY3RlZDogRXZlbnRIb29rT248bnVtYmVyPjtcbiAgZ2FtZXBhZHM6IFJlZjxHYW1lcGFkW10+O1xufVxuLyoqXG4gKiBNYXBzIGEgc3RhbmRhcmQgc3RhbmRhcmQgZ2FtZXBhZCB0byBhbiBYYm94IDM2MCBDb250cm9sbGVyLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIG1hcEdhbWVwYWRUb1hib3gzNjBDb250cm9sbGVyKGdhbWVwYWQ6IFJlZjxHYW1lcGFkIHwgdW5kZWZpbmVkPik6IHZ1ZTAuQ29tcHV0ZWRSZWY8e1xuICBidXR0b25zOiB7XG4gICAgYTogR2FtZXBhZEJ1dHRvbjtcbiAgICBiOiBHYW1lcGFkQnV0dG9uO1xuICAgIHg6IEdhbWVwYWRCdXR0b247XG4gICAgeTogR2FtZXBhZEJ1dHRvbjtcbiAgfTtcbiAgYnVtcGVyOiB7XG4gICAgbGVmdDogR2FtZXBhZEJ1dHRvbjtcbiAgICByaWdodDogR2FtZXBhZEJ1dHRvbjtcbiAgfTtcbiAgdHJpZ2dlcnM6IHtcbiAgICBsZWZ0OiBHYW1lcGFkQnV0dG9uO1xuICAgIHJpZ2h0OiBHYW1lcGFkQnV0dG9uO1xuICB9O1xuICBzdGljazoge1xuICAgIGxlZnQ6IHtcbiAgICAgIGhvcml6b250YWw6IG51bWJlcjtcbiAgICAgIHZlcnRpY2FsOiBudW1iZXI7XG4gICAgICBidXR0b246IEdhbWVwYWRCdXR0b247XG4gICAgfTtcbiAgICByaWdodDoge1xuICAgICAgaG9yaXpvbnRhbDogbnVtYmVyO1xuICAgICAgdmVydGljYWw6IG51bWJlcjtcbiAgICAgIGJ1dHRvbjogR2FtZXBhZEJ1dHRvbjtcbiAgICB9O1xuICB9O1xuICBkcGFkOiB7XG4gICAgdXA6IEdhbWVwYWRCdXR0b247XG4gICAgZG93bjogR2FtZXBhZEJ1dHRvbjtcbiAgICBsZWZ0OiBHYW1lcGFkQnV0dG9uO1xuICAgIHJpZ2h0OiBHYW1lcGFkQnV0dG9uO1xuICB9O1xuICBiYWNrOiBHYW1lcGFkQnV0dG9uO1xuICBzdGFydDogR2FtZXBhZEJ1dHRvbjtcbn0gfCBudWxsPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlR2FtZXBhZChvcHRpb25zPzogVXNlR2FtZXBhZE9wdGlvbnMpOiBVc2VHYW1lcGFkUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlR2VvbG9jYXRpb24vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUdlb2xvY2F0aW9uT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8UG9zaXRpb25PcHRpb25zPiwgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHtcbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VHZW9sb2NhdGlvblJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgY29vcmRzOiBSZWY8T21pdDxHZW9sb2NhdGlvblBvc2l0aW9uWydjb29yZHMnXSwgJ3RvSlNPTic+PjtcbiAgbG9jYXRlZEF0OiBTaGFsbG93UmVmPG51bWJlciB8IG51bGw+O1xuICBlcnJvcjogU2hhbGxvd1JlZjxHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IgfCBudWxsPjtcbiAgcmVzdW1lOiAoKSA9PiB2b2lkO1xuICBwYXVzZTogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogUmVhY3RpdmUgR2VvbG9jYXRpb24gQVBJLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUdlb2xvY2F0aW9uXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUdlb2xvY2F0aW9uKG9wdGlvbnM/OiBVc2VHZW9sb2NhdGlvbk9wdGlvbnMpOiBVc2VHZW9sb2NhdGlvblJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUlkbGUvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZUlkbGVPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93LCBDb25maWd1cmFibGVFdmVudEZpbHRlciB7XG4gIC8qKlxuICAgKiBFdmVudCBuYW1lcyB0aGF0IGxpc3RlbiB0byBmb3IgZGV0ZWN0ZWQgdXNlciBhY3Rpdml0eVxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ21vdXNlbW92ZScsICdtb3VzZWRvd24nLCAncmVzaXplJywgJ2tleWRvd24nLCAndG91Y2hzdGFydCcsICd3aGVlbCddXG4gICAqL1xuICBldmVudHM/OiBXaW5kb3dFdmVudE5hbWVbXTtcbiAgLyoqXG4gICAqIExpc3RlbiBmb3IgZG9jdW1lbnQgdmlzaWJpbGl0eSBjaGFuZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgbGlzdGVuRm9yVmlzaWJpbGl0eUNoYW5nZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbml0aWFsIHN0YXRlIG9mIHRoZSByZWYgaWRsZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaW5pdGlhbFN0YXRlPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VJZGxlUmV0dXJuIGV4dGVuZHMgU3RvcHBhYmxlIHtcbiAgaWRsZTogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgbGFzdEFjdGl2ZTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICByZXNldDogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogVHJhY2tzIHdoZXRoZXIgdGhlIHVzZXIgaXMgYmVpbmcgaW5hY3RpdmUuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlSWRsZVxuICogQHBhcmFtIHRpbWVvdXQgZGVmYXVsdCB0byAxIG1pbnV0ZVxuICogQHBhcmFtIG9wdGlvbnMgSWRsZU9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VJZGxlKHRpbWVvdXQ/OiBudW1iZXIsIG9wdGlvbnM/OiBVc2VJZGxlT3B0aW9ucyk6IFVzZUlkbGVSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VJbWFnZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlSW1hZ2VPcHRpb25zIHtcbiAgLyoqIEFkZHJlc3Mgb2YgdGhlIHJlc291cmNlICovXG4gIHNyYzogc3RyaW5nO1xuICAvKiogSW1hZ2VzIHRvIHVzZSBpbiBkaWZmZXJlbnQgc2l0dWF0aW9ucywgZS5nLiwgaGlnaC1yZXNvbHV0aW9uIGRpc3BsYXlzLCBzbWFsbCBtb25pdG9ycywgZXRjLiAqL1xuICBzcmNzZXQ/OiBzdHJpbmc7XG4gIC8qKiBJbWFnZSBzaXplcyBmb3IgZGlmZmVyZW50IHBhZ2UgbGF5b3V0cyAqL1xuICBzaXplcz86IHN0cmluZztcbiAgLyoqIEltYWdlIGFsdGVybmF0aXZlIGluZm9ybWF0aW9uICovXG4gIGFsdD86IHN0cmluZztcbiAgLyoqIEltYWdlIGNsYXNzZXMgKi9cbiAgY2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBJbWFnZSBsb2FkaW5nICovXG4gIGxvYWRpbmc/OiBIVE1MSW1hZ2VFbGVtZW50Wydsb2FkaW5nJ107XG4gIC8qKiBJbWFnZSBDT1JTIHNldHRpbmdzICovXG4gIGNyb3Nzb3JpZ2luPzogc3RyaW5nO1xuICAvKiogUmVmZXJyZXIgcG9saWN5IGZvciBmZXRjaCBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJyZXItUG9saWN5ICovXG4gIHJlZmVycmVyUG9saWN5PzogSFRNTEltYWdlRWxlbWVudFsncmVmZXJyZXJQb2xpY3knXTtcbiAgLyoqIEltYWdlIHdpZHRoICovXG4gIHdpZHRoPzogSFRNTEltYWdlRWxlbWVudFsnd2lkdGgnXTtcbiAgLyoqIEltYWdlIGhlaWdodCAqL1xuICBoZWlnaHQ/OiBIVE1MSW1hZ2VFbGVtZW50WydoZWlnaHQnXTtcbiAgLyoqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbWcjZGVjb2RpbmcgKi9cbiAgZGVjb2Rpbmc/OiBIVE1MSW1hZ2VFbGVtZW50WydkZWNvZGluZyddO1xuICAvKiogUHJvdmlkZXMgYSBoaW50IG9mIHRoZSByZWxhdGl2ZSBwcmlvcml0eSB0byB1c2Ugd2hlbiBmZXRjaGluZyB0aGUgaW1hZ2UgKi9cbiAgZmV0Y2hQcmlvcml0eT86IEhUTUxJbWFnZUVsZW1lbnRbJ2ZldGNoUHJpb3JpdHknXTtcbiAgLyoqIFByb3ZpZGVzIGEgaGludCBvZiB0aGUgaW1wb3J0YW5jZSBvZiB0aGUgaW1hZ2UgKi9cbiAgaXNtYXA/OiBIVE1MSW1hZ2VFbGVtZW50Wydpc01hcCddO1xuICAvKiogVGhlIHBhcnRpYWwgVVJMIChzdGFydGluZyB3aXRoICMpIG9mIGFuIGltYWdlIG1hcCBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnQgKi9cbiAgdXNlbWFwPzogSFRNTEltYWdlRWxlbWVudFsndXNlTWFwJ107XG59XG50eXBlIFVzZUltYWdlUmV0dXJuID0gVXNlQXN5bmNTdGF0ZVJldHVybjxIVE1MSW1hZ2VFbGVtZW50IHwgdW5kZWZpbmVkLCBhbnlbXSwgdHJ1ZT47XG4vKipcbiAqIFJlYWN0aXZlIGxvYWQgYW4gaW1hZ2UgaW4gdGhlIGJyb3dzZXIsIHlvdSBjYW4gd2FpdCB0aGUgcmVzdWx0IHRvIGRpc3BsYXkgaXQgb3Igc2hvdyBhIGZhbGxiYWNrLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZUltYWdlXG4gKiBAcGFyYW0gb3B0aW9ucyBJbWFnZSBhdHRyaWJ1dGVzLCBhcyB1c2VkIGluIHRoZSA8aW1nPiB0YWdcbiAqIEBwYXJhbSBhc3luY1N0YXRlT3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUltYWdlPFNoYWxsb3cgZXh0ZW5kcyB0cnVlPihvcHRpb25zOiBNYXliZVJlZk9yR2V0dGVyPFVzZUltYWdlT3B0aW9ucz4sIGFzeW5jU3RhdGVPcHRpb25zPzogVXNlQXN5bmNTdGF0ZU9wdGlvbnM8U2hhbGxvdz4pOiBVc2VJbWFnZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVNjcm9sbC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlU2Nyb2xsT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBUaHJvdHRsZSB0aW1lIGZvciBzY3JvbGwgZXZlbnQsIGl04oCZcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICB0aHJvdHRsZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBjaGVjayB0aW1lIHdoZW4gc2Nyb2xsaW5nIGVuZHMuXG4gICAqIFRoaXMgY29uZmlndXJhdGlvbiB3aWxsIGJlIHNldHRpbmcgdG8gKHRocm90dGxlICsgaWRsZSkgd2hlbiB0aGUgYHRocm90dGxlYCBpcyBjb25maWd1cmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyMDBcbiAgICovXG4gIGlkbGU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPZmZzZXQgYXJyaXZlZCBzdGF0ZXMgYnkgeCBwaXhlbHNcbiAgICpcbiAgICovXG4gIG9mZnNldD86IHtcbiAgICBsZWZ0PzogbnVtYmVyO1xuICAgIHJpZ2h0PzogbnVtYmVyO1xuICAgIHRvcD86IG51bWJlcjtcbiAgICBib3R0b20/OiBudW1iZXI7XG4gIH07XG4gIC8qKlxuICAgKiBVc2UgTXV0YXRpb25PYnNlcnZlciB0byBtb25pdG9yIHNwZWNpZmljIERPTSBjaGFuZ2VzLFxuICAgKiBzdWNoIGFzIGF0dHJpYnV0ZSBtb2RpZmljYXRpb25zLCBjaGlsZCBub2RlIGFkZGl0aW9ucyBvciByZW1vdmFscywgb3Igc3VidHJlZSBjaGFuZ2VzLlxuICAgKiBAZGVmYXVsdCB7IG11dGF0aW9uOiBib29sZWFuIH1cbiAgICovXG4gIG9ic2VydmU/OiBib29sZWFuIHwge1xuICAgIG11dGF0aW9uPzogYm9vbGVhbjtcbiAgfTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgaXQgd2hlbiBzY3JvbGxpbmcuXG4gICAqXG4gICAqL1xuICBvblNjcm9sbD86IChlOiBFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFRyaWdnZXIgaXQgd2hlbiBzY3JvbGxpbmcgZW5kcy5cbiAgICpcbiAgICovXG4gIG9uU3RvcD86IChlOiBFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIExpc3RlbmVyIG9wdGlvbnMgZm9yIHNjcm9sbCBldmVudC5cbiAgICpcbiAgICogQGRlZmF1bHQge2NhcHR1cmU6IGZhbHNlLCBwYXNzaXZlOiB0cnVlfVxuICAgKi9cbiAgZXZlbnRMaXN0ZW5lck9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM7XG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IHNwZWNpZnkgYSBzY3JvbGwgYmVoYXZpb3Igb2YgYGF1dG9gIChkZWZhdWx0LCBub3Qgc21vb3RoIHNjcm9sbGluZykgb3JcbiAgICogYHNtb290aGAgKGZvciBzbW9vdGggc2Nyb2xsaW5nKSB3aGljaCB0YWtlcyBlZmZlY3Qgd2hlbiBjaGFuZ2luZyB0aGUgYHhgIG9yIGB5YCByZWZzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXV0bydcbiAgICovXG4gIGJlaGF2aW9yPzogTWF5YmVSZWZPckdldHRlcjxTY3JvbGxCZWhhdmlvcj47XG4gIC8qKlxuICAgKiBPbiBlcnJvciBjYWxsYmFja1xuICAgKlxuICAgKiBEZWZhdWx0IGxvZyBlcnJvciB0byBgY29uc29sZS5lcnJvcmBcbiAgICovXG4gIG9uRXJyb3I/OiAoZXJyb3I6IHVua25vd24pID0+IHZvaWQ7XG59XG5pbnRlcmZhY2UgVXNlU2Nyb2xsUmV0dXJuIHtcbiAgeDogV3JpdGFibGVDb21wdXRlZFJlZjxudW1iZXI+O1xuICB5OiBXcml0YWJsZUNvbXB1dGVkUmVmPG51bWJlcj47XG4gIGlzU2Nyb2xsaW5nOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBhcnJpdmVkU3RhdGU6IHtcbiAgICBsZWZ0OiBib29sZWFuO1xuICAgIHJpZ2h0OiBib29sZWFuO1xuICAgIHRvcDogYm9vbGVhbjtcbiAgICBib3R0b206IGJvb2xlYW47XG4gIH07XG4gIGRpcmVjdGlvbnM6IHtcbiAgICBsZWZ0OiBib29sZWFuO1xuICAgIHJpZ2h0OiBib29sZWFuO1xuICAgIHRvcDogYm9vbGVhbjtcbiAgICBib3R0b206IGJvb2xlYW47XG4gIH07XG4gIG1lYXN1cmU6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIHNjcm9sbC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTY3JvbGxcbiAqIEBwYXJhbSBlbGVtZW50XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNjcm9sbChlbGVtZW50OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB8IFdpbmRvdyB8IERvY3VtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VTY3JvbGxPcHRpb25zKTogVXNlU2Nyb2xsUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlSW5maW5pdGVTY3JvbGwvaW5kZXguZC50c1xudHlwZSBJbmZpbml0ZVNjcm9sbEVsZW1lbnQgPSBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQgfCBXaW5kb3cgfCBEb2N1bWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG5pbnRlcmZhY2UgVXNlSW5maW5pdGVTY3JvbGxPcHRpb25zPFQgZXh0ZW5kcyBJbmZpbml0ZVNjcm9sbEVsZW1lbnQgPSBJbmZpbml0ZVNjcm9sbEVsZW1lbnQ+IGV4dGVuZHMgVXNlU2Nyb2xsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgYW5kIHRoZSBib3R0b20gb2YgdGhlIHZpZXdwb3J0XG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGRpc3RhbmNlPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiBpbiB3aGljaCB0byBsaXN0ZW4gdGhlIHNjcm9sbC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2JvdHRvbSdcbiAgICovXG4gIGRpcmVjdGlvbj86ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xuICAvKipcbiAgICogVGhlIGludGVydmFsIHRpbWUgYmV0d2VlbiB0d28gbG9hZCBtb3JlICh0byBhdm9pZCB0b28gbWFueSBpbnZva2VzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICBpbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgbW9yZSBjb250ZW50IGNhbiBiZSBsb2FkZWQgZm9yIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAgICogU2hvdWxkIHJldHVybiBgdHJ1ZWAgaWYgbG9hZGluZyBtb3JlIGNvbnRlbnQgaXMgYWxsb3dlZCBmb3IgdGhlIGdpdmVuIGVsZW1lbnQsXG4gICAqIGFuZCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGNhbkxvYWRNb3JlPzogKGVsOiBUKSA9PiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZUluZmluaXRlU2Nyb2xsUmV0dXJuIHtcbiAgaXNMb2FkaW5nOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgcmVzZXQ6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIGluZmluaXRlIHNjcm9sbC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VJbmZpbml0ZVNjcm9sbFxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUluZmluaXRlU2Nyb2xsPFQgZXh0ZW5kcyBJbmZpbml0ZVNjcm9sbEVsZW1lbnQ+KGVsZW1lbnQ6IE1heWJlUmVmT3JHZXR0ZXI8VD4sIG9uTG9hZE1vcmU6IChzdGF0ZTogVW53cmFwTmVzdGVkUmVmczxVc2VTY3JvbGxSZXR1cm4+KSA9PiBBd2FpdGFibGU8dm9pZD4sIG9wdGlvbnM/OiBVc2VJbmZpbml0ZVNjcm9sbE9wdGlvbnM8VD4pOiBVc2VJbmZpbml0ZVNjcm9sbFJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZUtleU1vZGlmaWVyL2luZGV4LmQudHNcbnR5cGUgS2V5TW9kaWZpZXIgPSAnQWx0JyB8ICdBbHRHcmFwaCcgfCAnQ2Fwc0xvY2snIHwgJ0NvbnRyb2wnIHwgJ0ZuJyB8ICdGbkxvY2snIHwgJ01ldGEnIHwgJ051bUxvY2snIHwgJ1Njcm9sbExvY2snIHwgJ1NoaWZ0JyB8ICdTeW1ib2wnIHwgJ1N5bWJvbExvY2snO1xuaW50ZXJmYWNlIFVzZU1vZGlmaWVyT3B0aW9uczxJbml0aWFsPiBleHRlbmRzIENvbmZpZ3VyYWJsZURvY3VtZW50IHtcbiAgLyoqXG4gICAqIEV2ZW50IG5hbWVzIHRoYXQgd2lsbCBwcm9tcHQgdXBkYXRlIHRvIG1vZGlmaWVyIHN0YXRlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBbJ21vdXNlZG93bicsICdtb3VzZXVwJywgJ2tleWRvd24nLCAna2V5dXAnXVxuICAgKi9cbiAgZXZlbnRzPzogV2luZG93RXZlbnROYW1lW107XG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlIG9mIHRoZSByZXR1cm5lZCByZWZcbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgaW5pdGlhbD86IEluaXRpYWw7XG59XG50eXBlIFVzZUtleU1vZGlmaWVyUmV0dXJuPEluaXRpYWw+ID0gU2hhbGxvd1JlZjxJbml0aWFsIGV4dGVuZHMgYm9vbGVhbiA/IGJvb2xlYW4gOiBib29sZWFuIHwgbnVsbD47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZUtleU1vZGlmaWVyPEluaXRpYWwgZXh0ZW5kcyBib29sZWFuIHwgbnVsbD4obW9kaWZpZXI6IEtleU1vZGlmaWVyLCBvcHRpb25zPzogVXNlTW9kaWZpZXJPcHRpb25zPEluaXRpYWw+KTogVXNlS2V5TW9kaWZpZXJSZXR1cm48SW5pdGlhbD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VMb2NhbFN0b3JhZ2UvaW5kZXguZC50c1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2Uoa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8c3RyaW5nPik6IFJlbW92YWJsZVJlZjxzdHJpbmc+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2Uoa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxib29sZWFuPiwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPGJvb2xlYW4+KTogUmVtb3ZhYmxlUmVmPGJvb2xlYW4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2Uoa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8bnVtYmVyPik6IFJlbW92YWJsZVJlZjxudW1iZXI+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2U8VD4oa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxUPiwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPFQ+KTogUmVtb3ZhYmxlUmVmPFQ+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2U8VCA9IHVua25vd24+KGtleTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBpbml0aWFsVmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8bnVsbD4sIG9wdGlvbnM/OiBVc2VTdG9yYWdlT3B0aW9uczxUPik6IFJlbW92YWJsZVJlZjxUPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU1hZ2ljS2V5cy9hbGlhc01hcC5kLnRzXG5kZWNsYXJlIGNvbnN0IERlZmF1bHRNYWdpY0tleXNBbGlhc01hcDogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VNYWdpY0tleXMvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZU1hZ2ljS2V5c09wdGlvbnM8UmVhY3RpdmUgZXh0ZW5kcyBib29sZWFuPiB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVhY3RpdmUgb2JqZWN0IGluc3RlYWQgb2YgYW4gb2JqZWN0IG9mIHJlZnNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWN0aXZlPzogUmVhY3RpdmU7XG4gIC8qKlxuICAgKiBUYXJnZXQgZm9yIGxpc3RlbmluZyBldmVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgd2luZG93XG4gICAqL1xuICB0YXJnZXQ/OiBNYXliZVJlZk9yR2V0dGVyPEV2ZW50VGFyZ2V0PjtcbiAgLyoqXG4gICAqIEFsaWFzIG1hcCBmb3Iga2V5cywgYWxsIHRoZSBrZXlzIHNob3VsZCBiZSBsb3dlcmNhc2VcbiAgICogeyB0YXJnZXQ6IGtleWNvZGUgfVxuICAgKlxuICAgKiBAZXhhbXBsZSB7IGN0cmw6IFwiY29udHJvbFwiIH1cbiAgICogQGRlZmF1bHQgPHByZWRlZmluZWQtbWFwPlxuICAgKi9cbiAgYWxpYXNNYXA/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKipcbiAgICogUmVnaXN0ZXIgcGFzc2l2ZSBsaXN0ZW5lclxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBwYXNzaXZlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEN1c3RvbSBldmVudCBoYW5kbGVyIGZvciBrZXlkb3duL2tleXVwIGV2ZW50LlxuICAgKiBVc2VmdWwgd2hlbiB5b3Ugd2FudCB0byBhcHBseSBjdXN0b20gbG9naWMuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgYGUucHJldmVudERlZmF1bHQoKWAsIHlvdSB3aWxsIG5lZWQgdG8gcGFzcyBgcGFzc2l2ZTogZmFsc2VgIHRvIHVzZU1hZ2ljS2V5cygpLlxuICAgKi9cbiAgb25FdmVudEZpcmVkPzogKGU6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQgfCBib29sZWFuO1xufVxuaW50ZXJmYWNlIE1hZ2ljS2V5c0ludGVybmFsIHtcbiAgLyoqXG4gICAqIEEgU2V0IG9mIGN1cnJlbnRseSBwcmVzc2VkIGtleXMsXG4gICAqIFN0b3JlcyByYXcga2V5Q29kZXMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQva2V5XG4gICAqL1xuICBjdXJyZW50OiBTZXQ8c3RyaW5nPjtcbn1cbnR5cGUgVXNlTWFnaWNLZXlzUmV0dXJuPFJlYWN0aXZlIGV4dGVuZHMgYm9vbGVhbj4gPSBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBSZWFjdGl2ZSBleHRlbmRzIHRydWUgPyBib29sZWFuIDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj4+ICYgTWFnaWNLZXlzSW50ZXJuYWw+O1xuLyoqXG4gKiBSZWFjdGl2ZSBrZXlzIHByZXNzZWQgc3RhdGUsIHdpdGggbWFnaWNhbCBrZXlzIGNvbWJpbmF0aW9uIHN1cHBvcnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTWFnaWNLZXlzXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlTWFnaWNLZXlzPFQgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+KG9wdGlvbnM/OiBVc2VNYWdpY0tleXNPcHRpb25zPFQ+KTogVXNlTWFnaWNLZXlzUmV0dXJuPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTWVkaWFDb250cm9scy9pbmRleC5kLnRzXG4vKipcbiAqIE1hbnkgb2YgdGhlIGpzZG9jIGRlZmluaXRpb25zIGhlcmUgYXJlIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlXG4gKiBkb2N1bWVudGF0aW9uIGZyb20gTUROKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MTWVkaWFFbGVtZW50KVxuICovXG5pbnRlcmZhY2UgVXNlTWVkaWFTb3VyY2Uge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSB1cmwgZm9yIHRoZSBtZWRpYVxuICAgKi9cbiAgc3JjOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbWVkaWEgY29kZWMgdHlwZVxuICAgKi9cbiAgdHlwZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWVkaWEgcXVlcnkgZm9yIHRoZSByZXNvdXJjZSdzIGludGVuZGVkIG1lZGlhLlxuICAgKi9cbiAgbWVkaWE/OiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgVXNlTWVkaWFUZXh0VHJhY2tTb3VyY2Uge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHRyYWNrIHNob3VsZCBiZSBlbmFibGVkIHVubGVzcyB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGluZGljYXRlXG4gICAqIHRoYXQgYW5vdGhlciB0cmFjayBpcyBtb3JlIGFwcHJvcHJpYXRlXG4gICAqL1xuICBkZWZhdWx0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEhvdyB0aGUgdGV4dCB0cmFjayBpcyBtZWFudCB0byBiZSB1c2VkLiBJZiBvbWl0dGVkIHRoZSBkZWZhdWx0IGtpbmQgaXMgc3VidGl0bGVzLlxuICAgKi9cbiAga2luZDogVGV4dFRyYWNrS2luZDtcbiAgLyoqXG4gICAqIEEgdXNlci1yZWFkYWJsZSB0aXRsZSBvZiB0aGUgdGV4dCB0cmFjayB3aGljaCBpcyB1c2VkIGJ5IHRoZSBicm93c2VyXG4gICAqIHdoZW4gbGlzdGluZyBhdmFpbGFibGUgdGV4dCB0cmFja3MuXG4gICAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogQWRkcmVzcyBvZiB0aGUgdHJhY2sgKC52dHQgZmlsZSkuIE11c3QgYmUgYSB2YWxpZCBVUkwuIFRoaXMgYXR0cmlidXRlXG4gICAqIG11c3QgYmUgc3BlY2lmaWVkIGFuZCBpdHMgVVJMIHZhbHVlIG11c3QgaGF2ZSB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGRvY3VtZW50XG4gICAqL1xuICBzcmM6IHN0cmluZztcbiAgLyoqXG4gICAqIExhbmd1YWdlIG9mIHRoZSB0cmFjayB0ZXh0IGRhdGEuIEl0IG11c3QgYmUgYSB2YWxpZCBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLlxuICAgKiBJZiB0aGUga2luZCBhdHRyaWJ1dGUgaXMgc2V0IHRvIHN1YnRpdGxlcywgdGhlbiBzcmNsYW5nIG11c3QgYmUgZGVmaW5lZC5cbiAgICovXG4gIHNyY0xhbmc6IHN0cmluZztcbn1cbmludGVyZmFjZSBVc2VNZWRpYUNvbnRyb2xzT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZURvY3VtZW50IHtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZm9yIHRoZSBtZWRpYSwgbWF5IGVpdGhlciBiZSBhIHN0cmluZywgYSBgVXNlTWVkaWFTb3VyY2VgIG9iamVjdCwgb3IgYSBsaXN0XG4gICAqIG9mIGBVc2VNZWRpYVNvdXJjZWAgb2JqZWN0cy5cbiAgICovXG4gIHNyYz86IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nIHwgVXNlTWVkaWFTb3VyY2UgfCBVc2VNZWRpYVNvdXJjZVtdPjtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiB0ZXh0IHRyYWNrcyBmb3IgdGhlIG1lZGlhXG4gICAqL1xuICB0cmFja3M/OiBNYXliZVJlZk9yR2V0dGVyPFVzZU1lZGlhVGV4dFRyYWNrU291cmNlW10+O1xufVxuaW50ZXJmYWNlIFVzZU1lZGlhVGV4dFRyYWNrIHtcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgdGV4dCB0cmFja1xuICAgKi9cbiAgaWQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRyYWNrIGxhYmVsXG4gICAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogTGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrIHRleHQgZGF0YS4gSXQgbXVzdCBiZSBhIHZhbGlkIEJDUCA0NyBsYW5ndWFnZSB0YWcuXG4gICAqIElmIHRoZSBraW5kIGF0dHJpYnV0ZSBpcyBzZXQgdG8gc3VidGl0bGVzLCB0aGVuIHNyY2xhbmcgbXVzdCBiZSBkZWZpbmVkLlxuICAgKi9cbiAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZGlzcGxheSBtb2RlIG9mIHRoZSB0ZXh0IHRyYWNrLCBlaXRoZXIgYGRpc2FibGVkYCxcbiAgICogYGhpZGRlbmAsIG9yIGBzaG93aW5nYFxuICAgKi9cbiAgbW9kZTogVGV4dFRyYWNrTW9kZTtcbiAgLyoqXG4gICAqIEhvdyB0aGUgdGV4dCB0cmFjayBpcyBtZWFudCB0byBiZSB1c2VkLiBJZiBvbWl0dGVkIHRoZSBkZWZhdWx0IGtpbmQgaXMgc3VidGl0bGVzLlxuICAgKi9cbiAga2luZDogVGV4dFRyYWNrS2luZDtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgdHJhY2sncyBpbi1iYW5kIG1ldGFkYXRhIHRyYWNrIGRpc3BhdGNoIHR5cGUuXG4gICAqL1xuICBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdGV4dCB0cmFjayBjdWVzXG4gICAqL1xuICBjdWVzOiBUZXh0VHJhY2tDdWVMaXN0IHwgbnVsbDtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBhY3RpdmUgdGV4dCB0cmFjayBjdWVzXG4gICAqL1xuICBhY3RpdmVDdWVzOiBUZXh0VHJhY2tDdWVMaXN0IHwgbnVsbDtcbn1cbmludGVyZmFjZSBVc2VNZWRpYUNvbnRyb2xzUmV0dXJuIHtcbiAgY3VycmVudFRpbWU6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgZHVyYXRpb246IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgd2FpdGluZzogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgc2Vla2luZzogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgZW5kZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIHN0YWxsZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIGJ1ZmZlcmVkOiBSZWY8W251bWJlciwgbnVtYmVyXVtdPjtcbiAgcGxheWluZzogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgcmF0ZTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICB2b2x1bWU6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgbXV0ZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIHRyYWNrczogUmVmPFVzZU1lZGlhVGV4dFRyYWNrW10+O1xuICBzZWxlY3RlZFRyYWNrOiBTaGFsbG93UmVmPG51bWJlcj47XG4gIGVuYWJsZVRyYWNrOiAodHJhY2s6IG51bWJlciB8IFVzZU1lZGlhVGV4dFRyYWNrLCBkaXNhYmxlVHJhY2tzPzogYm9vbGVhbikgPT4gdm9pZDtcbiAgZGlzYWJsZVRyYWNrOiAodHJhY2s/OiBudW1iZXIgfCBVc2VNZWRpYVRleHRUcmFjaykgPT4gdm9pZDtcbiAgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlOiBib29sZWFuO1xuICB0b2dnbGVQaWN0dXJlSW5QaWN0dXJlOiAoKSA9PiBQcm9taXNlPFBpY3R1cmVJblBpY3R1cmVXaW5kb3cgfCB2b2lkPjtcbiAgaXNQaWN0dXJlSW5QaWN0dXJlOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBvblNvdXJjZUVycm9yOiBFdmVudEhvb2tPbjxFdmVudD47XG4gIG9uUGxheWJhY2tFcnJvcjogRXZlbnRIb29rT248RXZlbnQ+O1xufVxuZGVjbGFyZSBmdW5jdGlvbiB1c2VNZWRpYUNvbnRyb2xzKHRhcmdldDogTWF5YmVSZWY8SFRNTE1lZGlhRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlTWVkaWFDb250cm9sc09wdGlvbnMpOiBVc2VNZWRpYUNvbnRyb2xzUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTWVkaWFRdWVyeS9pbmRleC5kLnRzXG4vKipcbiAqIFJlYWN0aXZlIE1lZGlhIFF1ZXJ5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZU1lZGlhUXVlcnlcbiAqIEBwYXJhbSBxdWVyeVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VNZWRpYVF1ZXJ5KHF1ZXJ5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIG9wdGlvbnM/OiBDb25maWd1cmFibGVXaW5kb3cgJiB7XG4gIHNzcldpZHRoPzogbnVtYmVyO1xufSk6IHZ1ZTAuQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VNZW1vaXplL2luZGV4LmQudHNcbnR5cGUgQ2FjaGVLZXkgPSBhbnk7XG4vKipcbiAqIEN1c3RvbSBtZW1vaXplIGNhY2hlIGhhbmRsZXJcbiAqL1xuaW50ZXJmYWNlIFVzZU1lbW9pemVDYWNoZTxLZXksIFZhbHVlPiB7XG4gIC8qKlxuICAgKiBHZXQgdmFsdWUgZm9yIGtleVxuICAgKi9cbiAgZ2V0OiAoa2V5OiBLZXkpID0+IFZhbHVlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogU2V0IHZhbHVlIGZvciBrZXlcbiAgICovXG4gIHNldDogKGtleTogS2V5LCB2YWx1ZTogVmFsdWUpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBSZXR1cm4gZmxhZyBpZiBrZXkgZXhpc3RzXG4gICAqL1xuICBoYXM6IChrZXk6IEtleSkgPT4gYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlbGV0ZSB2YWx1ZSBmb3Iga2V5XG4gICAqL1xuICBkZWxldGU6IChrZXk6IEtleSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENsZWFyIGNhY2hlXG4gICAqL1xuICBjbGVhcjogKCkgPT4gdm9pZDtcbn1cbi8qKlxuICogTWVtb2l6ZWQgZnVuY3Rpb25cbiAqL1xuaW50ZXJmYWNlIFVzZU1lbW9pemVSZXR1cm48UmVzdWx0LCBBcmdzIGV4dGVuZHMgdW5rbm93bltdPiB7XG4gIC8qKlxuICAgKiBHZXQgcmVzdWx0IGZyb20gY2FjaGUgb3IgY2FsbCBtZW1vaXplZCBmdW5jdGlvblxuICAgKi9cbiAgKC4uLmFyZ3M6IEFyZ3MpOiBSZXN1bHQ7XG4gIC8qKlxuICAgKiBDYWxsIG1lbW9pemVkIGZ1bmN0aW9uIGFuZCB1cGRhdGUgY2FjaGVcbiAgICovXG4gIGxvYWQ6ICguLi5hcmdzOiBBcmdzKSA9PiBSZXN1bHQ7XG4gIC8qKlxuICAgKiBEZWxldGUgY2FjaGUgb2YgZ2l2ZW4gYXJndW1lbnRzXG4gICAqL1xuICBkZWxldGU6ICguLi5hcmdzOiBBcmdzKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2xlYXIgY2FjaGVcbiAgICovXG4gIGNsZWFyOiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogR2VuZXJhdGUgY2FjaGUga2V5IGZvciBnaXZlbiBhcmd1bWVudHNcbiAgICovXG4gIGdlbmVyYXRlS2V5OiAoLi4uYXJnczogQXJncykgPT4gQ2FjaGVLZXk7XG4gIC8qKlxuICAgKiBDYWNoZSBjb250YWluZXJcbiAgICovXG4gIGNhY2hlOiBVc2VNZW1vaXplQ2FjaGU8Q2FjaGVLZXksIFJlc3VsdD47XG59XG5pbnRlcmZhY2UgVXNlTWVtb2l6ZU9wdGlvbnM8UmVzdWx0LCBBcmdzIGV4dGVuZHMgdW5rbm93bltdPiB7XG4gIGdldEtleT86ICguLi5hcmdzOiBBcmdzKSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gIGNhY2hlPzogVXNlTWVtb2l6ZUNhY2hlPENhY2hlS2V5LCBSZXN1bHQ+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBmdW5jdGlvbiByZXN1bHQgY2FjaGUgYmFzZWQgb24gYXJndW1lbnRzXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VNZW1vaXplPFJlc3VsdCwgQXJncyBleHRlbmRzIHVua25vd25bXT4ocmVzb2x2ZXI6ICguLi5hcmdzOiBBcmdzKSA9PiBSZXN1bHQsIG9wdGlvbnM/OiBVc2VNZW1vaXplT3B0aW9uczxSZXN1bHQsIEFyZ3M+KTogVXNlTWVtb2l6ZVJldHVybjxSZXN1bHQsIEFyZ3M+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlTWVtb3J5L2luZGV4LmQudHNcbi8qKlxuICogUGVyZm9ybWFuY2UubWVtb3J5XG4gKlxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUGVyZm9ybWFuY2UvbWVtb3J5XG4gKi9cbmludGVyZmFjZSBNZW1vcnlJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGhlYXAsIGluIGJ5dGVzLCB0aGF0IGlzIGF2YWlsYWJsZSB0byB0aGUgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGpzSGVhcFNpemVMaW1pdDogbnVtYmVyO1xuICAvKipcbiAgICogIFRoZSB0b3RhbCBhbGxvY2F0ZWQgaGVhcCBzaXplLCBpbiBieXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsSlNIZWFwU2l6ZTogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBhY3RpdmUgc2VnbWVudCBvZiBKUyBoZWFwLCBpbiBieXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IHVzZWRKU0hlYXBTaXplOiBudW1iZXI7XG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiAnTWVtb3J5SW5mbyc7XG59XG5pbnRlcmZhY2UgVXNlTWVtb3J5T3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVNjaGVkdWxlciB7XG4gIC8qKlxuICAgKiBTdGFydCB0aGUgdGltZXIgaW1tZWRpYXRlbHlcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgY2FsbGJhY2sgaW1tZWRpYXRlbHkgYWZ0ZXIgY2FsbGluZyBgcmVzdW1lYFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBzY2hlZHVsZXJgIG9wdGlvbiBpbnN0ZWFkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbW1lZGlhdGVDYWxsYmFjaz86IGJvb2xlYW47XG4gIC8qKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBzY2hlZHVsZXJgIG9wdGlvbiBpbnN0ZWFkICovXG4gIGludGVydmFsPzogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZU1lbW9yeVJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgbWVtb3J5OiBSZWY8TWVtb3J5SW5mbyB8IHVuZGVmaW5lZD47XG59XG4vKipcbiAqIFJlYWN0aXZlIE1lbW9yeSBJbmZvLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZU1lbW9yeVxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU1lbW9yeShvcHRpb25zPzogVXNlTWVtb3J5T3B0aW9ucyk6IFVzZU1lbW9yeVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU1vdW50ZWQvaW5kZXguZC50c1xuLyoqXG4gKiBNb3VudGVkIHN0YXRlIGluIHJlZi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VNb3VudGVkXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VNb3VudGVkKCk6IHZ1ZTAuU2hhbGxvd1JlZjxib29sZWFuLCBib29sZWFuPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU1vdXNlL2luZGV4LmQudHNcbnR5cGUgVXNlTW91c2VDb29yZFR5cGUgPSAncGFnZScgfCAnY2xpZW50JyB8ICdzY3JlZW4nIHwgJ21vdmVtZW50JztcbnR5cGUgVXNlTW91c2VTb3VyY2VUeXBlID0gJ21vdXNlJyB8ICd0b3VjaCcgfCBudWxsO1xudHlwZSBVc2VNb3VzZUV2ZW50RXh0cmFjdG9yID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2gpID0+IFt4OiBudW1iZXIsIHk6IG51bWJlcl0gfCBudWxsIHwgdW5kZWZpbmVkO1xuaW50ZXJmYWNlIFVzZU1vdXNlT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdywgQ29uZmlndXJhYmxlRXZlbnRGaWx0ZXIge1xuICAvKipcbiAgICogTW91c2UgcG9zaXRpb24gYmFzZWQgYnkgcGFnZSwgY2xpZW50LCBzY3JlZW4sIG9yIHJlbGF0aXZlIHRvIHByZXZpb3VzIHBvc2l0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdwYWdlJ1xuICAgKi9cbiAgdHlwZT86IFVzZU1vdXNlQ29vcmRUeXBlIHwgVXNlTW91c2VFdmVudEV4dHJhY3RvcjtcbiAgLyoqXG4gICAqIExpc3RlbiBldmVudHMgb24gYHRhcmdldGAgZWxlbWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAnV2luZG93J1xuICAgKi9cbiAgdGFyZ2V0PzogTWF5YmVSZWZPckdldHRlcjxXaW5kb3cgfCBFdmVudFRhcmdldCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAvKipcbiAgICogTGlzdGVuIHRvIGB0b3VjaG1vdmVgIGV2ZW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB0b3VjaD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gYHNjcm9sbGAgZXZlbnRzIG9uIHdpbmRvdywgb25seSBlZmZlY3RpdmUgb24gdHlwZSBgcGFnZWBcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgc2Nyb2xsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJlc2V0IHRvIGluaXRpYWwgdmFsdWUgd2hlbiBgdG91Y2hlbmRgIGV2ZW50IGZpcmVkXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXNldE9uVG91Y2hFbmRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWVzXG4gICAqL1xuICBpbml0aWFsVmFsdWU/OiBQb3NpdGlvbjtcbn1cbmludGVyZmFjZSBVc2VNb3VzZVJldHVybiB7XG4gIHg6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgeTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBzb3VyY2VUeXBlOiBTaGFsbG93UmVmPFVzZU1vdXNlU291cmNlVHlwZT47XG59XG4vKipcbiAqIFJlYWN0aXZlIG1vdXNlIHBvc2l0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZU1vdXNlXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU1vdXNlKG9wdGlvbnM/OiBVc2VNb3VzZU9wdGlvbnMpOiBVc2VNb3VzZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU1vdXNlSW5FbGVtZW50L2luZGV4LmQudHNcbmludGVyZmFjZSBNb3VzZUluRWxlbWVudE9wdGlvbnMgZXh0ZW5kcyBVc2VNb3VzZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBoYW5kbGUgbW91c2UgZXZlbnRzIHdoZW4gdGhlIGN1cnNvciBpcyBvdXRzaWRlIHRoZSB0YXJnZXQgZWxlbWVudC5cbiAgICogV2hlbiBlbmFibGVkLCBtb3VzZSBwb3NpdGlvbiB3aWxsIGNvbnRpbnVlIHRvIGJlIHRyYWNrZWQgZXZlbiB3aGVuIG91dHNpZGUgdGhlIGVsZW1lbnQgYm91bmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBoYW5kbGVPdXRzaWRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpc3RlbiB0byB3aW5kb3cgcmVzaXplIGV2ZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHdpbmRvd1Njcm9sbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gd2luZG93IHNjcm9sbCBldmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3aW5kb3dSZXNpemU/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZU1vdXNlSW5FbGVtZW50UmV0dXJuIGV4dGVuZHMgVXNlTW91c2VSZXR1cm4ge1xuICBlbGVtZW50WDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBlbGVtZW50WTogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBlbGVtZW50UG9zaXRpb25YOiBTaGFsbG93UmVmPG51bWJlcj47XG4gIGVsZW1lbnRQb3NpdGlvblk6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgZWxlbWVudEhlaWdodDogU2hhbGxvd1JlZjxudW1iZXI+O1xuICBlbGVtZW50V2lkdGg6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgaXNPdXRzaWRlOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBtb3VzZSBwb3NpdGlvbiByZWxhdGVkIHRvIGFuIGVsZW1lbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTW91c2VJbkVsZW1lbnRcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlTW91c2VJbkVsZW1lbnQodGFyZ2V0PzogTWF5YmVFbGVtZW50UmVmLCBvcHRpb25zPzogTW91c2VJbkVsZW1lbnRPcHRpb25zKToge1xuICB4OiBTaGFsbG93UmVmPG51bWJlcj47XG4gIHk6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgc291cmNlVHlwZTogU2hhbGxvd1JlZjxVc2VNb3VzZVNvdXJjZVR5cGU+O1xuICBlbGVtZW50WDogU2hhbGxvd1JlZjxudW1iZXIsIG51bWJlcj47XG4gIGVsZW1lbnRZOiBTaGFsbG93UmVmPG51bWJlciwgbnVtYmVyPjtcbiAgZWxlbWVudFBvc2l0aW9uWDogU2hhbGxvd1JlZjxudW1iZXIsIG51bWJlcj47XG4gIGVsZW1lbnRQb3NpdGlvblk6IFNoYWxsb3dSZWY8bnVtYmVyLCBudW1iZXI+O1xuICBlbGVtZW50SGVpZ2h0OiBTaGFsbG93UmVmPG51bWJlciwgbnVtYmVyPjtcbiAgZWxlbWVudFdpZHRoOiBTaGFsbG93UmVmPG51bWJlciwgbnVtYmVyPjtcbiAgaXNPdXRzaWRlOiBTaGFsbG93UmVmPGJvb2xlYW4sIGJvb2xlYW4+O1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufTtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU1vdXNlUHJlc3NlZC9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlTW91c2VQcmVzc2VkT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gYHRvdWNoc3RhcnRgIGB0b3VjaGVuZGAgZXZlbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHRvdWNoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpc3RlbiB0byBgZHJhZ3N0YXJ0YCBgZHJvcGAgYW5kIGBkcmFnZW5kYCBldmVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJhZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGQgZXZlbnQgbGlzdGVuZXJzIHdpdGggdGhlIGBjYXB0dXJlYCBvcHRpb24gc2V0IHRvIGB0cnVlYFxuICAgKiAoc2VlIFtNRE5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyI2NhcHR1cmUpKVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2FwdHVyZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaW5pdGlhbFZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVsZW1lbnQgdGFyZ2V0IHRvIGJlIGNhcHR1cmUgdGhlIGNsaWNrXG4gICAqL1xuICB0YXJnZXQ/OiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBtb3VzZSBpcyBwcmVzc2VkXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgb25QcmVzc2VkPzogKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCB8IERyYWdFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBtb3VzZSBpcyByZWxlYXNlZFxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIG9uUmVsZWFzZWQ/OiAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgRHJhZ0V2ZW50KSA9PiB2b2lkO1xufVxuLyoqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgVXNlTW91c2VQcmVzc2VkT3B0aW9uc30gaW5zdGVhZCAqL1xudHlwZSBNb3VzZVByZXNzZWRPcHRpb25zID0gVXNlTW91c2VQcmVzc2VkT3B0aW9ucztcbmludGVyZmFjZSBVc2VNb3VzZVByZXNzZWRSZXR1cm4ge1xuICBwcmVzc2VkOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBzb3VyY2VUeXBlOiBTaGFsbG93UmVmPFVzZU1vdXNlU291cmNlVHlwZT47XG59XG4vKipcbiAqIFJlYWN0aXZlIG1vdXNlIHByZXNzaW5nIHN0YXRlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZU1vdXNlUHJlc3NlZFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VNb3VzZVByZXNzZWQob3B0aW9ucz86IFVzZU1vdXNlUHJlc3NlZE9wdGlvbnMpOiBVc2VNb3VzZVByZXNzZWRSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VNdXRhdGlvbk9ic2VydmVyL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBleHRlbmRzIE11dGF0aW9uT2JzZXJ2ZXJJbml0LCBDb25maWd1cmFibGVXaW5kb3cge31cbmludGVyZmFjZSBVc2VNdXRhdGlvbk9ic2VydmVyUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBzdG9wOiAoKSA9PiB2b2lkO1xuICB0YWtlUmVjb3JkczogKCkgPT4gTXV0YXRpb25SZWNvcmRbXSB8IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogV2F0Y2ggZm9yIGNoYW5nZXMgYmVpbmcgbWFkZSB0byB0aGUgRE9NIHRyZWUuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTXV0YXRpb25PYnNlcnZlclxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTXV0YXRpb25PYnNlcnZlciBNdXRhdGlvbk9ic2VydmVyIE1ETlxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU11dGF0aW9uT2JzZXJ2ZXIodGFyZ2V0OiBNYXliZUNvbXB1dGVkRWxlbWVudFJlZiB8IE1heWJlQ29tcHV0ZWRFbGVtZW50UmVmW10gfCBNYXliZVJlZk9yR2V0dGVyPE1heWJlRWxlbWVudFtdPiwgY2FsbGJhY2s6IE11dGF0aW9uQ2FsbGJhY2ssIG9wdGlvbnM/OiBVc2VNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyk6IFVzZU11dGF0aW9uT2JzZXJ2ZXJSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VOYXZpZ2F0b3JMYW5ndWFnZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgTmF2aWdhdG9yTGFuZ3VhZ2VTdGF0ZSBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgLyoqXG4gICAqXG4gICAqIElTTyA2MzktMSBzdGFuZGFyZCBMYW5ndWFnZSBDb2RlXG4gICAqXG4gICAqIEBpbmZvIFRoZSBkZXRlY3RlZCB1c2VyIGFnZW50IGxhbmd1YWdlIHByZWZlcmVuY2UgYXMgYSBsYW5ndWFnZSB0YWdcbiAgICogKHdoaWNoIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhIFwibG9jYWxlIGlkZW50aWZpZXJcIikuXG4gICAqIFRoaXMgY29uc2lzdHMgb2YgYSAyLTMgbGV0dGVyIGJhc2UgbGFuZ3VhZ2UgdGFnIHRoYXQgaW5kaWNhdGVzIGFcbiAgICogbGFuZ3VhZ2UsIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYWRkaXRpb25hbCBzdWJ0YWdzIHNlcGFyYXRlZCBieVxuICAgKiAnLScuIFRoZSBtb3N0IGNvbW1vbiBleHRyYSBpbmZvcm1hdGlvbiBpcyB0aGUgY291bnRyeSBvciByZWdpb25cbiAgICogdmFyaWFudCAobGlrZSAnZW4tVVMnIG9yICdmci1DQScpLlxuICAgKlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3Lmlzby5vcmcvaXNvLTYzOS1sYW5ndWFnZS1jb2Rlcy5odG1sXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cubG9jLmdvdi9zdGFuZGFyZHMvaXNvNjM5LTIvcGhwL2NvZGVfbGlzdC5waHBcbiAgICpcbiAgICovXG4gIGxhbmd1YWdlOiBTaGFsbG93UmVmPHN0cmluZyB8IHVuZGVmaW5lZD47XG59XG5pbnRlcmZhY2UgVXNlTmF2aWdhdG9yTGFuZ3VhZ2VPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHt9XG50eXBlIFVzZU5hdmlnYXRvckxhbmd1YWdlUmV0dXJuID0gUmVhZG9ubHk8TmF2aWdhdG9yTGFuZ3VhZ2VTdGF0ZT47XG4vKipcbiAqXG4gKiBSZWFjdGl2ZSB1c2VOYXZpZ2F0b3JMYW5ndWFnZVxuICpcbiAqIERldGVjdHMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB1c2VyIGxhbmd1YWdlIGFuZCByZXR1cm5zIGEgcmVhY3RpdmUgbGFuZ3VhZ2VcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZU5hdmlnYXRvckxhbmd1YWdlXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VOYXZpZ2F0b3JMYW5ndWFnZShvcHRpb25zPzogVXNlTmF2aWdhdG9yTGFuZ3VhZ2VPcHRpb25zKTogVXNlTmF2aWdhdG9yTGFuZ3VhZ2VSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VOZXR3b3JrL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VOZXR3b3JrT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7fVxudHlwZSBOZXR3b3JrVHlwZSA9ICdibHVldG9vdGgnIHwgJ2NlbGx1bGFyJyB8ICdldGhlcm5ldCcgfCAnbm9uZScgfCAnd2lmaScgfCAnd2ltYXgnIHwgJ290aGVyJyB8ICd1bmtub3duJztcbnR5cGUgTmV0d29ya0VmZmVjdGl2ZVR5cGUgPSAnc2xvdy0yZycgfCAnMmcnIHwgJzNnJyB8ICc0ZycgfCB1bmRlZmluZWQ7XG5pbnRlcmZhY2UgTmV0d29ya1N0YXRlIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICAvKipcbiAgICogSWYgdGhlIHVzZXIgaXMgY3VycmVudGx5IGNvbm5lY3RlZC5cbiAgICovXG4gIGlzT25saW5lOiBSZWFkb25seTxTaGFsbG93UmVmPGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIFRoZSB0aW1lIHNpbmNlIHRoZSB1c2VyIHdhcyBsYXN0IGNvbm5lY3RlZC5cbiAgICovXG4gIG9mZmxpbmVBdDogUmVhZG9ubHk8U2hhbGxvd1JlZjxudW1iZXIgfCB1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEF0IHRoaXMgdGltZSwgaWYgdGhlIHVzZXIgaXMgb2ZmbGluZSBhbmQgcmVjb25uZWN0c1xuICAgKi9cbiAgb25saW5lQXQ6IFJlYWRvbmx5PFNoYWxsb3dSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBUaGUgZG93bmxvYWQgc3BlZWQgaW4gTWJwcy5cbiAgICovXG4gIGRvd25saW5rOiBSZWFkb25seTxTaGFsbG93UmVmPG51bWJlciB8IHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogVGhlIG1heCByZWFjaGFibGUgZG93bmxvYWQgc3BlZWQgaW4gTWJwcy5cbiAgICovXG4gIGRvd25saW5rTWF4OiBSZWFkb25seTxTaGFsbG93UmVmPG51bWJlciB8IHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogVGhlIGRldGVjdGVkIGVmZmVjdGl2ZSBzcGVlZCB0eXBlLlxuICAgKi9cbiAgZWZmZWN0aXZlVHlwZTogUmVhZG9ubHk8U2hhbGxvd1JlZjxOZXR3b3JrRWZmZWN0aXZlVHlwZSB8IHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogVGhlIGVzdGltYXRlZCBlZmZlY3RpdmUgcm91bmQtdHJpcCB0aW1lIG9mIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uXG4gICAqL1xuICBydHQ6IFJlYWRvbmx5PFNoYWxsb3dSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBJZiB0aGUgdXNlciBhY3RpdmF0ZWQgZGF0YSBzYXZlciBtb2RlLlxuICAgKi9cbiAgc2F2ZURhdGE6IFJlYWRvbmx5PFNoYWxsb3dSZWY8Ym9vbGVhbiB8IHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogVGhlIGRldGVjdGVkIGNvbm5lY3Rpb24vbmV0d29yayB0eXBlLlxuICAgKi9cbiAgdHlwZTogUmVhZG9ubHk8U2hhbGxvd1JlZjxOZXR3b3JrVHlwZT4+O1xufVxudHlwZSBVc2VOZXR3b3JrUmV0dXJuID0gUmVhZG9ubHk8TmV0d29ya1N0YXRlPjtcbi8qKlxuICogUmVhY3RpdmUgTmV0d29yayBzdGF0dXMuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTmV0d29ya1xuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU5ldHdvcmsob3B0aW9ucz86IFVzZU5ldHdvcmtPcHRpb25zKTogVXNlTmV0d29ya1JldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZU5vdy9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlTm93T3B0aW9uczxDb250cm9scyBleHRlbmRzIGJvb2xlYW4+IGV4dGVuZHMgQ29uZmlndXJhYmxlU2NoZWR1bGVyIHtcbiAgLyoqXG4gICAqIEV4cG9zZSBtb3JlIGNvbnRyb2xzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb250cm9scz86IENvbnRyb2xzO1xuICAvKipcbiAgICogU3RhcnQgdGhlIGNsb2NrIGltbWVkaWF0ZWx5XG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVwZGF0ZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMsIG9yIHVzZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKiBAZGVmYXVsdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICovXG4gIGludGVydmFsPzogJ3JlcXVlc3RBbmltYXRpb25GcmFtZScgfCBudW1iZXI7XG59XG50eXBlIFVzZU5vd1JldHVybjxDb250cm9scyBleHRlbmRzIGJvb2xlYW4+ID0gQ29udHJvbHMgZXh0ZW5kcyB0cnVlID8gKHtcbiAgbm93OiBSZWY8RGF0ZT47XG59ICYgUGF1c2FibGUpIDogUmVmPERhdGU+O1xuLyoqXG4gKiBSZWFjdGl2ZSBjdXJyZW50IERhdGUgaW5zdGFuY2UuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlTm93XG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlTm93KG9wdGlvbnM/OiBVc2VOb3dPcHRpb25zPGZhbHNlPik6IFJlZjxEYXRlPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlTm93KG9wdGlvbnM6IFVzZU5vd09wdGlvbnM8dHJ1ZT4pOiB7XG4gIG5vdzogUmVmPERhdGU+O1xufSAmIFBhdXNhYmxlO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlT2JqZWN0VXJsL2luZGV4LmQudHNcbi8qKlxuICogUmVhY3RpdmUgVVJMIHJlcHJlc2VudGluZyBhbiBvYmplY3QuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlT2JqZWN0VXJsXG4gKiBAcGFyYW0gb2JqZWN0XG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlT2JqZWN0VXJsKG9iamVjdDogTWF5YmVSZWZPckdldHRlcjxCbG9iIHwgTWVkaWFTb3VyY2UgfCBudWxsIHwgdW5kZWZpbmVkPik6IFJlYWRvbmx5PHZ1ZTAuUmVmPHN0cmluZyB8IHVuZGVmaW5lZCwgc3RyaW5nIHwgdW5kZWZpbmVkPj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VPZmZzZXRQYWdpbmF0aW9uL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VPZmZzZXRQYWdpbmF0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUb3RhbCBudW1iZXIgb2YgaXRlbXMuXG4gICAqL1xuICB0b3RhbD86IE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgaXRlbXMgdG8gZGlzcGxheSBwZXIgcGFnZS5cbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHBhZ2VTaXplPzogTWF5YmVSZWZPckdldHRlcjxudW1iZXI+O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgcGFnZSBudW1iZXIuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHBhZ2U/OiBNYXliZVJlZjxudW1iZXI+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgd2hlbiB0aGUgYHBhZ2VgIGNoYW5nZS5cbiAgICovXG4gIG9uUGFnZUNoYW5nZT86IChyZXR1cm5WYWx1ZTogVW53cmFwTmVzdGVkUmVmczxVc2VPZmZzZXRQYWdpbmF0aW9uUmV0dXJuPikgPT4gdW5rbm93bjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoZW4gdGhlIGBwYWdlU2l6ZWAgY2hhbmdlLlxuICAgKi9cbiAgb25QYWdlU2l6ZUNoYW5nZT86IChyZXR1cm5WYWx1ZTogVW53cmFwTmVzdGVkUmVmczxVc2VPZmZzZXRQYWdpbmF0aW9uUmV0dXJuPikgPT4gdW5rbm93bjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoZW4gdGhlIGBwYWdlQ291bnRgIGNoYW5nZS5cbiAgICovXG4gIG9uUGFnZUNvdW50Q2hhbmdlPzogKHJldHVyblZhbHVlOiBVbndyYXBOZXN0ZWRSZWZzPFVzZU9mZnNldFBhZ2luYXRpb25SZXR1cm4+KSA9PiB1bmtub3duO1xufVxuaW50ZXJmYWNlIFVzZU9mZnNldFBhZ2luYXRpb25SZXR1cm4ge1xuICBjdXJyZW50UGFnZTogUmVmPG51bWJlcj47XG4gIGN1cnJlbnRQYWdlU2l6ZTogUmVmPG51bWJlcj47XG4gIHBhZ2VDb3VudDogQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgaXNGaXJzdFBhZ2U6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICBpc0xhc3RQYWdlOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgcHJldjogKCkgPT4gdm9pZDtcbiAgbmV4dDogKCkgPT4gdm9pZDtcbn1cbnR5cGUgVXNlT2Zmc2V0UGFnaW5hdGlvbkluZmluaXR5UGFnZVJldHVybiA9IE9taXQ8VXNlT2Zmc2V0UGFnaW5hdGlvblJldHVybiwgJ2lzTGFzdFBhZ2UnPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlT2Zmc2V0UGFnaW5hdGlvbihvcHRpb25zOiBPbWl0PFVzZU9mZnNldFBhZ2luYXRpb25PcHRpb25zLCAndG90YWwnPik6IFVzZU9mZnNldFBhZ2luYXRpb25JbmZpbml0eVBhZ2VSZXR1cm47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU9mZnNldFBhZ2luYXRpb24ob3B0aW9uczogVXNlT2Zmc2V0UGFnaW5hdGlvbk9wdGlvbnMpOiBVc2VPZmZzZXRQYWdpbmF0aW9uUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlT25saW5lL2luZGV4LmQudHNcbi8qKlxuICogUmVhY3RpdmUgb25saW5lIHN0YXRlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZU9ubGluZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZU9ubGluZShvcHRpb25zPzogQ29uZmlndXJhYmxlV2luZG93KTogUmVhZG9ubHk8dnVlMC5TaGFsbG93UmVmPGJvb2xlYW4+Pjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVBhZ2VMZWF2ZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlUGFnZUxlYXZlT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7fVxudHlwZSBVc2VQYWdlTGVhdmVSZXR1cm4gPSBTaGFsbG93UmVmPGJvb2xlYW4+O1xuLyoqXG4gKiBSZWFjdGl2ZSBzdGF0ZSB0byBzaG93IHdoZXRoZXIgbW91c2UgbGVhdmVzIHRoZSBwYWdlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVBhZ2VMZWF2ZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVBhZ2VMZWF2ZShvcHRpb25zPzogVXNlUGFnZUxlYXZlT3B0aW9ucyk6IFVzZVBhZ2VMZWF2ZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVBhcmFsbGF4L2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VQYXJhbGxheE9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICBkZXZpY2VPcmllbnRhdGlvblRpbHRBZGp1c3Q/OiAoaTogbnVtYmVyKSA9PiBudW1iZXI7XG4gIGRldmljZU9yaWVudGF0aW9uUm9sbEFkanVzdD86IChpOiBudW1iZXIpID0+IG51bWJlcjtcbiAgbW91c2VUaWx0QWRqdXN0PzogKGk6IG51bWJlcikgPT4gbnVtYmVyO1xuICBtb3VzZVJvbGxBZGp1c3Q/OiAoaTogbnVtYmVyKSA9PiBudW1iZXI7XG59XG5pbnRlcmZhY2UgVXNlUGFyYWxsYXhSZXR1cm4ge1xuICAvKipcbiAgICogUm9sbCB2YWx1ZS4gU2NhbGVkIHRvIGAtMC41IH4gMC41YFxuICAgKi9cbiAgcm9sbDogQ29tcHV0ZWRSZWY8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFRpbHQgdmFsdWUuIFNjYWxlZCB0byBgLTAuNSB+IDAuNWBcbiAgICovXG4gIHRpbHQ6IENvbXB1dGVkUmVmPG51bWJlcj47XG4gIC8qKlxuICAgKiBTZW5zb3Igc291cmNlLCBjYW4gYmUgYG1vdXNlYCBvciBgZGV2aWNlT3JpZW50YXRpb25gXG4gICAqL1xuICBzb3VyY2U6IENvbXB1dGVkUmVmPCdkZXZpY2VPcmllbnRhdGlvbicgfCAnbW91c2UnPjtcbn1cbi8qKlxuICogQ3JlYXRlIHBhcmFsbGF4IGVmZmVjdCBlYXNpbHkuIEl0IHVzZXMgYHVzZURldmljZU9yaWVudGF0aW9uYCBhbmQgZmFsbGJhY2sgdG8gYHVzZU1vdXNlYFxuICogaWYgb3JpZW50YXRpb24gaXMgbm90IHN1cHBvcnRlZC5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVBhcmFsbGF4KHRhcmdldDogTWF5YmVFbGVtZW50UmVmLCBvcHRpb25zPzogVXNlUGFyYWxsYXhPcHRpb25zKTogVXNlUGFyYWxsYXhSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQYXJlbnRFbGVtZW50L2luZGV4LmQudHNcbmRlY2xhcmUgZnVuY3Rpb24gdXNlUGFyZW50RWxlbWVudChlbGVtZW50PzogTWF5YmVSZWZPckdldHRlcjxIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPik6IFJlYWRvbmx5PFNoYWxsb3dSZWY8SFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUGVyZm9ybWFuY2VPYnNlcnZlci9pbmRleC5kLnRzXG50eXBlIFVzZVBlcmZvcm1hbmNlT2JzZXJ2ZXJPcHRpb25zID0gUGVyZm9ybWFuY2VPYnNlcnZlckluaXQgJiBDb25maWd1cmFibGVXaW5kb3cgJiB7XG4gIC8qKlxuICAgKiBTdGFydCB0aGUgb2JzZXJ2ZXIgaW1tZWRpYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbW1lZGlhdGU/OiBib29sZWFuO1xufTtcbi8qKlxuICogT2JzZXJ2ZSBwZXJmb3JtYW5jZSBtZXRyaWNzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVBlcmZvcm1hbmNlT2JzZXJ2ZXJcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUGVyZm9ybWFuY2VPYnNlcnZlcihvcHRpb25zOiBVc2VQZXJmb3JtYW5jZU9ic2VydmVyT3B0aW9ucywgY2FsbGJhY2s6IFBlcmZvcm1hbmNlT2JzZXJ2ZXJDYWxsYmFjayk6IHtcbiAgaXNTdXBwb3J0ZWQ6IFVzZVN1cHBvcnRlZFJldHVybjtcbiAgc3RhcnQ6ICgpID0+IHZvaWQ7XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUGVybWlzc2lvbi9pbmRleC5kLnRzXG50eXBlIERlc2NyaXB0b3JOYW1lUG9seWZpbGwgPSAnYWNjZWxlcm9tZXRlcicgfCAnYWNjZXNzaWJpbGl0eS1ldmVudHMnIHwgJ2FtYmllbnQtbGlnaHQtc2Vuc29yJyB8ICdiYWNrZ3JvdW5kLXN5bmMnIHwgJ2NhbWVyYScgfCAnY2xpcGJvYXJkLXJlYWQnIHwgJ2NsaXBib2FyZC13cml0ZScgfCAnZ3lyb3Njb3BlJyB8ICdtYWduZXRvbWV0ZXInIHwgJ21pY3JvcGhvbmUnIHwgJ25vdGlmaWNhdGlvbnMnIHwgJ3BheW1lbnQtaGFuZGxlcicgfCAncGVyc2lzdGVudC1zdG9yYWdlJyB8ICdwdXNoJyB8ICdzcGVha2VyJyB8ICdsb2NhbC1mb250cyc7XG50eXBlIEdlbmVyYWxQZXJtaXNzaW9uRGVzY3JpcHRvciA9IFBlcm1pc3Npb25EZXNjcmlwdG9yIHwge1xuICBuYW1lOiBEZXNjcmlwdG9yTmFtZVBvbHlmaWxsO1xufTtcbmludGVyZmFjZSBVc2VQZXJtaXNzaW9uT3B0aW9uczxDb250cm9scyBleHRlbmRzIGJvb2xlYW4+IGV4dGVuZHMgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHtcbiAgLyoqXG4gICAqIEV4cG9zZSBtb3JlIGNvbnRyb2xzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb250cm9scz86IENvbnRyb2xzO1xufVxudHlwZSBVc2VQZXJtaXNzaW9uUmV0dXJuID0gUmVhZG9ubHk8U2hhbGxvd1JlZjxQZXJtaXNzaW9uU3RhdGUgfCB1bmRlZmluZWQ+PjtcbmludGVyZmFjZSBVc2VQZXJtaXNzaW9uUmV0dXJuV2l0aENvbnRyb2xzIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBzdGF0ZTogVXNlUGVybWlzc2lvblJldHVybjtcbiAgcXVlcnk6ICgpID0+IFByb21pc2U8UGVybWlzc2lvblN0YXR1cyB8IHVuZGVmaW5lZD47XG59XG4vKipcbiAqIFJlYWN0aXZlIFBlcm1pc3Npb25zIEFQSS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VQZXJtaXNzaW9uXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VQZXJtaXNzaW9uKHBlcm1pc3Npb25EZXNjOiBHZW5lcmFsUGVybWlzc2lvbkRlc2NyaXB0b3IgfCBHZW5lcmFsUGVybWlzc2lvbkRlc2NyaXB0b3JbJ25hbWUnXSwgb3B0aW9ucz86IFVzZVBlcm1pc3Npb25PcHRpb25zPGZhbHNlPik6IFVzZVBlcm1pc3Npb25SZXR1cm47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVBlcm1pc3Npb24ocGVybWlzc2lvbkRlc2M6IEdlbmVyYWxQZXJtaXNzaW9uRGVzY3JpcHRvciB8IEdlbmVyYWxQZXJtaXNzaW9uRGVzY3JpcHRvclsnbmFtZSddLCBvcHRpb25zOiBVc2VQZXJtaXNzaW9uT3B0aW9uczx0cnVlPik6IFVzZVBlcm1pc3Npb25SZXR1cm5XaXRoQ29udHJvbHM7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQb2ludGVyL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VQb2ludGVyU3RhdGUgZXh0ZW5kcyBQb3NpdGlvbiB7XG4gIHByZXNzdXJlOiBudW1iZXI7XG4gIHBvaW50ZXJJZDogbnVtYmVyO1xuICB0aWx0WDogbnVtYmVyO1xuICB0aWx0WTogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgdHdpc3Q6IG51bWJlcjtcbiAgcG9pbnRlclR5cGU6IFBvaW50ZXJUeXBlIHwgbnVsbDtcbn1cbmludGVyZmFjZSBVc2VQb2ludGVyT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBQb2ludGVyIHR5cGVzIHRoYXQgbGlzdGVuIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ21vdXNlJywgJ3RvdWNoJywgJ3BlbiddXG4gICAqL1xuICBwb2ludGVyVHlwZXM/OiBQb2ludGVyVHlwZVtdO1xuICAvKipcbiAgICogSW5pdGlhbCB2YWx1ZXNcbiAgICovXG4gIGluaXRpYWxWYWx1ZT86IE1heWJlUmVmPFBhcnRpYWw8VXNlUG9pbnRlclN0YXRlPj47XG4gIC8qKlxuICAgKiBAZGVmYXVsdCB3aW5kb3dcbiAgICovXG4gIHRhcmdldD86IE1heWJlUmVmPEV2ZW50VGFyZ2V0IHwgbnVsbCB8IHVuZGVmaW5lZD4gfCBEb2N1bWVudCB8IFdpbmRvdztcbn1cbmludGVyZmFjZSBVc2VQb2ludGVyUmV0dXJuIHtcbiAgcHJlc3N1cmU6IFJlZjxudW1iZXI+O1xuICBwb2ludGVySWQ6IFJlZjxudW1iZXI+O1xuICB0aWx0WDogUmVmPG51bWJlcj47XG4gIHRpbHRZOiBSZWY8bnVtYmVyPjtcbiAgd2lkdGg6IFJlZjxudW1iZXI+O1xuICBoZWlnaHQ6IFJlZjxudW1iZXI+O1xuICB0d2lzdDogUmVmPG51bWJlcj47XG4gIHBvaW50ZXJUeXBlOiBSZWY8UG9pbnRlclR5cGUgfCBudWxsPjtcbiAgeDogUmVmPG51bWJlcj47XG4gIHk6IFJlZjxudW1iZXI+O1xuICBpc0luc2lkZTogU2hhbGxvd1JlZjxib29sZWFuPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgcG9pbnRlciBzdGF0ZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VQb2ludGVyXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVBvaW50ZXIob3B0aW9ucz86IFVzZVBvaW50ZXJPcHRpb25zKTogVXNlUG9pbnRlclJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVBvaW50ZXJMb2NrL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VQb2ludGVyTG9ja09wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVEb2N1bWVudCB7fVxuaW50ZXJmYWNlIFVzZVBvaW50ZXJMb2NrUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBlbGVtZW50OiBTaGFsbG93UmVmPE1heWJlRWxlbWVudD47XG4gIHRyaWdnZXJFbGVtZW50OiBTaGFsbG93UmVmPE1heWJlRWxlbWVudD47XG4gIGxvY2s6IChlOiBNYXliZUVsZW1lbnRSZWYgfCBFdmVudCkgPT4gUHJvbWlzZTxNYXliZUVsZW1lbnQ+O1xuICB1bmxvY2s6ICgpID0+IFByb21pc2U8Ym9vbGVhbj47XG59XG4vKipcbiAqIFJlYWN0aXZlIHBvaW50ZXIgbG9jay5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VQb2ludGVyTG9ja1xuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVBvaW50ZXJMb2NrKHRhcmdldD86IE1heWJlRWxlbWVudFJlZiwgb3B0aW9ucz86IFVzZVBvaW50ZXJMb2NrT3B0aW9ucyk6IFVzZVBvaW50ZXJMb2NrUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU3dpcGUvaW5kZXguZC50c1xudHlwZSBVc2VTd2lwZURpcmVjdGlvbiA9ICd1cCcgfCAnZG93bicgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ25vbmUnO1xuaW50ZXJmYWNlIFVzZVN3aXBlT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBSZWdpc3RlciBldmVudHMgYXMgcGFzc2l2ZVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBwYXNzaXZlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDUwXG4gICAqL1xuICB0aHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBvbiBzd2lwZSBzdGFydFxuICAgKi9cbiAgb25Td2lwZVN0YXJ0PzogKGU6IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBvbiBzd2lwZSBtb3Zlc1xuICAgKi9cbiAgb25Td2lwZT86IChlOiBUb3VjaEV2ZW50KSA9PiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGJhY2sgb24gc3dpcGUgZW5kc1xuICAgKi9cbiAgb25Td2lwZUVuZD86IChlOiBUb3VjaEV2ZW50LCBkaXJlY3Rpb246IFVzZVN3aXBlRGlyZWN0aW9uKSA9PiB2b2lkO1xufVxuaW50ZXJmYWNlIFVzZVN3aXBlUmV0dXJuIHtcbiAgaXNTd2lwaW5nOiBTaGFsbG93UmVmPGJvb2xlYW4+O1xuICBkaXJlY3Rpb246IENvbXB1dGVkUmVmPFVzZVN3aXBlRGlyZWN0aW9uPjtcbiAgY29vcmRzU3RhcnQ6IFJlYWRvbmx5PFBvc2l0aW9uPjtcbiAgY29vcmRzRW5kOiBSZWFkb25seTxQb3NpdGlvbj47XG4gIGxlbmd0aFg6IENvbXB1dGVkUmVmPG51bWJlcj47XG4gIGxlbmd0aFk6IENvbXB1dGVkUmVmPG51bWJlcj47XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIHN3aXBlIGRldGVjdGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTd2lwZVxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTd2lwZSh0YXJnZXQ6IE1heWJlUmVmT3JHZXR0ZXI8RXZlbnRUYXJnZXQgfCBudWxsIHwgdW5kZWZpbmVkPiwgb3B0aW9ucz86IFVzZVN3aXBlT3B0aW9ucyk6IFVzZVN3aXBlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUG9pbnRlclN3aXBlL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VQb2ludGVyU3dpcGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDUwXG4gICAqL1xuICB0aHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBvbiBzd2lwZSBzdGFydC5cbiAgICovXG4gIG9uU3dpcGVTdGFydD86IChlOiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBvbiBzd2lwZSBtb3ZlLlxuICAgKi9cbiAgb25Td2lwZT86IChlOiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBvbiBzd2lwZSBlbmQuXG4gICAqL1xuICBvblN3aXBlRW5kPzogKGU6IFBvaW50ZXJFdmVudCwgZGlyZWN0aW9uOiBVc2VTd2lwZURpcmVjdGlvbikgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFBvaW50ZXIgdHlwZXMgdG8gbGlzdGVuIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ21vdXNlJywgJ3RvdWNoJywgJ3BlbiddXG4gICAqL1xuICBwb2ludGVyVHlwZXM/OiBQb2ludGVyVHlwZVtdO1xuICAvKipcbiAgICogRGlzYWJsZSB0ZXh0IHNlbGVjdGlvbiBvbiBzd2lwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVUZXh0U2VsZWN0PzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBVc2VQb2ludGVyU3dpcGVSZXR1cm4ge1xuICByZWFkb25seSBpc1N3aXBpbmc6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIGRpcmVjdGlvbjogUmVhZG9ubHk8U2hhbGxvd1JlZjxVc2VTd2lwZURpcmVjdGlvbj4+O1xuICByZWFkb25seSBwb3NTdGFydDogUG9zaXRpb247XG4gIHJlYWRvbmx5IHBvc0VuZDogUG9zaXRpb247XG4gIGRpc3RhbmNlWDogUmVhZG9ubHk8Q29tcHV0ZWRSZWY8bnVtYmVyPj47XG4gIGRpc3RhbmNlWTogUmVhZG9ubHk8Q29tcHV0ZWRSZWY8bnVtYmVyPj47XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIHN3aXBlIGRldGVjdGlvbiBiYXNlZCBvbiBQb2ludGVyRXZlbnRzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVBvaW50ZXJTd2lwZVxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VQb2ludGVyU3dpcGUodGFyZ2V0OiBNYXliZVJlZk9yR2V0dGVyPEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VQb2ludGVyU3dpcGVPcHRpb25zKTogVXNlUG9pbnRlclN3aXBlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUHJlZmVycmVkQ29sb3JTY2hlbWUvaW5kZXguZC50c1xudHlwZSBDb2xvclNjaGVtZVR5cGUgPSAnZGFyaycgfCAnbGlnaHQnIHwgJ25vLXByZWZlcmVuY2UnO1xuLyoqXG4gKiBSZWFjdGl2ZSBwcmVmZXJzLWNvbG9yLXNjaGVtZSBtZWRpYSBxdWVyeS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VQcmVmZXJyZWRDb2xvclNjaGVtZVxuICogQHBhcmFtIFtvcHRpb25zXVxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUHJlZmVycmVkQ29sb3JTY2hlbWUob3B0aW9ucz86IENvbmZpZ3VyYWJsZVdpbmRvdyk6IHZ1ZTAuQ29tcHV0ZWRSZWY8Q29sb3JTY2hlbWVUeXBlPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVByZWZlcnJlZENvbnRyYXN0L2luZGV4LmQudHNcbnR5cGUgQ29udHJhc3RUeXBlID0gJ21vcmUnIHwgJ2xlc3MnIHwgJ2N1c3RvbScgfCAnbm8tcHJlZmVyZW5jZSc7XG4vKipcbiAqIFJlYWN0aXZlIHByZWZlcnMtY29udHJhc3QgbWVkaWEgcXVlcnkuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUHJlZmVycmVkQ29udHJhc3RcbiAqIEBwYXJhbSBbb3B0aW9uc11cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVByZWZlcnJlZENvbnRyYXN0KG9wdGlvbnM/OiBDb25maWd1cmFibGVXaW5kb3cpOiB2dWUwLkNvbXB1dGVkUmVmPENvbnRyYXN0VHlwZT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQcmVmZXJyZWREYXJrL2luZGV4LmQudHNcbi8qKlxuICogUmVhY3RpdmUgZGFyayB0aGVtZSBwcmVmZXJlbmNlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVByZWZlcnJlZERhcmtcbiAqIEBwYXJhbSBbb3B0aW9uc11cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVByZWZlcnJlZERhcmsob3B0aW9ucz86IENvbmZpZ3VyYWJsZVdpbmRvdyk6IHZ1ZTAuQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQcmVmZXJyZWRMYW5ndWFnZXMvaW5kZXguZC50c1xuLyoqXG4gKiBSZWFjdGl2ZSBOYXZpZ2F0b3IgTGFuZ3VhZ2VzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVByZWZlcnJlZExhbmd1YWdlc1xuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVByZWZlcnJlZExhbmd1YWdlcyhvcHRpb25zPzogQ29uZmlndXJhYmxlV2luZG93KTogU2hhbGxvd1JlZjxyZWFkb25seSBzdHJpbmdbXT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VQcmVmZXJyZWRSZWR1Y2VkTW90aW9uL2luZGV4LmQudHNcbnR5cGUgUmVkdWNlZE1vdGlvblR5cGUgPSAncmVkdWNlJyB8ICduby1wcmVmZXJlbmNlJztcbi8qKlxuICogUmVhY3RpdmUgcHJlZmVycy1yZWR1Y2VkLW1vdGlvbiBtZWRpYSBxdWVyeS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VQcmVmZXJyZWRSZWR1Y2VkTW90aW9uXG4gKiBAcGFyYW0gW29wdGlvbnNdXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VQcmVmZXJyZWRSZWR1Y2VkTW90aW9uKG9wdGlvbnM/OiBDb25maWd1cmFibGVXaW5kb3cpOiB2dWUwLkNvbXB1dGVkUmVmPFJlZHVjZWRNb3Rpb25UeXBlPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVByZWZlcnJlZFJlZHVjZWRUcmFuc3BhcmVuY3kvaW5kZXguZC50c1xudHlwZSBSZWR1Y2VkVHJhbnNwYXJlbmN5VHlwZSA9ICdyZWR1Y2UnIHwgJ25vLXByZWZlcmVuY2UnO1xuLyoqXG4gKiBSZWFjdGl2ZSBwcmVmZXJzLXJlZHVjZWQtdHJhbnNwYXJlbmN5IG1lZGlhIHF1ZXJ5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVByZWZlcnJlZFJlZHVjZWRUcmFuc3BhcmVuY3lcbiAqIEBwYXJhbSBbb3B0aW9uc11cbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVByZWZlcnJlZFJlZHVjZWRUcmFuc3BhcmVuY3kob3B0aW9ucz86IENvbmZpZ3VyYWJsZVdpbmRvdyk6IHZ1ZTAuQ29tcHV0ZWRSZWY8UmVkdWNlZFRyYW5zcGFyZW5jeVR5cGU+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUHJldmlvdXMvaW5kZXguZC50c1xuLyoqXG4gKiBIb2xkcyB0aGUgcHJldmlvdXMgdmFsdWUgb2YgYSByZWYuXG4gKlxuICogQHNlZSAgIHtAbGluayBodHRwczovL3Z1ZXVzZS5vcmcvdXNlUHJldmlvdXN9XG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlUHJldmlvdXM8VD4odmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8VD4pOiBSZWFkb25seTxTaGFsbG93UmVmPFQgfCB1bmRlZmluZWQ+PjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlUHJldmlvdXM8VD4odmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8VD4sIGluaXRpYWxWYWx1ZTogVCk6IFJlYWRvbmx5PFNoYWxsb3dSZWY8VD4+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlUmFmRm4vaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVJhZkZuQ2FsbGJhY2tBcmd1bWVudHMge1xuICAvKipcbiAgICogVGltZSBlbGFwc2VkIGJldHdlZW4gdGhpcyBhbmQgdGhlIGxhc3QgZnJhbWUuXG4gICAqL1xuICBkZWx0YTogbnVtYmVyO1xuICAvKipcbiAgICogVGltZSBlbGFwc2VkIHNpbmNlIHRoZSBjcmVhdGlvbiBvZiB0aGUgd2ViIHBhZ2UuIFNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTUhpZ2hSZXNUaW1lU3RhbXAjdGhlX3RpbWVfb3JpZ2luIFRpbWUgb3JpZ2lufS5cbiAgICovXG4gIHRpbWVzdGFtcDogRE9NSGlnaFJlc1RpbWVTdGFtcDtcbn1cbmludGVyZmFjZSBVc2VSYWZGbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICAvKipcbiAgICogU3RhcnQgdGhlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBsb29wIGltbWVkaWF0ZWx5IG9uIGNyZWF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBmcmFtZSBwZXIgc2Vjb25kIHRvIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uLlxuICAgKiBTZXQgdG8gYG51bGxgIHRvIGRpc2FibGUgdGhlIGxpbWl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBmcHNMaW1pdD86IE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyIHwgbnVsbD47XG4gIC8qKlxuICAgKiBBZnRlciB0aGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGxvb3AgZXhlY3V0ZWQgb25jZSwgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN0b3BwZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBvbmNlPzogYm9vbGVhbjtcbn1cbi8qKlxuICogQ2FsbCBmdW5jdGlvbiBvbiBldmVyeSBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYC4gV2l0aCBjb250cm9scyBvZiBwYXVzaW5nIGFuZCByZXN1bWluZy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VSYWZGblxuICogQHBhcmFtIGZuXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVJhZkZuKGZuOiAoYXJnczogVXNlUmFmRm5DYWxsYmFja0FyZ3VtZW50cykgPT4gdm9pZCwgb3B0aW9ucz86IFVzZVJhZkZuT3B0aW9ucyk6IFBhdXNhYmxlO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU1NSV2lkdGgvaW5kZXguZC50c1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTU1JXaWR0aCgpOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5kZWNsYXJlIGZ1bmN0aW9uIHByb3ZpZGVTU1JXaWR0aCh3aWR0aDogbnVtYmVyIHwgbnVsbCwgYXBwPzogQXBwPHVua25vd24+KTogdm9pZDtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVNjcmVlbk9yaWVudGF0aW9uL2luZGV4LmQudHNcbnR5cGUgT3JpZW50YXRpb25UeXBlID0gJ3BvcnRyYWl0LXByaW1hcnknIHwgJ3BvcnRyYWl0LXNlY29uZGFyeScgfCAnbGFuZHNjYXBlLXByaW1hcnknIHwgJ2xhbmRzY2FwZS1zZWNvbmRhcnknO1xudHlwZSBPcmllbnRhdGlvbkxvY2tUeXBlID0gJ2FueScgfCAnbmF0dXJhbCcgfCAnbGFuZHNjYXBlJyB8ICdwb3J0cmFpdCcgfCAncG9ydHJhaXQtcHJpbWFyeScgfCAncG9ydHJhaXQtc2Vjb25kYXJ5JyB8ICdsYW5kc2NhcGUtcHJpbWFyeScgfCAnbGFuZHNjYXBlLXNlY29uZGFyeSc7XG5pbnRlcmZhY2UgU2NyZWVuT3JpZW50YXRpb24gZXh0ZW5kcyBFdmVudFRhcmdldCB7XG4gIGxvY2s6IChvcmllbnRhdGlvbjogT3JpZW50YXRpb25Mb2NrVHlwZSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgdW5sb2NrOiAoKSA9PiB2b2lkO1xuICByZWFkb25seSB0eXBlOiBPcmllbnRhdGlvblR5cGU7XG4gIHJlYWRvbmx5IGFuZ2xlOiBudW1iZXI7XG4gIGFkZEV2ZW50TGlzdGVuZXI6ICh0eXBlOiAnY2hhbmdlJywgbGlzdGVuZXI6ICh0aGlzOiB0aGlzLCBldjogRXZlbnQpID0+IGFueSwgdXNlQ2FwdHVyZT86IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5pbnRlcmZhY2UgVXNlU2NyZWVuT3JpZW50YXRpb25PcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93IHt9XG5pbnRlcmZhY2UgVXNlU2NyZWVuT3JpZW50YXRpb25SZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIG9yaWVudGF0aW9uOiBSZWY8T3JpZW50YXRpb25UeXBlIHwgdW5kZWZpbmVkPjtcbiAgYW5nbGU6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgbG9ja09yaWVudGF0aW9uOiAodHlwZTogT3JpZW50YXRpb25Mb2NrVHlwZSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgdW5sb2NrT3JpZW50YXRpb246ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJlYWN0aXZlIHNjcmVlbiBvcmllbnRhdGlvblxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVNjcmVlbk9yaWVudGF0aW9uXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTY3JlZW5PcmllbnRhdGlvbihvcHRpb25zPzogVXNlU2NyZWVuT3JpZW50YXRpb25PcHRpb25zKTogVXNlU2NyZWVuT3JpZW50YXRpb25SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTY3JlZW5TYWZlQXJlYS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlU2NyZWVuU2FmZUFyZWFSZXR1cm4ge1xuICB0b3A6IFNoYWxsb3dSZWY8c3RyaW5nPjtcbiAgcmlnaHQ6IFNoYWxsb3dSZWY8c3RyaW5nPjtcbiAgYm90dG9tOiBTaGFsbG93UmVmPHN0cmluZz47XG4gIGxlZnQ6IFNoYWxsb3dSZWY8c3RyaW5nPjtcbiAgdXBkYXRlOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBgZW52KHNhZmUtYXJlYS1pbnNldC0qKWBcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTY3JlZW5TYWZlQXJlYVxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNjcmVlblNhZmVBcmVhKCk6IFVzZVNjcmVlblNhZmVBcmVhUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU2NyaXB0VGFnL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VTY3JpcHRUYWdPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlRG9jdW1lbnQge1xuICAvKipcbiAgICogTG9hZCB0aGUgc2NyaXB0IGltbWVkaWF0ZWx5XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGQgYGFzeW5jYCBhdHRyaWJ1dGUgdG8gdGhlIHNjcmlwdCB0YWdcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgYXN5bmM/OiBib29sZWFuO1xuICAvKipcbiAgICogU2NyaXB0IHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgJ3RleHQvamF2YXNjcmlwdCdcbiAgICovXG4gIHR5cGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNYW51YWwgY29udHJvbHMgdGhlIHRpbWluZyBvZiBsb2FkaW5nIGFuZCB1bmxvYWRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1hbnVhbD86IGJvb2xlYW47XG4gIGNyb3NzT3JpZ2luPzogJ2Fub255bW91cycgfCAndXNlLWNyZWRlbnRpYWxzJztcbiAgcmVmZXJyZXJQb2xpY3k/OiAnbm8tcmVmZXJyZXInIHwgJ25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlJyB8ICdvcmlnaW4nIHwgJ29yaWdpbi13aGVuLWNyb3NzLW9yaWdpbicgfCAnc2FtZS1vcmlnaW4nIHwgJ3N0cmljdC1vcmlnaW4nIHwgJ3N0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nIHwgJ3Vuc2FmZS11cmwnO1xuICBub01vZHVsZT86IGJvb2xlYW47XG4gIGRlZmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZCBjdXN0b20gYXR0cmlidXRlIHRvIHRoZSBzY3JpcHQgdGFnXG4gICAqXG4gICAqL1xuICBhdHRycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBOb25jZSB2YWx1ZSBmb3IgQ1NQIChDb250ZW50IFNlY3VyaXR5IFBvbGljeSlcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBub25jZT86IHN0cmluZztcbn1cbmludGVyZmFjZSBVc2VTY3JpcHRUYWdSZXR1cm4ge1xuICBzY3JpcHRUYWc6IFNoYWxsb3dSZWY8SFRNTFNjcmlwdEVsZW1lbnQgfCBudWxsPjtcbiAgbG9hZDogKHdhaXRGb3JTY3JpcHRMb2FkPzogYm9vbGVhbikgPT4gUHJvbWlzZTxIVE1MU2NyaXB0RWxlbWVudCB8IGJvb2xlYW4+O1xuICB1bmxvYWQ6ICgpID0+IHZvaWQ7XG59XG4vKipcbiAqIEFzeW5jIHNjcmlwdCB0YWcgbG9hZGluZy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTY3JpcHRUYWdcbiAqIEBwYXJhbSBzcmNcbiAqIEBwYXJhbSBvbkxvYWRlZFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTY3JpcHRUYWcoc3JjOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIG9uTG9hZGVkPzogKGVsOiBIVE1MU2NyaXB0RWxlbWVudCkgPT4gdm9pZCwgb3B0aW9ucz86IFVzZVNjcmlwdFRhZ09wdGlvbnMpOiBVc2VTY3JpcHRUYWdSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTY3JvbGxMb2NrL2luZGV4LmQudHNcbi8qKlxuICogTG9jayBzY3JvbGxpbmcgb2YgdGhlIGVsZW1lbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlU2Nyb2xsTG9ja1xuICogQHBhcmFtIGVsZW1lbnRcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTY3JvbGxMb2NrKGVsZW1lbnQ6IE1heWJlUmVmT3JHZXR0ZXI8SFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHwgV2luZG93IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPiwgaW5pdGlhbFN0YXRlPzogYm9vbGVhbik6IHZ1ZTAuV3JpdGFibGVDb21wdXRlZFJlZjxib29sZWFuLCBib29sZWFuPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVNlc3Npb25TdG9yYWdlL2luZGV4LmQudHNcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU2Vzc2lvblN0b3JhZ2Uoa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8c3RyaW5nPik6IFJlbW92YWJsZVJlZjxzdHJpbmc+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTZXNzaW9uU3RvcmFnZShrZXk6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPGJvb2xlYW4+LCBvcHRpb25zPzogVXNlU3RvcmFnZU9wdGlvbnM8Ym9vbGVhbj4pOiBSZW1vdmFibGVSZWY8Ym9vbGVhbj47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNlc3Npb25TdG9yYWdlKGtleTogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+LCBpbml0aWFsVmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyPiwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPG51bWJlcj4pOiBSZW1vdmFibGVSZWY8bnVtYmVyPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU2Vzc2lvblN0b3JhZ2U8VD4oa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxUPiwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPFQ+KTogUmVtb3ZhYmxlUmVmPFQ+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTZXNzaW9uU3RvcmFnZTxUID0gdW5rbm93bj4oa2V5OiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxudWxsPiwgb3B0aW9ucz86IFVzZVN0b3JhZ2VPcHRpb25zPFQ+KTogUmVtb3ZhYmxlUmVmPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU2hhcmUvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVNoYXJlT3B0aW9ucyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBmaWxlcz86IEZpbGVbXTtcbiAgdGV4dD86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFVzZVNoYXJlUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBzaGFyZTogKG92ZXJyaWRlT3B0aW9ucz86IE1heWJlUmVmT3JHZXR0ZXI8VXNlU2hhcmVPcHRpb25zPikgPT4gUHJvbWlzZTx2b2lkPjtcbn1cbi8qKlxuICogUmVhY3RpdmUgV2ViIFNoYXJlIEFQSS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTaGFyZVxuICogQHBhcmFtIHNoYXJlT3B0aW9uc1xuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNoYXJlKHNoYXJlT3B0aW9ucz86IE1heWJlUmVmT3JHZXR0ZXI8VXNlU2hhcmVPcHRpb25zPiwgb3B0aW9ucz86IENvbmZpZ3VyYWJsZU5hdmlnYXRvcik6IFVzZVNoYXJlUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU29ydGVkL2luZGV4LmQudHNcbnR5cGUgVXNlU29ydGVkQ29tcGFyZUZuPFQgPSBhbnk+ID0gKGE6IFQsIGI6IFQpID0+IG51bWJlcjtcbnR5cGUgVXNlU29ydGVkRm48VCA9IGFueT4gPSAoYXJyOiBUW10sIGNvbXBhcmVGbjogVXNlU29ydGVkQ29tcGFyZUZuPFQ+KSA9PiBUW107XG5pbnRlcmZhY2UgVXNlU29ydGVkT3B0aW9uczxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBzb3J0IGFsZ29yaXRobVxuICAgKi9cbiAgc29ydEZuPzogVXNlU29ydGVkRm48VD47XG4gIC8qKlxuICAgKiBjb21wYXJlIGZ1bmN0aW9uXG4gICAqL1xuICBjb21wYXJlRm4/OiBVc2VTb3J0ZWRDb21wYXJlRm48VD47XG4gIC8qKlxuICAgKiBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgYXJyYXlcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpcnR5PzogYm9vbGVhbjtcbn1cbi8qKlxuICogcmVhY3RpdmUgc29ydCBhcnJheVxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVNvcnRlZFxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNvcnRlZDxUID0gYW55Pihzb3VyY2U6IE1heWJlUmVmT3JHZXR0ZXI8VFtdPiwgY29tcGFyZUZuPzogVXNlU29ydGVkQ29tcGFyZUZuPFQ+KTogUmVmPFRbXT47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVNvcnRlZDxUID0gYW55Pihzb3VyY2U6IE1heWJlUmVmT3JHZXR0ZXI8VFtdPiwgb3B0aW9ucz86IFVzZVNvcnRlZE9wdGlvbnM8VD4pOiBSZWY8VFtdPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU29ydGVkPFQgPSBhbnk+KHNvdXJjZTogTWF5YmVSZWZPckdldHRlcjxUW10+LCBjb21wYXJlRm4/OiBVc2VTb3J0ZWRDb21wYXJlRm48VD4sIG9wdGlvbnM/OiBPbWl0PFVzZVNvcnRlZE9wdGlvbnM8VD4sICdjb21wYXJlRm4nPik6IFJlZjxUW10+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU3BlZWNoUmVjb2duaXRpb24vdHlwZXMuZC50c1xudHlwZSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yQ29kZSA9ICdhYm9ydGVkJyB8ICdhdWRpby1jYXB0dXJlJyB8ICdiYWQtZ3JhbW1hcicgfCAnbGFuZ3VhZ2Utbm90LXN1cHBvcnRlZCcgfCAnbmV0d29yaycgfCAnbm8tc3BlZWNoJyB8ICdub3QtYWxsb3dlZCcgfCAnc2VydmljZS1ub3QtYWxsb3dlZCc7XG5pbnRlcmZhY2UgU3BlZWNoR3JhbW1hciB7XG4gIHNyYzogc3RyaW5nO1xuICB3ZWlnaHQ6IG51bWJlcjtcbn1cbmludGVyZmFjZSBTcGVlY2hHcmFtbWFyTGlzdCB7XG4gIHJlYWRvbmx5IGxlbmd0aDogbnVtYmVyO1xuICBhZGRGcm9tU3RyaW5nOiAoc3RyaW5nOiBzdHJpbmcsIHdlaWdodD86IG51bWJlcikgPT4gdm9pZDtcbiAgYWRkRnJvbVVSSTogKHNyYzogc3RyaW5nLCB3ZWlnaHQ/OiBudW1iZXIpID0+IHZvaWQ7XG4gIGl0ZW06IChpbmRleDogbnVtYmVyKSA9PiBTcGVlY2hHcmFtbWFyO1xuICBbaW5kZXg6IG51bWJlcl06IFNwZWVjaEdyYW1tYXI7XG59XG5pbnRlcmZhY2UgU3BlZWNoUmVjb2duaXRpb25FcnJvckV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICByZWFkb25seSBlcnJvcjogU3BlZWNoUmVjb2duaXRpb25FcnJvckNvZGU7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbn1cbmludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICByZWFkb25seSByZXN1bHRJbmRleDogbnVtYmVyO1xuICByZWFkb25seSByZXN1bHRzOiBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q7XG59XG5pbnRlcmZhY2UgU3BlZWNoUmVjb2duaXRpb25FdmVudE1hcCB7XG4gIGF1ZGlvZW5kOiBFdmVudDtcbiAgYXVkaW9zdGFydDogRXZlbnQ7XG4gIGVuZDogRXZlbnQ7XG4gIGVycm9yOiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yRXZlbnQ7XG4gIG5vbWF0Y2g6IFNwZWVjaFJlY29nbml0aW9uRXZlbnQ7XG4gIHJlc3VsdDogU3BlZWNoUmVjb2duaXRpb25FdmVudDtcbiAgc291bmRlbmQ6IEV2ZW50O1xuICBzb3VuZHN0YXJ0OiBFdmVudDtcbiAgc3BlZWNoZW5kOiBFdmVudDtcbiAgc3BlZWNoc3RhcnQ6IEV2ZW50O1xuICBzdGFydDogRXZlbnQ7XG59XG5pbnRlcmZhY2UgU3BlZWNoUmVjb2duaXRpb24gZXh0ZW5kcyBFdmVudFRhcmdldCB7XG4gIGNvbnRpbnVvdXM6IGJvb2xlYW47XG4gIGdyYW1tYXJzOiBTcGVlY2hHcmFtbWFyTGlzdDtcbiAgaW50ZXJpbVJlc3VsdHM6IGJvb2xlYW47XG4gIGxhbmc6IHN0cmluZztcbiAgbWF4QWx0ZXJuYXRpdmVzOiBudW1iZXI7XG4gIG9uYXVkaW9lbmQ6ICgodGhpczogU3BlZWNoUmVjb2duaXRpb24sIGV2OiBFdmVudCkgPT4gYW55KSB8IG51bGw7XG4gIG9uYXVkaW9zdGFydDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IEV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgb25lbmQ6ICgodGhpczogU3BlZWNoUmVjb2duaXRpb24sIGV2OiBFdmVudCkgPT4gYW55KSB8IG51bGw7XG4gIG9uZXJyb3I6ICgodGhpczogU3BlZWNoUmVjb2duaXRpb24sIGV2OiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBvbm5vbWF0Y2g6ICgodGhpczogU3BlZWNoUmVjb2duaXRpb24sIGV2OiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgb25yZXN1bHQ6ICgodGhpczogU3BlZWNoUmVjb2duaXRpb24sIGV2OiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgb25zb3VuZGVuZDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IEV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgb25zb3VuZHN0YXJ0OiAoKHRoaXM6IFNwZWVjaFJlY29nbml0aW9uLCBldjogRXZlbnQpID0+IGFueSkgfCBudWxsO1xuICBvbnNwZWVjaGVuZDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IEV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgb25zcGVlY2hzdGFydDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IEV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgb25zdGFydDogKCh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IEV2ZW50KSA9PiBhbnkpIHwgbnVsbDtcbiAgYWJvcnQ6ICgpID0+IHZvaWQ7XG4gIHN0YXJ0OiAoKSA9PiB2b2lkO1xuICBzdG9wOiAoKSA9PiB2b2lkO1xuICBhZGRFdmVudExpc3RlbmVyOiAoPEskMSBleHRlbmRzIGtleW9mIFNwZWVjaFJlY29nbml0aW9uRXZlbnRNYXA+KHR5cGU6IEskMSwgbGlzdGVuZXI6ICh0aGlzOiBTcGVlY2hSZWNvZ25pdGlvbiwgZXY6IFNwZWVjaFJlY29nbml0aW9uRXZlbnRNYXBbSyQxXSkgPT4gYW55LCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkKSAmICgodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lck9yRXZlbnRMaXN0ZW5lck9iamVjdCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCk7XG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI6ICg8SyQxIGV4dGVuZHMga2V5b2YgU3BlZWNoUmVjb2duaXRpb25FdmVudE1hcD4odHlwZTogSyQxLCBsaXN0ZW5lcjogKHRoaXM6IFNwZWVjaFJlY29nbml0aW9uLCBldjogU3BlZWNoUmVjb2duaXRpb25FdmVudE1hcFtLJDFdKSA9PiBhbnksIG9wdGlvbnM/OiBib29sZWFuIHwgRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQpICYgKCh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBvcHRpb25zPzogYm9vbGVhbiB8IEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkKTtcbn1cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVNwZWVjaFJlY29nbml0aW9uL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VTcGVlY2hSZWNvZ25pdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBjb250aW51b3VzIHJlc3VsdHMgYXJlIHJldHVybmVkIGZvciBlYWNoIHJlY29nbml0aW9uLCBvciBvbmx5IGEgc2luZ2xlIHJlc3VsdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgY29udGludW91cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIGludGVyaW0gcmVzdWx0cyBzaG91bGQgYmUgcmV0dXJuZWQgKHRydWUpIG9yIG5vdCAoZmFsc2UuKSBJbnRlcmltIHJlc3VsdHMgYXJlIHJlc3VsdHMgdGhhdCBhcmUgbm90IHlldCBmaW5hbFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpbnRlcmltUmVzdWx0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMYW5ndWFnZSBmb3IgU3BlZWNoUmVjb2duaXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgJ2VuLVVTJ1xuICAgKi9cbiAgbGFuZz86IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEEgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgbWF4aW11bSByZXR1cm5lZCBhbHRlcm5hdGl2ZXMgZm9yIGVhY2ggcmVzdWx0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TcGVlY2hSZWNvZ25pdGlvbi9tYXhBbHRlcm5hdGl2ZXNcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgbWF4QWx0ZXJuYXRpdmVzPzogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZVNwZWVjaFJlY29nbml0aW9uUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBpc0xpc3RlbmluZzogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgaXNGaW5hbDogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgcmVjb2duaXRpb246IFNwZWVjaFJlY29nbml0aW9uIHwgdW5kZWZpbmVkO1xuICByZXN1bHQ6IFNoYWxsb3dSZWY8c3RyaW5nPjtcbiAgZXJyb3I6IFNoYWxsb3dSZWY8U3BlZWNoUmVjb2duaXRpb25FcnJvckV2ZW50IHwgRXJyb3IgfCB1bmRlZmluZWQ+O1xuICB0b2dnbGU6ICh2YWx1ZT86IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHN0YXJ0OiAoKSA9PiB2b2lkO1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBTcGVlY2hSZWNvZ25pdGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTcGVlY2hSZWNvZ25pdGlvblxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3BlZWNoUmVjb2duaXRpb24gU3BlZWNoUmVjb2duaXRpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3BlZWNoUmVjb2duaXRpb24ob3B0aW9ucz86IFVzZVNwZWVjaFJlY29nbml0aW9uT3B0aW9ucyk6IFVzZVNwZWVjaFJlY29nbml0aW9uUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlU3BlZWNoU3ludGhlc2lzL2luZGV4LmQudHNcbnR5cGUgVXNlU3BlZWNoU3ludGhlc2lzU3RhdHVzID0gJ2luaXQnIHwgJ3BsYXknIHwgJ3BhdXNlJyB8ICdlbmQnO1xuaW50ZXJmYWNlIFVzZVNwZWVjaFN5bnRoZXNpc09wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICAvKipcbiAgICogTGFuZ3VhZ2UgZm9yIFNwZWVjaFN5bnRoZXNpc1xuICAgKlxuICAgKiBAZGVmYXVsdCAnZW4tVVMnXG4gICAqL1xuICBsYW5nPzogTWF5YmVSZWZPckdldHRlcjxzdHJpbmc+O1xuICAvKipcbiAgICogR2V0cyBhbmQgc2V0cyB0aGUgcGl0Y2ggYXQgd2hpY2ggdGhlIHV0dGVyYW5jZSB3aWxsIGJlIHNwb2tlbiBhdC5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcGl0Y2g/OiBNYXliZVJlZk9yR2V0dGVyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZVsncGl0Y2gnXT47XG4gIC8qKlxuICAgKiBHZXRzIGFuZCBzZXRzIHRoZSBzcGVlZCBhdCB3aGljaCB0aGUgdXR0ZXJhbmNlIHdpbGwgYmUgc3Bva2VuIGF0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByYXRlPzogTWF5YmVSZWZPckdldHRlcjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VbJ3JhdGUnXT47XG4gIC8qKlxuICAgKiBHZXRzIGFuZCBzZXRzIHRoZSB2b2ljZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBzcGVhayB0aGUgdXR0ZXJhbmNlLlxuICAgKi9cbiAgdm9pY2U/OiBNYXliZVJlZjxTcGVlY2hTeW50aGVzaXNWb2ljZT47XG4gIC8qKlxuICAgKiBHZXRzIGFuZCBzZXRzIHRoZSB2b2x1bWUgdGhhdCB0aGUgdXR0ZXJhbmNlIHdpbGwgYmUgc3Bva2VuIGF0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB2b2x1bWU/OiBNYXliZVJlZk9yR2V0dGVyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZVsndm9sdW1lJ10+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgYm91bmRhcnkgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKi9cbiAgb25Cb3VuZGFyeT86IChldmVudDogU3BlZWNoU3ludGhlc2lzRXZlbnQpID0+IHZvaWQ7XG59XG5pbnRlcmZhY2UgVXNlU3BlZWNoU3ludGhlc2lzUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBpc1BsYXlpbmc6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIHN0YXR1czogU2hhbGxvd1JlZjxVc2VTcGVlY2hTeW50aGVzaXNTdGF0dXM+O1xuICB1dHRlcmFuY2U6IENvbXB1dGVkUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT47XG4gIGVycm9yOiBTaGFsbG93UmVmPFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnQgfCB1bmRlZmluZWQ+O1xuICBzdG9wOiAoKSA9PiB2b2lkO1xuICB0b2dnbGU6ICh2YWx1ZT86IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHNwZWFrOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSBTcGVlY2hTeW50aGVzaXMuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlU3BlZWNoU3ludGhlc2lzXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TcGVlY2hTeW50aGVzaXMgU3BlZWNoU3ludGhlc2lzXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3BlZWNoU3ludGhlc2lzKHRleHQ6IE1heWJlUmVmT3JHZXR0ZXI8c3RyaW5nPiwgb3B0aW9ucz86IFVzZVNwZWVjaFN5bnRoZXNpc09wdGlvbnMpOiBVc2VTcGVlY2hTeW50aGVzaXNSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTdGVwcGVyL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VTdGVwcGVyUmV0dXJuPFN0ZXBOYW1lLCBTdGVwcywgU3RlcD4ge1xuICAvKiogTGlzdCBvZiBzdGVwcy4gKi9cbiAgc3RlcHM6IFJlYWRvbmx5PFJlZjxTdGVwcz4+O1xuICAvKiogTGlzdCBvZiBzdGVwIG5hbWVzLiAqL1xuICBzdGVwTmFtZXM6IFJlYWRvbmx5PFJlZjxTdGVwTmFtZVtdPj47XG4gIC8qKiBJbmRleCBvZiB0aGUgY3VycmVudCBzdGVwLiAqL1xuICBpbmRleDogUmVmPG51bWJlcj47XG4gIC8qKiBDdXJyZW50IHN0ZXAuICovXG4gIGN1cnJlbnQ6IENvbXB1dGVkUmVmPFN0ZXA+O1xuICAvKiogTmV4dCBzdGVwLCBvciB1bmRlZmluZWQgaWYgdGhlIGN1cnJlbnQgc3RlcCBpcyB0aGUgbGFzdCBvbmUuICovXG4gIG5leHQ6IENvbXB1dGVkUmVmPFN0ZXBOYW1lIHwgdW5kZWZpbmVkPjtcbiAgLyoqIFByZXZpb3VzIHN0ZXAsIG9yIHVuZGVmaW5lZCBpZiB0aGUgY3VycmVudCBzdGVwIGlzIHRoZSBmaXJzdCBvbmUuICovXG4gIHByZXZpb3VzOiBDb21wdXRlZFJlZjxTdGVwTmFtZSB8IHVuZGVmaW5lZD47XG4gIC8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHN0ZXAgaXMgdGhlIGZpcnN0IG9uZS4gKi9cbiAgaXNGaXJzdDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj47XG4gIC8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHN0ZXAgaXMgdGhlIGxhc3Qgb25lLiAqL1xuICBpc0xhc3Q6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICAvKiogR2V0IHRoZSBzdGVwIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguICovXG4gIGF0OiAoaW5kZXg6IG51bWJlcikgPT4gU3RlcCB8IHVuZGVmaW5lZDtcbiAgLyoqIEdldCBhIHN0ZXAgYnkgdGhlIHNwZWNpZmllZCBuYW1lLiAqL1xuICBnZXQ6IChzdGVwOiBTdGVwTmFtZSkgPT4gU3RlcCB8IHVuZGVmaW5lZDtcbiAgLyoqIEdvIHRvIHRoZSBzcGVjaWZpZWQgc3RlcC4gKi9cbiAgZ29UbzogKHN0ZXA6IFN0ZXBOYW1lKSA9PiB2b2lkO1xuICAvKiogR28gdG8gdGhlIG5leHQgc3RlcC4gRG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHN0ZXAgaXMgdGhlIGxhc3Qgb25lLiAqL1xuICBnb1RvTmV4dDogKCkgPT4gdm9pZDtcbiAgLyoqIEdvIHRvIHRoZSBwcmV2aW91cyBzdGVwLiBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgc3RlcCBpcyB0aGUgcHJldmlvdXMgb25lLiAqL1xuICBnb1RvUHJldmlvdXM6ICgpID0+IHZvaWQ7XG4gIC8qKiBHbyBiYWNrIHRvIHRoZSBnaXZlbiBzdGVwLCBvbmx5IGlmIHRoZSBjdXJyZW50IHN0ZXAgaXMgYWZ0ZXIuICovXG4gIGdvQmFja1RvOiAoc3RlcDogU3RlcE5hbWUpID0+IHZvaWQ7XG4gIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gc3RlcCBpcyB0aGUgbmV4dCBzdGVwLiAqL1xuICBpc05leHQ6IChzdGVwOiBTdGVwTmFtZSkgPT4gYm9vbGVhbjtcbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBzdGVwIGlzIHRoZSBwcmV2aW91cyBzdGVwLiAqL1xuICBpc1ByZXZpb3VzOiAoc3RlcDogU3RlcE5hbWUpID0+IGJvb2xlYW47XG4gIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gc3RlcCBpcyB0aGUgY3VycmVudCBzdGVwLiAqL1xuICBpc0N1cnJlbnQ6IChzdGVwOiBTdGVwTmFtZSkgPT4gYm9vbGVhbjtcbiAgLyoqIENoZWNrcyBpZiB0aGUgY3VycmVudCBzdGVwIGlzIGJlZm9yZSB0aGUgZ2l2ZW4gc3RlcC4gKi9cbiAgaXNCZWZvcmU6IChzdGVwOiBTdGVwTmFtZSkgPT4gYm9vbGVhbjtcbiAgLyoqIENoZWNrcyBpZiB0aGUgY3VycmVudCBzdGVwIGlzIGFmdGVyIHRoZSBnaXZlbiBzdGVwLiAqL1xuICBpc0FmdGVyOiAoc3RlcDogU3RlcE5hbWUpID0+IGJvb2xlYW47XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN0ZXBwZXI8VCBleHRlbmRzIHN0cmluZyB8IG51bWJlcj4oc3RlcHM6IE1heWJlUmVmPFRbXT4sIGluaXRpYWxTdGVwPzogVCk6IFVzZVN0ZXBwZXJSZXR1cm48VCwgVFtdLCBUPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RlcHBlcjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oc3RlcHM6IE1heWJlUmVmPFQ+LCBpbml0aWFsU3RlcD86IGtleW9mIFQpOiBVc2VTdGVwcGVyUmV0dXJuPEV4Y2x1ZGU8a2V5b2YgVCwgc3ltYm9sPiwgVCwgVFtrZXlvZiBUXT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VTdG9yYWdlQXN5bmMvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVN0b3JhZ2VBc3luY09wdGlvbnM8VD4gZXh0ZW5kcyBPbWl0PFVzZVN0b3JhZ2VPcHRpb25zPFQ+LCAnc2VyaWFsaXplcic+IHtcbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRhIHNlcmlhbGl6YXRpb25cbiAgICovXG4gIHNlcmlhbGl6ZXI/OiBTZXJpYWxpemVyQXN5bmM8VD47XG4gIC8qKlxuICAgKiBPbiBmaXJzdCB2YWx1ZSBsb2FkZWQgaG9vay5cbiAgICovXG4gIG9uUmVhZHk/OiAodmFsdWU6IFQpID0+IHZvaWQ7XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVN0b3JhZ2VBc3luYyhrZXk6IHN0cmluZywgaW5pdGlhbFZhbHVlOiBNYXliZVJlZk9yR2V0dGVyPHN0cmluZz4sIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZUFzeW5jLCBvcHRpb25zPzogVXNlU3RvcmFnZUFzeW5jT3B0aW9uczxzdHJpbmc+KTogUmVtb3ZhYmxlUmVmPHN0cmluZz4gJiBQcm9taXNlPFJlbW92YWJsZVJlZjxzdHJpbmc+PjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RvcmFnZUFzeW5jKGtleTogc3RyaW5nLCBpbml0aWFsVmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8Ym9vbGVhbj4sIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZUFzeW5jLCBvcHRpb25zPzogVXNlU3RvcmFnZUFzeW5jT3B0aW9uczxib29sZWFuPik6IFJlbW92YWJsZVJlZjxib29sZWFuPiAmIFByb21pc2U8UmVtb3ZhYmxlUmVmPGJvb2xlYW4+PjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlU3RvcmFnZUFzeW5jKGtleTogc3RyaW5nLCBpbml0aWFsVmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyPiwgc3RvcmFnZT86IFN0b3JhZ2VMaWtlQXN5bmMsIG9wdGlvbnM/OiBVc2VTdG9yYWdlQXN5bmNPcHRpb25zPG51bWJlcj4pOiBSZW1vdmFibGVSZWY8bnVtYmVyPiAmIFByb21pc2U8UmVtb3ZhYmxlUmVmPG51bWJlcj4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdG9yYWdlQXN5bmM8VD4oa2V5OiBzdHJpbmcsIGluaXRpYWxWYWx1ZTogTWF5YmVSZWZPckdldHRlcjxUPiwgc3RvcmFnZT86IFN0b3JhZ2VMaWtlQXN5bmMsIG9wdGlvbnM/OiBVc2VTdG9yYWdlQXN5bmNPcHRpb25zPFQ+KTogUmVtb3ZhYmxlUmVmPFQ+ICYgUHJvbWlzZTxSZW1vdmFibGVSZWY8VD4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdG9yYWdlQXN5bmM8VCA9IHVua25vd24+KGtleTogc3RyaW5nLCBpbml0aWFsVmFsdWU6IE1heWJlUmVmT3JHZXR0ZXI8bnVsbD4sIHN0b3JhZ2U/OiBTdG9yYWdlTGlrZUFzeW5jLCBvcHRpb25zPzogVXNlU3RvcmFnZUFzeW5jT3B0aW9uczxUPik6IFJlbW92YWJsZVJlZjxUPiAmIFByb21pc2U8UmVtb3ZhYmxlUmVmPFQ+Pjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVN0eWxlVGFnL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VTdHlsZVRhZ09wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVEb2N1bWVudCB7XG4gIC8qKlxuICAgKiBNZWRpYSBxdWVyeSBmb3Igc3R5bGVzIHRvIGFwcGx5XG4gICAqL1xuICBtZWRpYT86IHN0cmluZztcbiAgLyoqXG4gICAqIExvYWQgdGhlIHN0eWxlIGltbWVkaWF0ZWx5XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNYW51YWwgY29udHJvbHMgdGhlIHRpbWluZyBvZiBsb2FkaW5nIGFuZCB1bmxvYWRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1hbnVhbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBET00gaWQgb2YgdGhlIHN0eWxlIHRhZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvLWluY3JlbWVudGVkXG4gICAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqXG4gICAqIE5vbmNlIHZhbHVlIGZvciBDU1AgKENvbnRlbnQgU2VjdXJpdHkgUG9saWN5KVxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIG5vbmNlPzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFVzZVN0eWxlVGFnUmV0dXJuIHtcbiAgaWQ6IHN0cmluZztcbiAgY3NzOiBTaGFsbG93UmVmPHN0cmluZz47XG4gIGxvYWQ6ICgpID0+IHZvaWQ7XG4gIHVubG9hZDogKCkgPT4gdm9pZDtcbiAgaXNMb2FkZWQ6IFJlYWRvbmx5PFNoYWxsb3dSZWY8Ym9vbGVhbj4+O1xufVxuLyoqXG4gKiBJbmplY3QgPHN0eWxlPiBlbGVtZW50IGluIGhlYWQuXG4gKlxuICogT3ZlcmxvYWQ6IE9taXR0ZWQgaWRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VTdHlsZVRhZ1xuICogQHBhcmFtIGNzc1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdHlsZVRhZyhjc3M6IE1heWJlUmVmPHN0cmluZz4sIG9wdGlvbnM/OiBVc2VTdHlsZVRhZ09wdGlvbnMpOiBVc2VTdHlsZVRhZ1JldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVN1cHBvcnRlZC9pbmRleC5kLnRzXG50eXBlIFVzZVN1cHBvcnRlZFJldHVybiA9IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VTdXBwb3J0ZWQoY2FsbGJhY2s6ICgpID0+IHVua25vd24pOiBVc2VTdXBwb3J0ZWRSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VUZW1wbGF0ZVJlZnNMaXN0L2luZGV4LmQudHNcbnR5cGUgVGVtcGxhdGVSZWZzTGlzdDxUPiA9IFRbXSAmIHtcbiAgc2V0OiAoZWw6IG9iamVjdCB8IG51bGwpID0+IHZvaWQ7XG59O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUZW1wbGF0ZVJlZnNMaXN0PFQgPSBFbGVtZW50PigpOiBSZWFkb25seTxSZWY8UmVhZG9ubHk8VGVtcGxhdGVSZWZzTGlzdDxUPj4+Pjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRleHREaXJlY3Rpb24vaW5kZXguZC50c1xudHlwZSBVc2VUZXh0RGlyZWN0aW9uVmFsdWUgPSAnbHRyJyB8ICdydGwnIHwgJ2F1dG8nO1xuaW50ZXJmYWNlIFVzZVRleHREaXJlY3Rpb25PcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlRG9jdW1lbnQge1xuICAvKipcbiAgICogQ1NTIFNlbGVjdG9yIGZvciB0aGUgdGFyZ2V0IGVsZW1lbnQgYXBwbHlpbmcgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgJ2h0bWwnXG4gICAqL1xuICBzZWxlY3Rvcj86IHN0cmluZztcbiAgLyoqXG4gICAqIE9ic2VydmUgYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpYCBjaGFuZ2VzIHVzaW5nIE11dGF0aW9uT2JzZXJ2ZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgb2JzZXJ2ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdsdHInXG4gICAqL1xuICBpbml0aWFsVmFsdWU/OiBVc2VUZXh0RGlyZWN0aW9uVmFsdWU7XG59XG4vKipcbiAqIFJlYWN0aXZlIGRpciBvZiB0aGUgZWxlbWVudCdzIHRleHQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlVGV4dERpcmVjdGlvblxuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVGV4dERpcmVjdGlvbihvcHRpb25zPzogVXNlVGV4dERpcmVjdGlvbk9wdGlvbnMpOiB2dWUwLldyaXRhYmxlQ29tcHV0ZWRSZWY8VXNlVGV4dERpcmVjdGlvblZhbHVlLCBVc2VUZXh0RGlyZWN0aW9uVmFsdWU+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVGV4dFNlbGVjdGlvbi9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlVGV4dFNlbGVjdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge31cbmludGVyZmFjZSBVc2VUZXh0U2VsZWN0aW9uUmV0dXJuIHtcbiAgdGV4dDogQ29tcHV0ZWRSZWY8c3RyaW5nPjtcbiAgcmVjdHM6IENvbXB1dGVkUmVmPERPTVJlY3RbXT47XG4gIHJhbmdlczogQ29tcHV0ZWRSZWY8UmFuZ2VbXT47XG4gIHNlbGVjdGlvbjogU2hhbGxvd1JlZjxTZWxlY3Rpb24gfCBudWxsPjtcbn1cbi8qKlxuICogUmVhY3RpdmVseSB0cmFjayB1c2VyIHRleHQgc2VsZWN0aW9uIGJhc2VkIG9uIFtgV2luZG93LmdldFNlbGVjdGlvbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvZ2V0U2VsZWN0aW9uKS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VUZXh0U2VsZWN0aW9uXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUZXh0U2VsZWN0aW9uKG9wdGlvbnM/OiBVc2VUZXh0U2VsZWN0aW9uT3B0aW9ucyk6IFVzZVRleHRTZWxlY3Rpb25SZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VUZXh0YXJlYUF1dG9zaXplL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VUZXh0YXJlYUF1dG9zaXplT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKiBUZXh0YXJlYSBlbGVtZW50IHRvIGF1dG9zaXplLiAqL1xuICBlbGVtZW50PzogTWF5YmVSZWY8SFRNTFRleHRBcmVhRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGw+O1xuICAvKiogVGV4dGFyZWEgY29udGVudC4gKi9cbiAgaW5wdXQ/OiBNYXliZVJlZjxzdHJpbmc+O1xuICAvKiogV2F0Y2ggc291cmNlcyB0aGF0IHNob3VsZCB0cmlnZ2VyIGEgdGV4dGFyZWEgcmVzaXplLiAqL1xuICB3YXRjaD86IFdhdGNoU291cmNlIHwgTXVsdGlXYXRjaFNvdXJjZXM7XG4gIC8qKiBGdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgdGV4dGFyZWEgc2l6ZSBjaGFuZ2VzLiAqL1xuICBvblJlc2l6ZT86ICgpID0+IHZvaWQ7XG4gIC8qKiBTcGVjaWZ5IHN0eWxlIHRhcmdldCB0byBhcHBseSB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRleHRhcmVhIGNvbnRlbnQuIElmIG5vdCBwcm92aWRlZCBpdCB3aWxsIHVzZSB0ZXh0YXJlYSBpdCBzZWxmLiAgKi9cbiAgc3R5bGVUYXJnZXQ/OiBNYXliZVJlZjxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD47XG4gIC8qKiBTcGVjaWZ5IHRoZSBzdHlsZSBwcm9wZXJ0eSB0aGF0IHdpbGwgYmUgdXNlZCB0byBtYW5pcHVsYXRlIGhlaWdodC4gQ2FuIGJlIGBoZWlnaHQgfCBtaW5IZWlnaHRgLiBEZWZhdWx0IHZhbHVlIGlzIGBoZWlnaHRgLiAqL1xuICBzdHlsZVByb3A/OiAnaGVpZ2h0JyB8ICdtaW5IZWlnaHQnO1xufVxuaW50ZXJmYWNlIFVzZVRleHRhcmVhQXV0b3NpemVSZXR1cm4ge1xuICB0ZXh0YXJlYTogUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQgfCB1bmRlZmluZWQgfCBudWxsPjtcbiAgaW5wdXQ6IFJlZjxzdHJpbmc+O1xuICB0cmlnZ2VyUmVzaXplOiAoKSA9PiB2b2lkO1xufVxuZGVjbGFyZSBmdW5jdGlvbiB1c2VUZXh0YXJlYUF1dG9zaXplKG9wdGlvbnM/OiBVc2VUZXh0YXJlYUF1dG9zaXplT3B0aW9ucyk6IFVzZVRleHRhcmVhQXV0b3NpemVSZXR1cm47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VUaHJvdHRsZWRSZWZIaXN0b3J5L2luZGV4LmQudHNcbnR5cGUgVXNlVGhyb3R0bGVkUmVmSGlzdG9yeU9wdGlvbnM8UmF3LCBTZXJpYWxpemVkID0gUmF3PiA9IE9taXQ8VXNlUmVmSGlzdG9yeU9wdGlvbnM8UmF3LCBTZXJpYWxpemVkPiwgJ2V2ZW50RmlsdGVyJz4gJiB7XG4gIHRocm90dGxlPzogTWF5YmVSZWY8bnVtYmVyPjtcbiAgdHJhaWxpbmc/OiBib29sZWFuO1xufTtcbnR5cGUgVXNlVGhyb3R0bGVkUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQgPSBSYXc+ID0gVXNlUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQ+O1xuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIFt1c2VSZWZIaXN0b3J5XShodHRwczovL3Z1ZXVzZS5vcmcvdXNlUmVmSGlzdG9yeSkgd2l0aCB0aHJvdHRsZWQgZmlsdGVyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVRocm90dGxlZFJlZkhpc3RvcnlcbiAqIEBwYXJhbSBzb3VyY2VcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVGhyb3R0bGVkUmVmSGlzdG9yeTxSYXcsIFNlcmlhbGl6ZWQgPSBSYXc+KHNvdXJjZTogUmVmPFJhdz4sIG9wdGlvbnM/OiBVc2VUaHJvdHRsZWRSZWZIaXN0b3J5T3B0aW9uczxSYXcsIFNlcmlhbGl6ZWQ+KTogVXNlVGhyb3R0bGVkUmVmSGlzdG9yeVJldHVybjxSYXcsIFNlcmlhbGl6ZWQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVGltZUFnby9pbmRleC5kLnRzXG50eXBlIFVzZVRpbWVBZ29Gb3JtYXR0ZXI8VCA9IG51bWJlcj4gPSAodmFsdWU6IFQsIGlzUGFzdDogYm9vbGVhbikgPT4gc3RyaW5nO1xudHlwZSBVc2VUaW1lQWdvVW5pdE5hbWVzRGVmYXVsdCA9ICdzZWNvbmQnIHwgJ21pbnV0ZScgfCAnaG91cicgfCAnZGF5JyB8ICd3ZWVrJyB8ICdtb250aCcgfCAneWVhcic7XG5pbnRlcmZhY2UgVXNlVGltZUFnb01lc3NhZ2VzQnVpbHRJbiB7XG4gIGp1c3ROb3c6IHN0cmluZztcbiAgcGFzdDogc3RyaW5nIHwgVXNlVGltZUFnb0Zvcm1hdHRlcjxzdHJpbmc+O1xuICBmdXR1cmU6IHN0cmluZyB8IFVzZVRpbWVBZ29Gb3JtYXR0ZXI8c3RyaW5nPjtcbiAgaW52YWxpZDogc3RyaW5nO1xufVxudHlwZSBVc2VUaW1lQWdvTWVzc2FnZXM8VW5pdE5hbWVzIGV4dGVuZHMgc3RyaW5nID0gVXNlVGltZUFnb1VuaXROYW1lc0RlZmF1bHQ+ID0gVXNlVGltZUFnb01lc3NhZ2VzQnVpbHRJbiAmIFJlY29yZDxVbml0TmFtZXMsIHN0cmluZyB8IFVzZVRpbWVBZ29Gb3JtYXR0ZXI8bnVtYmVyPj47XG5pbnRlcmZhY2UgRm9ybWF0VGltZUFnb09wdGlvbnM8VW5pdE5hbWVzIGV4dGVuZHMgc3RyaW5nID0gVXNlVGltZUFnb1VuaXROYW1lc0RlZmF1bHQ+IHtcbiAgLyoqXG4gICAqIE1heGltdW0gdW5pdCAob2YgZGlmZiBpbiBtaWxsaXNlY29uZHMpIHRvIGRpc3BsYXkgdGhlIGZ1bGwgZGF0ZSBpbnN0ZWFkIG9mIHJlbGF0aXZlXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgbWF4PzogVW5pdE5hbWVzIHwgbnVtYmVyO1xuICAvKipcbiAgICogRm9ybWF0dGVyIGZvciBmdWxsIGRhdGVcbiAgICovXG4gIGZ1bGxEYXRlRm9ybWF0dGVyPzogKGRhdGU6IERhdGUpID0+IHN0cmluZztcbiAgLyoqXG4gICAqIE1lc3NhZ2VzIGZvciBmb3JtYXR0aW5nIHRoZSBzdHJpbmdcbiAgICovXG4gIG1lc3NhZ2VzPzogVXNlVGltZUFnb01lc3NhZ2VzPFVuaXROYW1lcz47XG4gIC8qKlxuICAgKiBNaW5pbXVtIGRpc3BsYXkgdGltZSB1bml0IChkZWZhdWx0IGlzIG1pbnV0ZSlcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNob3dTZWNvbmQ/OiBib29sZWFuO1xuICAvKipcbiAgICogUm91bmRpbmcgbWV0aG9kIHRvIGFwcGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAncm91bmQnXG4gICAqL1xuICByb3VuZGluZz86ICdyb3VuZCcgfCAnY2VpbCcgfCAnZmxvb3InIHwgbnVtYmVyO1xuICAvKipcbiAgICogQ3VzdG9tIHVuaXRzXG4gICAqL1xuICB1bml0cz86IFVzZVRpbWVBZ29Vbml0PFVuaXROYW1lcz5bXTtcbn1cbmludGVyZmFjZSBVc2VUaW1lQWdvT3B0aW9uczxDb250cm9scyBleHRlbmRzIGJvb2xlYW4sIFVuaXROYW1lcyBleHRlbmRzIHN0cmluZyA9IFVzZVRpbWVBZ29Vbml0TmFtZXNEZWZhdWx0PiBleHRlbmRzIEZvcm1hdFRpbWVBZ29PcHRpb25zPFVuaXROYW1lcz4sIENvbmZpZ3VyYWJsZVNjaGVkdWxlciB7XG4gIC8qKlxuICAgKiBFeHBvc2UgbW9yZSBjb250cm9sc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY29udHJvbHM/OiBDb250cm9scztcbiAgLyoqXG4gICAqIEludGVydmFscyB0byB1cGRhdGUsIHNldCAwIHRvIGRpc2FibGUgYXV0byB1cGRhdGVcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgc2NoZWR1bGVyYCBvcHRpb24gaW5zdGVhZFxuICAgKiBAZGVmYXVsdCAzMF8wMDBcbiAgICovXG4gIHVwZGF0ZUludGVydmFsPzogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZVRpbWVBZ29Vbml0PFVuaXQgZXh0ZW5kcyBzdHJpbmcgPSBVc2VUaW1lQWdvVW5pdE5hbWVzRGVmYXVsdD4ge1xuICBtYXg6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbmFtZTogVW5pdDtcbn1cbnR5cGUgVXNlVGltZUFnb1JldHVybjxDb250cm9scyBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4gPSBDb250cm9scyBleHRlbmRzIHRydWUgPyB7XG4gIHRpbWVBZ286IENvbXB1dGVkUmVmPHN0cmluZz47XG59ICYgUGF1c2FibGUgOiBDb21wdXRlZFJlZjxzdHJpbmc+O1xuLyoqXG4gKiBSZWFjdGl2ZSB0aW1lIGFnbyBmb3JtYXR0ZXIuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlVGltZUFnb1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVGltZUFnbzxVbml0TmFtZXMgZXh0ZW5kcyBzdHJpbmcgPSBVc2VUaW1lQWdvVW5pdE5hbWVzRGVmYXVsdD4odGltZTogTWF5YmVSZWZPckdldHRlcjxEYXRlIHwgbnVtYmVyIHwgc3RyaW5nPiwgb3B0aW9ucz86IFVzZVRpbWVBZ29PcHRpb25zPGZhbHNlLCBVbml0TmFtZXM+KTogVXNlVGltZUFnb1JldHVybjxmYWxzZT47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRpbWVBZ288VW5pdE5hbWVzIGV4dGVuZHMgc3RyaW5nID0gVXNlVGltZUFnb1VuaXROYW1lc0RlZmF1bHQ+KHRpbWU6IE1heWJlUmVmT3JHZXR0ZXI8RGF0ZSB8IG51bWJlciB8IHN0cmluZz4sIG9wdGlvbnM6IFVzZVRpbWVBZ29PcHRpb25zPHRydWUsIFVuaXROYW1lcz4pOiBVc2VUaW1lQWdvUmV0dXJuPHRydWU+O1xuZGVjbGFyZSBmdW5jdGlvbiBmb3JtYXRUaW1lQWdvPFVuaXROYW1lcyBleHRlbmRzIHN0cmluZyA9IFVzZVRpbWVBZ29Vbml0TmFtZXNEZWZhdWx0Pihmcm9tOiBEYXRlLCBvcHRpb25zPzogRm9ybWF0VGltZUFnb09wdGlvbnM8VW5pdE5hbWVzPiwgbm93PzogRGF0ZSB8IG51bWJlcik6IHN0cmluZztcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRpbWVBZ29JbnRsL2luZGV4LmQudHNcbnR5cGUgTG9jYWxlID0gSW50bC5Vbmljb2RlQkNQNDdMb2NhbGVJZGVudGlmaWVyIHwgSW50bC5Mb2NhbGU7XG5pbnRlcmZhY2UgRm9ybWF0VGltZUFnb0ludGxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgdG8gZm9ybWF0IHdpdGhcbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9SZWxhdGl2ZVRpbWVGb3JtYXQvUmVsYXRpdmVUaW1lRm9ybWF0I2xvY2FsZXNcbiAgICovXG4gIGxvY2FsZT86IExvY2FsZTtcbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9SZWxhdGl2ZVRpbWVGb3JtYXQvUmVsYXRpdmVUaW1lRm9ybWF0I29wdGlvbnNcbiAgICovXG4gIHJlbGF0aXZlVGltZUZvcm1hdE9wdGlvbnM/OiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdE9wdGlvbnM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc2VydCBzcGFjZXMgYmV0d2VlbiBwYXJ0cy5cbiAgICpcbiAgICogSWdub3JlZCBpZiBgam9pblBhcnRzYCBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5zZXJ0U3BhY2U/OiBib29sZWFuO1xuICAvKipcbiAgICogQ3VzdG9tIGZ1bmN0aW9uIHRvIGpvaW4gdGhlIHBhcnRzIHJldHVybmVkIGJ5IGBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5mb3JtYXRUb1BhcnRzYC5cbiAgICpcbiAgICogSWYgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGpvaW4gbG9naWMuXG4gICAqL1xuICBqb2luUGFydHM/OiAocGFydHM6IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0UGFydFtdLCBsb2NhbGU/OiBJbnRsLlVuaWNvZGVCQ1A0N0xvY2FsZUlkZW50aWZpZXIgfCBJbnRsLkxvY2FsZSkgPT4gc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIHVuaXRzXG4gICAqL1xuICB1bml0cz86IFRpbWVBZ29Vbml0W107XG59XG5pbnRlcmZhY2UgVXNlVGltZUFnb0ludGxPcHRpb25zPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbj4gZXh0ZW5kcyBGb3JtYXRUaW1lQWdvSW50bE9wdGlvbnMsIENvbmZpZ3VyYWJsZVNjaGVkdWxlciB7XG4gIC8qKlxuICAgKiBFeHBvc2UgbW9yZSBjb250cm9scyBhbmQgdGhlIHJhdyBgcGFydHNgIHJlc3VsdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbnRyb2xzPzogQ29udHJvbHM7XG4gIC8qKlxuICAgKiBVcGRhdGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzLCBzZXQgMCB0byBkaXNhYmxlIGF1dG8gdXBkYXRlXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICogQGRlZmF1bHQgMzBfMDAwXG4gICAqL1xuICB1cGRhdGVJbnRlcnZhbD86IG51bWJlcjtcbn1cbnR5cGUgVXNlVGltZUFnb1JldHVybiQxPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IENvbnRyb2xzIGV4dGVuZHMgdHJ1ZSA/IHtcbiAgdGltZUFnb0ludGw6IENvbXB1dGVkUmVmPHN0cmluZz47XG4gIHBhcnRzOiBDb21wdXRlZFJlZjxJbnRsLlJlbGF0aXZlVGltZUZvcm1hdFBhcnRbXT47XG59ICYgUGF1c2FibGUgOiBDb21wdXRlZFJlZjxzdHJpbmc+O1xuaW50ZXJmYWNlIFRpbWVBZ29Vbml0IHtcbiAgbmFtZTogSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRVbml0O1xuICBtczogbnVtYmVyO1xufVxuLyoqXG4gKiBBIHJlYWN0aXZlIHdyYXBwZXIgZm9yIGBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdGAuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVGltZUFnb0ludGwodGltZTogTWF5YmVSZWZPckdldHRlcjxEYXRlIHwgbnVtYmVyIHwgc3RyaW5nPiwgb3B0aW9ucz86IFVzZVRpbWVBZ29JbnRsT3B0aW9uczxmYWxzZT4pOiBVc2VUaW1lQWdvUmV0dXJuJDE8ZmFsc2U+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUaW1lQWdvSW50bCh0aW1lOiBNYXliZVJlZk9yR2V0dGVyPERhdGUgfCBudW1iZXIgfCBzdHJpbmc+LCBvcHRpb25zOiBVc2VUaW1lQWdvSW50bE9wdGlvbnM8dHJ1ZT4pOiBVc2VUaW1lQWdvUmV0dXJuJDE8dHJ1ZT47XG4vKipcbiAqIE5vbi1yZWFjdGl2ZSB2ZXJzaW9uIG9mIHVzZVRpbWVBZ29JbnRsXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gZm9ybWF0VGltZUFnb0ludGwoZnJvbTogRGF0ZSwgb3B0aW9ucz86IEZvcm1hdFRpbWVBZ29JbnRsT3B0aW9ucywgbm93PzogRGF0ZSB8IG51bWJlcik6IHN0cmluZztcbi8qKlxuICogRm9ybWF0IHBhcnRzIGludG8gYSBzdHJpbmdcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBmb3JtYXRUaW1lQWdvSW50bFBhcnRzKHBhcnRzOiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdFBhcnRbXSwgb3B0aW9ucz86IEZvcm1hdFRpbWVBZ29JbnRsT3B0aW9ucyk6IHN0cmluZztcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVRpbWVvdXRQb2xsL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VUaW1lb3V0UG9sbE9wdGlvbnMge1xuICAvKipcbiAgICogU3RhcnQgdGhlIHRpbWVyIGltbWVkaWF0ZWx5XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBjYWxsYmFjayBpbW1lZGlhdGVseSBhZnRlciBjYWxsaW5nIGByZXN1bWVgXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbW1lZGlhdGVDYWxsYmFjaz86IGJvb2xlYW47XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRpbWVvdXRQb2xsKGZuOiAoKSA9PiBBd2FpdGFibGU8dm9pZD4sIGludGVydmFsOiBNYXliZVJlZk9yR2V0dGVyPG51bWJlcj4sIG9wdGlvbnM/OiBVc2VUaW1lb3V0Rm5PcHRpb25zKTogUGF1c2FibGU7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VUaW1lc3RhbXAvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVRpbWVzdGFtcE9wdGlvbnM8Q29udHJvbHMgZXh0ZW5kcyBib29sZWFuPiBleHRlbmRzIENvbmZpZ3VyYWJsZVNjaGVkdWxlciB7XG4gIC8qKlxuICAgKiBFeHBvc2UgbW9yZSBjb250cm9sc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY29udHJvbHM/OiBDb250cm9scztcbiAgLyoqXG4gICAqIE9mZnNldCB2YWx1ZSBhZGRpbmcgdG8gdGhlIHZhbHVlXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIG9mZnNldD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdGltZXN0YW1wIGltbWVkaWF0ZWx5XG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVwZGF0ZSBpbnRlcnZhbCwgb3IgdXNlIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBzY2hlZHVsZXJgIG9wdGlvbiBpbnN0ZWFkXG4gICAqIEBkZWZhdWx0IHJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgKi9cbiAgaW50ZXJ2YWw/OiAncmVxdWVzdEFuaW1hdGlvbkZyYW1lJyB8IG51bWJlcjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIG9uIGVhY2ggdXBkYXRlXG4gICAqL1xuICBjYWxsYmFjaz86ICh0aW1lc3RhbXA6IG51bWJlcikgPT4gdm9pZDtcbn1cbnR5cGUgVXNlVGltZXN0YW1wUmV0dXJuPENvbnRyb2xzIGV4dGVuZHMgYm9vbGVhbj4gPSBDb250cm9scyBleHRlbmRzIHRydWUgPyAoe1xuICB0aW1lc3RhbXA6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbn0gJiBQYXVzYWJsZSkgOiBTaGFsbG93UmVmPG51bWJlcj47XG4vKipcbiAqIFJlYWN0aXZlIGN1cnJlbnQgdGltZXN0YW1wLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVRpbWVzdGFtcFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUaW1lc3RhbXAob3B0aW9ucz86IFVzZVRpbWVzdGFtcE9wdGlvbnM8ZmFsc2U+KTogU2hhbGxvd1JlZjxudW1iZXI+O1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VUaW1lc3RhbXAob3B0aW9uczogVXNlVGltZXN0YW1wT3B0aW9uczx0cnVlPik6IHtcbiAgdGltZXN0YW1wOiBTaGFsbG93UmVmPG51bWJlcj47XG59ICYgUGF1c2FibGU7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VUaXRsZS9pbmRleC5kLnRzXG50eXBlIFVzZVRpdGxlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCB0aXRsZSB3aGVuIHVubW91bnRlZFxuICAgKiBAcGFyYW0gb3JpZ2luVGl0bGUgb3JpZ2luYWwgdGl0bGVcbiAgICogQHJldHVybnMgcmVzdG9yZWQgdGl0bGVcbiAgICovXG4gIHJlc3RvcmVPblVubW91bnQ/OiBmYWxzZSB8ICgob3JpZ2luYWxUaXRsZTogc3RyaW5nLCBjdXJyZW50VGl0bGU6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk7XG59ICYgKHtcbiAgLyoqXG4gICAqIE9ic2VydmUgYGRvY3VtZW50LnRpdGxlYCBjaGFuZ2VzIHVzaW5nIE11dGF0aW9uT2JzZXJ2ZVxuICAgKiBDYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIGB0aXRsZVRlbXBsYXRlYCBvcHRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBvYnNlcnZlPzogYm9vbGVhbjtcbn0gfCB7XG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgc3RyaW5nIHRvIHBhcnNlIHRoZSB0aXRsZSAoZS5nLiwgJyVzIHwgTXkgV2Vic2l0ZScpXG4gICAqIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggYG9ic2VydmVgIG9wdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJyVzJ1xuICAgKi9cbiAgdGl0bGVUZW1wbGF0ZT86IE1heWJlUmVmPHN0cmluZz4gfCAoKHRpdGxlOiBzdHJpbmcpID0+IHN0cmluZyk7XG59KTtcbnR5cGUgVXNlVGl0bGVPcHRpb25zID0gQ29uZmlndXJhYmxlRG9jdW1lbnQgJiBVc2VUaXRsZU9wdGlvbnNCYXNlO1xudHlwZSBVc2VUaXRsZVJldHVybiA9IENvbXB1dGVkUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+IHwgUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+O1xuLyoqXG4gKiBSZWFjdGl2ZSBkb2N1bWVudCB0aXRsZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VUaXRsZVxuICogQHBhcmFtIG5ld1RpdGxlXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQGRlc2NyaXB0aW9uIEl0J3Mgbm90IFNTUiBjb21wYXRpYmxlLiBZb3VyIHZhbHVlIHdpbGwgYmUgYXBwbGllZCBvbmx5IG9uIGNsaWVudC1zaWRlLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRpdGxlKG5ld1RpdGxlOiBSZWFkb25seVJlZk9yR2V0dGVyPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlVGl0bGVPcHRpb25zKTogQ29tcHV0ZWRSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRpdGxlKG5ld1RpdGxlPzogTWF5YmVSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiBVc2VUaXRsZU9wdGlvbnMpOiBSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VUcmFuc2l0aW9uL2luZGV4LmQudHNcbi8qKlxuICogQ3ViaWMgYmV6aWVyIHBvaW50c1xuICovXG50eXBlIEN1YmljQmV6aWVyUG9pbnRzID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4vKipcbiAqIEVhc2luZyBmdW5jdGlvblxuICovXG50eXBlIEVhc2luZ0Z1bmN0aW9uID0gKG46IG51bWJlcikgPT4gbnVtYmVyO1xuLyoqXG4gKiBJbnRlcnBvbGF0aW9uIGZ1bmN0aW9uXG4gKi9cbnR5cGUgSW50ZXJwb2xhdGlvbkZ1bmN0aW9uPFQ+ID0gKGZyb206IFQsIHRvOiBULCB0OiBudW1iZXIpID0+IFQ7XG4vKipcbiAqIFRyYW5zaXRpb24gb3B0aW9uc1xuICovXG5pbnRlcmZhY2UgVHJhbnNpdGlvbk9wdGlvbnM8VD4gZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICAvKipcbiAgICogTWFudWFsbHkgYWJvcnQgYSB0cmFuc2l0aW9uXG4gICAqL1xuICBhYm9ydD86ICgpID0+IGFueTtcbiAgLyoqXG4gICAqIFRyYW5zaXRpb24gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzXG4gICAqL1xuICBkdXJhdGlvbj86IE1heWJlUmVmPG51bWJlcj47XG4gIC8qKlxuICAgKiBFYXNpbmcgZnVuY3Rpb24gb3IgY3ViaWMgYmV6aWVyIHBvaW50cyB0byBjYWxjdWxhdGUgdHJhbnNpdGlvbiBwcm9ncmVzc1xuICAgKi9cbiAgZWFzaW5nPzogTWF5YmVSZWY8RWFzaW5nRnVuY3Rpb24gfCBDdWJpY0JlemllclBvaW50cz47XG4gIC8qKlxuICAgKiBDdXN0b20gaW50ZXJwb2xhdGlvbiBmdW5jdGlvblxuICAgKi9cbiAgaW50ZXJwb2xhdGlvbj86IEludGVycG9sYXRpb25GdW5jdGlvbjxUPjtcbiAgLyoqXG4gICAqIEVhc2luZyBmdW5jdGlvbiBvciBjdWJpYyBiZXppZXIgcG9pbnRzIHRvIGNhbGN1bGF0ZSB0cmFuc2l0aW9uIHByb2dyZXNzXG4gICAqIEBkZXByZWNhdGVkIFRoZSBgdHJhbnNpdGlvbmAgb3B0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSBgZWFzaW5nYCBpbnN0ZWFkLlxuICAgKi9cbiAgdHJhbnNpdGlvbj86IE1heWJlUmVmPEVhc2luZ0Z1bmN0aW9uIHwgQ3ViaWNCZXppZXJQb2ludHM+O1xufVxuaW50ZXJmYWNlIFVzZVRyYW5zaXRpb25PcHRpb25zPFQ+IGV4dGVuZHMgVHJhbnNpdGlvbk9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogTWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHN0YXJ0aW5nIHRyYW5zaXRpb25cbiAgICovXG4gIGRlbGF5PzogTWF5YmVSZWY8bnVtYmVyPjtcbiAgLyoqXG4gICAqIERpc2FibGVzIHRoZSB0cmFuc2l0aW9uXG4gICAqL1xuICBkaXNhYmxlZD86IE1heWJlUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gZXhlY3V0ZSBhZnRlciB0cmFuc2l0aW9uIGZpbmlzaGVzXG4gICAqL1xuICBvbkZpbmlzaGVkPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGV4ZWN1dGUgYWZ0ZXIgdHJhbnNpdGlvbiBzdGFydHNcbiAgICovXG4gIG9uU3RhcnRlZD86ICgpID0+IHZvaWQ7XG59XG5kZWNsYXJlIGNvbnN0IF9UcmFuc2l0aW9uUHJlc2V0czoge1xuICByZWFkb25seSBlYXNlSW5TaW5lOiByZWFkb25seSBbMC4xMiwgMCwgMC4zOSwgMF07XG4gIHJlYWRvbmx5IGVhc2VPdXRTaW5lOiByZWFkb25seSBbMC42MSwgMSwgMC44OCwgMV07XG4gIHJlYWRvbmx5IGVhc2VJbk91dFNpbmU6IHJlYWRvbmx5IFswLjM3LCAwLCAwLjYzLCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluUXVhZDogcmVhZG9ubHkgWzAuMTEsIDAsIDAuNSwgMF07XG4gIHJlYWRvbmx5IGVhc2VPdXRRdWFkOiByZWFkb25seSBbMC41LCAxLCAwLjg5LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluT3V0UXVhZDogcmVhZG9ubHkgWzAuNDUsIDAsIDAuNTUsIDFdO1xuICByZWFkb25seSBlYXNlSW5DdWJpYzogcmVhZG9ubHkgWzAuMzIsIDAsIDAuNjcsIDBdO1xuICByZWFkb25seSBlYXNlT3V0Q3ViaWM6IHJlYWRvbmx5IFswLjMzLCAxLCAwLjY4LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluT3V0Q3ViaWM6IHJlYWRvbmx5IFswLjY1LCAwLCAwLjM1LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluUXVhcnQ6IHJlYWRvbmx5IFswLjUsIDAsIDAuNzUsIDBdO1xuICByZWFkb25seSBlYXNlT3V0UXVhcnQ6IHJlYWRvbmx5IFswLjI1LCAxLCAwLjUsIDFdO1xuICByZWFkb25seSBlYXNlSW5PdXRRdWFydDogcmVhZG9ubHkgWzAuNzYsIDAsIDAuMjQsIDFdO1xuICByZWFkb25seSBlYXNlSW5RdWludDogcmVhZG9ubHkgWzAuNjQsIDAsIDAuNzgsIDBdO1xuICByZWFkb25seSBlYXNlT3V0UXVpbnQ6IHJlYWRvbmx5IFswLjIyLCAxLCAwLjM2LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluT3V0UXVpbnQ6IHJlYWRvbmx5IFswLjgzLCAwLCAwLjE3LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluRXhwbzogcmVhZG9ubHkgWzAuNywgMCwgMC44NCwgMF07XG4gIHJlYWRvbmx5IGVhc2VPdXRFeHBvOiByZWFkb25seSBbMC4xNiwgMSwgMC4zLCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluT3V0RXhwbzogcmVhZG9ubHkgWzAuODcsIDAsIDAuMTMsIDFdO1xuICByZWFkb25seSBlYXNlSW5DaXJjOiByZWFkb25seSBbMC41NSwgMCwgMSwgMC40NV07XG4gIHJlYWRvbmx5IGVhc2VPdXRDaXJjOiByZWFkb25seSBbMCwgMC41NSwgMC40NSwgMV07XG4gIHJlYWRvbmx5IGVhc2VJbk91dENpcmM6IHJlYWRvbmx5IFswLjg1LCAwLCAwLjE1LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluQmFjazogcmVhZG9ubHkgWzAuMzYsIDAsIDAuNjYsIC0wLjU2XTtcbiAgcmVhZG9ubHkgZWFzZU91dEJhY2s6IHJlYWRvbmx5IFswLjM0LCAxLjU2LCAwLjY0LCAxXTtcbiAgcmVhZG9ubHkgZWFzZUluT3V0QmFjazogcmVhZG9ubHkgWzAuNjgsIC0wLjYsIDAuMzIsIDEuNl07XG59O1xuLyoqXG4gKiBDb21tb24gdHJhbnNpdGlvbnNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZWFzaW5ncy5uZXRcbiAqL1xuZGVjbGFyZSBjb25zdCBUcmFuc2l0aW9uUHJlc2V0czogUmVjb3JkPGtleW9mIHR5cGVvZiBfVHJhbnNpdGlvblByZXNldHMsIEN1YmljQmV6aWVyUG9pbnRzPiAmIHtcbiAgbGluZWFyOiBFYXNpbmdGdW5jdGlvbjtcbn07XG4vKipcbiAqIFRyYW5zaXRpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlci5cbiAqXG4gKiBAcGFyYW0gc291cmNlXG4gKiBAcGFyYW0gZnJvbVxuICogQHBhcmFtIHRvXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHRyYW5zaXRpb248VD4oc291cmNlOiBSZWY8VD4sIGZyb206IE1heWJlUmVmT3JHZXR0ZXI8VD4sIHRvOiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBvcHRpb25zPzogVHJhbnNpdGlvbk9wdGlvbnM8VD4pOiBQcm9taXNlTGlrZTx2b2lkPjtcbi8qKlxuICogVHJhbnNpdGlvbiBmcm9tIG9uZSB2YWx1ZSB0byBhbm90aGVyLlxuICogQGRlcHJlY2F0ZWQgVGhlIGBleGVjdXRlVHJhbnNpdGlvbmAgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGB0cmFuc2l0aW9uYCBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBzb3VyY2VcbiAqIEBwYXJhbSBmcm9tXG4gKiBAcGFyYW0gdG9cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gZXhlY3V0ZVRyYW5zaXRpb248VD4oc291cmNlOiBSZWY8VD4sIGZyb206IE1heWJlUmVmT3JHZXR0ZXI8VD4sIHRvOiBNYXliZVJlZk9yR2V0dGVyPFQ+LCBvcHRpb25zPzogVHJhbnNpdGlvbk9wdGlvbnM8VD4pOiBQcm9taXNlTGlrZTx2b2lkPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlVHJhbnNpdGlvbjxUIGV4dGVuZHMgTWF5YmVSZWZPckdldHRlcjxudW1iZXI+W10+KHNvdXJjZTogWy4uLlRdLCBvcHRpb25zPzogVXNlVHJhbnNpdGlvbk9wdGlvbnM8VD4pOiBDb21wdXRlZFJlZjx7IFtLIGluIGtleW9mIFRdOiBudW1iZXIgfT47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVRyYW5zaXRpb248VCBleHRlbmRzIE1heWJlUmVmT3JHZXR0ZXI8bnVtYmVyW10+Pihzb3VyY2U6IFQsIG9wdGlvbnM/OiBVc2VUcmFuc2l0aW9uT3B0aW9uczxUPik6IENvbXB1dGVkUmVmPG51bWJlcltdPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlVHJhbnNpdGlvbjxUPihzb3VyY2U6IE1heWJlUmVmT3JHZXR0ZXI8VD4sIG9wdGlvbnM/OiBVc2VUcmFuc2l0aW9uT3B0aW9uczxUPik6IENvbXB1dGVkUmVmPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVXJsU2VhcmNoUGFyYW1zL2luZGV4LmQudHNcbnR5cGUgVXJsUGFyYW1zID0gUmVjb3JkPHN0cmluZywgc3RyaW5nW10gfCBzdHJpbmc+O1xuaW50ZXJmYWNlIFVzZVVybFNlYXJjaFBhcmFtc09wdGlvbnM8VD4gZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICAvKipcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVtb3ZlTnVsbGlzaFZhbHVlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVtb3ZlRmFsc3lWYWx1ZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGluaXRpYWxWYWx1ZT86IFQ7XG4gIC8qKlxuICAgKiBXcml0ZSBiYWNrIHRvIGB3aW5kb3cuaGlzdG9yeWAgYXV0b21hdGljYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3cml0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXcml0ZSBtb2RlIGZvciBgd2luZG93Lmhpc3RvcnlgIHdoZW4gYHdyaXRlYCBpcyBlbmFibGVkXG4gICAqIC0gYHJlcGxhY2VgOiByZXBsYWNlIHRoZSBjdXJyZW50IGhpc3RvcnkgZW50cnlcbiAgICogLSBgcHVzaGA6IHB1c2ggYSBuZXcgaGlzdG9yeSBlbnRyeVxuICAgKiBAZGVmYXVsdCAncmVwbGFjZSdcbiAgICovXG4gIHdyaXRlTW9kZT86ICdyZXBsYWNlJyB8ICdwdXNoJztcbiAgLyoqXG4gICAqIEN1c3RvbSBmdW5jdGlvbiB0byBzZXJpYWxpemUgVVJMIHBhcmFtZXRlcnNcbiAgICogV2hlbiBwcm92aWRlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBVUkxTZWFyY2hQYXJhbXMudG9TdHJpbmcoKVxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0IHRvIHNlcmlhbGl6ZVxuICAgKiBAcmV0dXJucyBUaGUgc2VyaWFsaXplZCBxdWVyeSBzdHJpbmcgKHNob3VsZCBub3QgaW5jbHVkZSB0aGUgbGVhZGluZyAnPycgb3IgJyMnKVxuICAgKi9cbiAgc3RyaW5naWZ5PzogKHBhcmFtczogVVJMU2VhcmNoUGFyYW1zKSA9PiBzdHJpbmc7XG59XG4vKipcbiAqIFJlYWN0aXZlIFVSTFNlYXJjaFBhcmFtc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVVybFNlYXJjaFBhcmFtc1xuICogQHBhcmFtIG1vZGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVXJsU2VhcmNoUGFyYW1zPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gVXJsUGFyYW1zPihtb2RlPzogJ2hpc3RvcnknIHwgJ2hhc2gnIHwgJ2hhc2gtcGFyYW1zJywgb3B0aW9ucz86IFVzZVVybFNlYXJjaFBhcmFtc09wdGlvbnM8VD4pOiBUO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVXNlck1lZGlhL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VVc2VyTWVkaWFPcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlTmF2aWdhdG9yIHtcbiAgLyoqXG4gICAqIElmIHRoZSBzdHJlYW0gaXMgZW5hYmxlZFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZW5hYmxlZD86IE1heWJlUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogUmVjcmVhdGUgc3RyZWFtIHdoZW4gZGV2aWNlSWRzIG9yIGNvbnN0cmFpbnRzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgYXV0b1N3aXRjaD86IE1heWJlUmVmPGJvb2xlYW4+O1xuICAvKipcbiAgICogTWVkaWFTdHJlYW1Db25zdHJhaW50cyB0byBiZSBhcHBsaWVkIHRvIHRoZSByZXF1ZXN0ZWQgTWVkaWFTdHJlYW1cbiAgICogSWYgcHJvdmlkZWQsIHRoZSBjb25zdHJhaW50cyB3aWxsIG92ZXJyaWRlIHZpZGVvRGV2aWNlSWQgYW5kIGF1ZGlvRGV2aWNlSWRcbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGNvbnN0cmFpbnRzPzogTWF5YmVSZWY8TWVkaWFTdHJlYW1Db25zdHJhaW50cz47XG59XG5pbnRlcmZhY2UgVXNlVXNlck1lZGlhUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBzdHJlYW06IFJlZjxNZWRpYVN0cmVhbSB8IHVuZGVmaW5lZD47XG4gIHN0YXJ0OiAoKSA9PiBQcm9taXNlPE1lZGlhU3RyZWFtIHwgdW5kZWZpbmVkPjtcbiAgc3RvcDogKCkgPT4gdm9pZDtcbiAgcmVzdGFydDogKCkgPT4gUHJvbWlzZTxNZWRpYVN0cmVhbSB8IHVuZGVmaW5lZD47XG4gIGNvbnN0cmFpbnRzOiBSZWY8TWVkaWFTdHJlYW1Db25zdHJhaW50cyB8IHVuZGVmaW5lZD47XG4gIGVuYWJsZWQ6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4gIGF1dG9Td2l0Y2g6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG59XG4vKipcbiAqIFJlYWN0aXZlIGBtZWRpYURldmljZXMuZ2V0VXNlck1lZGlhYCBzdHJlYW1pbmdcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VVc2VyTWVkaWFcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVXNlck1lZGlhKG9wdGlvbnM/OiBVc2VVc2VyTWVkaWFPcHRpb25zKTogVXNlVXNlck1lZGlhUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlVk1vZGVsL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VWTW9kZWxPcHRpb25zPFQsIFBhc3NpdmUgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+IHtcbiAgLyoqXG4gICAqIFdoZW4gcGFzc2l2ZSBpcyBzZXQgdG8gYHRydWVgLCBpdCB3aWxsIHVzZSBgd2F0Y2hgIHRvIHN5bmMgd2l0aCBwcm9wcyBhbmQgcmVmLlxuICAgKiBJbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGB2LW1vZGVsYCBvciBgLnN5bmNgIHRvIHdvcmsuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwYXNzaXZlPzogUGFzc2l2ZTtcbiAgLyoqXG4gICAqIFdoZW4gZXZlbnROYW1lIGlzIHNldCwgaXQncyB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBlbWl0IGV2ZW50IG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgZXZlbnROYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQXR0ZW1wdGluZyB0byBjaGVjayBmb3IgY2hhbmdlcyBvZiBwcm9wZXJ0aWVzIGluIGEgZGVlcGx5IG5lc3RlZCBvYmplY3Qgb3IgYXJyYXkuXG4gICAqIEFwcGx5IG9ubHkgd2hlbiBgcGFzc2l2ZWAgb3B0aW9uIGlzIHNldCB0byBgdHJ1ZWBcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlZXA/OiBib29sZWFuO1xuICAvKipcbiAgICogRGVmaW5pbmcgZGVmYXVsdCB2YWx1ZSBmb3IgcmV0dXJuIHJlZiB3aGVuIG5vIHZhbHVlIGlzIHBhc3NlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBUO1xuICAvKipcbiAgICogQ2xvbmUgdGhlIHByb3BzLlxuICAgKiBBY2NlcHRzIGEgY3VzdG9tIGNsb25lIGZ1bmN0aW9uLlxuICAgKiBXaGVuIHNldHRpbmcgdG8gYHRydWVgLCBpdCB3aWxsIHVzZSBgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpYCB0byBjbG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNsb25lPzogYm9vbGVhbiB8IENsb25lRm48VD47XG4gIC8qKlxuICAgKiBUaGUgaG9vayBiZWZvcmUgdHJpZ2dlcmluZyB0aGUgZW1pdCBldmVudCBjYW4gYmUgdXNlZCBmb3IgZm9ybSB2YWxpZGF0aW9uLlxuICAgKiBpZiBmYWxzZSBpcyByZXR1cm5lZCwgdGhlIGVtaXQgZXZlbnQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHNob3VsZEVtaXQ/OiAodjogVCkgPT4gYm9vbGVhbjtcbn1cbi8qKlxuICogU2hvcnRoYW5kIGZvciB2LW1vZGVsIGJpbmRpbmcsIHByb3BzICsgZW1pdCAtPiByZWZcbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VWTW9kZWxcbiAqIEBwYXJhbSBwcm9wc1xuICogQHBhcmFtIGtleSAoZGVmYXVsdCAnbW9kZWxWYWx1ZScpXG4gKiBAcGFyYW0gZW1pdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVZNb2RlbDxQJDEgZXh0ZW5kcyBvYmplY3QsIEskMSBleHRlbmRzIGtleW9mIFAkMSwgTmFtZSBleHRlbmRzIHN0cmluZz4ocHJvcHM6IFAkMSwga2V5PzogSyQxLCBlbWl0PzogKG5hbWU6IE5hbWUsIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBvcHRpb25zPzogVXNlVk1vZGVsT3B0aW9uczxQJDFbSyQxXSwgZmFsc2U+KTogV3JpdGFibGVDb21wdXRlZFJlZjxQJDFbSyQxXT47XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVZNb2RlbDxQJDEgZXh0ZW5kcyBvYmplY3QsIEskMSBleHRlbmRzIGtleW9mIFAkMSwgTmFtZSBleHRlbmRzIHN0cmluZz4ocHJvcHM6IFAkMSwga2V5PzogSyQxLCBlbWl0PzogKG5hbWU6IE5hbWUsIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBvcHRpb25zPzogVXNlVk1vZGVsT3B0aW9uczxQJDFbSyQxXSwgdHJ1ZT4pOiBSZWY8VW53cmFwUmVmPFAkMVtLJDFdPj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VWTW9kZWxzL2luZGV4LmQudHNcbi8qKlxuICogU2hvcnRoYW5kIGZvciBwcm9wcyB2LW1vZGVsIGJpbmRpbmcuIFRoaW5rIGxpa2UgYHRvUmVmcyhwcm9wcylgIGJ1dCBjaGFuZ2VzIHdpbGwgYWxzbyBlbWl0IG91dC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VWTW9kZWxzXG4gKiBAcGFyYW0gcHJvcHNcbiAqIEBwYXJhbSBlbWl0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlVk1vZGVsczxQJDEgZXh0ZW5kcyBvYmplY3QsIE5hbWUgZXh0ZW5kcyBzdHJpbmc+KHByb3BzOiBQJDEsIGVtaXQ/OiAobmFtZTogTmFtZSwgLi4uYXJnczogYW55W10pID0+IHZvaWQsIG9wdGlvbnM/OiBVc2VWTW9kZWxPcHRpb25zPGFueSwgdHJ1ZT4pOiBUb1JlZnM8UCQxPjtcbmRlY2xhcmUgZnVuY3Rpb24gdXNlVk1vZGVsczxQJDEgZXh0ZW5kcyBvYmplY3QsIE5hbWUgZXh0ZW5kcyBzdHJpbmc+KHByb3BzOiBQJDEsIGVtaXQ/OiAobmFtZTogTmFtZSwgLi4uYXJnczogYW55W10pID0+IHZvaWQsIG9wdGlvbnM/OiBVc2VWTW9kZWxPcHRpb25zPGFueSwgZmFsc2U+KTogVG9SZWZzPFAkMT47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VWaWJyYXRlL2luZGV4LmQudHNcbmludGVyZmFjZSBVc2VWaWJyYXRlT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZU5hdmlnYXRvciwgQ29uZmlndXJhYmxlU2NoZWR1bGVyIHtcbiAgLyoqXG4gICAqXG4gICAqIFZpYnJhdGlvbiBQYXR0ZXJuXG4gICAqXG4gICAqIEFuIGFycmF5IG9mIHZhbHVlcyBkZXNjcmliZXMgYWx0ZXJuYXRpbmcgcGVyaW9kcyBpbiB3aGljaCB0aGVcbiAgICogZGV2aWNlIGlzIHZpYnJhdGluZyBhbmQgbm90IHZpYnJhdGluZy4gRWFjaCB2YWx1ZSBpbiB0aGUgYXJyYXlcbiAgICogaXMgY29udmVydGVkIHRvIGFuIGludGVnZXIsIHRoZW4gaW50ZXJwcmV0ZWQgYWx0ZXJuYXRlbHkgYXNcbiAgICogdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhlIGRldmljZSBzaG91bGQgdmlicmF0ZSBhbmQgdGhlXG4gICAqIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgc2hvdWxkIG5vdCBiZSB2aWJyYXRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICpcbiAgICovXG4gIHBhdHRlcm4/OiBNYXliZVJlZk9yR2V0dGVyPEFycmF5YWJsZTxudW1iZXI+PjtcbiAgLyoqXG4gICAqIEludGVydmFsIHRvIHJ1biBhIHBlcnNpc3RlbnQgdmlicmF0aW9uLCBpbiBtc1xuICAgKlxuICAgKiBQYXNzIGAwYCB0byBkaXNhYmxlXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHNjaGVkdWxlcmAgb3B0aW9uIGluc3RlYWRcbiAgICogQGRlZmF1bHQgMFxuICAgKlxuICAgKi9cbiAgaW50ZXJ2YWw6IG51bWJlcjtcbn1cbmludGVyZmFjZSBVc2VWaWJyYXRlUmV0dXJuIGV4dGVuZHMgU3VwcG9ydGFibGUge1xuICBwYXR0ZXJuOiBNYXliZVJlZk9yR2V0dGVyPEFycmF5YWJsZTxudW1iZXI+PjtcbiAgaW50ZXJ2YWxDb250cm9scz86IFBhdXNhYmxlO1xuICB2aWJyYXRlOiAocGF0dGVybj86IEFycmF5YWJsZTxudW1iZXI+KSA9PiB2b2lkO1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuLyoqXG4gKiBSZWFjdGl2ZSB2aWJyYXRlXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlVmlicmF0ZVxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVmlicmF0aW9uX0FQSVxuICogQHBhcmFtIG9wdGlvbnNcbiAqXG4gKiBAX19OT19TSURFX0VGRkVDVFNfX1xuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVZpYnJhdGUob3B0aW9ucz86IFVzZVZpYnJhdGVPcHRpb25zKTogVXNlVmlicmF0ZVJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVZpcnR1YWxMaXN0L2luZGV4LmQudHNcbnR5cGUgVXNlVmlydHVhbExpc3RJdGVtU2l6ZSA9IG51bWJlciB8ICgoaW5kZXg6IG51bWJlcikgPT4gbnVtYmVyKTtcbmludGVyZmFjZSBVc2VIb3Jpem9udGFsVmlydHVhbExpc3RPcHRpb25zIGV4dGVuZHMgVXNlVmlydHVhbExpc3RPcHRpb25zQmFzZSB7XG4gIC8qKlxuICAgKiBpdGVtIHdpZHRoLCBhY2NlcHQgYSBwaXhlbCB2YWx1ZSBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgd2lkdGhcbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgaXRlbVdpZHRoOiBVc2VWaXJ0dWFsTGlzdEl0ZW1TaXplO1xufVxuaW50ZXJmYWNlIFVzZVZlcnRpY2FsVmlydHVhbExpc3RPcHRpb25zIGV4dGVuZHMgVXNlVmlydHVhbExpc3RPcHRpb25zQmFzZSB7XG4gIC8qKlxuICAgKiBpdGVtIGhlaWdodCwgYWNjZXB0IGEgcGl4ZWwgdmFsdWUgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGhlaWdodFxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBpdGVtSGVpZ2h0OiBVc2VWaXJ0dWFsTGlzdEl0ZW1TaXplO1xufVxuaW50ZXJmYWNlIFVzZVZpcnR1YWxMaXN0T3B0aW9uc0Jhc2Uge1xuICAvKipcbiAgICogdGhlIGV4dHJhIGJ1ZmZlciBpdGVtcyBvdXRzaWRlIG9mIHRoZSB2aWV3IGFyZWFcbiAgICpcbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgb3ZlcnNjYW4/OiBudW1iZXI7XG59XG50eXBlIFVzZVZpcnR1YWxMaXN0T3B0aW9ucyA9IFVzZUhvcml6b250YWxWaXJ0dWFsTGlzdE9wdGlvbnMgfCBVc2VWZXJ0aWNhbFZpcnR1YWxMaXN0T3B0aW9ucztcbmludGVyZmFjZSBVc2VWaXJ0dWFsTGlzdEl0ZW08VD4ge1xuICBkYXRhOiBUO1xuICBpbmRleDogbnVtYmVyO1xufVxuaW50ZXJmYWNlIFVzZVZpcnR1YWxMaXN0UmV0dXJuPFQ+IHtcbiAgbGlzdDogUmVmPFVzZVZpcnR1YWxMaXN0SXRlbTxUPltdPjtcbiAgc2Nyb2xsVG86IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBjb250YWluZXJQcm9wczoge1xuICAgIHJlZjogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD47XG4gICAgb25TY3JvbGw6ICgpID0+IHZvaWQ7XG4gICAgc3R5bGU6IFN0eWxlVmFsdWU7XG4gIH07XG4gIHdyYXBwZXJQcm9wczogQ29tcHV0ZWRSZWY8e1xuICAgIHN0eWxlOiB7XG4gICAgICB3aWR0aDogc3RyaW5nO1xuICAgICAgaGVpZ2h0OiBzdHJpbmc7XG4gICAgICBtYXJnaW5Ub3A6IHN0cmluZztcbiAgICB9IHwge1xuICAgICAgd2lkdGg6IHN0cmluZztcbiAgICAgIGhlaWdodDogc3RyaW5nO1xuICAgICAgbWFyZ2luTGVmdDogc3RyaW5nO1xuICAgICAgZGlzcGxheTogc3RyaW5nO1xuICAgIH07XG4gIH0+O1xufVxuLyoqXG4gKiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgW2B2dWUtdmlydHVhbC1zY3JvbGxlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9Ba3J5dW0vdnVlLXZpcnR1YWwtc2Nyb2xsZXIpIGlmIHlvdSBhcmUgbG9va2luZyBmb3IgbW9yZSBmZWF0dXJlcy5cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VWaXJ0dWFsTGlzdDxUID0gYW55PihsaXN0OiBNYXliZVJlZjxyZWFkb25seSBUW10+LCBvcHRpb25zOiBVc2VWaXJ0dWFsTGlzdE9wdGlvbnMpOiBVc2VWaXJ0dWFsTGlzdFJldHVybjxUPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVdha2VMb2NrL2luZGV4LmQudHNcbnR5cGUgV2FrZUxvY2tUeXBlID0gJ3NjcmVlbic7XG5pbnRlcmZhY2UgV2FrZUxvY2tTZW50aW5lbCBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgdHlwZTogV2FrZUxvY2tUeXBlO1xuICByZWxlYXNlZDogYm9vbGVhbjtcbiAgcmVsZWFzZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cbnR5cGUgVXNlV2FrZUxvY2tPcHRpb25zID0gQ29uZmlndXJhYmxlTmF2aWdhdG9yICYgQ29uZmlndXJhYmxlRG9jdW1lbnQ7XG5pbnRlcmZhY2UgVXNlV2FrZUxvY2tSZXR1cm4gZXh0ZW5kcyBTdXBwb3J0YWJsZSB7XG4gIHNlbnRpbmVsOiBTaGFsbG93UmVmPFdha2VMb2NrU2VudGluZWwgfCBudWxsPjtcbiAgaXNBY3RpdmU6IENvbXB1dGVkUmVmPGJvb2xlYW4+O1xuICByZXF1ZXN0OiAodHlwZTogV2FrZUxvY2tUeXBlKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBmb3JjZVJlcXVlc3Q6ICh0eXBlOiBXYWtlTG9ja1R5cGUpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbGVhc2U6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG4vKipcbiAqIFJlYWN0aXZlIFNjcmVlbiBXYWtlIExvY2sgQVBJLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVdha2VMb2NrXG4gKiBAcGFyYW0gb3B0aW9uc1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlV2FrZUxvY2sob3B0aW9ucz86IFVzZVdha2VMb2NrT3B0aW9ucyk6IFVzZVdha2VMb2NrUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlV2ViTm90aWZpY2F0aW9uL2luZGV4LmQudHNcbmludGVyZmFjZSBXZWJOb3RpZmljYXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSByZWFkLW9ubHkgcHJvcGVydHkgb2YgdGhlIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2UgaW5kaWNhdGVzXG4gICAqIHRoZSB0aXRsZSBvZiB0aGUgbm90aWZpY2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBib2R5IHN0cmluZyBvZiB0aGUgbm90aWZpY2F0aW9uIGFzIHNwZWNpZmllZCBpbiB0aGUgY29uc3RydWN0b3Inc1xuICAgKiBvcHRpb25zIHBhcmFtZXRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIGJvZHk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIG5vdGlmaWNhdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yJ3NcbiAgICogb3B0aW9ucyBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICBkaXI/OiAnYXV0bycgfCAnbHRyJyB8ICdydGwnO1xuICAvKipcbiAgICogVGhlIGxhbmd1YWdlIGNvZGUgb2YgdGhlIG5vdGlmaWNhdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yJ3NcbiAgICogb3B0aW9ucyBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IERPTVN0cmluZ1xuICAgKi9cbiAgbGFuZz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgbm90aWZpY2F0aW9uKGlmIGFueSkgYXMgc3BlY2lmaWVkIGluIHRoZSBjb25zdHJ1Y3RvcidzIG9wdGlvbnNcbiAgICogcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnJ1xuICAgKi9cbiAgdGFnPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgaW1hZ2UgdXNlZCBhcyBhbiBpY29uIG9mIHRoZSBub3RpZmljYXRpb24gYXMgc3BlY2lmaWVkXG4gICAqIGluIHRoZSBjb25zdHJ1Y3RvcidzIG9wdGlvbnMgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnJ1xuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSB1c2VyIHNob3VsZCBiZSBub3RpZmllZCBhZnRlciBhIG5ldyBub3RpZmljYXRpb25cbiAgICogcmVwbGFjZXMgYW4gb2xkIG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlbm90aWZ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgYSBub3RpZmljYXRpb24gc2hvdWxkIHJlbWFpbiBhY3RpdmUgdW50aWwgdGhlXG4gICAqIHVzZXIgY2xpY2tzIG9yIGRpc21pc3NlcyBpdCwgcmF0aGVyIHRoYW4gY2xvc2luZyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZUludGVyYWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBzaWxlbnQgcmVhZC1vbmx5IHByb3BlcnR5IG9mIHRoZSBOb3RpZmljYXRpb24gaW50ZXJmYWNlIHNwZWNpZmllc1xuICAgKiB3aGV0aGVyIHRoZSBub3RpZmljYXRpb24gc2hvdWxkIGJlIHNpbGVudCwgaS5lLiwgbm8gc291bmRzIG9yIHZpYnJhdGlvbnNcbiAgICogc2hvdWxkIGJlIGlzc3VlZCwgcmVnYXJkbGVzcyBvZiB0aGUgZGV2aWNlIHNldHRpbmdzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2lsZW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHZpYnJhdGlvbiBwYXR0ZXJuIGZvciBkZXZpY2VzIHdpdGggdmlicmF0aW9uIGhhcmR3YXJlIHRvIGVtaXQuXG4gICAqIEEgdmlicmF0aW9uIHBhdHRlcm4sIGFzIHNwZWNpZmllZCBpbiB0aGUgVmlicmF0aW9uIEFQSSBzcGVjXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3ZpYnJhdGlvbi9cbiAgICovXG4gIHZpYnJhdGU/OiBudW1iZXJbXTtcbn1cbmludGVyZmFjZSBVc2VXZWJOb3RpZmljYXRpb25PcHRpb25zIGV4dGVuZHMgQ29uZmlndXJhYmxlV2luZG93LCBXZWJOb3RpZmljYXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFJlcXVlc3QgZm9yIHBlcm1pc3Npb25zIG9uTW91bnRlZCBpZiBpdCdzIG5vdCBncmFudGVkLlxuICAgKlxuICAgKiBDYW4gYmUgZGlzYWJsZWQgYW5kIGNhbGxpbmcgYGVuc3VyZVBlcm1pc3Npb25zYCB0byBncmFudCBhZnRlcndvcmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZXF1ZXN0UGVybWlzc2lvbnM/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFVzZVdlYk5vdGlmaWNhdGlvblJldHVybiBleHRlbmRzIFN1cHBvcnRhYmxlIHtcbiAgbm90aWZpY2F0aW9uOiBSZWY8Tm90aWZpY2F0aW9uIHwgbnVsbD47XG4gIGVuc3VyZVBlcm1pc3Npb25zOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4gfCB1bmRlZmluZWQ+O1xuICBwZXJtaXNzaW9uR3JhbnRlZDogU2hhbGxvd1JlZjxib29sZWFuPjtcbiAgc2hvdzogKG92ZXJyaWRlcz86IFdlYk5vdGlmaWNhdGlvbk9wdGlvbnMpID0+IFByb21pc2U8Tm90aWZpY2F0aW9uIHwgdW5kZWZpbmVkPjtcbiAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gIG9uQ2xpY2s6IEV2ZW50SG9va09uPEV2ZW50PjtcbiAgb25TaG93OiBFdmVudEhvb2tPbjxFdmVudD47XG4gIG9uRXJyb3I6IEV2ZW50SG9va09uPEV2ZW50PjtcbiAgb25DbG9zZTogRXZlbnRIb29rT248RXZlbnQ+O1xufVxuLyoqXG4gKiBSZWFjdGl2ZSB1c2VXZWJOb3RpZmljYXRpb25cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VXZWJOb3RpZmljYXRpb25cbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL25vdGlmaWNhdGlvblxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVdlYk5vdGlmaWNhdGlvbihvcHRpb25zPzogVXNlV2ViTm90aWZpY2F0aW9uT3B0aW9ucyk6IFVzZVdlYk5vdGlmaWNhdGlvblJldHVybjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVdlYlNvY2tldC9pbmRleC5kLnRzXG50eXBlIFdlYlNvY2tldFN0YXR1cyA9ICdPUEVOJyB8ICdDT05ORUNUSU5HJyB8ICdDTE9TRUQnO1xudHlwZSBXZWJTb2NrZXRIZWFydGJlYXRNZXNzYWdlID0gc3RyaW5nIHwgQXJyYXlCdWZmZXIgfCBCbG9iO1xuaW50ZXJmYWNlIFVzZVdlYlNvY2tldE9wdGlvbnMge1xuICBvbkNvbm5lY3RlZD86ICh3czogV2ViU29ja2V0KSA9PiB2b2lkO1xuICBvbkRpc2Nvbm5lY3RlZD86ICh3czogV2ViU29ja2V0LCBldmVudDogQ2xvc2VFdmVudCkgPT4gdm9pZDtcbiAgb25FcnJvcj86ICh3czogV2ViU29ja2V0LCBldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gIG9uTWVzc2FnZT86ICh3czogV2ViU29ja2V0LCBldmVudDogTWVzc2FnZUV2ZW50KSA9PiB2b2lkO1xuICAvKipcbiAgICogU2VuZCBoZWFydGJlYXQgZm9yIGV2ZXJ5IHggbWlsbGlzZWNvbmRzIHBhc3NlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaGVhcnRiZWF0PzogYm9vbGVhbiB8IENvbmZpZ3VyYWJsZVNjaGVkdWxlciAmIHtcbiAgICAvKipcbiAgICAgKiBNZXNzYWdlIGZvciB0aGUgaGVhcnRiZWF0XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncGluZydcbiAgICAgKi9cbiAgICBtZXNzYWdlPzogTWF5YmVSZWZPckdldHRlcjxXZWJTb2NrZXRIZWFydGJlYXRNZXNzYWdlPjtcbiAgICAvKipcbiAgICAgKiBSZXNwb25zZSBtZXNzYWdlIGZvciB0aGUgaGVhcnRiZWF0LCBpZiB1bmRlZmluZWQgdGhlIG1lc3NhZ2Ugd2lsbCBiZSB1c2VkXG4gICAgICovXG4gICAgcmVzcG9uc2VNZXNzYWdlPzogTWF5YmVSZWZPckdldHRlcjxXZWJTb2NrZXRIZWFydGJlYXRNZXNzYWdlPjtcbiAgICAvKipcbiAgICAgKiBJbnRlcnZhbCwgaW4gbWlsbGlzZWNvbmRzXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBzY2hlZHVsZXJgIG9wdGlvbiBpbnN0ZWFkXG4gICAgICogQGRlZmF1bHQgMTAwMFxuICAgICAqL1xuICAgIGludGVydmFsPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIEhlYXJ0YmVhdCByZXNwb25zZSB0aW1lb3V0LCBpbiBtaWxsaXNlY29uZHNcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDEwMDBcbiAgICAgKi9cbiAgICBwb25nVGltZW91dD86IG51bWJlcjtcbiAgfTtcbiAgLyoqXG4gICAqIEVuYWJsZWQgYXV0byByZWNvbm5lY3RcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGF1dG9SZWNvbm5lY3Q/OiBib29sZWFuIHwge1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gcmV0cnkgdGltZXMuXG4gICAgICpcbiAgICAgKiBPciB5b3UgY2FuIHBhc3MgYSBwcmVkaWNhdGUgZnVuY3Rpb24gKHdoaWNoIHJldHVybnMgdHJ1ZSBpZiB5b3Ugd2FudCB0byByZXRyeSkuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtMVxuICAgICAqL1xuICAgIHJldHJpZXM/OiBudW1iZXIgfCAoKHJldHJpZWQ6IG51bWJlcikgPT4gYm9vbGVhbik7XG4gICAgLyoqXG4gICAgICogRGVsYXkgZm9yIHJlY29ubmVjdCwgaW4gbWlsbGlzZWNvbmRzXG4gICAgICpcbiAgICAgKiBPciB5b3UgY2FuIHBhc3MgYSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIGRlbGF5IGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgcmV0cmllcy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDEwMDBcbiAgICAgKi9cbiAgICBkZWxheT86IG51bWJlciB8ICgocmV0cmllczogbnVtYmVyKSA9PiBudW1iZXIpO1xuICAgIC8qKlxuICAgICAqIE9uIG1heGltdW0gcmV0cnkgdGltZXMgcmVhY2hlZC5cbiAgICAgKi9cbiAgICBvbkZhaWxlZD86IEZuO1xuICB9O1xuICAvKipcbiAgICogSW1tZWRpYXRlbHkgb3BlbiB0aGUgY29ubmVjdGlvbiB3aGVuIGNhbGxpbmcgdGhpcyBjb21wb3NhYmxlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGltbWVkaWF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGNvbm5lY3QgdG8gdGhlIHdlYnNvY2tldCB3aGVuIFVSTCBjaGFuZ2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGF1dG9Db25uZWN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgY2xvc2UgYSBjb25uZWN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGF1dG9DbG9zZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaXN0IG9mIG9uZSBvciBtb3JlIHN1Yi1wcm90b2NvbCBzdHJpbmdzXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICBwcm90b2NvbHM/OiBzdHJpbmdbXTtcbn1cbmludGVyZmFjZSBVc2VXZWJTb2NrZXRSZXR1cm48VD4ge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBsYXRlc3QgZGF0YSByZWNlaXZlZCB2aWEgdGhlIHdlYnNvY2tldCxcbiAgICogY2FuIGJlIHdhdGNoZWQgdG8gcmVzcG9uZCB0byBpbmNvbWluZyBtZXNzYWdlc1xuICAgKi9cbiAgZGF0YTogUmVmPFQgfCBudWxsPjtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHdlYnNvY2tldCBzdGF0dXMsIGNhbiBiZSBvbmx5IG9uZSBvZjpcbiAgICogJ09QRU4nLCAnQ09OTkVDVElORycsICdDTE9TRUQnXG4gICAqL1xuICBzdGF0dXM6IFNoYWxsb3dSZWY8V2ViU29ja2V0U3RhdHVzPjtcbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgd2Vic29ja2V0IGNvbm5lY3Rpb24gZ3JhY2VmdWxseS5cbiAgICovXG4gIGNsb3NlOiBXZWJTb2NrZXRbJ2Nsb3NlJ107XG4gIC8qKlxuICAgKiBSZW9wZW4gdGhlIHdlYnNvY2tldCBjb25uZWN0aW9uLlxuICAgKiBJZiB0aGVyZSB0aGUgY3VycmVudCBvbmUgaXMgYWN0aXZlLCB3aWxsIGNsb3NlIGl0IGJlZm9yZSBvcGVuaW5nIGEgbmV3IG9uZS5cbiAgICovXG4gIG9wZW46IEZuO1xuICAvKipcbiAgICogU2VuZHMgZGF0YSB0aHJvdWdoIHRoZSB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIHVzZUJ1ZmZlciB3aGVuIHRoZSBzb2NrZXQgaXMgbm90IHlldCBvcGVuLCBzdG9yZSB0aGUgZGF0YSBpbnRvIHRoZSBidWZmZXIgYW5kIHNlbnQgdGhlbSBvbmUgY29ubmVjdGVkLiBEZWZhdWx0IHRvIHRydWUuXG4gICAqL1xuICBzZW5kOiAoZGF0YTogc3RyaW5nIHwgQXJyYXlCdWZmZXIgfCBCbG9iLCB1c2VCdWZmZXI/OiBib29sZWFuKSA9PiBib29sZWFuO1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBXZWJTb2NrZXQgaW5zdGFuY2UuXG4gICAqL1xuICB3czogUmVmPFdlYlNvY2tldCB8IHVuZGVmaW5lZD47XG59XG4vKipcbiAqIFJlYWN0aXZlIFdlYlNvY2tldCBjbGllbnQuXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlV2ViU29ja2V0XG4gKiBAcGFyYW0gdXJsXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlV2ViU29ja2V0PERhdGEgPSBhbnk+KHVybDogTWF5YmVSZWZPckdldHRlcjxzdHJpbmcgfCBVUkwgfCB1bmRlZmluZWQ+LCBvcHRpb25zPzogVXNlV2ViU29ja2V0T3B0aW9ucyk6IFVzZVdlYlNvY2tldFJldHVybjxEYXRhPjtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHVzZVdlYldvcmtlci9pbmRleC5kLnRzXG50eXBlIFBvc3RNZXNzYWdlID0gdHlwZW9mIFdvcmtlci5wcm90b3R5cGVbJ3Bvc3RNZXNzYWdlJ107XG5pbnRlcmZhY2UgVXNlV2ViV29ya2VyUmV0dXJuPERhdGEgPSBhbnk+IHtcbiAgZGF0YTogUmVmPERhdGE+O1xuICBwb3N0OiBQb3N0TWVzc2FnZTtcbiAgdGVybWluYXRlOiAoKSA9PiB2b2lkO1xuICB3b3JrZXI6IFNoYWxsb3dSZWY8V29ya2VyIHwgdW5kZWZpbmVkPjtcbn1cbnR5cGUgV29ya2VyRm4gPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiBXb3JrZXI7XG4vKipcbiAqIFNpbXBsZSBXZWIgV29ya2VycyByZWdpc3RyYXRpb24gYW5kIGNvbW11bmljYXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL3Z1ZXVzZS5vcmcvdXNlV2ViV29ya2VyXG4gKiBAcGFyYW0gdXJsXG4gKiBAcGFyYW0gd29ya2VyT3B0aW9uc1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VXZWJXb3JrZXI8VCA9IGFueT4odXJsOiBzdHJpbmcsIHdvcmtlck9wdGlvbnM/OiBXb3JrZXJPcHRpb25zLCBvcHRpb25zPzogQ29uZmlndXJhYmxlV2luZG93KTogVXNlV2ViV29ya2VyUmV0dXJuPFQ+O1xuLyoqXG4gKiBTaW1wbGUgV2ViIFdvcmtlcnMgcmVnaXN0cmF0aW9uIGFuZCBjb21tdW5pY2F0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVdlYldvcmtlclxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHVzZVdlYldvcmtlcjxUID0gYW55Pih3b3JrZXI6IFdvcmtlciB8IFdvcmtlckZuKTogVXNlV2ViV29ya2VyUmV0dXJuPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlV2ViV29ya2VyRm4vaW5kZXguZC50c1xudHlwZSBXZWJXb3JrZXJTdGF0dXMgPSAnUEVORElORycgfCAnU1VDQ0VTUycgfCAnUlVOTklORycgfCAnRVJST1InIHwgJ1RJTUVPVVRfRVhQSVJFRCc7XG5pbnRlcmZhY2UgVXNlV2ViV29ya2VyT3B0aW9ucyBleHRlbmRzIENvbmZpZ3VyYWJsZVdpbmRvdyB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSBraWxsaW5nIHRoZSB3b3JrZXJcbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKipcbiAgICogQW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG5lZWRlZCB0byBydW4gdGhlIHdvcmtlclxuICAgKi9cbiAgZGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBBbiBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBsb2NhbCBkZXBlbmRlbmNpZXMgbmVlZGVkIHRvIHJ1biB0aGUgd29ya2VyXG4gICAqL1xuICBsb2NhbERlcGVuZGVuY2llcz86IEZ1bmN0aW9uW107XG59XG5pbnRlcmZhY2UgVXNlV2ViV29ya2VyRm5SZXR1cm48VCBleHRlbmRzICguLi5mbkFyZ3M6IGFueVtdKSA9PiBhbnk+IHtcbiAgd29ya2VyRm46ICguLi5mbkFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IFByb21pc2U8UmV0dXJuVHlwZTxUPj47XG4gIHdvcmtlclN0YXR1czogU2hhbGxvd1JlZjxXZWJXb3JrZXJTdGF0dXM+O1xuICB3b3JrZXJUZXJtaW5hdGU6IChzdGF0dXM/OiBXZWJXb3JrZXJTdGF0dXMpID0+IHZvaWQ7XG59XG4vKipcbiAqIFJ1biBleHBlbnNpdmUgZnVuY3Rpb24gd2l0aG91dCBibG9ja2luZyB0aGUgVUksIHVzaW5nIGEgc2ltcGxlIHN5bnRheCB0aGF0IG1ha2VzIHVzZSBvZiBQcm9taXNlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVdlYldvcmtlckZuXG4gKiBAcGFyYW0gZm5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlV2ViV29ya2VyRm48VCBleHRlbmRzICguLi5mbkFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBULCBvcHRpb25zPzogVXNlV2ViV29ya2VyT3B0aW9ucyk6IFVzZVdlYldvcmtlckZuUmV0dXJuPFQ+O1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlV2luZG93Rm9jdXMvaW5kZXguZC50c1xuLyoqXG4gKiBSZWFjdGl2ZWx5IHRyYWNrIHdpbmRvdyBmb2N1cyB3aXRoIGB3aW5kb3cub25mb2N1c2AgYW5kIGB3aW5kb3cub25ibHVyYC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VXaW5kb3dGb2N1c1xuICpcbiAqIEBfX05PX1NJREVfRUZGRUNUU19fXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlV2luZG93Rm9jdXMob3B0aW9ucz86IENvbmZpZ3VyYWJsZVdpbmRvdyk6IFNoYWxsb3dSZWY8Ym9vbGVhbj47XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiB1c2VXaW5kb3dTY3JvbGwvaW5kZXguZC50c1xuaW50ZXJmYWNlIFVzZVdpbmRvd1Njcm9sbE9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3csIFVzZVNjcm9sbE9wdGlvbnMge31cbmludGVyZmFjZSBVc2VXaW5kb3dTY3JvbGxSZXR1cm4gZXh0ZW5kcyBVc2VTY3JvbGxSZXR1cm4ge31cbi8qKlxuICogUmVhY3RpdmUgd2luZG93IHNjcm9sbC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdnVldXNlLm9yZy91c2VXaW5kb3dTY3JvbGxcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gdXNlV2luZG93U2Nyb2xsKG9wdGlvbnM/OiBVc2VXaW5kb3dTY3JvbGxPcHRpb25zKTogVXNlV2luZG93U2Nyb2xsUmV0dXJuO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gdXNlV2luZG93U2l6ZS9pbmRleC5kLnRzXG5pbnRlcmZhY2UgVXNlV2luZG93U2l6ZU9wdGlvbnMgZXh0ZW5kcyBDb25maWd1cmFibGVXaW5kb3cge1xuICBpbml0aWFsV2lkdGg/OiBudW1iZXI7XG4gIGluaXRpYWxIZWlnaHQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gd2luZG93IGBvcmllbnRhdGlvbmNoYW5nZWAgZXZlbnRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgbGlzdGVuT3JpZW50YXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgc2Nyb2xsYmFyIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgd2lkdGggYW5kIGhlaWdodFxuICAgKiBPbmx5IGVmZmVjdGl2ZSB3aGVuIGB0eXBlYCBpcyBgJ2lubmVyJ2BcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZVNjcm9sbGJhcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBVc2UgYHdpbmRvdy5pbm5lcldpZHRoYCBvciBgd2luZG93Lm91dGVyV2lkdGhgIG9yIGB3aW5kb3cudmlzdWFsVmlld3BvcnRgXG4gICAqIHZpc3VhbFZpZXdwb3J0IGRvY3VtZW50YXRpb24gZnJvbSBNRE4oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9XZWIvQVBJL1Zpc3VhbFZpZXdwb3J0KVxuICAgKiBAZGVmYXVsdCAnaW5uZXInXG4gICAqL1xuICB0eXBlPzogJ2lubmVyJyB8ICdvdXRlcicgfCAndmlzdWFsJztcbn1cbmludGVyZmFjZSBVc2VXaW5kb3dTaXplUmV0dXJuIHtcbiAgd2lkdGg6IFNoYWxsb3dSZWY8bnVtYmVyPjtcbiAgaGVpZ2h0OiBTaGFsbG93UmVmPG51bWJlcj47XG59XG4vKipcbiAqIFJlYWN0aXZlIHdpbmRvdyBzaXplLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly92dWV1c2Uub3JnL3VzZVdpbmRvd1NpemVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKlxuICogQF9fTk9fU0lERV9FRkZFQ1RTX19cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiB1c2VXaW5kb3dTaXplKG9wdGlvbnM/OiBVc2VXaW5kb3dTaXplT3B0aW9ucyk6IFVzZVdpbmRvd1NpemVSZXR1cm47XG4vLyNlbmRyZWdpb25cbmV4cG9ydCB7IEFmdGVyRmV0Y2hDb250ZXh0LCBBc3luY0NvbXB1dGVkT25DYW5jZWwsIEFzeW5jQ29tcHV0ZWRPcHRpb25zLCBCYXNpY0NvbG9yTW9kZSwgQmFzaWNDb2xvclNjaGVtYSwgQmF0dGVyeU1hbmFnZXIsIEJlZm9yZUZldGNoQ29udGV4dCwgQnJlYWtwb2ludHMsIEJyb3dzZXJMb2NhdGlvblN0YXRlLCBDbG9uZUZuLCBDb2xvclNjaGVtZVR5cGUsIENvbXB1dGVkSW5qZWN0R2V0dGVyLCBDb21wdXRlZEluamVjdEdldHRlcldpdGhEZWZhdWx0LCBDb21wdXRlZEluamVjdFNldHRlciwgQ29uZmlndXJhYmxlRGVlcFJlZnMsIENvbmZpZ3VyYWJsZURvY3VtZW50LCBDb25maWd1cmFibGVEb2N1bWVudE9yU2hhZG93Um9vdCwgQ29uZmlndXJhYmxlTG9jYXRpb24sIENvbmZpZ3VyYWJsZU5hdmlnYXRvciwgQ29uZmlndXJhYmxlU2NoZWR1bGVyLCBDb25maWd1cmFibGVXaW5kb3csIENvbnRyYXN0VHlwZSwgQ3JlYXRlRmV0Y2hPcHRpb25zLCBDcmVhdGVSZXVzYWJsZVRlbXBsYXRlT3B0aW9ucywgQ3ViaWNCZXppZXJQb2ludHMsIERlZmF1bHRNYWdpY0tleXNBbGlhc01hcCwgRGVmaW5lVGVtcGxhdGVDb21wb25lbnQsIERldmljZU1vdGlvbk9wdGlvbnMsIERvY3VtZW50RXZlbnROYW1lLCBFYXNpbmdGdW5jdGlvbiwgRWxlbWVudFNpemUsIEV2ZW50QnVzRXZlbnRzLCBFdmVudEJ1c0lkZW50aWZpZXIsIEV2ZW50QnVzS2V5LCBFdmVudEJ1c0xpc3RlbmVyLCBFdmVudFNvdXJjZVN0YXR1cywgRXllRHJvcHBlciwgRXllRHJvcHBlck9wZW5PcHRpb25zLCBGaWxlU3lzdGVtQWNjZXNzU2hvd09wZW5GaWxlT3B0aW9ucywgRmlsZVN5c3RlbUFjY2Vzc1Nob3dTYXZlRmlsZU9wdGlvbnMsIEZpbGVTeXN0ZW1BY2Nlc3NXaW5kb3csIEZpbGVTeXN0ZW1GaWxlSGFuZGxlLCBGb3JtYXRUaW1lQWdvSW50bE9wdGlvbnMsIEZvcm1hdFRpbWVBZ29PcHRpb25zLCBHZW5lcmFsRXZlbnRMaXN0ZW5lciwgR2VuZXJhbFBlcm1pc3Npb25EZXNjcmlwdG9yLCBJbnRlcnBvbGF0aW9uRnVuY3Rpb24sIEtleUZpbHRlciwgS2V5TW9kaWZpZXIsIEtleVByZWRpY2F0ZSwgS2V5U3Ryb2tlRXZlbnROYW1lLCBNYWdpY0tleXNJbnRlcm5hbCwgTWF5YmVDb21wdXRlZEVsZW1lbnRSZWYsIE1heWJlRWxlbWVudCwgTWF5YmVFbGVtZW50UmVmLCBNZW1vcnlJbmZvLCBNb3VzZUluRWxlbWVudE9wdGlvbnMsIE1vdXNlUHJlc3NlZE9wdGlvbnMsIE5hdmlnYXRvckxhbmd1YWdlU3RhdGUsIE5ldHdvcmtFZmZlY3RpdmVUeXBlLCBOZXR3b3JrU3RhdGUsIE5ldHdvcmtUeXBlLCBPbkNsaWNrT3V0c2lkZUhhbmRsZXIsIE9uQ2xpY2tPdXRzaWRlT3B0aW9ucywgT25DbGlja091dHNpZGVSZXR1cm4sIE9uRWxlbWVudFJlbW92YWxPcHRpb25zLCBPbkZldGNoRXJyb3JDb250ZXh0LCBPbktleVN0cm9rZU9wdGlvbnMsIE9uTG9uZ1ByZXNzTW9kaWZpZXJzLCBPbkxvbmdQcmVzc09wdGlvbnMsIE9uTG9uZ1ByZXNzUmV0dXJuLCBPcmllbnRhdGlvbkxvY2tUeXBlLCBPcmllbnRhdGlvblR5cGUsIFBvaW50ZXJUeXBlLCBQb3NpdGlvbiwgUmVkdWNlZE1vdGlvblR5cGUsIFJlZHVjZWRUcmFuc3BhcmVuY3lUeXBlLCBSZW5kZXJhYmxlQ29tcG9uZW50LCBSZXNpemVPYnNlcnZlckNhbGxiYWNrLCBSZXNpemVPYnNlcnZlckVudHJ5LCBSZXNpemVPYnNlcnZlclNpemUsIFJldXNhYmxlVGVtcGxhdGVQYWlyLCBSZXVzZVRlbXBsYXRlQ29tcG9uZW50LCBTU1JIYW5kbGVyc01hcCwgU2NyZWVuT3JpZW50YXRpb24sIFNlcmlhbGl6ZXIsIFNlcmlhbGl6ZXJBc3luYywgU2hhZG93Um9vdEV2ZW50TmFtZSwgU3RvcmFnZUV2ZW50TGlrZSwgU3RvcmFnZUxpa2UsIFN0b3JhZ2VMaWtlQXN5bmMsIFN0b3JhZ2VTZXJpYWxpemVycywgU3VwcG9ydGFibGUsIFRlbXBsYXRlUHJvbWlzZSwgVGVtcGxhdGVQcm9taXNlT3B0aW9ucywgVGVtcGxhdGVQcm9taXNlUHJvcHMsIFRlbXBsYXRlUmVmc0xpc3QsIFRpbWVBZ29Vbml0LCBUb0RhdGFVUkxPcHRpb25zLCBUcmFuc2l0aW9uT3B0aW9ucywgVHJhbnNpdGlvblByZXNldHMsIFVuUmVmRWxlbWVudFJldHVybiwgVW5yZWZGbiwgVXJsUGFyYW1zLCBVc2VBY3RpdmVFbGVtZW50T3B0aW9ucywgVXNlQWN0aXZlRWxlbWVudFJldHVybiwgVXNlQW5pbWF0ZUtleWZyYW1lcywgVXNlQW5pbWF0ZU9wdGlvbnMsIFVzZUFuaW1hdGVSZXR1cm4sIFVzZUFzeW5jUXVldWVPcHRpb25zLCBVc2VBc3luY1F1ZXVlUmVzdWx0LCBVc2VBc3luY1F1ZXVlUmV0dXJuLCBVc2VBc3luY1F1ZXVlVGFzaywgVXNlQXN5bmNTdGF0ZU9wdGlvbnMsIFVzZUFzeW5jU3RhdGVSZXR1cm4sIFVzZUFzeW5jU3RhdGVSZXR1cm5CYXNlLCBVc2VCYXNlNjRPYmplY3RPcHRpb25zLCBVc2VCYXNlNjRPcHRpb25zLCBVc2VCYXNlNjRSZXR1cm4sIFVzZUJhdHRlcnlPcHRpb25zLCBVc2VCYXR0ZXJ5UmV0dXJuLCBVc2VCbHVldG9vdGhPcHRpb25zLCBVc2VCbHVldG9vdGhSZXF1ZXN0RGV2aWNlT3B0aW9ucywgVXNlQmx1ZXRvb3RoUmV0dXJuLCBVc2VCcmVha3BvaW50UmV0dXJuLCBVc2VCcmVha3BvaW50c09wdGlvbnMsIFVzZUJyb2FkY2FzdENoYW5uZWxPcHRpb25zLCBVc2VCcm9hZGNhc3RDaGFubmVsUmV0dXJuLCBVc2VCcm93c2VyTG9jYXRpb25PcHRpb25zLCBVc2VCcm93c2VyTG9jYXRpb25SZXR1cm4sIFVzZUNhY2hlZE9wdGlvbnMsIFVzZUNhY2hlZFJldHVybiwgVXNlQ2xpcGJvYXJkSXRlbXNPcHRpb25zLCBVc2VDbGlwYm9hcmRJdGVtc1JldHVybiwgVXNlQ2xpcGJvYXJkT3B0aW9ucywgVXNlQ2xpcGJvYXJkUmV0dXJuLCBVc2VDbG9uZWRPcHRpb25zLCBVc2VDbG9uZWRSZXR1cm4sIFVzZUNvbG9yTW9kZU9wdGlvbnMsIFVzZUNvbG9yTW9kZVJldHVybiwgVXNlQ29uZmlybURpYWxvZ1JldHVybiwgVXNlQ29uZmlybURpYWxvZ1JldmVhbFJlc3VsdCwgVXNlQ291bnRkb3duT3B0aW9ucywgVXNlQ291bnRkb3duUmV0dXJuLCBVc2VDc3NTdXBwb3J0c09wdGlvbnMsIFVzZUNzc1N1cHBvcnRzUmV0dXJuLCBVc2VDc3NWYXJPcHRpb25zLCBVc2VDeWNsZUxpc3RPcHRpb25zLCBVc2VDeWNsZUxpc3RSZXR1cm4sIFVzZURhcmtPcHRpb25zLCBVc2VEYXJrUmV0dXJuLCBVc2VEZXZpY2VNb3Rpb25PcHRpb25zLCBVc2VEZXZpY2VNb3Rpb25SZXR1cm4sIFVzZURldmljZU9yaWVudGF0aW9uT3B0aW9ucywgVXNlRGV2aWNlT3JpZW50YXRpb25SZXR1cm4sIFVzZURldmljZVBpeGVsUmF0aW9PcHRpb25zLCBVc2VEZXZpY2VQaXhlbFJhdGlvUmV0dXJuLCBVc2VEZXZpY2VzTGlzdE9wdGlvbnMsIFVzZURldmljZXNMaXN0UmV0dXJuLCBVc2VEaXNwbGF5TWVkaWFPcHRpb25zLCBVc2VEaXNwbGF5TWVkaWFSZXR1cm4sIFVzZURvY3VtZW50VmlzaWJpbGl0eU9wdGlvbnMsIFVzZURvY3VtZW50VmlzaWJpbGl0eVJldHVybiwgVXNlRHJhZ2dhYmxlT3B0aW9ucywgVXNlRHJhZ2dhYmxlUmV0dXJuLCBVc2VEcm9wWm9uZU9wdGlvbnMsIFVzZURyb3Bab25lUmV0dXJuLCBVc2VFbGVtZW50Qm91bmRpbmdPcHRpb25zLCBVc2VFbGVtZW50Qm91bmRpbmdSZXR1cm4sIFVzZUVsZW1lbnRCeVBvaW50T3B0aW9ucywgVXNlRWxlbWVudEJ5UG9pbnRSZXR1cm4sIFVzZUVsZW1lbnRIb3Zlck9wdGlvbnMsIFVzZUVsZW1lbnRTaXplT3B0aW9ucywgVXNlRWxlbWVudFNpemVSZXR1cm4sIFVzZUVsZW1lbnRWaXNpYmlsaXR5T3B0aW9ucywgVXNlRWxlbWVudFZpc2liaWxpdHlSZXR1cm4sIFVzZUV2ZW50QnVzUmV0dXJuLCBVc2VFdmVudFNvdXJjZU9wdGlvbnMsIFVzZUV2ZW50U291cmNlUmV0dXJuLCBVc2VFeWVEcm9wcGVyT3B0aW9ucywgVXNlRXllRHJvcHBlclJldHVybiwgVXNlRmF2aWNvbk9wdGlvbnMsIFVzZUZhdmljb25SZXR1cm4sIFVzZUZldGNoT3B0aW9ucywgVXNlRmV0Y2hSZXR1cm4sIFVzZUZpbGVEaWFsb2dPcHRpb25zLCBVc2VGaWxlRGlhbG9nUmV0dXJuLCBVc2VGaWxlU3lzdGVtQWNjZXNzQ29tbW9uT3B0aW9ucywgVXNlRmlsZVN5c3RlbUFjY2Vzc09wdGlvbnMsIFVzZUZpbGVTeXN0ZW1BY2Nlc3NSZXR1cm4sIFVzZUZpbGVTeXN0ZW1BY2Nlc3NTaG93U2F2ZUZpbGVPcHRpb25zLCBVc2VGb2N1c09wdGlvbnMsIFVzZUZvY3VzUmV0dXJuLCBVc2VGb2N1c1dpdGhpblJldHVybiwgVXNlRnBzT3B0aW9ucywgVXNlRnVsbHNjcmVlbk9wdGlvbnMsIFVzZUZ1bGxzY3JlZW5SZXR1cm4sIFVzZUdhbWVwYWRPcHRpb25zLCBVc2VHYW1lcGFkUmV0dXJuLCBVc2VHZW9sb2NhdGlvbk9wdGlvbnMsIFVzZUdlb2xvY2F0aW9uUmV0dXJuLCBVc2VIb3Jpem9udGFsVmlydHVhbExpc3RPcHRpb25zLCBVc2VJZGxlT3B0aW9ucywgVXNlSWRsZVJldHVybiwgVXNlSW1hZ2VPcHRpb25zLCBVc2VJbWFnZVJldHVybiwgVXNlSW5maW5pdGVTY3JvbGxPcHRpb25zLCBVc2VJbmZpbml0ZVNjcm9sbFJldHVybiwgVXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zLCBVc2VJbnRlcnNlY3Rpb25PYnNlcnZlclJldHVybiwgVXNlS2V5TW9kaWZpZXJSZXR1cm4sIFVzZU1hZ2ljS2V5c09wdGlvbnMsIFVzZU1hZ2ljS2V5c1JldHVybiwgVXNlTWFudWFsUmVmSGlzdG9yeU9wdGlvbnMsIFVzZU1hbnVhbFJlZkhpc3RvcnlSZXR1cm4sIFVzZU1lZGlhQ29udHJvbHNSZXR1cm4sIFVzZU1lZGlhU291cmNlLCBVc2VNZWRpYVRleHRUcmFjaywgVXNlTWVkaWFUZXh0VHJhY2tTb3VyY2UsIFVzZU1lbW9pemVDYWNoZSwgVXNlTWVtb2l6ZU9wdGlvbnMsIFVzZU1lbW9pemVSZXR1cm4sIFVzZU1lbW9yeU9wdGlvbnMsIFVzZU1lbW9yeVJldHVybiwgVXNlTW9kaWZpZXJPcHRpb25zLCBVc2VNb3VzZUNvb3JkVHlwZSwgVXNlTW91c2VFdmVudEV4dHJhY3RvciwgVXNlTW91c2VJbkVsZW1lbnRSZXR1cm4sIFVzZU1vdXNlT3B0aW9ucywgVXNlTW91c2VQcmVzc2VkT3B0aW9ucywgVXNlTW91c2VQcmVzc2VkUmV0dXJuLCBVc2VNb3VzZVJldHVybiwgVXNlTW91c2VTb3VyY2VUeXBlLCBVc2VNdXRhdGlvbk9ic2VydmVyT3B0aW9ucywgVXNlTXV0YXRpb25PYnNlcnZlclJldHVybiwgVXNlTmF2aWdhdG9yTGFuZ3VhZ2VPcHRpb25zLCBVc2VOYXZpZ2F0b3JMYW5ndWFnZVJldHVybiwgVXNlTmV0d29ya09wdGlvbnMsIFVzZU5ldHdvcmtSZXR1cm4sIFVzZU5vd09wdGlvbnMsIFVzZU5vd1JldHVybiwgVXNlT2Zmc2V0UGFnaW5hdGlvbkluZmluaXR5UGFnZVJldHVybiwgVXNlT2Zmc2V0UGFnaW5hdGlvbk9wdGlvbnMsIFVzZU9mZnNldFBhZ2luYXRpb25SZXR1cm4sIFVzZU9uTG9uZ1ByZXNzUmV0dXJuLCBVc2VQYWdlTGVhdmVPcHRpb25zLCBVc2VQYWdlTGVhdmVSZXR1cm4sIFVzZVBhcmFsbGF4T3B0aW9ucywgVXNlUGFyYWxsYXhSZXR1cm4sIFVzZVBlcmZvcm1hbmNlT2JzZXJ2ZXJPcHRpb25zLCBVc2VQZXJtaXNzaW9uT3B0aW9ucywgVXNlUGVybWlzc2lvblJldHVybiwgVXNlUGVybWlzc2lvblJldHVybldpdGhDb250cm9scywgVXNlUG9pbnRlckxvY2tPcHRpb25zLCBVc2VQb2ludGVyTG9ja1JldHVybiwgVXNlUG9pbnRlck9wdGlvbnMsIFVzZVBvaW50ZXJSZXR1cm4sIFVzZVBvaW50ZXJTdGF0ZSwgVXNlUG9pbnRlclN3aXBlT3B0aW9ucywgVXNlUG9pbnRlclN3aXBlUmV0dXJuLCBVc2VSYWZGbkNhbGxiYWNrQXJndW1lbnRzLCBVc2VSYWZGbk9wdGlvbnMsIFVzZVJlZkhpc3RvcnlPcHRpb25zLCBVc2VSZWZIaXN0b3J5UmVjb3JkLCBVc2VSZWZIaXN0b3J5UmV0dXJuLCBVc2VSZXNpemVPYnNlcnZlck9wdGlvbnMsIFVzZVJlc2l6ZU9ic2VydmVyUmV0dXJuLCBVc2VTY3JlZW5PcmllbnRhdGlvbk9wdGlvbnMsIFVzZVNjcmVlbk9yaWVudGF0aW9uUmV0dXJuLCBVc2VTY3JlZW5TYWZlQXJlYVJldHVybiwgVXNlU2NyaXB0VGFnT3B0aW9ucywgVXNlU2NyaXB0VGFnUmV0dXJuLCBVc2VTY3JvbGxPcHRpb25zLCBVc2VTY3JvbGxSZXR1cm4sIFVzZVNoYXJlT3B0aW9ucywgVXNlU2hhcmVSZXR1cm4sIFVzZVNvcnRlZENvbXBhcmVGbiwgVXNlU29ydGVkRm4sIFVzZVNvcnRlZE9wdGlvbnMsIFVzZVNwZWVjaFJlY29nbml0aW9uT3B0aW9ucywgVXNlU3BlZWNoUmVjb2duaXRpb25SZXR1cm4sIFVzZVNwZWVjaFN5bnRoZXNpc09wdGlvbnMsIFVzZVNwZWVjaFN5bnRoZXNpc1JldHVybiwgVXNlU3BlZWNoU3ludGhlc2lzU3RhdHVzLCBVc2VTdGVwcGVyUmV0dXJuLCBVc2VTdG9yYWdlQXN5bmNPcHRpb25zLCBVc2VTdG9yYWdlT3B0aW9ucywgVXNlU3R5bGVUYWdPcHRpb25zLCBVc2VTdHlsZVRhZ1JldHVybiwgVXNlU3VwcG9ydGVkUmV0dXJuLCBVc2VTd2lwZURpcmVjdGlvbiwgVXNlU3dpcGVPcHRpb25zLCBVc2VTd2lwZVJldHVybiwgVXNlVGV4dERpcmVjdGlvbk9wdGlvbnMsIFVzZVRleHREaXJlY3Rpb25WYWx1ZSwgVXNlVGV4dFNlbGVjdGlvbk9wdGlvbnMsIFVzZVRleHRTZWxlY3Rpb25SZXR1cm4sIFVzZVRleHRhcmVhQXV0b3NpemVPcHRpb25zLCBVc2VUZXh0YXJlYUF1dG9zaXplUmV0dXJuLCBVc2VUaHJvdHRsZWRSZWZIaXN0b3J5T3B0aW9ucywgVXNlVGhyb3R0bGVkUmVmSGlzdG9yeVJldHVybiwgVXNlVGltZUFnb0Zvcm1hdHRlciwgVXNlVGltZUFnb0ludGxPcHRpb25zLCBVc2VUaW1lQWdvTWVzc2FnZXMsIFVzZVRpbWVBZ29NZXNzYWdlc0J1aWx0SW4sIFVzZVRpbWVBZ29PcHRpb25zLCBVc2VUaW1lQWdvUmV0dXJuLCBVc2VUaW1lQWdvVW5pdCwgVXNlVGltZUFnb1VuaXROYW1lc0RlZmF1bHQsIFVzZVRpbWVvdXRQb2xsT3B0aW9ucywgVXNlVGltZXN0YW1wT3B0aW9ucywgVXNlVGltZXN0YW1wUmV0dXJuLCBVc2VUaXRsZU9wdGlvbnMsIFVzZVRpdGxlT3B0aW9uc0Jhc2UsIFVzZVRpdGxlUmV0dXJuLCBVc2VUcmFuc2l0aW9uT3B0aW9ucywgVXNlVXJsU2VhcmNoUGFyYW1zT3B0aW9ucywgVXNlVXNlck1lZGlhT3B0aW9ucywgVXNlVXNlck1lZGlhUmV0dXJuLCBVc2VWTW9kZWxPcHRpb25zLCBVc2VWZXJ0aWNhbFZpcnR1YWxMaXN0T3B0aW9ucywgVXNlVmlicmF0ZU9wdGlvbnMsIFVzZVZpYnJhdGVSZXR1cm4sIFVzZVZpcnR1YWxMaXN0SXRlbSwgVXNlVmlydHVhbExpc3RPcHRpb25zLCBVc2VWaXJ0dWFsTGlzdE9wdGlvbnNCYXNlLCBVc2VWaXJ0dWFsTGlzdFJldHVybiwgVXNlV2FrZUxvY2tPcHRpb25zLCBVc2VXYWtlTG9ja1JldHVybiwgVXNlV2ViTm90aWZpY2F0aW9uT3B0aW9ucywgVXNlV2ViTm90aWZpY2F0aW9uUmV0dXJuLCBVc2VXZWJTb2NrZXRPcHRpb25zLCBVc2VXZWJTb2NrZXRSZXR1cm4sIFVzZVdlYldvcmtlckZuUmV0dXJuLCBVc2VXZWJXb3JrZXJPcHRpb25zLCBVc2VXZWJXb3JrZXJSZXR1cm4sIFVzZVdpbmRvd1Njcm9sbE9wdGlvbnMsIFVzZVdpbmRvd1Njcm9sbFJldHVybiwgVXNlV2luZG93U2l6ZU9wdGlvbnMsIFVzZVdpbmRvd1NpemVSZXR1cm4sIFZ1ZUluc3RhbmNlLCBXYWtlTG9ja1NlbnRpbmVsLCBXZWJOb3RpZmljYXRpb25PcHRpb25zLCBXZWJTb2NrZXRIZWFydGJlYXRNZXNzYWdlLCBXZWJTb2NrZXRTdGF0dXMsIFdlYldvcmtlclN0YXR1cywgV2luZG93RXZlbnROYW1lLCBXcml0YWJsZUNvbXB1dGVkSW5qZWN0T3B0aW9ucywgV3JpdGFibGVDb21wdXRlZEluamVjdE9wdGlvbnNXaXRoRGVmYXVsdCwgYXN5bmNDb21wdXRlZCwgYnJlYWtwb2ludHNBbnREZXNpZ24sIGJyZWFrcG9pbnRzQm9vdHN0cmFwVjUsIGJyZWFrcG9pbnRzRWxlbWVudCwgYnJlYWtwb2ludHNNYXN0ZXJDc3MsIGJyZWFrcG9pbnRzUHJpbWVGbGV4LCBicmVha3BvaW50c1F1YXNhciwgYnJlYWtwb2ludHNTZW1hdGljLCBicmVha3BvaW50c1RhaWx3aW5kLCBicmVha3BvaW50c1Z1ZXRpZnksIGJyZWFrcG9pbnRzVnVldGlmeVYyLCBicmVha3BvaW50c1Z1ZXRpZnlWMywgY2xvbmVGbkpTT04sIGNvbXB1dGVkQXN5bmMsIGNvbXB1dGVkSW5qZWN0LCBjcmVhdGVGZXRjaCwgY3JlYXRlUmV1c2FibGVUZW1wbGF0ZSwgY3JlYXRlVGVtcGxhdGVQcm9taXNlLCBjcmVhdGVVbnJlZkZuLCBjdXN0b21TdG9yYWdlRXZlbnROYW1lLCBkZWZhdWx0RG9jdW1lbnQsIGRlZmF1bHRMb2NhdGlvbiwgZGVmYXVsdE5hdmlnYXRvciwgZGVmYXVsdFdpbmRvdywgZXhlY3V0ZVRyYW5zaXRpb24sIGZvcm1hdFRpbWVBZ28sIGZvcm1hdFRpbWVBZ29JbnRsLCBmb3JtYXRUaW1lQWdvSW50bFBhcnRzLCBnZXRTU1JIYW5kbGVyLCBtYXBHYW1lcGFkVG9YYm94MzYwQ29udHJvbGxlciwgb25DbGlja091dHNpZGUsIG9uRWxlbWVudFJlbW92YWwsIG9uS2V5RG93biwgb25LZXlQcmVzc2VkLCBvbktleVN0cm9rZSwgb25LZXlVcCwgb25Mb25nUHJlc3MsIG9uU3RhcnRUeXBpbmcsIHByb3ZpZGVTU1JXaWR0aCwgc2V0U1NSSGFuZGxlciwgdGVtcGxhdGVSZWYsIHRyYW5zaXRpb24sIHVucmVmRWxlbWVudCwgdXNlQWN0aXZlRWxlbWVudCwgdXNlQW5pbWF0ZSwgdXNlQXN5bmNRdWV1ZSwgdXNlQXN5bmNTdGF0ZSwgdXNlQmFzZTY0LCB1c2VCYXR0ZXJ5LCB1c2VCbHVldG9vdGgsIHVzZUJyZWFrcG9pbnRzLCB1c2VCcm9hZGNhc3RDaGFubmVsLCB1c2VCcm93c2VyTG9jYXRpb24sIHVzZUNhY2hlZCwgdXNlQ2xpcGJvYXJkLCB1c2VDbGlwYm9hcmRJdGVtcywgdXNlQ2xvbmVkLCB1c2VDb2xvck1vZGUsIHVzZUNvbmZpcm1EaWFsb2csIHVzZUNvdW50ZG93biwgdXNlQ3NzU3VwcG9ydHMsIHVzZUNzc1ZhciwgdXNlQ3VycmVudEVsZW1lbnQsIHVzZUN5Y2xlTGlzdCwgdXNlRGFyaywgdXNlRGVib3VuY2VkUmVmSGlzdG9yeSwgdXNlRGV2aWNlTW90aW9uLCB1c2VEZXZpY2VPcmllbnRhdGlvbiwgdXNlRGV2aWNlUGl4ZWxSYXRpbywgdXNlRGV2aWNlc0xpc3QsIHVzZURpc3BsYXlNZWRpYSwgdXNlRG9jdW1lbnRWaXNpYmlsaXR5LCB1c2VEcmFnZ2FibGUsIHVzZURyb3Bab25lLCB1c2VFbGVtZW50Qm91bmRpbmcsIHVzZUVsZW1lbnRCeVBvaW50LCB1c2VFbGVtZW50SG92ZXIsIHVzZUVsZW1lbnRTaXplLCB1c2VFbGVtZW50VmlzaWJpbGl0eSwgdXNlRXZlbnRCdXMsIHVzZUV2ZW50TGlzdGVuZXIsIHVzZUV2ZW50U291cmNlLCB1c2VFeWVEcm9wcGVyLCB1c2VGYXZpY29uLCB1c2VGZXRjaCwgdXNlRmlsZURpYWxvZywgdXNlRmlsZVN5c3RlbUFjY2VzcywgdXNlRm9jdXMsIHVzZUZvY3VzV2l0aGluLCB1c2VGcHMsIHVzZUZ1bGxzY3JlZW4sIHVzZUdhbWVwYWQsIHVzZUdlb2xvY2F0aW9uLCB1c2VJZGxlLCB1c2VJbWFnZSwgdXNlSW5maW5pdGVTY3JvbGwsIHVzZUludGVyc2VjdGlvbk9ic2VydmVyLCB1c2VLZXlNb2RpZmllciwgdXNlTG9jYWxTdG9yYWdlLCB1c2VNYWdpY0tleXMsIHVzZU1hbnVhbFJlZkhpc3RvcnksIHVzZU1lZGlhQ29udHJvbHMsIHVzZU1lZGlhUXVlcnksIHVzZU1lbW9pemUsIHVzZU1lbW9yeSwgdXNlTW91bnRlZCwgdXNlTW91c2UsIHVzZU1vdXNlSW5FbGVtZW50LCB1c2VNb3VzZVByZXNzZWQsIHVzZU11dGF0aW9uT2JzZXJ2ZXIsIHVzZU5hdmlnYXRvckxhbmd1YWdlLCB1c2VOZXR3b3JrLCB1c2VOb3csIHVzZU9iamVjdFVybCwgdXNlT2Zmc2V0UGFnaW5hdGlvbiwgdXNlT25saW5lLCB1c2VQYWdlTGVhdmUsIHVzZVBhcmFsbGF4LCB1c2VQYXJlbnRFbGVtZW50LCB1c2VQZXJmb3JtYW5jZU9ic2VydmVyLCB1c2VQZXJtaXNzaW9uLCB1c2VQb2ludGVyLCB1c2VQb2ludGVyTG9jaywgdXNlUG9pbnRlclN3aXBlLCB1c2VQcmVmZXJyZWRDb2xvclNjaGVtZSwgdXNlUHJlZmVycmVkQ29udHJhc3QsIHVzZVByZWZlcnJlZERhcmssIHVzZVByZWZlcnJlZExhbmd1YWdlcywgdXNlUHJlZmVycmVkUmVkdWNlZE1vdGlvbiwgdXNlUHJlZmVycmVkUmVkdWNlZFRyYW5zcGFyZW5jeSwgdXNlUHJldmlvdXMsIHVzZVJhZkZuLCB1c2VSZWZIaXN0b3J5LCB1c2VSZXNpemVPYnNlcnZlciwgdXNlU1NSV2lkdGgsIHVzZVNjcmVlbk9yaWVudGF0aW9uLCB1c2VTY3JlZW5TYWZlQXJlYSwgdXNlU2NyaXB0VGFnLCB1c2VTY3JvbGwsIHVzZVNjcm9sbExvY2ssIHVzZVNlc3Npb25TdG9yYWdlLCB1c2VTaGFyZSwgdXNlU29ydGVkLCB1c2VTcGVlY2hSZWNvZ25pdGlvbiwgdXNlU3BlZWNoU3ludGhlc2lzLCB1c2VTdGVwcGVyLCB1c2VTdG9yYWdlLCB1c2VTdG9yYWdlQXN5bmMsIHVzZVN0eWxlVGFnLCB1c2VTdXBwb3J0ZWQsIHVzZVN3aXBlLCB1c2VUZW1wbGF0ZVJlZnNMaXN0LCB1c2VUZXh0RGlyZWN0aW9uLCB1c2VUZXh0U2VsZWN0aW9uLCB1c2VUZXh0YXJlYUF1dG9zaXplLCB1c2VUaHJvdHRsZWRSZWZIaXN0b3J5LCB1c2VUaW1lQWdvLCB1c2VUaW1lQWdvSW50bCwgdXNlVGltZW91dFBvbGwsIHVzZVRpbWVzdGFtcCwgdXNlVGl0bGUsIHVzZVRyYW5zaXRpb24sIHVzZVVybFNlYXJjaFBhcmFtcywgdXNlVXNlck1lZGlhLCB1c2VWTW9kZWwsIHVzZVZNb2RlbHMsIHVzZVZpYnJhdGUsIHVzZVZpcnR1YWxMaXN0LCB1c2VXYWtlTG9jaywgdXNlV2ViTm90aWZpY2F0aW9uLCB1c2VXZWJTb2NrZXQsIHVzZVdlYldvcmtlciwgdXNlV2ViV29ya2VyRm4sIHVzZVdpbmRvd0ZvY3VzLCB1c2VXaW5kb3dTY3JvbGwsIHVzZVdpbmRvd1NpemUgfTsiLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1c2VCcmVha3BvaW50cygpOiBpbXBvcnQoXCJAdnVldXNlL2NvcmVcIikuVXNlQnJlYWtwb2ludFJldHVybjxcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgfCBcInhsXCIgfCBcIjJ4bFwiPjtcbiIsImltcG9ydCB0eXBlIHsgTWF5YmVSZWYgfSBmcm9tICd2dWUnO1xuZXhwb3J0IGludGVyZmFjZSBSR0Ige1xuICAgIHI6IG51bWJlcjtcbiAgICBnOiBudW1iZXI7XG4gICAgYjogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBSR0JBIGV4dGVuZHMgUkdCIHtcbiAgICBhOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEhTTCB7XG4gICAgaDogbnVtYmVyO1xuICAgIHM6IG51bWJlcjtcbiAgICBsOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9LTENIIHtcbiAgICBsOiBudW1iZXI7XG4gICAgYzogbnVtYmVyO1xuICAgIGg6IG51bWJlcjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGV4dHJhY1JHQihjb2xvcjogc3RyaW5nKTogUkdCO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZXh0cmFjdFJHQkEoY29sb3I6IHN0cmluZyk6IFJHQkE7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBoZXhUb1JHQihoZXg6IHN0cmluZyk6IFJHQjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGhzbFRvUmdiKGhzbDogc3RyaW5nKTogUkdCO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcmdiVG9Ic2wocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IEhTTDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHJnYlRvSGV4KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBzdHJpbmc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiByZ2JhVG9TdHJpbmcocmdiYTogUkdCQSk6IHN0cmluZztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGV4dHJhY3RPS0xDSChjb2xvcjogc3RyaW5nKTogT0tMQ0g7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBva2xjaFRvUmdiKGNvbG9yOiBzdHJpbmcpOiBSR0I7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiByZ2JUb09rbGNoKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBPS0xDSDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZUNvbG9yVHlwZShwYXlsb2FkPzogTWF5YmVSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxzdHJpbmcgfCBudWxsLCBzdHJpbmcgfCBudWxsPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZVJHQihwYXlsb2FkPzogTWF5YmVSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxSR0IgfCBudWxsLCBSR0IgfCBudWxsPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZVJHQkEocGF5bG9hZD86IE1heWJlUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KTogaW1wb3J0KFwidnVlXCIpLldyaXRhYmxlQ29tcHV0ZWRSZWY8UkdCQSB8IG51bGwsIFJHQkEgfCBudWxsPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZUhTTChwYXlsb2FkPzogTWF5YmVSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxIU0wgfCBudWxsLCBIU0wgfCBudWxsPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZUhleChwYXlsb2FkPzogTWF5YmVSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxzdHJpbmcgfCBudWxsLCBzdHJpbmcgfCBudWxsPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZUNvbG9yKHBheWxvYWQ/OiBNYXliZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPik6IHtcbiAgICB0eXBlOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxzdHJpbmcgfCBudWxsLCBzdHJpbmcgfCBudWxsPjtcbiAgICBjb2xvcjogaW1wb3J0KFwidnVlXCIpLlJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgICBoZXg6IGltcG9ydChcInZ1ZVwiKS5Xcml0YWJsZUNvbXB1dGVkUmVmPHN0cmluZyB8IG51bGwsIHN0cmluZyB8IG51bGw+O1xuICAgIHJnYjogaW1wb3J0KFwidnVlXCIpLldyaXRhYmxlQ29tcHV0ZWRSZWY8UkdCIHwgbnVsbCwgUkdCIHwgbnVsbD47XG4gICAgaHNsOiBpbXBvcnQoXCJ2dWVcIikuV3JpdGFibGVDb21wdXRlZFJlZjxIU0wgfCBudWxsLCBIU0wgfCBudWxsPjtcbiAgICBva2xjaDogaW1wb3J0KFwidnVlXCIpLldyaXRhYmxlQ29tcHV0ZWRSZWY8T0tMQ0ggfCBudWxsLCBPS0xDSCB8IG51bGw+O1xuICAgIHJnYmE6IGltcG9ydChcInZ1ZVwiKS5Xcml0YWJsZUNvbXB1dGVkUmVmPFJHQkEgfCBudWxsLCBSR0JBIHwgbnVsbD47XG59O1xuIiwiaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnLi9Mb2dnZXJTZXJ2aWNlLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgRW1taXR0ZXJMaXN0ZW5lck9wdGlvbnMge1xuICAgIGV2ZW50OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEVtbWl0dGVyTGlzdGVuZXIge1xuICAgIChkYXRhOiBhbnksIG9wdGlvbnM6IEVtbWl0dGVyTGlzdGVuZXJPcHRpb25zKTogdm9pZDtcbn1cbmludGVyZmFjZSBFbW1pdHRlckhhbmRsZXIge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZXZlbnQ6IHN0cmluZztcbiAgICBsaXN0ZW5lcjogRW1taXR0ZXJMaXN0ZW5lcjtcbiAgICBvcmlnaW5hbExpc3RlbmVyPzogRW1taXR0ZXJMaXN0ZW5lcjtcbn1cbmludGVyZmFjZSBPbk9wdGlvbnMge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIHVuaXF1ZT86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgT25EZWJvdW5jZU9wdGlvbnMgZXh0ZW5kcyBPbk9wdGlvbnMge1xuICAgIGRlYm91bmNlPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBFbW1pdHRlclNlcnZpY2VPcHRpb25zIHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtbWl0dGVyU2VydmljZTxFdmVudHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBoYW5kbGVyczogRW1taXR0ZXJIYW5kbGVyW107XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBFbW1pdHRlclNlcnZpY2VPcHRpb25zKTtcbiAgICBzdGF0aWMgY3JlYXRlPEV2ZW50cyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihvcHRpb25zPzogRW1taXR0ZXJTZXJ2aWNlT3B0aW9ucyk6IEVtbWl0dGVyU2VydmljZTxFdmVudHM+O1xuICAgIHNldERlYnVnKGRlYnVnOiBib29sZWFuKTogdm9pZDtcbiAgICBzZXRMb2dnZXIobG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKTogdm9pZDtcbiAgICBvbjxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgbGlzdGVuZXI6IChhcmdzOiBFdmVudHNbS10pID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb24oZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb25jZTxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgbGlzdGVuZXI6IChhcmdzOiBFdmVudHNbS10pID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb25jZShldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbkRlYm91bmNlPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uRGVib3VuY2VPcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyO1xuICAgIG9uRGVib3VuY2UoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbkRlYm91bmNlT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbkFueU9mPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50czogS1tdLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcltdO1xuICAgIG9uQW55T2YoZXZlbnRzOiBzdHJpbmdbXSwgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXJbXTtcbiAgICBvZmYoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IEVtbWl0dGVySGFuZGxlclsnbGlzdGVuZXInXSk6IHZvaWQ7XG4gICAgZW1pdDxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgYXJnczogRXZlbnRzW0tdKTogdm9pZDtcbiAgICBlbWl0KGV2ZW50OiBzdHJpbmcsIGFyZ3M/OiBhbnkpOiB2b2lkO1xuICAgIGVtaXRBbmRXYWl0PEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBhcmdzOiBFdmVudHNbS10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGVtaXRBbmRXYWl0KGV2ZW50OiBzdHJpbmcsIGFyZ3M/OiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxpc3QoKTogRW1taXR0ZXJIYW5kbGVyW107XG4gICAgbGlzdEJ5RXZlbnQoZXZlbnQ6IHN0cmluZyk6IEVtbWl0dGVySGFuZGxlcltdO1xuICAgIHJlbW92ZShwYXlsb2FkOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQ7XG4gICAgY2xlYXIoKTogdm9pZDtcbiAgICBoYXNIYW5kbGVycygpOiBib29sZWFuO1xufVxuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRHcmlkVW5pdCB7XG4gICAgYmFzZT86IG51bWJlcjtcbiAgICBzbT86IG51bWJlcjtcbiAgICBtZD86IG51bWJlcjtcbiAgICBsZz86IG51bWJlcjtcbiAgICB4bD86IG51bWJlcjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhc2hib2FyZFdpZGdldERhdGEge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlZmluaXRpb25faWQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBEYXNoYm9hcmRHcmlkVW5pdDtcbiAgICByb3dzOiBEYXNoYm9hcmRHcmlkVW5pdDtcbiAgICB4OiBEYXNoYm9hcmRHcmlkVW5pdDtcbiAgICB5OiBEYXNoYm9hcmRHcmlkVW5pdDtcbiAgICBvcmRlcjogbnVtYmVyO1xuICAgIG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY29uc3RydWN0b3IoZGF0YTogUGFydGlhbDxEYXNoYm9hcmRXaWRnZXREYXRhPik7XG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZFdpZGdldEFjdGlvbiB7XG4gICAgcHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbXBvbmVudDogYW55O1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIGNvbXBvbmVudCgpOiBhbnk7XG4gICAgYWN0aW9ucygpOiBEYXNoYm9hcmRXaWRnZXRBY3Rpb25bXTtcbn1cbiIsImltcG9ydCBFbW1pdHRlclNlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9FbW1pdHRlclNlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgRGFzaGJvYXJkV2lkZ2V0RGF0YSBmcm9tICcuL0Rhc2hib2FyZFdpZGdldERhdGEnO1xuaW1wb3J0IERhc2hib2FyZFdpZGdldERlZmluaXRpb24gZnJvbSAnLi9EYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IERBU0hCT0FSRF9ST1dfSEVJR0hUID0gODA7XG5pbnRlcmZhY2UgRGFzaGJvYXJkV2lkZ2V0T3B0aW9ucyB7XG4gICAgZGF0YTogRGFzaGJvYXJkV2lkZ2V0RGF0YTtcbiAgICBkZWZpbml0aW9uOiBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uO1xufVxuaW50ZXJmYWNlIFN0eWxlc09wdGlvbnMge1xuICAgIGNvbnRpYW5lcldpZHRoOiBudW1iZXI7XG4gICAgYnJlYWtwb2ludD86ICdiYXNlJyB8ICdzbScgfCAnbWQnIHwgJ3hsJztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhc2hib2FyZFdpZGdldCB7XG4gICAgZGF0YTogRGFzaGJvYXJkV2lkZ2V0RGF0YTtcbiAgICBkZWZpbml0aW9uOiBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uO1xuICAgIGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoeyBkYXRhLCBkZWZpbml0aW9uIH06IERhc2hib2FyZFdpZGdldE9wdGlvbnMpO1xuICAgIHN0YXRpYyBmcm9tRGF0YShkYXRhOiBEYXNoYm9hcmRXaWRnZXREYXRhKTogRGFzaGJvYXJkV2lkZ2V0O1xuICAgIHNldEVtbWl0dGVyKGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2UpOiB2b2lkO1xuICAgIGdldCBpZCgpOiBzdHJpbmc7XG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nO1xuICAgIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpO1xuICAgIGdldCBvcHRpb25zKCk6IERhc2hib2FyZFdpZGdldERhdGFbJ29wdGlvbnMnXTtcbiAgICBnZXQgZGVmaW5pdGlvbl9pZCgpOiBzdHJpbmc7XG4gICAgY29tcG9uZW50KCk6IGFueTtcbiAgICBhY3Rpb25zKCk6IGltcG9ydChcIi4vRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvblwiKS5EYXNoYm9hcmRXaWRnZXRBY3Rpb25bXTtcbiAgICBnZXQgY29sdW1ucygpOiBEYXNoYm9hcmRXaWRnZXREYXRhWydjb2x1bW5zJ107XG4gICAgc2V0IGNvbHVtbnMocGF5bG9hZDogRGFzaGJvYXJkV2lkZ2V0RGF0YVsnY29sdW1ucyddKTtcbiAgICBnZXQgcm93cygpOiBEYXNoYm9hcmRXaWRnZXREYXRhWydyb3dzJ107XG4gICAgc2V0IHJvd3MocGF5bG9hZDogRGFzaGJvYXJkV2lkZ2V0RGF0YVsncm93cyddKTtcbiAgICBnZXQgeCgpOiBEYXNoYm9hcmRXaWRnZXREYXRhWyd4J107XG4gICAgc2V0IHgocGF5bG9hZDogRGFzaGJvYXJkV2lkZ2V0RGF0YVsneCddKTtcbiAgICBnZXQgeSgpOiBEYXNoYm9hcmRXaWRnZXREYXRhWyd5J107XG4gICAgc2V0IHkocGF5bG9hZDogRGFzaGJvYXJkV2lkZ2V0RGF0YVsneSddKTtcbiAgICBnZXQgY2xhc3NlcygpOiBzdHJpbmc7XG4gICAgY29tcHV0ZVN0eWxlcyhvcHRpb25zOiBTdHlsZXNPcHRpb25zKTogc3RyaW5nO1xuICAgIHVwZGF0ZShwYXlsb2FkOiBQYXJ0aWFsPERhc2hib2FyZFdpZGdldERhdGE+KTogdm9pZDtcbiAgICBzZXRPcHRpb24oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAgIHNldFgoYnJlYWtwb2ludDogJ2Jhc2UnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJywgdmFsdWU/OiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkO1xuICAgIHNldFkoYnJlYWtwb2ludDogJ2Jhc2UnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJywgdmFsdWU/OiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkO1xuICAgIHNldENvbHVtbihicmVha3BvaW50OiAnYmFzZScgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnLCB2YWx1ZT86IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQ7XG4gICAgc2V0Um93KGJyZWFrcG9pbnQ6ICdiYXNlJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcsIHZhbHVlPzogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBudW1iZXI6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxhbnksIG51bWJlcj4sIHYuSW50ZWdlckFjdGlvbjxudW1iZXIsIHVuZGVmaW5lZD5dPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGJvb2xlYW46ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQm9vbGVhblNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgYm9vbGVhbiwgYm9vbGVhbj5dPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGRhdGU6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuRGF0ZVNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgRGF0ZSwgRGF0ZT4sIHYuVHJhbnNmb3JtQWN0aW9uPERhdGUsIHN0cmluZz5dPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGRhdGV0aW1lOiAoKSA9PiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkRhdGVTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IERhdGUsIHN0cmluZyB8IG51bGw+XT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhcnJheTogPFQgZXh0ZW5kcyB2LkJhc2VTY2hlbWE8YW55LCBhbnksIGFueT4+KHNjaGVtYT86IFQpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8VCwgdW5kZWZpbmVkPl0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgYXJyYXlOdW1iZXI6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5CYXNlU2NoZW1hPGFueSwgYW55LCBhbnk+LCB1bmRlZmluZWQ+XT4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueVtdLCBudW1iZXJbXT5dPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IG9iamVjdDogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5SZWNvcmRTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BbnlTY2hlbWEsIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCB7XG4gICAgW3g6IHN0cmluZ106IGFueTtcbn0sIHtcbiAgICBbeDogc3RyaW5nXTogYW55O1xufT4sIHYuVHJhbnNmb3JtQWN0aW9uPHtcbiAgICBbeDogc3RyaW5nXTogYW55O1xufSwgUmVjb3JkPHN0cmluZywgYW55Pj5dPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVybCgpOiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LlJlY29yZFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFueVNjaGVtYSwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHtcbiAgICBbeDogc3RyaW5nXTogYW55O1xufSwge1xuICAgIFt4OiBzdHJpbmddOiBhbnk7XG59Piwgdi5UcmFuc2Zvcm1BY3Rpb248e1xuICAgIFt4OiBzdHJpbmddOiBhbnk7XG59LCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pl0+O1xuZXhwb3J0IGRlY2xhcmUgbmFtZXNwYWNlIHVybCB7XG4gICAgdmFyIG51bWJlcjogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+O1xuICAgIHZhciBib29sZWFuOiAoKSA9PiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkJvb2xlYW5TY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IGJvb2xlYW4sIGJvb2xlYW4+XT47XG4gICAgdmFyIGRhdGU6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuRGF0ZVNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgRGF0ZSwgRGF0ZT4sIHYuVHJhbnNmb3JtQWN0aW9uPERhdGUsIHN0cmluZz5dPjtcbiAgICB2YXIgZGF0ZXRpbWU6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuRGF0ZVNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgRGF0ZSwgc3RyaW5nIHwgbnVsbD5dPjtcbiAgICB2YXIgYXJyYXk6IDxUIGV4dGVuZHMgdi5CYXNlU2NoZW1hPGFueSwgYW55LCBhbnk+PihzY2hlbWE/OiBUKSA9PiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPFQsIHVuZGVmaW5lZD5dPjtcbiAgICB2YXIgYXJyYXlOdW1iZXI6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5CYXNlU2NoZW1hPGFueSwgYW55LCBhbnk+LCB1bmRlZmluZWQ+XT4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueVtdLCBudW1iZXJbXT5dPjtcbiAgICB2YXIgb2JqZWN0OiAoKSA9PiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LlJlY29yZFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFueVNjaGVtYSwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHtcbiAgICAgICAgW3g6IHN0cmluZ106IGFueTtcbiAgICB9LCB7XG4gICAgICAgIFt4OiBzdHJpbmddOiBhbnk7XG4gICAgfT4sIHYuVHJhbnNmb3JtQWN0aW9uPHtcbiAgICAgICAgW3g6IHN0cmluZ106IGFueTtcbiAgICB9LCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pl0+O1xufVxuIiwiaW1wb3J0ICogYXMgdiBmcm9tICd2YWxpYm90JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGtleVZhbHVlOiAoKSA9PiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+XT47XG4iLCJpbXBvcnQgKiBhcyB2IGZyb20gJ3ZhbGlib3QnO1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uUGFyYW1zIHtcbiAgICBtYXhMaW1pdD86IG51bWJlcjtcbiAgICBvcmRlckZpZWxkcz86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgYmFzZTogKG9wdGlvbnM/OiBQYWdpbmF0aW9uUGFyYW1zKSA9PiB2Lk9iamVjdFNjaGVtYTx7XG4gICAgcmVhZG9ubHkgcGFnZTogdi5PcHRpb25hbFNjaGVtYTx2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2Lk51bWJlclNjaGVtYTx1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248YW55LCBudW1iZXI+LCB2LkludGVnZXJBY3Rpb248bnVtYmVyLCB1bmRlZmluZWQ+XT4sIDE+O1xuICAgIHJlYWRvbmx5IGxpbWl0OiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxhbnksIG51bWJlcj4sIHYuSW50ZWdlckFjdGlvbjxudW1iZXIsIHVuZGVmaW5lZD5dPiwgbnVtYmVyPjtcbiAgICByZWFkb25seSBvcmRlckJ5OiB2Lk51bGxpc2hTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTx2LlBpY2tsaXN0U2NoZW1hPHN0cmluZ1tdLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XT4gfCB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dPiwgcmVhZG9ubHkgW10+O1xuICAgIHJlYWRvbmx5IG9yZGVyRGlyZWN0aW9uOiB2Lk51bGxpc2hTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTx2LlVuaW9uU2NoZW1hPFt2LkxpdGVyYWxTY2hlbWE8XCJhc2NcIiwgdW5kZWZpbmVkPiwgdi5MaXRlcmFsU2NoZW1hPFwiZGVzY1wiLCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0+LCByZWFkb25seSBbXT47XG59LCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcGFnaW5hdGlvbihvcHRpb25zPzogUGFnaW5hdGlvblBhcmFtcyk6IHYuT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBwYWdlOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxhbnksIG51bWJlcj4sIHYuSW50ZWdlckFjdGlvbjxudW1iZXIsIHVuZGVmaW5lZD5dPiwgMT47XG4gICAgcmVhZG9ubHkgbGltaXQ6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+LCBudW1iZXI+O1xuICAgIHJlYWRvbmx5IG9yZGVyQnk6IHYuTnVsbGlzaFNjaGVtYTx2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPHYuUGlja2xpc3RTY2hlbWE8c3RyaW5nW10sIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dPiB8IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0+LCByZWFkb25seSBbXT47XG4gICAgcmVhZG9ubHkgb3JkZXJEaXJlY3Rpb246IHYuTnVsbGlzaFNjaGVtYTx2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPHYuVW5pb25TY2hlbWE8W3YuTGl0ZXJhbFNjaGVtYTxcImFzY1wiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJkZXNjXCIsIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XT4sIHJlYWRvbmx5IFtdPjtcbn0sIHVuZGVmaW5lZD47XG5leHBvcnQgZGVjbGFyZSBuYW1lc3BhY2UgcGFnaW5hdGlvbiB7XG4gICAgdmFyIGJhc2U6IChvcHRpb25zPzogUGFnaW5hdGlvblBhcmFtcykgPT4gdi5PYmplY3RTY2hlbWE8e1xuICAgICAgICByZWFkb25seSBwYWdlOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxhbnksIG51bWJlcj4sIHYuSW50ZWdlckFjdGlvbjxudW1iZXIsIHVuZGVmaW5lZD5dPiwgMT47XG4gICAgICAgIHJlYWRvbmx5IGxpbWl0OiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxhbnksIG51bWJlcj4sIHYuSW50ZWdlckFjdGlvbjxudW1iZXIsIHVuZGVmaW5lZD5dPiwgbnVtYmVyPjtcbiAgICAgICAgcmVhZG9ubHkgb3JkZXJCeTogdi5OdWxsaXNoU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5QaWNrbGlzdFNjaGVtYTxzdHJpbmdbXSwgdW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0+IHwgdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XT4sIHJlYWRvbmx5IFtdPjtcbiAgICAgICAgcmVhZG9ubHkgb3JkZXJEaXJlY3Rpb246IHYuTnVsbGlzaFNjaGVtYTx2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPHYuVW5pb25TY2hlbWE8W3YuTGl0ZXJhbFNjaGVtYTxcImFzY1wiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJkZXNjXCIsIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XT4sIHJlYWRvbmx5IFtdPjtcbiAgICB9LCB1bmRlZmluZWQ+O1xufVxuIiwiZXhwb3J0ICogZnJvbSAnLi91cmxWYWxpZGF0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXlWYWx1ZVZhbGlkYXRvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL3BhZ2luYXRpb25WYWxpZGF0b3IudHMnO1xuIiwiaW1wb3J0ICogYXMgdiBmcm9tICd2YWxpYm90JztcbmltcG9ydCAqIGFzIGV4dHJhcyBmcm9tICcjc2hhcmVkL3ZhbGlkYXRvcnMvaW5kZXgudHMnO1xuZXhwb3J0IHR5cGUgVmFsaWJvdCA9IHR5cGVvZiB2ICYge1xuICAgIGV4dHJhczogdHlwZW9mIGV4dHJhcztcbn07XG5leHBvcnQgdHlwZSBWYWxpYm90U2NoZW1hID0gdi5CYXNlU2NoZW1hPHVua25vd24sIHVua25vd24sIHYuQmFzZUlzc3VlPHVua25vd24+PjtcbmV4cG9ydCB0eXBlIFZhbGlib3RPYmplY3RTY2hlbWEgPSB2Lk9iamVjdFNjaGVtYTxhbnksIGFueT47XG5leHBvcnQgdHlwZSBWYWxpYm90U2NoZW1hQXN5bmMgPSB2LkJhc2VTY2hlbWFBc3luYzx1bmtub3duLCB1bmtub3duLCB2LkJhc2VJc3N1ZTx1bmtub3duPj47XG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckNhbGxiYWNrPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hPiB7XG4gICAgKF92OiBWYWxpYm90KTogVDtcbn1cbmV4cG9ydCB0eXBlIFZhbGlkYXRvckNhbGxiYWNrQXN5bmM8VCBleHRlbmRzIFZhbGlib3RTY2hlbWFBc3luYz4gPSB7XG4gICAgKF92OiBWYWxpYm90KTogVDtcbn07XG5leHBvcnQgdHlwZSBWYWxpZGF0b3JSZXN1bHQ8VCBleHRlbmRzIHYuQmFzZVNjaGVtYTxhbnksIGFueSwgYW55Pj4gPSB2LkluZmVyT3V0cHV0PFQ+O1xuZXhwb3J0IHR5cGUgVmFsaWRhdGVQYXlsb2FkPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hID0gVmFsaWJvdFNjaGVtYT4gPSBWYWxpZGF0b3JDYWxsYmFjazxUPiB8IFQ7XG5leHBvcnQgdHlwZSBWYWxpZGF0ZVJlc3VsdDxUIGV4dGVuZHMgVmFsaWRhdGVQYXlsb2FkPiA9IFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hID8gdi5JbmZlck91dHB1dDxUPiA6IFQgZXh0ZW5kcyBWYWxpZGF0b3JDYWxsYmFjazxpbmZlciBVPiA/IHYuSW5mZXJPdXRwdXQ8VT4gOiB1bmtub3duO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFsaWRhdG9yU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHY6IFZhbGlib3Q7XG4gICAgY3JlYXRlPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hPihjYjogVmFsaWRhdG9yQ2FsbGJhY2s8VD4pOiBUO1xuICAgIHZhbGlkYXRlPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hPihwYXlsb2FkOiBhbnksIGNiOiBWYWxpZGF0ZVBheWxvYWQ8VD4pOiB2LkluZmVyT3V0cHV0PFQ+O1xuICAgIHZhbGlkYXRlQXN5bmM8VCBleHRlbmRzIFZhbGlib3RTY2hlbWFBc3luYz4ocGF5bG9hZDogYW55LCBjYjogVmFsaWRhdG9yQ2FsbGJhY2tBc3luYzxUPiB8IFQpOiBQcm9taXNlPHYuSW5mZXJPdXRwdXQ8VD4+O1xuICAgIGlzVmFsaWQ8VCBleHRlbmRzIFZhbGlib3RTY2hlbWE+KHBheWxvYWQ6IGFueSwgY2I6IFZhbGlkYXRlUGF5bG9hZDxUPik6IGJvb2xlYW47XG59XG4iLCJpbXBvcnQgdHlwZSB7IFZhbGlkYXRvclJlc3VsdCB9IGZyb20gJyNzaGFyZWQvc2VydmljZXMvVmFsaWRhdG9yU2VydmljZS50cyc7XG5leHBvcnQgdHlwZSBEYXNoYm9hcmRTY2hlbWEgPSBWYWxpZGF0b3JSZXN1bHQ8UmV0dXJuVHlwZTx0eXBlb2YgZGFzaGJvYXJkU2NoZW1hPj47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBkYXNoYm9hcmRTY2hlbWEoKTogaW1wb3J0KFwidmFsaWJvdFwiKS5PYmplY3RTY2hlbWE8e1xuICAgIHJlYWRvbmx5IGlkOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IG5hbWU6IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgZGVzY3JpcHRpb246IGltcG9ydChcInZhbGlib3RcIikuTnVsbGFibGVTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBjcmVhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHVwZGF0ZWRfYXQ6IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgZGVsZXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IG1ldGFzOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuUmVjb3JkU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIGltcG9ydChcInZhbGlib3RcIikuQW55U2NoZW1hLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xufSwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIG5hbWVzcGFjZSBkYXNoYm9hcmRTY2hlbWEge1xuICAgIHZhciBjcmVhdGU6IE9taXQ8aW1wb3J0KFwidmFsaWJvdFwiKS5PYmplY3RTY2hlbWE8e1xuICAgICAgICByZWFkb25seSBpZDogaW1wb3J0KFwidmFsaWJvdFwiKS5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgbmFtZTogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgZGVzY3JpcHRpb246IGltcG9ydChcInZhbGlib3RcIikuTnVsbGFibGVTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgY3JlYXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgdXBkYXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgZGVsZXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBtZXRhczogaW1wb3J0KFwidmFsaWJvdFwiKS5PcHRpb25hbFNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlJlY29yZFNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCBpbXBvcnQoXCJ2YWxpYm90XCIpLkFueVNjaGVtYSwgdW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICB9LCB1bmRlZmluZWQ+LCBcImVudHJpZXNcIiB8IFwifnR5cGVzXCIgfCBcIn5ydW5cIiB8IFwifnN0YW5kYXJkXCI+ICYge1xuICAgICAgICByZWFkb25seSBlbnRyaWVzOiBQaWNrPHtcbiAgICAgICAgICAgIHJlYWRvbmx5IGlkOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgbmFtZTogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgICAgIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bGxhYmxlU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgICAgICAgICByZWFkb25seSBjcmVhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgdXBkYXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgICAgIHJlYWRvbmx5IGRlbGV0ZWRfYXQ6IGltcG9ydChcInZhbGlib3RcIikuTnVsbGFibGVTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICAgICAgICAgIHJlYWRvbmx5IG1ldGFzOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuUmVjb3JkU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIGltcG9ydChcInZhbGlib3RcIikuQW55U2NoZW1hLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICB9LCBcImRlc2NyaXB0aW9uXCIgfCBcIm5hbWVcIj47XG4gICAgICAgIHJlYWRvbmx5IFwifnN0YW5kYXJkXCI6IGltcG9ydChcInZhbGlib3RcIikuU3RhbmRhcmRQcm9wczx7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIH0+O1xuICAgICAgICByZWFkb25seSBcIn5ydW5cIjogKGRhdGFzZXQ6IGltcG9ydChcInZhbGlib3RcIikuVW5rbm93bkRhdGFzZXQsIGNvbmZpZzogaW1wb3J0KFwidmFsaWJvdFwiKS5Db25maWc8aW1wb3J0KFwidmFsaWJvdFwiKS5CYXNlSXNzdWU8dW5rbm93bj4+KSA9PiBpbXBvcnQoXCJ2YWxpYm90XCIpLk91dHB1dERhdGFzZXQ8e1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIH0sIGltcG9ydChcInZhbGlib3RcIikuT2JqZWN0SXNzdWUgfCBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ0lzc3VlPjtcbiAgICAgICAgcmVhZG9ubHkgXCJ+dHlwZXNcIj86IHtcbiAgICAgICAgICAgIHJlYWRvbmx5IGlucHV0OiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRvbmx5IG91dHB1dDoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkb25seSBpc3N1ZTogaW1wb3J0KFwidmFsaWJvdFwiKS5PYmplY3RJc3N1ZSB8IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nSXNzdWU7XG4gICAgICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgfTtcbiAgICB2YXIgdXBkYXRlOiBPbWl0PE9taXQ8aW1wb3J0KFwidmFsaWJvdFwiKS5PYmplY3RTY2hlbWE8e1xuICAgICAgICByZWFkb25seSBpZDogaW1wb3J0KFwidmFsaWJvdFwiKS5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgbmFtZTogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgZGVzY3JpcHRpb246IGltcG9ydChcInZhbGlib3RcIikuTnVsbGFibGVTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgY3JlYXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgdXBkYXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgcmVhZG9ubHkgZGVsZXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICByZWFkb25seSBtZXRhczogaW1wb3J0KFwidmFsaWJvdFwiKS5PcHRpb25hbFNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlJlY29yZFNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCBpbXBvcnQoXCJ2YWxpYm90XCIpLkFueVNjaGVtYSwgdW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICB9LCB1bmRlZmluZWQ+LCBcImVudHJpZXNcIiB8IFwifnR5cGVzXCIgfCBcIn5ydW5cIiB8IFwifnN0YW5kYXJkXCI+ICYge1xuICAgICAgICByZWFkb25seSBlbnRyaWVzOiBQaWNrPHtcbiAgICAgICAgICAgIHJlYWRvbmx5IGlkOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgbmFtZTogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgICAgIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk51bGxhYmxlU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgICAgICAgICByZWFkb25seSBjcmVhdGVkX2F0OiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgdXBkYXRlZF9hdDogaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICAgICAgICAgIHJlYWRvbmx5IGRlbGV0ZWRfYXQ6IGltcG9ydChcInZhbGlib3RcIikuTnVsbGFibGVTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICAgICAgICAgIHJlYWRvbmx5IG1ldGFzOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuUmVjb3JkU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIGltcG9ydChcInZhbGlib3RcIikuQW55U2NoZW1hLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICB9LCBcImRlc2NyaXB0aW9uXCIgfCBcIm5hbWVcIj47XG4gICAgICAgIHJlYWRvbmx5IFwifnN0YW5kYXJkXCI6IGltcG9ydChcInZhbGlib3RcIikuU3RhbmRhcmRQcm9wczx7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIH0+O1xuICAgICAgICByZWFkb25seSBcIn5ydW5cIjogKGRhdGFzZXQ6IGltcG9ydChcInZhbGlib3RcIikuVW5rbm93bkRhdGFzZXQsIGNvbmZpZzogaW1wb3J0KFwidmFsaWJvdFwiKS5Db25maWc8aW1wb3J0KFwidmFsaWJvdFwiKS5CYXNlSXNzdWU8dW5rbm93bj4+KSA9PiBpbXBvcnQoXCJ2YWxpYm90XCIpLk91dHB1dERhdGFzZXQ8e1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIH0sIGltcG9ydChcInZhbGlib3RcIikuT2JqZWN0SXNzdWUgfCBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ0lzc3VlPjtcbiAgICAgICAgcmVhZG9ubHkgXCJ+dHlwZXNcIj86IHtcbiAgICAgICAgICAgIHJlYWRvbmx5IGlucHV0OiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRvbmx5IG91dHB1dDoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkb25seSBpc3N1ZTogaW1wb3J0KFwidmFsaWJvdFwiKS5PYmplY3RJc3N1ZSB8IGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nSXNzdWU7XG4gICAgICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgfSwgXCJlbnRyaWVzXCIgfCBcIn50eXBlc1wiIHwgXCJ+cnVuXCIgfCBcIn5zdGFuZGFyZFwiPiAmIHtcbiAgICAgICAgcmVhZG9ubHkgZW50cmllczoge1xuICAgICAgICAgICAgcmVhZG9ubHkgZGVzY3JpcHRpb246IGltcG9ydChcInZhbGlib3RcIikuT3B0aW9uYWxTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5OdWxsYWJsZVNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICAgICAgcmVhZG9ubHkgbmFtZTogaW1wb3J0KFwidmFsaWJvdFwiKS5PcHRpb25hbFNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgICAgICB9O1xuICAgICAgICByZWFkb25seSBcIn5zdGFuZGFyZFwiOiBpbXBvcnQoXCJ2YWxpYm90XCIpLlN0YW5kYXJkUHJvcHM8e1xuICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgfT47XG4gICAgICAgIHJlYWRvbmx5IFwifnJ1blwiOiAoZGF0YXNldDogaW1wb3J0KFwidmFsaWJvdFwiKS5Vbmtub3duRGF0YXNldCwgY29uZmlnOiBpbXBvcnQoXCJ2YWxpYm90XCIpLkNvbmZpZzxpbXBvcnQoXCJ2YWxpYm90XCIpLkJhc2VJc3N1ZTx1bmtub3duPj4pID0+IGltcG9ydChcInZhbGlib3RcIikuT3V0cHV0RGF0YXNldDx7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9LCBpbXBvcnQoXCJ2YWxpYm90XCIpLk9iamVjdElzc3VlIHwgaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdJc3N1ZT47XG4gICAgICAgIHJlYWRvbmx5IFwifnR5cGVzXCI/OiB7XG4gICAgICAgICAgICByZWFkb25seSBpbnB1dDoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRvbmx5IG91dHB1dDoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRvbmx5IGlzc3VlOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9iamVjdElzc3VlIHwgaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdJc3N1ZTtcbiAgICAgICAgfSB8IHVuZGVmaW5lZDtcbiAgICB9O1xufVxuIiwiaW1wb3J0IEVtbWl0dGVyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0VtbWl0dGVyU2VydmljZS50cyc7XG5pbXBvcnQgRGFzaGJvYXJkV2lkZ2V0RGF0YSBmcm9tICcuL0Rhc2hib2FyZFdpZGdldERhdGEnO1xuaW1wb3J0IERhc2hib2FyZFdpZGdldCBmcm9tICcuL0Rhc2hib2FyZFdpZGdldCc7XG5pbXBvcnQgdHlwZSB7IERhc2hib2FyZFNjaGVtYSB9IGZyb20gJyNzaGFyZWQvc2NoZW1hcy9kYXNoYm9hcmRTY2hlbWEudHMnO1xuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRPcHRpb25zIHtcbiAgICBkYXNoYm9hcmQ6IERhc2hib2FyZFNjaGVtYTtcbiAgICB3aWRnZXRzPzogRGFzaGJvYXJkV2lkZ2V0RGF0YVtdO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGFzaGJvYXJkIHtcbiAgICBuYW1lOiBEYXNoYm9hcmRTY2hlbWFbJ25hbWUnXTtcbiAgICBkZXNjcmlwdGlvbjogRGFzaGJvYXJkU2NoZW1hWydkZXNjcmlwdGlvbiddO1xuICAgIHdpZGdldHM6IERhc2hib2FyZFdpZGdldFtdO1xuICAgIGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2U7XG4gICAgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIHNldE5hbWUobmFtZTogc3RyaW5nKTogdGhpcztcbiAgICBzZXREZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogdGhpcztcbiAgICBzZXRDb250YWluZXJXaWR0aCh3aWR0aDogbnVtYmVyKTogdGhpcztcbiAgICBzZXRXaWRnZXRzKHdpZGdldHM6IERhc2hib2FyZFdpZGdldERhdGFbXSk6IHRoaXM7XG4gICAgZmluZExhc3RSb3coKTogbnVtYmVyO1xuICAgIGFkZFdpZGdldChwYXlsb2FkPzogUGFydGlhbDxEYXNoYm9hcmRXaWRnZXREYXRhPik6IHZvaWQ7XG4gICAgcmVtb3ZlV2lkZ2V0KGluZGV4OiBudW1iZXIpOiB2b2lkO1xuICAgIHJlbW92ZVdpZGdldEJ5SWQoaWQ6IHN0cmluZyk6IHZvaWQ7XG4gICAgdXBkYXRlV2lkZ2V0KGluZGV4OiBudW1iZXIsIHdpZGdldDogRGFzaGJvYXJkV2lkZ2V0KTogdm9pZDtcbiAgICBkdXBsaWNhdGVXaWRnZXQoaW5kZXg6IG51bWJlcik6IHZvaWQ7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgdHlwZSBEYXNoYm9hcmRFbnRpdHkgZnJvbSAnI2NsaWVudC9lbnRpdGllcy9EYXNoYm9hcmQudHMnO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcHJvdmlkZURhc2hib2FyZChlbnRpdHk6IFJlZjxEYXNoYm9hcmRFbnRpdHk+KTogdm9pZDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZURhc2hib2FyZCgpOiBSZWY8RGFzaGJvYXJkRW50aXR5PjtcbiIsImltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCB0eXBlIERhc2hib2FyZFdpZGdldCBmcm9tICcjY2xpZW50L2VudGl0aWVzL0Rhc2hib2FyZFdpZGdldC50cyc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwcm92aWRlRGFzaGJvYXJkV2lkZ2V0KGVudGl0eTogUmVmPERhc2hib2FyZFdpZGdldD4pOiB2b2lkO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXNlRGFzaGJvYXJkV2lkZ2V0KCk6IFJlZjxEYXNoYm9hcmRXaWRnZXQ+O1xuIiwiaW1wb3J0IHR5cGUgeyBNYXliZVJlZiwgUmVmIH0gZnJvbSAndnVlJztcbmV4cG9ydCBpbnRlcmZhY2UgVXNlRmV0Y2hQYWdpbmF0aW9uT3B0aW9ucyB7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIHF1ZXJ5PzogTWF5YmVSZWY8UmVjb3JkPHN0cmluZywgYW55Pj47XG4gICAgcGFnZT86IE1heWJlUmVmPG51bWJlcj47XG4gICAgc2VyaWFsaXplPzogKGl0ZW06IGFueSkgPT4gYW55O1xuICAgIHJlZmluZT86IChpdGVtczogYW55W10pID0+IGFueVtdO1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIG9yZGVyQnk/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGw7XG4gICAgb3JkZXJEaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJyB8ICgnYXNjJyB8ICdkZXNjJylbXSB8IG51bGw7XG4gICAgZGVib3VuY2U/OiBudW1iZXI7XG4gICAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZUZldGNoUGFnaW5hdGlvbjxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IFVzZUZldGNoUGFnaW5hdGlvbk9wdGlvbnMpOiB7XG4gICAgcGFnZTogUmVmPG51bWJlciwgbnVtYmVyPjtcbiAgICBsaW1pdDogUmVmPG51bWJlciwgbnVtYmVyPjtcbiAgICBvcmRlckJ5OiBSZWY8c3RyaW5nIHwgc3RyaW5nW10gfCBudWxsLCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGw+O1xuICAgIG9yZGVyRGlyZWN0aW9uOiBSZWY8XCJhc2NcIiB8IFwiZGVzY1wiIHwgKFwiYXNjXCIgfCBcImRlc2NcIilbXSB8IG51bGwsIFwiYXNjXCIgfCBcImRlc2NcIiB8IChcImFzY1wiIHwgXCJkZXNjXCIpW10gfCBudWxsPjtcbiAgICB0b3RhbDogaW1wb3J0KFwidnVlXCIpLkNvbXB1dGVkUmVmPG51bWJlcj47XG4gICAgdG90YWxQYWdlczogaW1wb3J0KFwidnVlXCIpLkNvbXB1dGVkUmVmPG51bWJlcj47XG4gICAgaXRlbXM6IGltcG9ydChcInZ1ZVwiKS5Db21wdXRlZFJlZjxUW10+O1xuICAgIGxvYWRpbmc6IFJlZjxib29sZWFuLCBib29sZWFuPjtcbiAgICBsb2FkOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIHJlc2V0OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIHF1ZXJ5OiBSZWY8UmVjb3JkPHN0cmluZywgYW55PiwgUmVjb3JkPHN0cmluZywgYW55Pj47XG4gICAgaHlkcmF0ZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn07XG4iLCJpbnRlcmZhY2UgRW50cnkge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBhbnk7XG4gICAgc291cmNlOiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWdTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgZW50cmllczogTWFwPHN0cmluZywgRW50cnk+O1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgbGlzdCgpOiBFbnRyeVtdO1xuICAgIHBhcnNlVmFsdWUodmFsdWU6IGFueSk6IGFueTtcbiAgICBsb2FkRnJvbVJlY29yZChyZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgbG9hZEZyb21FbnRyaWVzKGVudHJpZXM6IFtzdHJpbmcsIGFueV1bXSwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICB0b1JlY29yZCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gICAgZ2V0PFQgPSBhbnkgfCB1bmRlZmluZWQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBUO1xuICAgIGdldE9uZTxUID0gYW55IHwgdW5kZWZpbmVkPihrZXlzOiBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlPzogYW55KTogVDtcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgdW5zZXQoa2V5OiBzdHJpbmcpOiB2b2lkO1xuICAgIGNsZWFyKCk6IHZvaWQ7XG4gICAgZHVtcCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuZXhwb3J0IHt9O1xuIiwidHlwZSBDb25zdHJ1Y3RvcjxUID0gb2JqZWN0PiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XG50eXBlIEVudHJ5S2V5ID0gc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250YWluZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGVudHJpZXM7XG4gICAgbG9hZEZyb21SZWNvcmQocmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbiAgICB0b1JlY29yZCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgZ2V0S2V5O1xuICAgIHNldChwYXlsb2FkOiBFbnRyeUtleSwgdmFsdWU6IGFueSk6IHRoaXM7XG4gICAgaGFzKHBheWxvYWQ6IEVudHJ5S2V5KTogYm9vbGVhbjtcbiAgICBnZXQ8VD4ocGF5bG9hZDogRW50cnlLZXkpOiBUO1xuICAgIHVuc2V0KHBheWxvYWQ6IEVudHJ5S2V5KTogdm9pZDtcbiAgICBzaW5nbGV0b248VD4oY2xhc3NDb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD4pOiBUO1xuICAgIGxvYWQoZW50cmllczogUmVjb3JkPGFueSwgYW55Pik6IHZvaWQ7XG4gICAgcHJveHk8VCA9IHVua25vd24+KGtleTogRW50cnlLZXkpOiBUO1xuICAgIGtleXMoKTogRW50cnlLZXlbXTtcbn1cbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZUlkKHByZWZpeD86IHN0cmluZyk6IHN0cmluZztcbiIsImltcG9ydCB7IGRlZmluZUFiaWxpdHkgfSBmcm9tICdAY2FzbC9hYmlsaXR5JztcbmltcG9ydCBQZXJtaXNzaW9uIGZyb20gJy4vUGVybWlzc2lvbkVudGl0eS50cyc7XG5pbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWNsRW50aXR5IHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgYWJpbGl0eTogUmV0dXJuVHlwZTx0eXBlb2YgZGVmaW5lQWJpbGl0eT47XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8QWNsRW50aXR5Pik7XG4gICAgY2FuKGFjdGlvbjogc3RyaW5nLCBzdWJqZWN0OiBhbnksIG9iamVjdD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuO1xuICAgIGNhbm5vdChhY3Rpb246IHN0cmluZywgc3ViamVjdDogYW55LCBvYmplY3Q/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYm9vbGVhbjtcbiAgICBzdWJqZWN0KHN1YmplY3Q6IHN0cmluZywgb2JqZWN0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiAmIGltcG9ydChcIkBjYXNsL2FiaWxpdHlcIikuRm9yY2VkU3ViamVjdDxzdHJpbmc+O1xufVxuIiwiZXhwb3J0IGludGVyZmFjZSBNb2R1bGVNYW5pZmVzdEJ1aWxkSW1wb3J0IHtcbiAgICBmcm9tOiBzdHJpbmc7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdHlwZTogJ2dsb2JhbF9pbXBvcnQnO1xufVxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVNYW5pZmVzdEJ1aWxkIHtcbiAgICBpbXBvcnRzPzogTW9kdWxlTWFuaWZlc3RCdWlsZEltcG9ydFtdO1xufVxuZGVjbGFyZSBjb25zdCBNb2R1bGVNYW5pZmVzdF9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZHVsZU1hbmlmZXN0IGV4dGVuZHMgTW9kdWxlTWFuaWZlc3RfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYXV0aG9yPzogc3RyaW5nO1xuICAgIGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgYnVpbGQ/OiBNb2R1bGVNYW5pZmVzdEJ1aWxkO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIE1vZHVsZU1hbmlmZXN0IGZyb20gJy4vTW9kdWxlTWFuaWZlc3RFbnRpdHkudHMnO1xuaW1wb3J0IExpZmVjeWNsZUhvb2sgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLnRzJztcbmludGVyZmFjZSBNb2R1bGVVcGdyYWRlSW5mbyB7XG4gICAgc291cmNlOiAnZ2l0JyB8ICd6aXAnO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmRlY2xhcmUgY29uc3QgTW9kdWxlX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yPHt9PiAmIHR5cGVvZiBMaWZlY3ljbGVIb29rO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlIGV4dGVuZHMgTW9kdWxlX2Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGJ1aWxkOiBNb2R1bGVNYW5pZmVzdFsnYnVpbGQnXTtcbiAgICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgICB1cGdyYWRlX2luZm8/OiBNb2R1bGVVcGdyYWRlSW5mbztcbiAgICBzZXREYXRhKGRhdGE6IFBhcnRpYWw8TW9kdWxlIHwgTW9kdWxlTWFuaWZlc3Q+KTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsImRlY2xhcmUgY29uc3QgUGx1Z2luRW50aXR5X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luRW50aXR5IGV4dGVuZHMgUGx1Z2luRW50aXR5X2Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIGFsaWFzZXM6IHN0cmluZ1tdO1xuICAgIHZlcnNpb25fY2hhbm5lbDogc3RyaW5nO1xuICAgIHZlcnNpb25fYXZhaWxhYmxlX2NoYW5uZWxzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IHR5cGUgVmFsaWJvdE9iamVjdFNjaGVtYSwgdHlwZSBWYWxpYm90U2NoZW1hLCB0eXBlIFZhbGlkYXRlUGF5bG9hZCwgdHlwZSBWYWxpZGF0b3JSZXN1bHQgfSBmcm9tICcjc2hhcmVkL2luZGV4LnRzJztcbmltcG9ydCB7IHRvVHlwZWRTY2hlbWEgYXMgdmVlVmFsaWRhdGVUb1R5cGVkU2NoZW1hIH0gZnJvbSAnQHZlZS12YWxpZGF0ZS92YWxpYm90JztcbmltcG9ydCB7IHR5cGUgRm9ybUNvbnRleHQsIHR5cGUgRm9ybU9wdGlvbnMsIHR5cGUgR2VuZXJpY09iamVjdCB9IGZyb20gJ3ZlZS12YWxpZGF0ZSc7XG5leHBvcnQgaW50ZXJmYWNlIFZhbGlib3RGb3JtT3B0aW9uczxUIGV4dGVuZHMgVmFsaWJvdFNjaGVtYSA9IFZhbGlib3RTY2hlbWE+IGV4dGVuZHMgT21pdDxGb3JtT3B0aW9uczxWYWxpZGF0ZVBheWxvYWQ8VD4sIFZhbGlkYXRvclJlc3VsdDxUPj4sICd2YWxpZGF0aW9uU2NoZW1hJz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBWYWxpYm90Rm9ybVJlc3VsdE9iamVjdDxUIGV4dGVuZHMgVmFsaWJvdE9iamVjdFNjaGVtYT4gZXh0ZW5kcyBHZW5lcmljT2JqZWN0LCBGb3JtQ29udGV4dDxWYWxpZGF0b3JSZXN1bHQ8VD4+IHtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZUZvcm06IHR5cGVvZiB1c2VWYWxpYm90Rm9ybTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHRvVHlwZWRTY2hlbWE6IHR5cGVvZiB2ZWVWYWxpZGF0ZVRvVHlwZWRTY2hlbWE7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1c2VWYWxpYm90Rm9ybTxUIGV4dGVuZHMgVmFsaWJvdE9iamVjdFNjaGVtYSA9IFZhbGlib3RPYmplY3RTY2hlbWE+KHNjaGVtYTogVCwgb3B0aW9ucz86IFZhbGlib3RGb3JtT3B0aW9uczxUPik6IEZvcm1Db250ZXh0PFZhbGlkYXRvclJlc3VsdDxUPj47XG4iLCJpbXBvcnQgKiBhcyBVbmhlYWRWdWUgZnJvbSAnQHVuaGVhZC92dWUnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgVU5IRUFEX1ZVRV9DT05UQUlORVJfS0VZID0gXCJ1bmhlYWQtdnVlXCI7XG5kZWNsYXJlIGNvbnN0IHVuaGVhZFZ1ZTogdHlwZW9mIFVuaGVhZFZ1ZTtcbmV4cG9ydCBkZWZhdWx0IHVuaGVhZFZ1ZTtcbiIsImltcG9ydCB1bmhlYWRWdWUgZnJvbSAnI2NsaWVudC9mYWNhZGVzL3VuaGVhZFZ1ZS50cyc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VIZWFkOiB0eXBlb2YgdW5oZWFkVnVlLnVzZUhlYWQ7XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1c2VMYXlvdXRPcHRpb25zKCk6IGltcG9ydChcInZ1ZVwiKS5SZWY8YW55LCBhbnk+O1xuIiwiaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgTG9hZGluZ1JlZiBleHRlbmRzIFJlZjxib29sZWFuPiB7XG4gICAgc2V0OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1c2VMb2FkaW5nKGRlZmF1bHRWYWx1ZT86IGJvb2xlYW4sIG9wdGlvbnM/OiBPcHRpb25zKTogTG9hZGluZ1JlZjtcbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBpbnRlcmZhY2UgTWVudUJhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBvcmRlcj86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWVudVNpbmdsZSBleHRlbmRzIE1lbnVCYXNlIHtcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgdG86IHN0cmluZztcbiAgICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE1lbnVXaXRoQ2hpbGRyZW4gZXh0ZW5kcyBNZW51QmFzZSB7XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIGNoaWxkcmVuOiBPbWl0PE1lbnVTaW5nbGUsICdpY29uJz5bXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWVudUdyb3VwIGV4dGVuZHMgTWVudUJhc2Uge1xuICAgIGdyb3VwOiBib29sZWFuO1xuICAgIGl0ZW1zOiBNZW51SXRlbVtdO1xufVxuZXhwb3J0IGludGVyZmFjZSBNZW51SXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHRvPzogc3RyaW5nO1xuICAgIHRhcmdldD86ICdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJztcbiAgICBncm91cD86IHN0cmluZztcbiAgICBvcmRlcj86IG51bWJlcjtcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHBhcmVudD86IHN0cmluZztcbiAgICBsYXlvdXQ/OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VNZW51ID0gUmV0dXJuVHlwZTx0eXBlb2YgdXNlTWVudT47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1c2VNZW51KCk6IHtcbiAgICBpdGVtczogaW1wb3J0KFwidnVlXCIpLkNvbXB1dGVkUmVmPHtcbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgdG8/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHRhcmdldD86IFwiX2JsYW5rXCIgfCBcIl9zZWxmXCIgfCBcIl9wYXJlbnRcIiB8IFwiX3RvcFwiIHwgdW5kZWZpbmVkO1xuICAgICAgICBncm91cD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgb3JkZXI/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGljb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHBhcmVudD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGF5b3V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIH1bXT47XG4gICAgYWRkOiAoLi4uaXRlbTogTWVudUl0ZW1bXSkgPT4gdm9pZDtcbiAgICByZW1vdmU6IChpdGVtOiBNZW51SXRlbSB8IE1lbnVJdGVtW1wiaWRcIl0pID0+IHZvaWQ7XG4gICAgcmVtb3ZlR3JvdXA6IChncm91cElkOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgcmVtb3ZlTWFueTogKGl0ZW1JZHM6IHN0cmluZ1tdKSA9PiB2b2lkO1xuICAgIHJlbW92ZU1hbnlHcm91cDogKGdyb3VwSWRzOiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgICBjbGVhcjogKCkgPT4gdm9pZDtcbn07XG4iLCJpbXBvcnQgeyB1c2VSb3V0ZVF1ZXJ5IGFzIHZ1ZVVzZXJSb3V0ZVF1ZXJ5IH0gZnJvbSAnQHZ1ZXVzZS9yb3V0ZXInO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlUm91dGVRdWVyeTogdHlwZW9mIHZ1ZVVzZXJSb3V0ZVF1ZXJ5O1xuIiwiaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuZXhwb3J0IGludGVyZmFjZSBVc2VTdGF0ZU9wdGlvbnMge1xuICAgIGRlZmF1bHQ/OiAoKSA9PiBhbnk7XG4gICAgdHJhbnNmb3JtPzogKHZhbHVlOiBhbnkpID0+IGFueTtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZVN0YXRlPFQ+KGtleTogc3RyaW5nLCBvcHRpb25zPzogVXNlU3RhdGVPcHRpb25zKTogUmVmPFQ+O1xuIiwiaW1wb3J0IEFjbEVudGl0eSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0FjbEVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IGFjbDogQWNsRW50aXR5O1xuZXhwb3J0IGRlZmF1bHQgYWNsO1xuIiwiaW1wb3J0IEF1dGhTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvQXV0aFNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBhdXRoOiBBdXRoU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGF1dGg7XG4iLCJpbXBvcnQgQ29uZmlnU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBjb25maWc6IENvbmZpZ1NlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBjb25maWc7XG4iLCJpbXBvcnQgQ29udGFpbmVyU2VydmljZSBmcm9tIFwiI3NoYXJlZC9zZXJ2aWNlcy9Db250YWluZXJTZXJ2aWNlLnRzXCI7XG5kZWNsYXJlIGNvbnN0IF9kZWZhdWx0OiBDb250YWluZXJTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgX2RlZmF1bHQ7XG4iLCJpbXBvcnQgdHlwZSBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uIGZyb20gJyNjbGllbnQvZW50aXRpZXMvRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbi50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXNoYm9hcmRXaWRnZXRSZWdpc3RyeSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHByaXZhdGUgZGVmaW5pdGlvbnM7XG4gICAgcmVnaXN0ZXIoLi4uZGVmaW5pdGlvbjogRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbltdKTogdm9pZDtcbiAgICBnZXQoaWQ6IHN0cmluZyk6IERhc2hib2FyZFdpZGdldERlZmluaXRpb24gfCBudWxsO1xuICAgIGxpc3QoKTogRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbltdO1xufVxuIiwiaW1wb3J0IERhc2hib2FyZFdpZGdldFJlZ2lzdHJ5IGZyb20gJyNjbGllbnQvcmVnaXN0cnkvRGFzaGJvYXJkV2lkZ2V0UmVnaXN0cnkudHMnO1xuZGVjbGFyZSBjb25zdCBkYXNoYm9hcmRSZWdpc3RyeTogRGFzaGJvYXJkV2lkZ2V0UmVnaXN0cnk7XG5leHBvcnQgZGVmYXVsdCBkYXNoYm9hcmRSZWdpc3RyeTtcbiIsImltcG9ydCB7IEVtbWl0dGVyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xuZGVjbGFyZSBjb25zdCBlbW1pdHRlcjogRW1taXR0ZXJTZXJ2aWNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuZXhwb3J0IGRlZmF1bHQgZW1taXR0ZXI7XG4iLCJpbXBvcnQgRmV0Y2hTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvRmV0Y2hTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgZmV0Y2hlcjogRmV0Y2hTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgZmV0Y2hlcjtcbiIsImRlY2xhcmUgY29uc3QgbGF5b3V0OiBhbnk7XG5leHBvcnQgZGVmYXVsdCBsYXlvdXQ7XG4iLCJpbXBvcnQgTGlmZWN5Y2xlU2VydmljZSBmcm9tICcjY2xpZW50L3NlcnZpY2VzL0xpZmVjeWNsZVNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBsaWZlY3ljbGU6IExpZmVjeWNsZVNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBsaWZlY3ljbGU7XG4iLCJpbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iLCJpbXBvcnQgTWVudVNlcnZpY2UgZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9NZW51U2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IG1lbnU6IE1lbnVTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgbWVudTtcbiIsImltcG9ydCB0eXBlIHsgUm91dGVMb2NhdGlvbk5vcm1hbGl6ZWRHZW5lcmljIH0gZnJvbSAndnVlLXJvdXRlcic7XG5kZWNsYXJlIGNvbnN0IHJvdXRlOiBSb3V0ZUxvY2F0aW9uTm9ybWFsaXplZEdlbmVyaWM7XG5leHBvcnQgZGVmYXVsdCByb3V0ZTtcbiIsImltcG9ydCB0eXBlIHsgUm91dGVyIH0gZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3Qgcm91dGVyOiBSb3V0ZXI7XG5leHBvcnQgZGVmYXVsdCByb3V0ZXI7XG4iLCJpbXBvcnQgVG9hc3RTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvVG9hc3RTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgdG9hc3Q6IFRvYXN0U2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IHRvYXN0O1xuIiwiaW1wb3J0ICogYXMgVmVlVmFsaWRhdGUgZnJvbSAndmVlLXZhbGlkYXRlJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IFZFRV9WQUxJREFURV9DT05UQUlORVJfS0VZID0gXCJ2ZWUtdmFsaWRhdGVcIjtcbmRlY2xhcmUgY29uc3QgdmVlVmFsaWRhdGU6IHR5cGVvZiBWZWVWYWxpZGF0ZTtcbmV4cG9ydCBkZWZhdWx0IHZlZVZhbGlkYXRlO1xuIiwiaW1wb3J0ICogYXMgVnVlIGZyb20gJ3Z1ZSc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBWVUVfQ09OVEFJTkVSX0tFWSA9IFwiVnVlXCI7XG5kZWNsYXJlIGNvbnN0IHZ1ZTogdHlwZW9mIFZ1ZTtcbmV4cG9ydCBkZWZhdWx0IHZ1ZTtcbiIsImltcG9ydCAqIGFzIFZ1ZVJvdXRlciBmcm9tICd2dWUtcm91dGVyJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IFZVRV9ST1VURVJfQ09OVEFJTkVSX0tFWSA9IFwiVnVlUm91dGVyXCI7XG5kZWNsYXJlIGNvbnN0IHZ1ZVJvdXRlcjogdHlwZW9mIFZ1ZVJvdXRlcjtcbmV4cG9ydCBkZWZhdWx0IHZ1ZVJvdXRlcjtcbiIsImltcG9ydCBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uIGZyb20gJy4vRGFzaGJvYXJkV2lkZ2V0RGVmaW5pdGlvbic7XG5pbXBvcnQgdHlwZSBEYXNoYm9hcmRXaWRnZXREYXRhIGZyb20gJy4vRGFzaGJvYXJkV2lkZ2V0RGF0YSc7XG4vKipcbiAgICAqIENvbXBvbmVudCB0byBiZSB1c2VkIGZvciBjaGFydCB3aWRnZXRzIGluIHRoZSBkYXNoYm9hcmQuXG4gICAgKiBQbHVnaW5zIGNhbiBleHRlbmQgdGhpcyBjbGFzcyB0byBjcmVhdGUgdGhlaXIgb3duIGNoYXJ0IHdpZGdldHMuXG4gICAgKiBAZXhhbXBsZVxuICAgICogY2xhc3MgTXlDaGFydFdpZGdldCBleHRlbmRzIERhc2hib2FyZFdpZGdldERlZmluaXRpb25DaGFydCB7XG4gICAgKiAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgKiAgICAgICAgIHN1cGVyKClcbiAgICAqICAgICAgICAgdGhpcy5uYW1lID0gJ015IENoYXJ0IFdpZGdldCdcbiAgICAqICAgICAgICAgdGhpcy5pZCA9ICdteS1jaGFydC13aWRnZXQnXG4gICAgKiAgICAgfVxuICAgICogfVxuICAgICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uQ2hhcnQgZXh0ZW5kcyBEYXNoYm9hcmRXaWRnZXREZWZpbml0aW9uIHtcbiAgICBwcml2YXRlIHN0YXRpYyByZW5kZXJlcjtcbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIHN0YXRpYyBzZXRSZW5kZXJlcihyZW5kZXJlcjogYW55KTogdm9pZDtcbiAgICBjb21wb25lbnQoKTogYW55O1xuICAgIGNoYXJ0T3B0aW9ucyhwYXlsb2FkOiBEYXNoYm9hcmRXaWRnZXREYXRhWydvcHRpb25zJ10pOiBQcm9taXNlPGFueT47XG59XG4iLCJpbXBvcnQgQmFzZSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL01vZHVsZUVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IE1vZHVsZV9iYXNlOiB0eXBlb2YgQmFzZTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZHVsZSBleHRlbmRzIE1vZHVsZV9iYXNlIHtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvUGx1Z2luRW50aXR5LnRzJztcbmltcG9ydCB0eXBlIHsgQXV0b09wdGlvbnMgfSBmcm9tICcjY2xpZW50L3NlcnZpY2VzL1JvdXRlclNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBQbHVnaW5FbnRpdHlfYmFzZTogdHlwZW9mIEJhc2U7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbHVnaW5FbnRpdHkgZXh0ZW5kcyBQbHVnaW5FbnRpdHlfYmFzZSB7XG4gICAgYWRkUGFnZXNGb2xkZXIoaW1wb3J0czogYW55LCBvcHRpb25zPzogQXV0b09wdGlvbnMpOiB2b2lkO1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgQXV0b09wdGlvbnMgfSBmcm9tICcjY2xpZW50L3NlcnZpY2VzL1JvdXRlclNlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgeyBEZWZpbmVDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZVJlY29yZFJhdyB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuLyoqIEBkZXByZWNhdGVkIFVzZSBhdXRvIGZyb20gUm91dGVyU2VydmljZSBpbnN0ZWFkICovXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBhdXRvUm91dGVzKGltcG9ydHM6IFJlY29yZDxzdHJpbmcsIERlZmluZUNvbXBvbmVudCB8ICgoKSA9PiBQcm9taXNlPERlZmluZUNvbXBvbmVudD4pPiwgb3B0aW9ucz86IEF1dG9PcHRpb25zKTogUm91dGVSZWNvcmRSYXdbXTtcbiIsImV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlQ29sdW1uPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGZpZWxkPzoga2V5b2YgVCB8ICgocm93OiBUKSA9PiBhbnkpIHwgKHN0cmluZyAmIHt9KTtcbiAgICBzb3J0YWJsZT86IGJvb2xlYW47XG4gICAgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBkZWZpbmVDb2x1bW5zPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+Pihjb2x1bW5zOiBEYXRhVGFibGVDb2x1bW48VD5bXSk6IERhdGFUYWJsZUNvbHVtbjxUPltdO1xuIiwiZXhwb3J0IGludGVyZmFjZSBEZWZpbmVGb3JtRmllbGQge1xuICAgIGNvbXBvbmVudDogJ3RleHQtZmllbGQnIHwgJ3RleHRhcmVhJyB8ICdzZWxlY3QnIHwgJ2F1dG9jb21wbGV0ZScgfCAnc3dpdGNoJyB8ICdmaWxlLXVwbG9hZCcgfCAnaW1hZ2UtdXBsb2FkJyB8ICdjb2xvci1waWNrZXInIHwgJ3N0cmluZy1saXN0LWlucHV0JyB8ICdqc29uLWlucHV0JyB8ICdkYXRlLXBpY2tlcicgfCAnaGlkZGVuJztcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBkZWZpbmVGb3JtRmllbGRzKGZpZWxkOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbmVGb3JtRmllbGQ+KTogUmVjb3JkPHN0cmluZywgRGVmaW5lRm9ybUZpZWxkPjtcbiIsIi8qKiBAZGVwcmVjYXRlZCBVc2UgZmV0Y2hlciBmYWNhZGUgKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0ICRmZXRjaDogaW1wb3J0KFwiLi5cIikuRmV0Y2hTZXJ2aWNlO1xuIiwiaW50ZXJmYWNlIFBpY2tPcHRpb25zIHtcbiAgICBhY2NlcHQ/OiBzdHJpbmc7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xufVxudHlwZSBQaWNrUmVzdWx0PFQgZXh0ZW5kcyBQaWNrT3B0aW9ucz4gPSBUWydtdWx0aXBsZSddIGV4dGVuZHMgdHJ1ZSA/IEZpbGVbXSA6IEZpbGUgfCBudWxsO1xuZGVjbGFyZSBmdW5jdGlvbiBwaWNrPFQgZXh0ZW5kcyBQaWNrT3B0aW9ucz4ob3B0aW9uczogVCk6IFByb21pc2U8UGlja1Jlc3VsdDxUPj47XG5kZWNsYXJlIGZ1bmN0aW9uIHRvVWludDhBcnJheShmaWxlOiBGaWxlKTogUHJvbWlzZTxVaW50OEFycmF5PjtcbmludGVyZmFjZSBVcGxvYWRPcHRpb25zIHtcbiAgICBkcml2ZUlkOiBzdHJpbmc7XG4gICAgZmlsZTogRmlsZTtcbiAgICBkaXJlY3Rvcnk/OiBzdHJpbmc7XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVwbG9hZChvcHRpb25zOiBVcGxvYWRPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgJGZpbGU6IHtcbiAgICBwaWNrOiB0eXBlb2YgcGljaztcbiAgICB1cGxvYWQ6IHR5cGVvZiB1cGxvYWQ7XG4gICAgdG9VaW50OEFycmF5OiB0eXBlb2YgdG9VaW50OEFycmF5O1xufTtcbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHBhcnNlVG8odG86IHN0cmluZyk6IHN0cmluZztcbiIsImV4cG9ydCBkZWNsYXJlIGNvbnN0ICR0b2FzdDogKChtZXNzYWdlOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50LCBkYXRhPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5FeHRlcm5hbFRvYXN0KSA9PiBzdHJpbmcgfCBudW1iZXIpICYge1xuICAgIHN1Y2Nlc3M6IChtZXNzYWdlOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50LCBkYXRhPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5FeHRlcm5hbFRvYXN0KSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gICAgaW5mbzogKG1lc3NhZ2U6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQsIGRhdGE/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkV4dGVybmFsVG9hc3QpID0+IHN0cmluZyB8IG51bWJlcjtcbiAgICB3YXJuaW5nOiAobWVzc2FnZTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCwgZGF0YT86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuRXh0ZXJuYWxUb2FzdCkgPT4gc3RyaW5nIHwgbnVtYmVyO1xuICAgIGVycm9yOiAobWVzc2FnZTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCwgZGF0YT86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuRXh0ZXJuYWxUb2FzdCkgPT4gc3RyaW5nIHwgbnVtYmVyO1xuICAgIGN1c3RvbTogKGNvbXBvbmVudDogaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCwgZGF0YT86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuRXh0ZXJuYWxUb2FzdCkgPT4gc3RyaW5nIHwgbnVtYmVyO1xuICAgIG1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50LCBkYXRhPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5FeHRlcm5hbFRvYXN0KSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcHJvbWlzZTogPFRvYXN0RGF0YT4ocHJvbWlzZTogUHJvbWlzZTxUb2FzdERhdGE+IHwgKCgpID0+IFByb21pc2U8VG9hc3REYXRhPiksIGRhdGE/OiAoe1xuICAgICAgICBpZD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWNvbj86IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICAgICAgIHRvYXN0ZXJJZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29tcG9uZW50PzogaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29tcG9uZW50UHJvcHM/OiBhbnk7XG4gICAgICAgIHJpY2hDb2xvcnM/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBpbnZlcnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBjbG9zZUJ1dHRvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGRpc21pc3NpYmxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgZHVyYXRpb24/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGltcG9ydGFudD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGFjdGlvbj86IChpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkFjdGlvbiB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgdW5kZWZpbmVkO1xuICAgICAgICBjYW5jZWw/OiAoaW1wb3J0KFwidnVlLXNvbm5lclwiKS5BY3Rpb24gfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IHVuZGVmaW5lZDtcbiAgICAgICAgb25EaXNtaXNzPzogKCh0b2FzdDogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Ub2FzdFQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgICBvbkF1dG9DbG9zZT86ICgodG9hc3Q6IGltcG9ydChcInZ1ZS1zb25uZXJcIikuVG9hc3RUKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgY2FuY2VsQnV0dG9uU3R5bGU/OiBpbXBvcnQoXCJ2dWVcIikuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDtcbiAgICAgICAgYWN0aW9uQnV0dG9uU3R5bGU/OiBpbXBvcnQoXCJ2dWVcIikuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDtcbiAgICAgICAgc3R5bGU/OiBpbXBvcnQoXCJ2dWVcIikuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDtcbiAgICAgICAgdW5zdHlsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBjbGFzcz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY2xhc3Nlcz86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuVG9hc3RDbGFzc2VzIHwgdW5kZWZpbmVkO1xuICAgICAgICBkZXNjcmlwdGlvbkNsYXNzPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBwb3NpdGlvbj86IChcInRvcC1sZWZ0XCIgfCBcInRvcC1yaWdodFwiIHwgXCJib3R0b20tbGVmdFwiIHwgXCJib3R0b20tcmlnaHRcIiB8IFwidG9wLWNlbnRlclwiIHwgXCJib3R0b20tY2VudGVyXCIpIHwgdW5kZWZpbmVkO1xuICAgICAgICBjbG9zZUJ1dHRvblBvc2l0aW9uPzogKFwidG9wLWxlZnRcIiB8IFwidG9wLXJpZ2h0XCIgfCBcImJvdHRvbS1sZWZ0XCIgfCBcImJvdHRvbS1yaWdodFwiKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgdGVzdElkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIH0gJiB7XG4gICAgICAgIGxvYWRpbmc/OiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50O1xuICAgICAgICBzdWNjZXNzPzogKHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCAoKGRhdGE6IFRvYXN0RGF0YSkgPT4gaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8IHN0cmluZyB8IFByb21pc2U8aW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8IHN0cmluZz4pKSB8IChpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlByb21pc2VJRXh0ZW5kZWRSZXN1bHQgfCAoKGRhdGE6IFRvYXN0RGF0YSkgPT4gaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Qcm9taXNlSUV4dGVuZGVkUmVzdWx0IHwgUHJvbWlzZTxpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlByb21pc2VJRXh0ZW5kZWRSZXN1bHQ+KSkgfCB1bmRlZmluZWQ7XG4gICAgICAgIGVycm9yPzogKHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCAoKGRhdGE6IGFueSkgPT4gaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8IHN0cmluZyB8IFByb21pc2U8aW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8IHN0cmluZz4pKSB8IChpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlByb21pc2VJRXh0ZW5kZWRSZXN1bHQgfCAoKGRhdGE6IGFueSkgPT4gaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Qcm9taXNlSUV4dGVuZGVkUmVzdWx0IHwgUHJvbWlzZTxpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlByb21pc2VJRXh0ZW5kZWRSZXN1bHQ+KSk7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8ICgoZGF0YTogYW55KSA9PiBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgc3RyaW5nIHwgUHJvbWlzZTxpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgc3RyaW5nPik7XG4gICAgICAgIGZpbmFsbHk/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICB9KSB8IHVuZGVmaW5lZCkgPT4gKHN0cmluZyAmIHtcbiAgICAgICAgdW53cmFwOiAoKSA9PiBQcm9taXNlPFRvYXN0RGF0YT47XG4gICAgfSkgfCAobnVtYmVyICYge1xuICAgICAgICB1bndyYXA6ICgpID0+IFByb21pc2U8VG9hc3REYXRhPjtcbiAgICB9KSB8IHtcbiAgICAgICAgdW53cmFwOiAoKSA9PiBQcm9taXNlPFRvYXN0RGF0YT47XG4gICAgfSB8IHVuZGVmaW5lZDtcbiAgICBkaXNtaXNzOiAoaWQ/OiBudW1iZXIgfCBzdHJpbmcpID0+IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBsb2FkaW5nOiAobWVzc2FnZTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCwgZGF0YT86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuRXh0ZXJuYWxUb2FzdCkgPT4gc3RyaW5nIHwgbnVtYmVyO1xufSAmIHtcbiAgICBnZXRIaXN0b3J5OiAoKSA9PiAoaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Ub2FzdFQ8aW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudD4gfCBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlRvYXN0VG9EaXNtaXNzKVtdO1xuICAgIGdldFRvYXN0czogKCkgPT4gKGltcG9ydChcInZ1ZS1zb25uZXJcIikuVG9hc3RUPGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQ+IHwgaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Ub2FzdFRvRGlzbWlzcylbXTtcbn07XG4iLCJpbXBvcnQgdHlwZSB7IENsYXNzVmFsdWUgfSBmcm9tICdjbHN4JztcbmltcG9ydCB7IHR5cGUgQ2xhc3NOYW1lVmFsdWUgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB0d01lcmdlKC4uLmlucHV0czogQ2xhc3NOYW1lVmFsdWVbXSk6IHN0cmluZztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNsc3goLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pOiBzdHJpbmc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjbiguLi5pbnB1dHM6IENsYXNzVmFsdWVbXSk6IHN0cmluZztcbiIsImltcG9ydCB0eXBlIHsgTmF2aWdhdGlvbkd1YXJkLCBSb3V0ZUxvY2F0aW9uTm9ybWFsaXplZCB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuZXhwb3J0IGludGVyZmFjZSBBdXRoR3VhcmRPcHRpb25zIHtcbiAgICByZWRpcmVjdDogc3RyaW5nIHwgKCh0bzogUm91dGVMb2NhdGlvbk5vcm1hbGl6ZWQpID0+IHN0cmluZyk7XG4gICAgZXhjbHVkZT86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlQXV0aEd1YXJkKG9wdGlvbnM6IEF1dGhHdWFyZE9wdGlvbnMpOiBOYXZpZ2F0aW9uR3VhcmQ7XG5kZWNsYXJlIGNvbnN0IGF1dGhHdWFyZDogTmF2aWdhdGlvbkd1YXJkO1xuZXhwb3J0IGRlZmF1bHQgYXV0aEd1YXJkO1xuIiwiZXhwb3J0IGludGVyZmFjZSBHdWVzdEd1YXJkT3B0aW9ucyB7XG4gICAgcmVkaXJlY3Q6IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZUd1ZXN0R3VhcmQob3B0aW9uczogR3Vlc3RHdWFyZE9wdGlvbnMpOiAoKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5kZWNsYXJlIGNvbnN0IGd1ZXN0R3VhcmQ6ICgpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbmV4cG9ydCBkZWZhdWx0IGd1ZXN0R3VhcmQ7XG4iLCJpbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25HdWFyZCB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuZGVjbGFyZSBjb25zdCBzZXR1cEd1YXJkOiBOYXZpZ2F0aW9uR3VhcmQ7XG5leHBvcnQgZGVmYXVsdCBzZXR1cEd1YXJkO1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlsxN10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFXLGdCQUFjO0NBQUM7RUFBSyxNQUFHLENBQUcsRUFBRTtDQUFFO0VBQUM7RUFBSTtFQUFFO0VBQUs7Q0FBQzs7OztBQ0R0RCxJQUFJLHdCQUFzQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxtQkFBZ0I7Q0FBQTtPQUFVLENBQU0sUUFBUSxzQkFBZ0I7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDVELElBQUksWUFBWTtDQUFDO0VBQUssTUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUksT0FBSTtDQUFBO09BQVksQ0FBQSxVQUFVO0NBQU07RUFBQztFQUFFO0VBQU07RUFBRztFQUFBO0NBQUE7Ozs7QUNDaEQsSUFB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QyxJQUFBLGdCQUFvQjtDQUFDO09BQUE7RUFBQTtFQUFjO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0duQyxJQUFJLGtCQUFrQjtDQUFDO09BQVcsRUFBRTtDQUFDLEVBQUE7Q0FBSTtBQUN6QyxJQUFBLGNBQVU7Q0FBQTtPQUFZLEVBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ3RCLElBQVcsMEJBQW9CO0NBQUE7T0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQy9CLElBQUkscUJBQW1CO0NBQUE7T0FBUTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNML0IsSUFBQSxtQkFBcUI7Q0FBQTtPQUFBLENBQUEsUUFBaUIsbUJBQVE7Q0FBb0I7RUFBQztFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBbkUsSUFBSSxnQkFBYztDQUFHO0VBQUksTUFBQztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxhQUFVO0NBQUE7T0FBTSxDQUFPLGNBQVk7Q0FBSTtFQUFDO0VBQUk7RUFBQTtFQUFRO0VBQUk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0Q1RCxJQUFPLGFBQVU7Q0FBQTtPQUFXLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUM1QixJQUFJLGNBQVM7Q0FBTTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0NuQixJQUFPLFNBQVU7Q0FBQTtPQUFjLENBQUMsTUFBQSxTQUFVO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFDLElBQVUsY0FBVztDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNyQixJQUFBLE9BQUE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ0EsSUFBTyxlQUFVO0NBQUE7T0FBWSxDQUFBLE9BQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTs7OztBQ043QixJQUFBLGVBQWU7Q0FBSztPQUFDLENBQUEsUUFBYSxPQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDaUlsQyxJQUFJLHNCQUFrQjtDQUFBO0VBQVUsUUFBQztFQUFBO0VBQVM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7Ozs7Ozs7OztBRS9IMUMsSUFBTyxNQUFNO0NBQUE7T0FBQSxFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2IsSUFBTyxPQUFNO0NBQUE7T0FBQSxDQUFBLElBQUE7Q0FB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QixDQUFDLElBQUMsR0FBSTtDQUFBO0FBQ3ZELElBQUEseUJBQUE7Q0FBQTtPQUFBLENBQUEsY0FBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNBLElBQUEsa0JBQVU7Q0FBQTtFQUFnQixRQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNQMUIsSUFBTyxvQkFBVTtDQUFBO09BQWtCLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ25DLElBQUksc0JBQWE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RqQixJQUFPLHdCQUFVO0NBQUE7T0FBc0IsQ0FBQSxPQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3ZDLElBQUksNEJBQTJCO0NBQUE7T0FBQSxDQUFBLHNCQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0cvQixJQUFVLHVCQUF1QjtDQUFBO09BQUEsRUFBQTtDQUFBLEVBQUE7Q0FBQTtBQUNqQyxJQUFJLHlCQUF5QjtDQUFBO09BQUEsQ0FBQSxxQkFBQSwwQkFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzdCLElBQUksZ0JBQVk7Q0FBQTtPQUFBLEVBQUE7Q0FBQSxDQUFBLElBQUEsR0FBeUI7Q0FBQTtBQUN6QyxJQUFBLGtCQUFBO0NBQUE7T0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNOQSxJQUFPLFNBQWE7Q0FBQztPQUFZO0VBQUMsRUFBRTtFQUFDLEVBQWU7RUFBWSxFQUFBO0VBQWUsRUFBQTtFQUFhLEVBQVU7RUFBSSxFQUFhO0VBQWE7Q0FBQTtFQUFBO0VBQVM7RUFBSTtFQUFDO0VBQUE7RUFBQTtFQUFlO0VBQUk7RUFBRTtFQUFNO0VBQUk7RUFBQztFQUFBO0NBQUE7QUFDbEwsSUFBTyxVQUFjO0NBQUE7T0FBYTtFQUFDLEVBQUU7RUFBQyxFQUFlO0VBQVksRUFBQTtFQUFlLEVBQUE7RUFBc0IsRUFBRTtFQUFHO0NBQWM7RUFBQTtFQUFBO0VBQVM7RUFBSTtFQUFBO0VBQUE7RUFBWTtFQUFFO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDcEosSUFBTyxPQUFRO0NBQUE7T0FBZ0I7RUFBQyxFQUFFO0VBQUMsRUFBZTtFQUFZLEVBQUE7RUFBZTtFQUFBO0VBQVksRUFBQztFQUFjO0VBQVUsRUFBQztFQUFhLEVBQUE7RUFBYztDQUFBO0VBQUE7RUFBZTtFQUFDO0VBQU87RUFBRTtFQUFNO0VBQUk7RUFBSTtFQUFDO0VBQUE7RUFBQTtFQUFlO0VBQUM7RUFBTTtFQUFBO0VBQVE7Q0FBQztBQUNyTixJQUFPLFdBQWM7Q0FBQTtPQUFjO0VBQUMsRUFBRTtFQUFDLEVBQWU7RUFBWSxFQUFBO0VBQWU7RUFBQSxFQUFBO0VBQXlCLEVBQUU7RUFBVztDQUFBO0VBQUE7RUFBVztFQUFFO0VBQUE7RUFBVTtFQUFJO0VBQUE7RUFBQTtFQUFBO0VBQWdCO0VBQUE7RUFBTztDQUFDO0FBQzFLLElBQU8sUUFBUTtDQUFLO0VBQU0sTUFBSztFQUFBLEVBQUE7RUFBVTtFQUFBLEVBQVU7RUFBYyxFQUFFO0VBQWMsRUFBRTtFQUFFLEVBQUE7RUFBMEIsRUFBQztFQUFlO0VBQUEsRUFBQTtFQUFhLEVBQVU7RUFBZTtDQUFFO0VBQUM7RUFBQTtFQUFBO0VBQVk7RUFBQztFQUFBO0VBQVc7RUFBQztFQUFBO0VBQVc7RUFBRTtFQUFBO0VBQVU7RUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFnQjtFQUFBO0VBQVE7RUFBQztDQUFBO0FBQ3JQLElBQU8sY0FBYztDQUFBO09BQWlCO0VBQUMsRUFBRTtFQUFDLEVBQWU7RUFBWSxFQUFBO0VBQWUsRUFBQTtFQUFZLEVBQUE7RUFBZSxFQUFBO0VBQXVCLEVBQUU7RUFBYSxFQUFFO0VBQWMsRUFBQTtFQUFxQixFQUFFO0VBQWU7Q0FBQztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQWdCO0VBQU07RUFBRztFQUFBO0VBQVM7RUFBQztFQUFPO0VBQUk7RUFBRTtFQUFBO0VBQUE7RUFBYztFQUFBO0VBQUE7RUFBVztFQUFLO0VBQUc7Q0FBQztBQUM5UixJQUFPLFNBQWE7Q0FBQztPQUFZO0VBQUMsRUFBRTtFQUFDLEVBQWU7RUFBWSxFQUFBO0VBQWUsRUFBQTtFQUFhLEVBQUE7RUFBYyxFQUFBO0VBQWU7RUFBYSxFQUFBO0VBQWMsRUFBVTtFQUFjO0NBQUE7RUFBQTtFQUFBO0VBQVk7RUFBRTtFQUFBO0VBQUE7RUFBQTtFQUFnQjtFQUFNO0VBQUc7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDbk4sSUFBUSxNQUFTO0NBQUE7T0FBRztFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDcEIsSUFBRyxNQUFBO0NBQUE7RUFBQSxNQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDUkgsSUFBTyxXQUFjO0NBQUE7T0FBYztFQUFDLEVBQUU7RUFBQztFQUFlLEVBQVE7RUFBaUIsRUFBQTtFQUFjO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBZ0I7RUFBTTtFQUFFO0VBQU07RUFBQztDQUFBOzs7O0FDQTVILElBQU8sbUJBQVU7Q0FBQTtPQUFpQixFQUFBO0NBQUEsQ0FBQSxJQUFBLEdBQUE7Q0FBQTtBQUNsQyxJQUFJLE9BQVc7Q0FBQTtPQUFNO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3JCLElBQUksYUFBb0I7Q0FBQztPQUFDO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUEsYUFBQTtDQUFBO09BQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FFRkEsSUFBVyxVQUFVO0NBQUM7T0FBVyxDQUFBLEdBQUEsZ0JBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDakMsSUFBVyxnQkFBYztDQUFBO09BQUEsQ0FBQSxFQUFBLFdBQUEsRUFBQSxXQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDekIsSUFBQyxzQkFBQTtDQUFBO09BQUEsQ0FBQSxFQUFBLGFBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBRUQsSUFBVyxvQkFBb0I7Q0FBQztFQUFJLE1BQUE7RUFBQTtFQUFzQjtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBRTFELElBQU8sa0JBQVU7Q0FBQTtFQUFrQixNQUFFO0VBQUEsRUFBQTtFQUFRO0VBQWEsRUFBRTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzVELElBQVMsa0JBQVc7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNQcEIsSUFBTyxrQkFBaUI7Q0FBQTtPQUFpQjtFQUFDO0VBQWlCO0VBQUU7RUFBYTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxRSxJQUFJLGtCQUFxQjtDQUFBO09BQVU7RUFBQSxFQUFhO0VBQVUsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFELElBQUksa0JBQXVCO0NBQUE7T0FBVTtFQUFBLEVBQWE7RUFBVSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQTVELElBQU8sbUJBQVU7Q0FBQTtPQUFpQixDQUFBLGlCQUFBLG9CQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDbEMsSUFBSSxZQUFXO0NB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TUFBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUE7RUFBQSxjQUFBO0VBQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBLGNBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLGNBQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLGNBQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLGNBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBOUosSUFBTyxVQUFRO0NBQUE7T0FBa0IsQ0FBQyxlQUFTO0NBQUEsQ0FBQSxJQUFBLEdBQWdCO0NBQUM7QUFDNUQsSUFBTyxPQUFRO0NBQUE7T0FBZSxDQUFDLFdBQVM7Q0FBQSxDQUFBLElBQUEsR0FBWTtDQUFDO0FBQ3JELElBQU8sS0FBUTtDQUFBO09BQWEsQ0FBQyxXQUFTO0NBQUEsQ0FBQSxJQUFBLEdBQVk7Q0FBQzs7OztBQ0huRCxJQUFPLG1CQUFVO0NBQUE7T0FBaUIsQ0FBQSx3QkFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2xDLElBQUksa0JBQXlCO0NBQUE7T0FBQSxDQUFBLGtCQUE0QixnQkFBTztDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNoRSxJQUFJLFlBQVU7Q0FBQTtPQUFRLENBQUEsZ0JBQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTs7OztBQ0h0QixJQUFPLG9CQUFVO0NBQUE7T0FBa0IsRUFBQTtDQUFBLENBQUEsR0FBQTtDQUFBO0FBQ25DLElBQUksbUJBQWdCO0NBQUE7T0FBQSxDQUFBLGtCQUFBO0NBQUEsQ0FBQSxJQUFBLEdBQUE7Q0FBQTtBQUNwQixJQUFBLGFBQUE7Q0FBQTtPQUFBLEVBQUE7Q0FBQSxFQUFBO0NBQUE7Ozs7QUNEQSxJQUFBLGFBQWM7Q0FBQTtPQUFZLENBQUEsZ0JBQWU7Q0FBQSxDQUFBLEdBQUE7Q0FBQSJ9