docks_theme_api 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.babelrc +4 -0
- data/.editorconfig +8 -0
- data/.eslintrc +115 -0
- data/.gitignore +24 -0
- data/.rubocop.yml +20 -0
- data/.travis.yml +16 -0
- data/Gemfile +4 -0
- data/README.md +5 -0
- data/Rakefile +3 -0
- data/assets/images/icons.svg +63 -0
- data/assets/scripts/coffeescript/pattern_library_helpers.coffee +8 -0
- data/assets/scripts/javascript/pattern_library_helpers.js +11 -0
- data/assets/scripts/pattern_library.js +10380 -0
- data/assets/scripts/pattern_library_demo.js +0 -0
- data/assets/styles/less/pattern-library-helpers.less +103 -0
- data/assets/styles/pattern-library-demo.css +1882 -0
- data/assets/styles/pattern-library.css +1882 -0
- data/assets/styles/sass/pattern-library-helpers.sass +90 -0
- data/assets/styles/scss/pattern-library-helpers.scss +99 -0
- data/assets/styles/stylus/pattern-library-helpers.styl +90 -0
- data/assets/templates/erb/demo.erb +26 -0
- data/assets/templates/erb/layouts/demo.erb +17 -0
- data/assets/templates/erb/layouts/pattern.erb +76 -0
- data/assets/templates/erb/partials/sidebar.erb +124 -0
- data/assets/templates/erb/partials/symbols/class.erb +1 -0
- data/assets/templates/erb/partials/symbols/demo.erb +40 -0
- data/assets/templates/erb/partials/symbols/factory.erb +70 -0
- data/assets/templates/erb/partials/symbols/function.erb +103 -0
- data/assets/templates/erb/partials/symbols/mixin.erb +62 -0
- data/assets/templates/erb/partials/symbols/variable.erb +59 -0
- data/assets/templates/erb/pattern.erb +102 -0
- data/assets/templates/haml/demo.haml +14 -0
- data/assets/templates/haml/layouts/demo.haml +6 -0
- data/assets/templates/haml/layouts/pattern.haml +38 -0
- data/assets/templates/haml/partials/sidebar.haml +68 -0
- data/assets/templates/haml/partials/symbols/class.haml +1 -0
- data/assets/templates/haml/partials/symbols/demo.haml +23 -0
- data/assets/templates/haml/partials/symbols/factory.haml +38 -0
- data/assets/templates/haml/partials/symbols/function.haml +54 -0
- data/assets/templates/haml/partials/symbols/mixin.haml +31 -0
- data/assets/templates/haml/partials/symbols/variable.haml +22 -0
- data/assets/templates/haml/pattern.haml +54 -0
- data/assets/templates/slim/demo.slim +24 -0
- data/assets/templates/slim/layouts/demo.slim +5 -0
- data/assets/templates/slim/layouts/pattern.slim +48 -0
- data/assets/templates/slim/partials/sidebar.slim +112 -0
- data/assets/templates/slim/partials/symbols/class.slim +1 -0
- data/assets/templates/slim/partials/symbols/demo.slim +30 -0
- data/assets/templates/slim/partials/symbols/factory.slim +57 -0
- data/assets/templates/slim/partials/symbols/function.slim +81 -0
- data/assets/templates/slim/partials/symbols/mixin.slim +45 -0
- data/assets/templates/slim/partials/symbols/variable.slim +35 -0
- data/assets/templates/slim/pattern.slim +63 -0
- data/docks_config.rb +32 -0
- data/docks_theme_api.gemspec +37 -0
- data/gulpfile.js +88 -0
- data/karma.conf.js +6 -0
- data/lib/docks_theme_api/components/base_component.rb +99 -0
- data/lib/docks_theme_api/components/code_block_component.rb +10 -0
- data/lib/docks_theme_api/components/popover_component.rb +15 -0
- data/lib/docks_theme_api/components/table_component.rb +34 -0
- data/lib/docks_theme_api/components/tablist_component.rb +11 -0
- data/lib/docks_theme_api/components.rb +21 -0
- data/lib/docks_theme_api/helpers/ui_helper.rb +69 -0
- data/lib/docks_theme_api/theme.rb +21 -0
- data/lib/docks_theme_api.rb +1 -0
- data/package.json +60 -0
- data/source/behaviors/filterable/filterable.coffee +353 -0
- data/source/behaviors/filterable/filterable.js +0 -0
- data/source/behaviors/filterable/filterable.scss +34 -0
- data/source/behaviors/filterable/package.json +3 -0
- data/source/behaviors/index.js +0 -0
- data/source/components/avatar/avatar.erb +20 -0
- data/source/components/avatar/avatar.js +142 -0
- data/source/components/avatar/avatar.scss +200 -0
- data/source/components/avatar/avatar_container.erb +13 -0
- data/source/components/avatar/package.json +3 -0
- data/source/components/avatar/spec/avatar_spec.js +81 -0
- data/source/components/badge/badge.scss +158 -0
- data/source/components/button/button.scss +213 -0
- data/source/components/card/card.scss +32 -0
- data/source/components/code_block/code-block.scss +353 -0
- data/source/components/code_block/code_block.erb +95 -0
- data/source/components/code_block/code_block.js +444 -0
- data/source/components/code_block/package.json +3 -0
- data/source/components/code_block/spec/code_block_spec.js +10 -0
- data/source/components/demo/demo.js +244 -0
- data/source/components/demo/demo.scss +90 -0
- data/source/components/demo/package.json +3 -0
- data/source/components/exploded/exploded.erb +25 -0
- data/source/components/exploded/exploded.js +694 -0
- data/source/components/exploded/exploded.scss +166 -0
- data/source/components/exploded/package.json +3 -0
- data/source/components/field/field.js +24 -0
- data/source/components/field/field.scss +101 -0
- data/source/components/field/package.json +3 -0
- data/source/components/header/header.scss +33 -0
- data/source/components/iframe/iframe.erb +12 -0
- data/source/components/iframe/iframe.js +381 -0
- data/source/components/iframe/package.json +3 -0
- data/source/components/index.js +37 -0
- data/source/components/inline_group/inline-group.scss +14 -0
- data/source/components/internal_link/internal_link.js +49 -0
- data/source/components/internal_link/package.json +3 -0
- data/source/components/list/list.scss +230 -0
- data/source/components/modal/modal.coffee +84 -0
- data/source/components/modal/modal.erb +19 -0
- data/source/components/modal/modal.js +0 -0
- data/source/components/modal/modal.scss +57 -0
- data/source/components/modal/package.json +3 -0
- data/source/components/notice/notice.scss +48 -0
- data/source/components/popover/package.json +3 -0
- data/source/components/popover/popover.coffee +562 -0
- data/source/components/popover/popover.erb +21 -0
- data/source/components/popover/popover.js +0 -0
- data/source/components/popover/popover.scss +139 -0
- data/source/components/range/range.scss +78 -0
- data/source/components/resizable/package.json +3 -0
- data/source/components/resizable/resizable.erb +30 -0
- data/source/components/resizable/resizable.js +250 -0
- data/source/components/resizable/resizable.scss +245 -0
- data/source/components/resizable/size_buttons.js +249 -0
- data/source/components/scroll_container/package.json +3 -0
- data/source/components/scroll_container/scroll-container.scss +4 -0
- data/source/components/scroll_container/scroll_container.js +24 -0
- data/source/components/section/section.scss +99 -0
- data/source/components/select/package.json +3 -0
- data/source/components/select/select.erb +21 -0
- data/source/components/select/select.js +35 -0
- data/source/components/select/select.scss +163 -0
- data/source/components/table/package.json +3 -0
- data/source/components/table/table.erb +16 -0
- data/source/components/table/table.js +351 -0
- data/source/components/table/table.scss +236 -0
- data/source/components/tablist/package.json +3 -0
- data/source/components/tablist/tablist.erb +13 -0
- data/source/components/tablist/tablist.js +246 -0
- data/source/components/tablist/tablist.scss +191 -0
- data/source/components/tablist/tablist_panel.erb +14 -0
- data/source/components/tablist/tablist_tab.erb +20 -0
- data/source/components/toggle/package.json +3 -0
- data/source/components/toggle/toggle.erb +11 -0
- data/source/components/toggle/toggle.js +211 -0
- data/source/components/toggle/toggle_container.erb +30 -0
- data/source/components/vertical_spacer/vertical-spacer.scss +3 -0
- data/source/components/vertical_stack/vertical-stack.scss +19 -0
- data/source/components/xray/package.json +3 -0
- data/source/components/xray/xray.erb +50 -0
- data/source/components/xray/xray.js +123 -0
- data/source/components/xray/xray.scss +79 -0
- data/source/foundation/app/app.js +15 -0
- data/source/foundation/app/package.json +3 -0
- data/source/pattern-library-demo.scss +13 -0
- data/source/pattern-library.scss +13 -0
- data/source/pattern_library.js +8 -0
- data/source/pattern_library_demo.js +8 -0
- data/source/structures/index.js +11 -0
- data/source/structures/sidebar/package.json +3 -0
- data/source/structures/sidebar/sidebar.js +69 -0
- data/source/structures/sidebar/sidebar.scss +79 -0
- data/source/utilities/builder/builder.js +138 -0
- data/source/utilities/builder/package.json +3 -0
- data/source/utilities/client/client.js +7 -0
- data/source/utilities/client/package.json +3 -0
- data/source/utilities/colors/colors.scss +112 -0
- data/source/utilities/defaults/defaults.scss +38 -0
- data/source/utilities/dom_cache/dom_cache.js +24 -0
- data/source/utilities/dom_cache/package.json +3 -0
- data/source/utilities/events/events.js +25 -0
- data/source/utilities/events/package.json +3 -0
- data/source/utilities/font_sizes/font-sizes.scss +85 -0
- data/source/utilities/foundation/a11y.scss +10 -0
- data/source/utilities/foundation/base.scss +29 -0
- data/source/utilities/foundation/icon.scss +114 -0
- data/source/utilities/foundation/layout.scss +67 -0
- data/source/utilities/foundation/page.scss +39 -0
- data/source/utilities/foundation/type.scss +208 -0
- data/source/utilities/functions/functions.scss +127 -0
- data/source/utilities/keycodes/keycodes.js +23 -0
- data/source/utilities/keycodes/package.json +3 -0
- data/source/utilities/markup/markup.js +90 -0
- data/source/utilities/markup/package.json +3 -0
- data/source/utilities/media/media.scss +172 -0
- data/source/utilities/mixins/mixins.scss +89 -0
- data/source/utilities/naming_convention/naming_convention.js +3 -0
- data/source/utilities/naming_convention/package.json +3 -0
- data/source/utilities/numbers/numbers.js +14 -0
- data/source/utilities/numbers/package.json +3 -0
- data/source/utilities/painting/package.json +3 -0
- data/source/utilities/painting/painting.js +7 -0
- data/source/utilities/pattern/package.json +3 -0
- data/source/utilities/pattern/pattern.js +50 -0
- data/source/utilities/query_string/package.json +3 -0
- data/source/utilities/query_string/query_string.js +24 -0
- data/source/utilities/template/package.json +3 -0
- data/source/utilities/template/template.js +10 -0
- data/source/utilities/text_range/package.json +3 -0
- data/source/utilities/text_range/text_range.js +30 -0
- data/source/utilities/ui_events/package.json +3 -0
- data/source/utilities/ui_events/ui_events.js +85 -0
- data/source/utilities/variables/variables.scss +18 -0
- data/source/utilities/z_indexes/z-indexes.scss +88 -0
- data/source/vendor/array_includes.js +28 -0
- data/source/vendor/highlight.js +1142 -0
- data/source/vendor/index.js +1 -0
- data/source/vendor/matrix.js +399 -0
- data/source/vendor/query_string.js +66 -0
- data/spec/assets/.eslintrc +9 -0
- data/spec/assets/spec_fixture.js +33 -0
- data/spec/assets/spec_helper.js +19 -0
- data/spec/lib/components/base_component_spec.rb +156 -0
- data/spec/lib/components_spec.rb +30 -0
- data/spec/lib/helpers/ui_helper_spec.rb +62 -0
- data/spec/lib/theme_spec.rb +25 -0
- data/spec/spec_helper.rb +15 -0
- data/tasks/gulp/.eslintrc +6 -0
- data/tasks/gulp/browser_sync.js +8 -0
- data/tasks/gulp/code_quality/scripts.js +10 -0
- data/tasks/gulp/config/index.js +116 -0
- data/tasks/gulp/minify/scripts.js +13 -0
- data/tasks/gulp/minify/styles.js +13 -0
- data/tasks/gulp/pattern_library/index.js +5 -0
- data/tasks/gulp/pattern_library/scripts.js +10 -0
- data/tasks/gulp/pattern_library/styles.js +10 -0
- data/tasks/gulp/scripts.js +8 -0
- data/tasks/gulp/spec/scripts.js +11 -0
- data/tasks/gulp/styles.js +17 -0
- data/tasks/gulp/utilities/babel/relative_require.js +22 -0
- data/tasks/gulp/utilities/babel/spec_helper.js +20 -0
- data/tasks/gulp/utilities/browserify_bundler.js +22 -0
- data/tasks/gulp/utilities/handle_errors.js +13 -0
- data/tasks/gulp/watch.js +9 -0
- data/tasks/rake/rspec.rake +7 -0
- data/tasks/rake/rubocop.rake +8 -0
- data/tasks/rake/templates.rake +50 -0
- metadata +470 -0
@@ -0,0 +1,1882 @@
|
|
1
|
+
@media screen and (max-width: 24.9375rem) {
|
2
|
+
.media__helpers--hide-before-small {
|
3
|
+
display: none; } }
|
4
|
+
|
5
|
+
@media screen and (min-width: 25.0625rem) {
|
6
|
+
.media__helpers--hide-after-small {
|
7
|
+
display: none; } }
|
8
|
+
|
9
|
+
.media__helpers--show-after-small {
|
10
|
+
display: none; }
|
11
|
+
@media screen and (min-width: 25.0625rem) {
|
12
|
+
.media__helpers--show-after-small {
|
13
|
+
display: block; } }
|
14
|
+
|
15
|
+
@media screen and (max-width: 37.4375rem) {
|
16
|
+
.media__helpers--hide-before-medium {
|
17
|
+
display: none; } }
|
18
|
+
|
19
|
+
@media screen and (min-width: 37.5625rem) {
|
20
|
+
.media__helpers--hide-after-medium {
|
21
|
+
display: none; } }
|
22
|
+
|
23
|
+
.media__helpers--show-after-medium {
|
24
|
+
display: none; }
|
25
|
+
@media screen and (min-width: 37.5625rem) {
|
26
|
+
.media__helpers--show-after-medium {
|
27
|
+
display: block; } }
|
28
|
+
|
29
|
+
@media screen and (max-width: 49.9375rem) {
|
30
|
+
.media__helpers--hide-before-large {
|
31
|
+
display: none; } }
|
32
|
+
|
33
|
+
@media screen and (min-width: 50.0625rem) {
|
34
|
+
.media__helpers--hide-after-large {
|
35
|
+
display: none; } }
|
36
|
+
|
37
|
+
.media__helpers--show-after-large {
|
38
|
+
display: none; }
|
39
|
+
@media screen and (min-width: 50.0625rem) {
|
40
|
+
.media__helpers--show-after-large {
|
41
|
+
display: block; } }
|
42
|
+
|
43
|
+
.helper--visually-hidden {
|
44
|
+
border: 0;
|
45
|
+
clip: rect(0 0 0 0);
|
46
|
+
height: 1px;
|
47
|
+
margin: -1px;
|
48
|
+
overflow: hidden;
|
49
|
+
padding: 0;
|
50
|
+
position: absolute;
|
51
|
+
width: 1px; }
|
52
|
+
|
53
|
+
html {
|
54
|
+
box-sizing: border-box; }
|
55
|
+
|
56
|
+
*,
|
57
|
+
*:before,
|
58
|
+
*:after {
|
59
|
+
box-sizing: inherit; }
|
60
|
+
|
61
|
+
body {
|
62
|
+
margin: 0;
|
63
|
+
padding: 0;
|
64
|
+
background-color: white;
|
65
|
+
min-height: 100vh; }
|
66
|
+
|
67
|
+
table {
|
68
|
+
border-collapse: collapse;
|
69
|
+
border-spacing: 0; }
|
70
|
+
|
71
|
+
.icon {
|
72
|
+
display: inline-block;
|
73
|
+
stroke-width: 2; }
|
74
|
+
|
75
|
+
.icon--medium {
|
76
|
+
height: 1.5rem;
|
77
|
+
width: 1.5rem; }
|
78
|
+
|
79
|
+
.icon--large {
|
80
|
+
height: 1.75rem;
|
81
|
+
width: 1.75rem; }
|
82
|
+
|
83
|
+
.icon--action {
|
84
|
+
height: 1.65rem;
|
85
|
+
width: 1.65rem; }
|
86
|
+
|
87
|
+
.icon--hamburger {
|
88
|
+
height: 1.65rem;
|
89
|
+
width: 2rem;
|
90
|
+
position: relative;
|
91
|
+
cursor: pointer;
|
92
|
+
opacity: 0.6;
|
93
|
+
top: 0.2em;
|
94
|
+
-webkit-transition: opacity 0.2s ease;
|
95
|
+
transition: opacity 0.2s ease; }
|
96
|
+
.icon--hamburger:hover {
|
97
|
+
opacity: 1; }
|
98
|
+
.icon--hamburger:before,
|
99
|
+
.icon--hamburger:after {
|
100
|
+
content: "";
|
101
|
+
display: block;
|
102
|
+
position: absolute;
|
103
|
+
height: 4px;
|
104
|
+
width: 100%;
|
105
|
+
border-radius: 2px;
|
106
|
+
background: #6e6f7a; }
|
107
|
+
.icon--hamburger:before {
|
108
|
+
top: 0; }
|
109
|
+
.icon--hamburger:after {
|
110
|
+
bottom: 0; }
|
111
|
+
|
112
|
+
.icon--hamburger__slice {
|
113
|
+
height: 4px;
|
114
|
+
width: 100%;
|
115
|
+
border-radius: 2px;
|
116
|
+
background: #6e6f7a;
|
117
|
+
position: absolute;
|
118
|
+
top: 50%;
|
119
|
+
left: 0;
|
120
|
+
margin-top: -2px; }
|
121
|
+
|
122
|
+
.icon--gray-darker {
|
123
|
+
fill: #9c9da5;
|
124
|
+
stroke: #9c9da5; }
|
125
|
+
|
126
|
+
.icon--close {
|
127
|
+
position: relative;
|
128
|
+
opacity: 0.6;
|
129
|
+
-webkit-transition: opacity 0.2s ease;
|
130
|
+
transition: opacity 0.2s ease;
|
131
|
+
cursor: pointer; }
|
132
|
+
.icon--close:hover {
|
133
|
+
opacity: 1; }
|
134
|
+
.icon--close:before,
|
135
|
+
.icon--close:after {
|
136
|
+
content: "";
|
137
|
+
display: block;
|
138
|
+
position: absolute;
|
139
|
+
height: 4px;
|
140
|
+
width: 140%;
|
141
|
+
border-radius: 2px;
|
142
|
+
background: #6e6f7a;
|
143
|
+
top: 50%;
|
144
|
+
left: 50%;
|
145
|
+
margin-left: -70%;
|
146
|
+
margin-top: -2px; }
|
147
|
+
.icon--close:before {
|
148
|
+
-webkit-transform: rotate(45deg);
|
149
|
+
transform: rotate(45deg); }
|
150
|
+
.icon--close:after {
|
151
|
+
-webkit-transform: rotate(-45deg);
|
152
|
+
transform: rotate(-45deg); }
|
153
|
+
|
154
|
+
.icon--disclosure {
|
155
|
+
height: 0.5rem;
|
156
|
+
width: 0.5rem;
|
157
|
+
-webkit-transform: rotate(45deg) translateY(-50%);
|
158
|
+
transform: rotate(45deg) translateY(-50%);
|
159
|
+
border-right: 2px solid #6e6f7a;
|
160
|
+
border-bottom: 2px solid #6e6f7a;
|
161
|
+
margin-left: 0.25rem; }
|
162
|
+
|
163
|
+
.grid {
|
164
|
+
display: -webkit-box;
|
165
|
+
display: -webkit-flex;
|
166
|
+
display: -ms-flexbox;
|
167
|
+
display: flex; }
|
168
|
+
|
169
|
+
.grid--vertically-centered {
|
170
|
+
-webkit-box-align: center;
|
171
|
+
-webkit-align-items: center;
|
172
|
+
-ms-flex-align: center;
|
173
|
+
align-items: center; }
|
174
|
+
|
175
|
+
.grid--align-right {
|
176
|
+
-webkit-box-pack: end;
|
177
|
+
-webkit-justify-content: flex-end;
|
178
|
+
-ms-flex-pack: end;
|
179
|
+
justify-content: flex-end; }
|
180
|
+
|
181
|
+
.grid--outside-spacing {
|
182
|
+
margin: 1rem 0;
|
183
|
+
padding: 0 1rem; }
|
184
|
+
|
185
|
+
.grid--space-between {
|
186
|
+
-webkit-box-pack: justify;
|
187
|
+
-webkit-justify-content: space-between;
|
188
|
+
-ms-flex-pack: justify;
|
189
|
+
justify-content: space-between; }
|
190
|
+
.grid--space-between > .grid__item {
|
191
|
+
-webkit-box-flex: 0;
|
192
|
+
-webkit-flex: 0 1 auto;
|
193
|
+
-ms-flex: 0 1 auto;
|
194
|
+
flex: 0 1 auto; }
|
195
|
+
|
196
|
+
.grid__item {
|
197
|
+
padding: 0 0.5rem;
|
198
|
+
-webkit-box-flex: 1;
|
199
|
+
-webkit-flex: 1 1 0%;
|
200
|
+
-ms-flex: 1 1 0%;
|
201
|
+
flex: 1 1 0%;
|
202
|
+
display: -webkit-box;
|
203
|
+
display: -webkit-flex;
|
204
|
+
display: -ms-flexbox;
|
205
|
+
display: flex;
|
206
|
+
-webkit-box-align: center;
|
207
|
+
-webkit-align-items: center;
|
208
|
+
-ms-flex-align: center;
|
209
|
+
align-items: center; }
|
210
|
+
.grid__item:first-child {
|
211
|
+
padding-left: 0; }
|
212
|
+
.grid__item:last-child {
|
213
|
+
padding-right: 0; }
|
214
|
+
|
215
|
+
.grid__item--no-flex {
|
216
|
+
-webkit-box-flex: 0;
|
217
|
+
-webkit-flex: 0 0 auto;
|
218
|
+
-ms-flex: 0 0 auto;
|
219
|
+
flex: 0 0 auto; }
|
220
|
+
|
221
|
+
.grid__item--half {
|
222
|
+
-webkit-box-flex: 0;
|
223
|
+
-webkit-flex: 0 0 50%;
|
224
|
+
-ms-flex: 0 0 50%;
|
225
|
+
flex: 0 0 50%; }
|
226
|
+
|
227
|
+
.content {
|
228
|
+
padding: 0 1rem;
|
229
|
+
margin: 1rem 0; }
|
230
|
+
|
231
|
+
.content--extra-vertical-spacing {
|
232
|
+
margin: 3rem 0; }
|
233
|
+
|
234
|
+
body {
|
235
|
+
background-color: #e3e4e6; }
|
236
|
+
|
237
|
+
.page {
|
238
|
+
height: 100vh;
|
239
|
+
max-height: 100vh;
|
240
|
+
display: -webkit-box;
|
241
|
+
display: -webkit-flex;
|
242
|
+
display: -ms-flexbox;
|
243
|
+
display: flex; }
|
244
|
+
|
245
|
+
.page__content,
|
246
|
+
.page__sidebar {
|
247
|
+
position: relative; }
|
248
|
+
|
249
|
+
.page__content {
|
250
|
+
width: 100%;
|
251
|
+
max-width: 100%;
|
252
|
+
display: -webkit-box;
|
253
|
+
display: -webkit-flex;
|
254
|
+
display: -ms-flexbox;
|
255
|
+
display: flex;
|
256
|
+
-webkit-box-flex: 1;
|
257
|
+
-webkit-flex: 1 1 0px;
|
258
|
+
-ms-flex: 1 1 0px;
|
259
|
+
flex: 1 1 0px;
|
260
|
+
z-index: 10;
|
261
|
+
background: white; }
|
262
|
+
.page__content > * {
|
263
|
+
-webkit-box-flex: 0;
|
264
|
+
-webkit-flex: 0 0 100%;
|
265
|
+
-ms-flex: 0 0 100%;
|
266
|
+
flex: 0 0 100%; }
|
267
|
+
|
268
|
+
.page__sidebar {
|
269
|
+
z-index: 20;
|
270
|
+
-webkit-box-flex: 0;
|
271
|
+
-webkit-flex: 0 0 auto;
|
272
|
+
-ms-flex: 0 0 auto;
|
273
|
+
flex: 0 0 auto; }
|
274
|
+
|
275
|
+
body {
|
276
|
+
-webkit-text-size-adjust: 100%;
|
277
|
+
-ms-text-size-adjust: 100%;
|
278
|
+
text-size-adjust: 100%;
|
279
|
+
color: #33363a;
|
280
|
+
font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
|
281
|
+
|
282
|
+
button,
|
283
|
+
input {
|
284
|
+
font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
|
285
|
+
|
286
|
+
h1, h2, h3, h4, h5, h6, p, .type {
|
287
|
+
margin: 0;
|
288
|
+
font-size: inherit; }
|
289
|
+
|
290
|
+
.type--heading-1 {
|
291
|
+
font-weight: 400;
|
292
|
+
line-height: 1;
|
293
|
+
color: #6e6f7a;
|
294
|
+
font-size: 2.25rem; }
|
295
|
+
|
296
|
+
.type--heading-2 {
|
297
|
+
font-weight: 400;
|
298
|
+
color: #6e6f7a;
|
299
|
+
font-size: 1.875rem; }
|
300
|
+
|
301
|
+
.type--heading-3 {
|
302
|
+
font-weight: 400;
|
303
|
+
line-height: 1;
|
304
|
+
color: #6e6f7a;
|
305
|
+
font-size: 1.5rem; }
|
306
|
+
|
307
|
+
.type--heading-4 {
|
308
|
+
margin: 1rem auto 0.5rem;
|
309
|
+
font-weight: 600;
|
310
|
+
text-transform: uppercase;
|
311
|
+
color: #d1d3d7;
|
312
|
+
font-size: 0.875rem; }
|
313
|
+
|
314
|
+
.type--heading-5 {
|
315
|
+
margin: 1rem auto 0.5rem;
|
316
|
+
font-weight: 400;
|
317
|
+
color: #6e6f7a;
|
318
|
+
font-size: 1.25rem; }
|
319
|
+
.type--heading-4 + .type--heading-5 {
|
320
|
+
margin-top: 0.5rem; }
|
321
|
+
.type--paragraph + .type--heading-5,
|
322
|
+
.user-type + .type--heading-5 {
|
323
|
+
margin-top: 1.5rem; }
|
324
|
+
|
325
|
+
.type--heading-bordered {
|
326
|
+
padding-bottom: 1rem;
|
327
|
+
margin-bottom: 1.3rem;
|
328
|
+
border-bottom: 2px solid #e3e4e6; }
|
329
|
+
.type--heading-bordered + .section {
|
330
|
+
margin-top: -1rem; }
|
331
|
+
|
332
|
+
.type--paragraph {
|
333
|
+
font-size: 1.25rem;
|
334
|
+
line-height: 1.3;
|
335
|
+
font-weight: 300;
|
336
|
+
color: #1e1e1f; }
|
337
|
+
.type--paragraph + p {
|
338
|
+
margin-top: 0.75rem; }
|
339
|
+
.type--paragraph > a {
|
340
|
+
display: inline-block;
|
341
|
+
text-decoration: none;
|
342
|
+
color: #627990;
|
343
|
+
font-weight: normal; }
|
344
|
+
.type--paragraph > a > span {
|
345
|
+
border-bottom: 2px solid #8cc2fb; }
|
346
|
+
.type--paragraph > a > code {
|
347
|
+
color: #627990;
|
348
|
+
background-color: #e6ecf4;
|
349
|
+
border-color: rgba(98, 121, 144, 0.15); }
|
350
|
+
.type--paragraph code {
|
351
|
+
font-family: Consolas, monospace;
|
352
|
+
display: inline-block;
|
353
|
+
padding: 0.05em 0.25em;
|
354
|
+
font-size: 0.8em;
|
355
|
+
background-color: #f2f2f3;
|
356
|
+
color: #6e6f7a;
|
357
|
+
border: 1px solid #e3e4e6;
|
358
|
+
border-radius: 4px; }
|
359
|
+
|
360
|
+
.type--paragraph-small {
|
361
|
+
font-size: 1.125rem; }
|
362
|
+
|
363
|
+
.type-container h1 {
|
364
|
+
font-weight: 400;
|
365
|
+
line-height: 1;
|
366
|
+
color: #6e6f7a;
|
367
|
+
font-size: 2.25rem; }
|
368
|
+
|
369
|
+
.type-container h2 {
|
370
|
+
font-weight: 400;
|
371
|
+
color: #6e6f7a;
|
372
|
+
font-size: 1.875rem; }
|
373
|
+
|
374
|
+
.type-container h3 {
|
375
|
+
font-weight: 400;
|
376
|
+
line-height: 1;
|
377
|
+
color: #6e6f7a;
|
378
|
+
font-size: 1.5rem; }
|
379
|
+
|
380
|
+
.type-container h4 {
|
381
|
+
margin: 1rem auto 0.5rem;
|
382
|
+
font-weight: 600;
|
383
|
+
text-transform: uppercase;
|
384
|
+
color: #d1d3d7;
|
385
|
+
font-size: 0.875rem; }
|
386
|
+
|
387
|
+
.type-container h5 {
|
388
|
+
margin: 1rem auto 0.5rem;
|
389
|
+
font-weight: 400;
|
390
|
+
color: #6e6f7a;
|
391
|
+
font-size: 1.25rem; }
|
392
|
+
|
393
|
+
.type-container p {
|
394
|
+
font-size: 1.25rem;
|
395
|
+
line-height: 1.3;
|
396
|
+
font-weight: 300;
|
397
|
+
color: #1e1e1f; }
|
398
|
+
.type-container p + p {
|
399
|
+
margin-top: 0.75rem; }
|
400
|
+
.type-container p > a {
|
401
|
+
display: inline-block;
|
402
|
+
text-decoration: none;
|
403
|
+
color: #627990;
|
404
|
+
font-weight: normal; }
|
405
|
+
.type-container p > a > span {
|
406
|
+
border-bottom: 2px solid #8cc2fb; }
|
407
|
+
.type-container p > a > code {
|
408
|
+
color: #627990;
|
409
|
+
background-color: #e6ecf4;
|
410
|
+
border-color: rgba(98, 121, 144, 0.15); }
|
411
|
+
.type-container p code {
|
412
|
+
font-family: Consolas, monospace;
|
413
|
+
display: inline-block;
|
414
|
+
padding: 0.05em 0.25em;
|
415
|
+
font-size: 0.8em;
|
416
|
+
background-color: #f2f2f3;
|
417
|
+
color: #6e6f7a;
|
418
|
+
border: 1px solid #e3e4e6;
|
419
|
+
border-radius: 4px; }
|
420
|
+
|
421
|
+
.type-container--small p {
|
422
|
+
font-size: 1.125rem; }
|
423
|
+
|
424
|
+
.type--display {
|
425
|
+
font-size: 1.3rem;
|
426
|
+
margin-top: 0;
|
427
|
+
font-weight: 500;
|
428
|
+
line-height: 1; }
|
429
|
+
|
430
|
+
.type--margin-bottom {
|
431
|
+
margin-bottom: 1rem; }
|
432
|
+
|
433
|
+
.type--subdued {
|
434
|
+
color: #d1d3d7; }
|
435
|
+
|
436
|
+
.type--code {
|
437
|
+
font-family: Consolas, monospace;
|
438
|
+
font-size: 0.95em;
|
439
|
+
word-wrap: break-word; }
|
440
|
+
|
441
|
+
::-moz-selection {
|
442
|
+
background: #b7d6f6; }
|
443
|
+
|
444
|
+
::selection {
|
445
|
+
background: #b7d6f6; }
|
446
|
+
|
447
|
+
.avatar {
|
448
|
+
z-index: 10;
|
449
|
+
position: relative;
|
450
|
+
-webkit-box-flex: 0;
|
451
|
+
-webkit-flex: 0 0 auto;
|
452
|
+
-ms-flex: 0 0 auto;
|
453
|
+
flex: 0 0 auto;
|
454
|
+
display: inline-block;
|
455
|
+
background-color: #f1f1f1;
|
456
|
+
border-radius: 4px;
|
457
|
+
overflow: hidden;
|
458
|
+
font-size: 1.25rem; }
|
459
|
+
|
460
|
+
.avatar__initials {
|
461
|
+
z-index: 10;
|
462
|
+
position: absolute;
|
463
|
+
top: 50%;
|
464
|
+
left: 0;
|
465
|
+
width: 100%;
|
466
|
+
-webkit-transform: translateY(-50%);
|
467
|
+
transform: translateY(-50%);
|
468
|
+
color: #cfcfcf;
|
469
|
+
font-size: 1em;
|
470
|
+
line-height: 1;
|
471
|
+
text-align: center;
|
472
|
+
text-transform: uppercase; }
|
473
|
+
|
474
|
+
.avatar__image {
|
475
|
+
z-index: 20;
|
476
|
+
position: relative;
|
477
|
+
height: 3rem;
|
478
|
+
width: 3rem;
|
479
|
+
opacity: 0;
|
480
|
+
-webkit-transition: opacity 0.3s ease;
|
481
|
+
transition: opacity 0.3s ease;
|
482
|
+
background-size: cover;
|
483
|
+
background-position: center center;
|
484
|
+
background-repeat: no-repeat;
|
485
|
+
overflow: hidden; }
|
486
|
+
|
487
|
+
.avatar__image--is-visible {
|
488
|
+
opacity: 1; }
|
489
|
+
|
490
|
+
.avatar__container {
|
491
|
+
display: -webkit-inline-box;
|
492
|
+
display: -webkit-inline-flex;
|
493
|
+
display: -ms-inline-flexbox;
|
494
|
+
display: inline-flex;
|
495
|
+
-webkit-flex-wrap: wrap;
|
496
|
+
-ms-flex-wrap: wrap;
|
497
|
+
flex-wrap: wrap;
|
498
|
+
overflow: hidden;
|
499
|
+
margin-right: -0.5rem !important;
|
500
|
+
margin-bottom: -0.5rem !important;
|
501
|
+
max-width: 10.5rem; }
|
502
|
+
.avatar__container > .avatar {
|
503
|
+
margin-right: 0.5rem;
|
504
|
+
margin-bottom: 0.5rem; }
|
505
|
+
|
506
|
+
.avatar__container--large {
|
507
|
+
max-width: 14rem; }
|
508
|
+
|
509
|
+
.badge {
|
510
|
+
position: relative;
|
511
|
+
-webkit-box-flex: 0;
|
512
|
+
-webkit-flex: 0 0 auto;
|
513
|
+
-ms-flex: 0 0 auto;
|
514
|
+
flex: 0 0 auto;
|
515
|
+
display: inline-block;
|
516
|
+
padding: 0.15em 0.5em 0.25em;
|
517
|
+
border-radius: 4px;
|
518
|
+
background-color: #f2f2f3;
|
519
|
+
font-size: 0.75em;
|
520
|
+
line-height: 1.3;
|
521
|
+
vertical-align: middle;
|
522
|
+
color: #9c9da5; }
|
523
|
+
|
524
|
+
.badge--warning {
|
525
|
+
background-color: #fdf7af;
|
526
|
+
color: #857e32; }
|
527
|
+
|
528
|
+
.badge--new {
|
529
|
+
background-color: #b7d6f6;
|
530
|
+
color: #627990; }
|
531
|
+
|
532
|
+
.badge--secret {
|
533
|
+
background-color: #6e6f7a;
|
534
|
+
color: #e3e4e6; }
|
535
|
+
|
536
|
+
.badge--code {
|
537
|
+
padding-bottom: 0;
|
538
|
+
padding-top: 0.2em; }
|
539
|
+
|
540
|
+
.badge--standalone {
|
541
|
+
font-size: 1rem; }
|
542
|
+
|
543
|
+
.badge__container {
|
544
|
+
display: -webkit-inline-box;
|
545
|
+
display: -webkit-inline-flex;
|
546
|
+
display: -ms-inline-flexbox;
|
547
|
+
display: inline-flex;
|
548
|
+
-webkit-flex-wrap: wrap;
|
549
|
+
-ms-flex-wrap: wrap;
|
550
|
+
flex-wrap: wrap;
|
551
|
+
overflow: hidden;
|
552
|
+
margin-right: -0.5rem !important;
|
553
|
+
margin-bottom: -0.5rem !important; }
|
554
|
+
.badge__container > .badge {
|
555
|
+
margin-right: 0.5rem;
|
556
|
+
margin-bottom: 0.5rem; }
|
557
|
+
|
558
|
+
.docks-button {
|
559
|
+
display: -webkit-inline-box;
|
560
|
+
display: -webkit-inline-flex;
|
561
|
+
display: -ms-inline-flexbox;
|
562
|
+
display: inline-flex;
|
563
|
+
-webkit-box-align: center;
|
564
|
+
-webkit-align-items: center;
|
565
|
+
-ms-flex-align: center;
|
566
|
+
align-items: center;
|
567
|
+
-webkit-box-pack: center;
|
568
|
+
-webkit-justify-content: center;
|
569
|
+
-ms-flex-pack: center;
|
570
|
+
justify-content: center;
|
571
|
+
padding: 0 0.75rem;
|
572
|
+
border-radius: 4px;
|
573
|
+
background-color: #f2f2f3;
|
574
|
+
border: none;
|
575
|
+
cursor: pointer;
|
576
|
+
opacity: 1;
|
577
|
+
-webkit-transition: opacity 0.3s ease;
|
578
|
+
transition: opacity 0.3s ease;
|
579
|
+
font-size: 1.125rem;
|
580
|
+
line-height: 2.125rem;
|
581
|
+
color: #9c9da5;
|
582
|
+
vertical-align: middle;
|
583
|
+
text-decoration: none;
|
584
|
+
white-space: nowrap; }
|
585
|
+
.docks-button:focus,
|
586
|
+
.docks-button:active {
|
587
|
+
background-color: #e3e4e6;
|
588
|
+
outline: none; }
|
589
|
+
.docks-button > *:first-child {
|
590
|
+
margin-right: 0.5rem; }
|
591
|
+
|
592
|
+
.docks-button--dark {
|
593
|
+
background-color: #d1d3d7;
|
594
|
+
color: #6e6f7a; }
|
595
|
+
.docks-button--dark:focus,
|
596
|
+
.docks-button--dark:active {
|
597
|
+
background-color: #d1d3d7;
|
598
|
+
color: #6e6f7a; }
|
599
|
+
|
600
|
+
.docks-button--is-disabled {
|
601
|
+
opacity: 0.3; }
|
602
|
+
|
603
|
+
.docks-button__container {
|
604
|
+
display: -webkit-inline-box;
|
605
|
+
display: -webkit-inline-flex;
|
606
|
+
display: -ms-inline-flexbox;
|
607
|
+
display: inline-flex;
|
608
|
+
-webkit-flex-wrap: wrap;
|
609
|
+
-ms-flex-wrap: wrap;
|
610
|
+
flex-wrap: wrap;
|
611
|
+
margin-right: -0.5rem !important;
|
612
|
+
margin-bottom: -0.5rem !important; }
|
613
|
+
.docks-button__container:after {
|
614
|
+
content: "";
|
615
|
+
display: table; }
|
616
|
+
.docks-button__container > * {
|
617
|
+
-webkit-box-flex: 0;
|
618
|
+
-webkit-flex: 0 0 auto;
|
619
|
+
-ms-flex: 0 0 auto;
|
620
|
+
flex: 0 0 auto;
|
621
|
+
margin-right: 0.5rem;
|
622
|
+
margin-bottom: 0.5rem; }
|
623
|
+
|
624
|
+
.docks-button__container--fill-width {
|
625
|
+
display: -webkit-box;
|
626
|
+
display: -webkit-flex;
|
627
|
+
display: -ms-flexbox;
|
628
|
+
display: flex;
|
629
|
+
-webkit-flex-wrap: wrap;
|
630
|
+
-ms-flex-wrap: wrap;
|
631
|
+
flex-wrap: wrap;
|
632
|
+
-webkit-box-align: start;
|
633
|
+
-webkit-align-items: flex-start;
|
634
|
+
-ms-flex-align: start;
|
635
|
+
align-items: flex-start; }
|
636
|
+
.docks-button__container--fill-width .docks-button,
|
637
|
+
.docks-button__container--fill-width > *:not(.docks-button) {
|
638
|
+
display: -webkit-box;
|
639
|
+
display: -webkit-flex;
|
640
|
+
display: -ms-flexbox;
|
641
|
+
display: flex;
|
642
|
+
-webkit-box-flex: 1;
|
643
|
+
-webkit-flex: 1 0 0%;
|
644
|
+
-ms-flex: 1 0 0%;
|
645
|
+
flex: 1 0 0%;
|
646
|
+
min-width: -webkit-min-content;
|
647
|
+
min-width: -moz-min-content;
|
648
|
+
min-width: min-content; }
|
649
|
+
|
650
|
+
.docks-button__segmented-container {
|
651
|
+
display: -webkit-inline-box;
|
652
|
+
display: -webkit-inline-flex;
|
653
|
+
display: -ms-inline-flexbox;
|
654
|
+
display: inline-flex; }
|
655
|
+
.docks-button__segmented-container > .docks-button {
|
656
|
+
border-radius: 0; }
|
657
|
+
.docks-button__segmented-container > .docks-button:not(:first-child) {
|
658
|
+
border-left: none; }
|
659
|
+
.docks-button__segmented-container > .docks-button:first-child {
|
660
|
+
border-radius: 4px 0 0 4px; }
|
661
|
+
.docks-button__segmented-container > .docks-button:last-child {
|
662
|
+
border-radius: 0 4px 4px 0; }
|
663
|
+
|
664
|
+
.card {
|
665
|
+
background-color: white;
|
666
|
+
border-radius: 4px;
|
667
|
+
overflow: hidden; }
|
668
|
+
|
669
|
+
.code-block {
|
670
|
+
margin: 1rem 0;
|
671
|
+
overflow: hidden;
|
672
|
+
background: #f2f2f3;
|
673
|
+
border-radius: 4px; }
|
674
|
+
.code-block .docks-button {
|
675
|
+
display: none; }
|
676
|
+
|
677
|
+
.code-block--condensed {
|
678
|
+
margin-top: 0.5rem; }
|
679
|
+
.code-block--condensed .code-block__code {
|
680
|
+
padding-bottom: 0.5rem;
|
681
|
+
font-size: 0.875rem; }
|
682
|
+
.code-block--condensed:not(.code-block--with-header) .code-block__code {
|
683
|
+
padding-top: 0.5rem; }
|
684
|
+
|
685
|
+
.code-block--full-width {
|
686
|
+
margin-right: 0;
|
687
|
+
margin-left: 0;
|
688
|
+
border-radius: 0; }
|
689
|
+
.content .code-block--full-width {
|
690
|
+
margin-left: -1rem;
|
691
|
+
margin-right: -1rem; }
|
692
|
+
|
693
|
+
.code-block--is-hidden:not(.code-block--with-demo) .code-block__toggler {
|
694
|
+
background-color: #f2f2f3; }
|
695
|
+
|
696
|
+
.code-block--is-hidden .code-block__content {
|
697
|
+
height: 0; }
|
698
|
+
|
699
|
+
.code-block__actions {
|
700
|
+
display: -webkit-box;
|
701
|
+
display: -webkit-flex;
|
702
|
+
display: -ms-flexbox;
|
703
|
+
display: flex;
|
704
|
+
-webkit-box-align: center;
|
705
|
+
-webkit-align-items: center;
|
706
|
+
-ms-flex-align: center;
|
707
|
+
align-items: center; }
|
708
|
+
|
709
|
+
.code-block__header {
|
710
|
+
display: -webkit-box;
|
711
|
+
display: -webkit-flex;
|
712
|
+
display: -ms-flexbox;
|
713
|
+
display: flex;
|
714
|
+
-webkit-box-pack: justify;
|
715
|
+
-webkit-justify-content: space-between;
|
716
|
+
-ms-flex-pack: justify;
|
717
|
+
justify-content: space-between;
|
718
|
+
-webkit-box-align: center;
|
719
|
+
-webkit-align-items: center;
|
720
|
+
-ms-flex-align: center;
|
721
|
+
align-items: center;
|
722
|
+
padding: 0.5rem 1rem;
|
723
|
+
-webkit-box-flex: 0 !important;
|
724
|
+
-webkit-flex: 0 0 auto !important;
|
725
|
+
-ms-flex: 0 0 auto !important;
|
726
|
+
flex: 0 0 auto !important;
|
727
|
+
background: #f2f2f3; }
|
728
|
+
.code-block__header .select,
|
729
|
+
.code-block__header .tablist {
|
730
|
+
-webkit-transition: -webkit-transform 0.2s ease;
|
731
|
+
transition: transform 0.2s ease; }
|
732
|
+
.code-block__header .tablist {
|
733
|
+
padding: 0; }
|
734
|
+
|
735
|
+
.code-block__code-container {
|
736
|
+
overflow: auto;
|
737
|
+
max-height: 100%; }
|
738
|
+
|
739
|
+
.code-block__toggler {
|
740
|
+
background-color: #e3e4e6;
|
741
|
+
width: 100%;
|
742
|
+
border: none;
|
743
|
+
display: -webkit-box;
|
744
|
+
display: -webkit-flex;
|
745
|
+
display: -ms-flexbox;
|
746
|
+
display: flex;
|
747
|
+
-webkit-box-align: center;
|
748
|
+
-webkit-align-items: center;
|
749
|
+
-ms-flex-align: center;
|
750
|
+
align-items: center;
|
751
|
+
-webkit-box-pack: center;
|
752
|
+
-webkit-justify-content: center;
|
753
|
+
-ms-flex-pack: center;
|
754
|
+
justify-content: center;
|
755
|
+
font-size: 1.125rem;
|
756
|
+
padding: 0.5rem 0;
|
757
|
+
color: #9c9da5;
|
758
|
+
-webkit-transition: background-color 0.2s ease;
|
759
|
+
transition: background-color 0.2s ease; }
|
760
|
+
.code-block__toggler:focus,
|
761
|
+
.code-block__toggler:active {
|
762
|
+
background-color: #e3e4e6;
|
763
|
+
outline: none; }
|
764
|
+
.code-block__toggler > .icon {
|
765
|
+
margin-right: 0.5rem;
|
766
|
+
opacity: 0.5; }
|
767
|
+
|
768
|
+
.code-block__content {
|
769
|
+
overflow: hidden;
|
770
|
+
-webkit-transition: height 0.3s ease;
|
771
|
+
transition: height 0.3s ease;
|
772
|
+
max-height: 15rem; }
|
773
|
+
|
774
|
+
.code-block__code {
|
775
|
+
margin: 0;
|
776
|
+
display: inline-block;
|
777
|
+
padding: 0.5rem 1rem 1rem;
|
778
|
+
font-size: 1rem;
|
779
|
+
line-height: 1.3; }
|
780
|
+
.code-block__code:focus {
|
781
|
+
outline: none; }
|
782
|
+
.code-block:not(.code-block--with-header):not(.code-block--condensed):not(.code-block--with-demo) .code-block__code {
|
783
|
+
padding-top: 1rem; }
|
784
|
+
.code-block--with-demo:not(.code-block--with-header) .code-block__code {
|
785
|
+
padding-top: 0; }
|
786
|
+
.code-block__code > code {
|
787
|
+
font-family: Consolas, monospace;
|
788
|
+
padding: 0;
|
789
|
+
background-color: transparent;
|
790
|
+
font-size: inherit !important;
|
791
|
+
border: none; }
|
792
|
+
|
793
|
+
.hljs-value,
|
794
|
+
.hljs-string,
|
795
|
+
.hljs-preprocessor {
|
796
|
+
color: #4196df; }
|
797
|
+
|
798
|
+
.hljs-symbol {
|
799
|
+
color: #1a5cab; }
|
800
|
+
|
801
|
+
.hljs-at_rule,
|
802
|
+
.hljs-attribute,
|
803
|
+
.hljs-keyword {
|
804
|
+
color: #4a4a4a; }
|
805
|
+
|
806
|
+
.hljs-comment {
|
807
|
+
color: rgba(177, 177, 177, 0.5);
|
808
|
+
font-style: italic; }
|
809
|
+
|
810
|
+
.hljs-tag,
|
811
|
+
.hljs-variable {
|
812
|
+
color: #b1b1b1; }
|
813
|
+
|
814
|
+
.code-block--with-demo .code-block__content {
|
815
|
+
padding-top: 0; }
|
816
|
+
.code-block--with-demo .code-block__content > .code-block__header {
|
817
|
+
padding-top: 0; }
|
818
|
+
|
819
|
+
.code-block__demo {
|
820
|
+
padding: 1rem; }
|
821
|
+
|
822
|
+
.code-block__demo__content {
|
823
|
+
display: none; }
|
824
|
+
|
825
|
+
.code-block__iframe {
|
826
|
+
height: 10em;
|
827
|
+
background-color: white;
|
828
|
+
border: none;
|
829
|
+
width: 100%;
|
830
|
+
margin: 0;
|
831
|
+
border-radius: 4px; }
|
832
|
+
|
833
|
+
.demo {
|
834
|
+
background-color: white;
|
835
|
+
min-height: 10rem; }
|
836
|
+
|
837
|
+
.demo__section {
|
838
|
+
position: relative;
|
839
|
+
box-sizing: border-box;
|
840
|
+
overflow: hidden;
|
841
|
+
background-color: white; }
|
842
|
+
.demo__section ~ .demo__section {
|
843
|
+
border-top: 1px solid #f1f1f1; }
|
844
|
+
|
845
|
+
.demo__header {
|
846
|
+
box-sizing: border-box;
|
847
|
+
margin-right: -0.5rem;
|
848
|
+
padding: 0.5rem 1rem 0;
|
849
|
+
text-align: right; }
|
850
|
+
|
851
|
+
.exploded--is-being-initialized .exploded__pane {
|
852
|
+
-webkit-transition: -webkit-transform 0.25s ease;
|
853
|
+
transition: transform 0.25s ease; }
|
854
|
+
|
855
|
+
.exploded__source,
|
856
|
+
.exploded__structure {
|
857
|
+
padding: 1rem 2rem; }
|
858
|
+
|
859
|
+
.exploded__structure {
|
860
|
+
position: relative;
|
861
|
+
-webkit-perspective: 2000px;
|
862
|
+
perspective: 2000px;
|
863
|
+
-webkit-transform-style: preserve-3d;
|
864
|
+
transform-style: preserve-3d;
|
865
|
+
cursor: pointer; }
|
866
|
+
|
867
|
+
.exploded__structure__content {
|
868
|
+
position: relative;
|
869
|
+
z-index: 0;
|
870
|
+
margin: 0 auto; }
|
871
|
+
|
872
|
+
.exploded__control-container {
|
873
|
+
display: -webkit-box;
|
874
|
+
display: -webkit-flex;
|
875
|
+
display: -ms-flexbox;
|
876
|
+
display: flex;
|
877
|
+
-webkit-box-align: end;
|
878
|
+
-webkit-align-items: flex-end;
|
879
|
+
-ms-flex-align: end;
|
880
|
+
align-items: flex-end;
|
881
|
+
margin: 3rem -1rem 0; }
|
882
|
+
|
883
|
+
.exploded__control {
|
884
|
+
-webkit-box-flex: 1;
|
885
|
+
-webkit-flex: 1 1 0;
|
886
|
+
-ms-flex: 1 1 0;
|
887
|
+
flex: 1 1 0;
|
888
|
+
margin-left: 1rem; }
|
889
|
+
.exploded__control:first-child {
|
890
|
+
margin-left: 0; }
|
891
|
+
|
892
|
+
.exploded__pane {
|
893
|
+
position: absolute;
|
894
|
+
box-sizing: content-box;
|
895
|
+
border-radius: 4px;
|
896
|
+
background-color: rgba(156, 157, 165, 0.6);
|
897
|
+
border: 1px solid rgba(227, 228, 230, 0.5);
|
898
|
+
-webkit-transition: background 0.3s ease;
|
899
|
+
transition: background 0.3s ease; }
|
900
|
+
.exploded__pane:hover {
|
901
|
+
background-color: #b7d6f6; }
|
902
|
+
|
903
|
+
.exploded__pane--is-selected, .exploded__pane--is-selected:hover {
|
904
|
+
background: #8cc2fb;
|
905
|
+
opacity: 1; }
|
906
|
+
|
907
|
+
.field {
|
908
|
+
border-radius: 4px;
|
909
|
+
background-color: #d1d3d7;
|
910
|
+
display: -webkit-box;
|
911
|
+
display: -webkit-flex;
|
912
|
+
display: -ms-flexbox;
|
913
|
+
display: flex;
|
914
|
+
-webkit-box-align: center;
|
915
|
+
-webkit-align-items: center;
|
916
|
+
-ms-flex-align: center;
|
917
|
+
align-items: center;
|
918
|
+
max-width: 100%;
|
919
|
+
padding: 0 0.5rem; }
|
920
|
+
|
921
|
+
.field--switch {
|
922
|
+
padding: 0;
|
923
|
+
background-color: transparent;
|
924
|
+
position: relative; }
|
925
|
+
.field--switch > .label {
|
926
|
+
margin: 0;
|
927
|
+
padding-left: 2.25rem;
|
928
|
+
position: relative;
|
929
|
+
line-height: 1.5rem;
|
930
|
+
color: #6e6f7a; }
|
931
|
+
.field--switch > .label:after {
|
932
|
+
content: '';
|
933
|
+
display: block;
|
934
|
+
height: 1.05rem;
|
935
|
+
width: 0.45rem;
|
936
|
+
position: absolute;
|
937
|
+
top: 0.75rem;
|
938
|
+
left: 0.75rem;
|
939
|
+
border-bottom: 2px solid #627990;
|
940
|
+
border-right: 2px solid #627990;
|
941
|
+
-webkit-transform: translate(-50%, -60%) rotate(45deg);
|
942
|
+
transform: translate(-50%, -60%) rotate(45deg);
|
943
|
+
display: none; }
|
944
|
+
.field--switch > .label:before {
|
945
|
+
content: '';
|
946
|
+
display: block;
|
947
|
+
height: 1.5rem;
|
948
|
+
width: 1.5rem;
|
949
|
+
background: #e3e4e6;
|
950
|
+
position: absolute;
|
951
|
+
top: 0;
|
952
|
+
left: 0;
|
953
|
+
border-radius: 4px; }
|
954
|
+
.field--switch > .field__switch:checked + .label:before {
|
955
|
+
background: #b7d6f6; }
|
956
|
+
.field--switch > .field__switch:checked + .label:after {
|
957
|
+
display: block; }
|
958
|
+
.field--switch > .field__switch {
|
959
|
+
position: absolute;
|
960
|
+
top: 0;
|
961
|
+
left: 0;
|
962
|
+
opacity: 0.1; }
|
963
|
+
.field--switch + .field--switch {
|
964
|
+
margin-top: 1rem; }
|
965
|
+
|
966
|
+
.field__icon {
|
967
|
+
-webkit-box-flex: 0;
|
968
|
+
-webkit-flex: 0 0 auto;
|
969
|
+
-ms-flex: 0 0 auto;
|
970
|
+
flex: 0 0 auto;
|
971
|
+
font-size: 0; }
|
972
|
+
.field__icon > .icon {
|
973
|
+
fill: #9c9da5;
|
974
|
+
stroke: #9c9da5; }
|
975
|
+
|
976
|
+
.field__input {
|
977
|
+
-webkit-box-flex: 1;
|
978
|
+
-webkit-flex: 1 1 auto;
|
979
|
+
-ms-flex: 1 1 auto;
|
980
|
+
flex: 1 1 auto;
|
981
|
+
margin: 0;
|
982
|
+
padding: 0;
|
983
|
+
background: transparent;
|
984
|
+
border: none;
|
985
|
+
line-height: 2.125rem;
|
986
|
+
font-size: 1.1rem;
|
987
|
+
font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
|
988
|
+
.field__input::-webkit-input-placeholder {
|
989
|
+
color: rgba(156, 157, 165, 0.5); }
|
990
|
+
.field__input::-moz-placeholder {
|
991
|
+
color: rgba(156, 157, 165, 0.5); }
|
992
|
+
.field__input:-ms-input-placeholder {
|
993
|
+
color: rgba(156, 157, 165, 0.5); }
|
994
|
+
.field__input::placeholder {
|
995
|
+
color: rgba(156, 157, 165, 0.5); }
|
996
|
+
.field__input:focus {
|
997
|
+
outline: none; }
|
998
|
+
|
999
|
+
.page-header {
|
1000
|
+
background-color: #e3e4e6;
|
1001
|
+
padding: 1rem;
|
1002
|
+
padding-bottom: 1rem;
|
1003
|
+
min-height: 4.125rem; }
|
1004
|
+
.page-header .type--heading-1 {
|
1005
|
+
margin: -0.5em 0; }
|
1006
|
+
|
1007
|
+
.inline-group {
|
1008
|
+
display: -webkit-inline-box;
|
1009
|
+
display: -webkit-inline-flex;
|
1010
|
+
display: -ms-inline-flexbox;
|
1011
|
+
display: inline-flex;
|
1012
|
+
-webkit-flex-wrap: wrap;
|
1013
|
+
-ms-flex-wrap: wrap;
|
1014
|
+
flex-wrap: wrap;
|
1015
|
+
-webkit-box-align: center;
|
1016
|
+
-webkit-align-items: center;
|
1017
|
+
-ms-flex-align: center;
|
1018
|
+
align-items: center;
|
1019
|
+
margin-right: -0.5rem;
|
1020
|
+
margin-bottom: -0.5rem; }
|
1021
|
+
|
1022
|
+
.inline-group__item {
|
1023
|
+
margin-right: 0.5rem;
|
1024
|
+
margin-bottom: 0.5rem; }
|
1025
|
+
|
1026
|
+
.list {
|
1027
|
+
padding: 0;
|
1028
|
+
margin: 1rem 0 2rem;
|
1029
|
+
list-style: none; }
|
1030
|
+
.list .type--heading {
|
1031
|
+
padding-left: 1rem;
|
1032
|
+
padding-right: 1rem; }
|
1033
|
+
.popover .list {
|
1034
|
+
margin-bottom: 1rem; }
|
1035
|
+
|
1036
|
+
.list__item {
|
1037
|
+
display: block;
|
1038
|
+
padding: 0.25rem 1rem;
|
1039
|
+
cursor: pointer;
|
1040
|
+
text-decoration: none;
|
1041
|
+
color: #6e6f7a;
|
1042
|
+
white-space: nowrap;
|
1043
|
+
text-overflow: ellipsis;
|
1044
|
+
overflow: hidden; }
|
1045
|
+
.list__item:hover,
|
1046
|
+
.list__item:focus {
|
1047
|
+
outline: none;
|
1048
|
+
background: #f2f2f3; }
|
1049
|
+
.list__item:active {
|
1050
|
+
background-color: #b7d6f6;
|
1051
|
+
color: #627990; }
|
1052
|
+
|
1053
|
+
.list__item--is-active,
|
1054
|
+
.list__item--is-active:hover,
|
1055
|
+
.list__item--is-active:focus {
|
1056
|
+
background-color: #b7d6f6;
|
1057
|
+
color: #627990; }
|
1058
|
+
|
1059
|
+
.list__item--indented {
|
1060
|
+
padding-left: calc(1rem + 2ch);
|
1061
|
+
position: relative; }
|
1062
|
+
.list__item--indented:before {
|
1063
|
+
content: "";
|
1064
|
+
display: block;
|
1065
|
+
position: absolute;
|
1066
|
+
left: calc(1rem + 1ch);
|
1067
|
+
top: 0;
|
1068
|
+
height: 100%;
|
1069
|
+
width: 2px;
|
1070
|
+
background: rgba(30, 30, 31, 0.07); }
|
1071
|
+
.list__item--indented:last-child:before {
|
1072
|
+
height: 85%; }
|
1073
|
+
.list__item:not(.list__item--indented) + .list__item--indented:before {
|
1074
|
+
top: 15%;
|
1075
|
+
height: 85%; }
|
1076
|
+
|
1077
|
+
.link-list {
|
1078
|
+
padding: 0;
|
1079
|
+
margin: 0;
|
1080
|
+
list-style: none;
|
1081
|
+
display: -webkit-box;
|
1082
|
+
display: -webkit-flex;
|
1083
|
+
display: -ms-flexbox;
|
1084
|
+
display: flex;
|
1085
|
+
-webkit-flex-wrap: wrap;
|
1086
|
+
-ms-flex-wrap: wrap;
|
1087
|
+
flex-wrap: wrap; }
|
1088
|
+
.link-list > li {
|
1089
|
+
position: relative;
|
1090
|
+
-webkit-box-flex: 0;
|
1091
|
+
-webkit-flex: 0 0 auto;
|
1092
|
+
-ms-flex: 0 0 auto;
|
1093
|
+
flex: 0 0 auto; }
|
1094
|
+
.link-list > li:after {
|
1095
|
+
content: "";
|
1096
|
+
position: absolute;
|
1097
|
+
top: 10%;
|
1098
|
+
right: -1px;
|
1099
|
+
-webkit-transform: rotate(15deg);
|
1100
|
+
transform: rotate(15deg);
|
1101
|
+
display: block;
|
1102
|
+
height: 80%;
|
1103
|
+
border-right: 2px solid rgba(110, 111, 122, 0.1); }
|
1104
|
+
.link-list > li:last-child:after {
|
1105
|
+
display: none;
|
1106
|
+
margin-right: 0; }
|
1107
|
+
|
1108
|
+
.link-list__item {
|
1109
|
+
position: relative;
|
1110
|
+
display: block;
|
1111
|
+
cursor: pointer;
|
1112
|
+
padding: 0.25rem 0.5rem;
|
1113
|
+
-webkit-appearance: none;
|
1114
|
+
-moz-appearance: none;
|
1115
|
+
background: none;
|
1116
|
+
border: none;
|
1117
|
+
opacity: 0.6;
|
1118
|
+
font-size: 1em;
|
1119
|
+
line-height: 1;
|
1120
|
+
color: #9c9da5;
|
1121
|
+
-webkit-transition: opacity 0.25s ease;
|
1122
|
+
transition: opacity 0.25s ease; }
|
1123
|
+
.link-list__item:hover,
|
1124
|
+
.link-list__item:focus {
|
1125
|
+
opacity: 1;
|
1126
|
+
outline: none; }
|
1127
|
+
|
1128
|
+
.unstyled-list {
|
1129
|
+
margin: 0;
|
1130
|
+
padding: 0;
|
1131
|
+
list-style: none; }
|
1132
|
+
.unstyled-list > li {
|
1133
|
+
margin: 2rem 0; }
|
1134
|
+
.unstyled-list > li:first-child {
|
1135
|
+
margin-top: 0; }
|
1136
|
+
|
1137
|
+
.details-sheet {
|
1138
|
+
max-width: 90%;
|
1139
|
+
position: fixed;
|
1140
|
+
top: 50%;
|
1141
|
+
left: 50%;
|
1142
|
+
-webkit-transform: translate(-50%, -50%);
|
1143
|
+
transform: translate(-50%, -50%);
|
1144
|
+
background-color: white;
|
1145
|
+
border-radius: 0.4rem;
|
1146
|
+
box-shadow: 0 0 10px rgba(30, 30, 31, 0.3);
|
1147
|
+
z-index: 20;
|
1148
|
+
display: none; }
|
1149
|
+
|
1150
|
+
.details-sheet--is-active {
|
1151
|
+
display: block; }
|
1152
|
+
|
1153
|
+
.details-sheet__overlay {
|
1154
|
+
background: rgba(30, 30, 31, 0.9);
|
1155
|
+
position: absolute;
|
1156
|
+
top: 0;
|
1157
|
+
bottom: 0;
|
1158
|
+
right: 0;
|
1159
|
+
left: 0;
|
1160
|
+
z-index: 19;
|
1161
|
+
display: none; }
|
1162
|
+
|
1163
|
+
.details-sheet__overlay--is-active {
|
1164
|
+
display: block; }
|
1165
|
+
|
1166
|
+
.details-sheet__section {
|
1167
|
+
padding: 1rem; }
|
1168
|
+
.details-sheet__section + .details-sheet__section {
|
1169
|
+
border-top: 1px solid; }
|
1170
|
+
|
1171
|
+
.details-sheet__name {
|
1172
|
+
display: inline-block;
|
1173
|
+
padding: 0.1rem 0.25em;
|
1174
|
+
border-radius: 0.25em;
|
1175
|
+
color: #37393c;
|
1176
|
+
font-size: 1.2em;
|
1177
|
+
font-family: Consolas, monospace;
|
1178
|
+
margin: 0; }
|
1179
|
+
|
1180
|
+
.details-sheet__subtitle {
|
1181
|
+
margin: 0 0 0.5rem;
|
1182
|
+
font-size: 0.6rem;
|
1183
|
+
text-transform: uppercase;
|
1184
|
+
color: #37393c;
|
1185
|
+
opacity: 0.3;
|
1186
|
+
font-weight: 600; }
|
1187
|
+
|
1188
|
+
.notice {
|
1189
|
+
background-color: #fdf7af;
|
1190
|
+
width: -webkit-fit-content;
|
1191
|
+
width: -moz-fit-content;
|
1192
|
+
width: fit-content;
|
1193
|
+
color: #857e32;
|
1194
|
+
padding: 1rem;
|
1195
|
+
border-radius: 4px;
|
1196
|
+
font-size: 1.125rem;
|
1197
|
+
position: relative; }
|
1198
|
+
.notice .type, .notice p, .notice code {
|
1199
|
+
color: inherit;
|
1200
|
+
font-size: inherit; }
|
1201
|
+
.notice .type--heading {
|
1202
|
+
font-weight: 400; }
|
1203
|
+
|
1204
|
+
.notice--new {
|
1205
|
+
background-color: #b7d6f6;
|
1206
|
+
color: #627990; }
|
1207
|
+
|
1208
|
+
/*============================================================================
|
1209
|
+
Next Popover
|
1210
|
+
==============================================================================*/
|
1211
|
+
.popover__container {
|
1212
|
+
position: relative;
|
1213
|
+
display: -webkit-inline-box;
|
1214
|
+
display: -webkit-inline-flex;
|
1215
|
+
display: -ms-inline-flexbox;
|
1216
|
+
display: inline-flex;
|
1217
|
+
z-index: 20; }
|
1218
|
+
.popover__container > *:focus {
|
1219
|
+
outline: 0; }
|
1220
|
+
|
1221
|
+
.popover__container--contains-active-popover {
|
1222
|
+
z-index: 40; }
|
1223
|
+
|
1224
|
+
.popover__container--is-deactivating {
|
1225
|
+
z-index: 30; }
|
1226
|
+
|
1227
|
+
.popover__container--full-width {
|
1228
|
+
display: -webkit-box;
|
1229
|
+
display: -webkit-flex;
|
1230
|
+
display: -ms-flexbox;
|
1231
|
+
display: flex; }
|
1232
|
+
|
1233
|
+
.popover {
|
1234
|
+
position: absolute;
|
1235
|
+
left: 0;
|
1236
|
+
top: 100%;
|
1237
|
+
-webkit-transform: scale(0);
|
1238
|
+
transform: scale(0);
|
1239
|
+
display: inline-block;
|
1240
|
+
max-width: 100%;
|
1241
|
+
margin: 0.8125rem 1rem;
|
1242
|
+
background-color: white;
|
1243
|
+
border-radius: 4px;
|
1244
|
+
opacity: 0;
|
1245
|
+
box-shadow: 0 0 0 1px rgba(51, 54, 58, 0.05), 0 2px 7px 1px rgba(51, 54, 58, 0.16);
|
1246
|
+
-webkit-transition: -webkit-transform 0.35s cubic-bezier(0.27, 1.41, 0.53, 0.97), opacity 0.2s ease;
|
1247
|
+
transition: transform 0.35s cubic-bezier(0.27, 1.41, 0.53, 0.97), opacity 0.2s ease; }
|
1248
|
+
|
1249
|
+
.popover--is-active {
|
1250
|
+
-webkit-transform: scale(1);
|
1251
|
+
transform: scale(1);
|
1252
|
+
opacity: 1; }
|
1253
|
+
|
1254
|
+
.popover--is-positioned-above {
|
1255
|
+
top: auto;
|
1256
|
+
bottom: 100%; }
|
1257
|
+
.popover--is-positioned-above .popover__tooltip {
|
1258
|
+
top: 100%; }
|
1259
|
+
.popover--is-positioned-above .popover__tooltip:after {
|
1260
|
+
top: -0.3125rem; }
|
1261
|
+
|
1262
|
+
.popover__tooltip {
|
1263
|
+
position: absolute;
|
1264
|
+
left: 50%;
|
1265
|
+
top: -1.25rem;
|
1266
|
+
width: 1.25rem;
|
1267
|
+
height: 1.25rem;
|
1268
|
+
margin-left: -0.625rem;
|
1269
|
+
overflow: hidden; }
|
1270
|
+
.popover__tooltip:after {
|
1271
|
+
content: "";
|
1272
|
+
position: absolute;
|
1273
|
+
top: 0.9375rem;
|
1274
|
+
left: 50%;
|
1275
|
+
-webkit-transform: rotate(45deg);
|
1276
|
+
transform: rotate(45deg);
|
1277
|
+
margin-left: -0.3125rem;
|
1278
|
+
display: block;
|
1279
|
+
height: 0.625rem;
|
1280
|
+
width: 0.625rem;
|
1281
|
+
background-color: white;
|
1282
|
+
box-shadow: 0 0 0 1px rgba(51, 54, 58, 0.05), 0 2px 7px 1px rgba(51, 54, 58, 0.16); }
|
1283
|
+
|
1284
|
+
.popover__content-wrapper {
|
1285
|
+
display: -webkit-box;
|
1286
|
+
display: -webkit-flex;
|
1287
|
+
display: -ms-flexbox;
|
1288
|
+
display: flex;
|
1289
|
+
max-width: 25rem;
|
1290
|
+
max-height: 50rem;
|
1291
|
+
border-radius: 4px;
|
1292
|
+
overflow: hidden; }
|
1293
|
+
|
1294
|
+
.popover__content {
|
1295
|
+
-webkit-box-flex: 0;
|
1296
|
+
-webkit-flex: 0 0 auto;
|
1297
|
+
-ms-flex: 0 0 auto;
|
1298
|
+
flex: 0 0 auto;
|
1299
|
+
display: -webkit-inline-box;
|
1300
|
+
display: -webkit-inline-flex;
|
1301
|
+
display: -ms-inline-flexbox;
|
1302
|
+
display: inline-flex;
|
1303
|
+
-webkit-box-orient: vertical;
|
1304
|
+
-webkit-box-direction: normal;
|
1305
|
+
-webkit-flex-direction: column;
|
1306
|
+
-ms-flex-direction: column;
|
1307
|
+
flex-direction: column;
|
1308
|
+
max-height: 100%;
|
1309
|
+
min-width: 9.375rem; }
|
1310
|
+
.popover__content > *:first-child {
|
1311
|
+
margin-top: 0; }
|
1312
|
+
.popover__content > *:last-child {
|
1313
|
+
margin-bottom: 0; }
|
1314
|
+
|
1315
|
+
.popover__pane {
|
1316
|
+
-webkit-box-flex: 0;
|
1317
|
+
-webkit-flex: 0 1 auto;
|
1318
|
+
-ms-flex: 0 1 auto;
|
1319
|
+
flex: 0 1 auto;
|
1320
|
+
overflow: auto;
|
1321
|
+
-webkit-overflow-scrolling: touch;
|
1322
|
+
max-width: 100%; }
|
1323
|
+
|
1324
|
+
.range {
|
1325
|
+
width: 100%;
|
1326
|
+
margin: 0;
|
1327
|
+
-webkit-appearance: none;
|
1328
|
+
-moz-appearance: none;
|
1329
|
+
appearance: none;
|
1330
|
+
background-color: transparent; }
|
1331
|
+
.range:focus {
|
1332
|
+
outline: none; }
|
1333
|
+
|
1334
|
+
.range::-webkit-slider-runnable-track {
|
1335
|
+
width: 100%;
|
1336
|
+
height: 2.625rem;
|
1337
|
+
cursor: pointer;
|
1338
|
+
background-color: #d1d3d7;
|
1339
|
+
border-radius: 1.3125rem;
|
1340
|
+
padding: 0.2625rem; }
|
1341
|
+
|
1342
|
+
.range:focus::-webkit-slider-runnable-track {
|
1343
|
+
outline: none; }
|
1344
|
+
|
1345
|
+
.range::-moz-range-track {
|
1346
|
+
width: 100%;
|
1347
|
+
height: 2.625rem;
|
1348
|
+
cursor: pointer;
|
1349
|
+
background-color: #d1d3d7;
|
1350
|
+
border-radius: 1.3125rem;
|
1351
|
+
padding: 0.2625rem; }
|
1352
|
+
|
1353
|
+
.range::-ms-track {
|
1354
|
+
width: 100%;
|
1355
|
+
height: 2.625rem;
|
1356
|
+
cursor: pointer;
|
1357
|
+
background-color: #d1d3d7;
|
1358
|
+
border-radius: 1.3125rem;
|
1359
|
+
padding: 0.2625rem; }
|
1360
|
+
|
1361
|
+
.range::-webkit-slider-thumb {
|
1362
|
+
height: 2.1rem;
|
1363
|
+
width: 2.1rem;
|
1364
|
+
box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
|
1365
|
+
border-radius: 1.05rem;
|
1366
|
+
background: #f2f2f3;
|
1367
|
+
cursor: pointer;
|
1368
|
+
-webkit-appearance: none;
|
1369
|
+
appearance: none; }
|
1370
|
+
|
1371
|
+
.range::-moz-range-thumb {
|
1372
|
+
height: 2.1rem;
|
1373
|
+
width: 2.1rem;
|
1374
|
+
box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
|
1375
|
+
border-radius: 1.05rem;
|
1376
|
+
background: #f2f2f3;
|
1377
|
+
cursor: pointer;
|
1378
|
+
-webkit-appearance: none;
|
1379
|
+
-moz-appearance: none;
|
1380
|
+
appearance: none; }
|
1381
|
+
|
1382
|
+
.range::-ms-thumb {
|
1383
|
+
height: 2.1rem;
|
1384
|
+
width: 2.1rem;
|
1385
|
+
box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
|
1386
|
+
border-radius: 1.05rem;
|
1387
|
+
background: #f2f2f3;
|
1388
|
+
cursor: pointer;
|
1389
|
+
-webkit-appearance: none;
|
1390
|
+
appearance: none; }
|
1391
|
+
|
1392
|
+
.resizable {
|
1393
|
+
position: relative;
|
1394
|
+
margin: 0 auto;
|
1395
|
+
width: 100%;
|
1396
|
+
min-width: 19.25rem;
|
1397
|
+
border-radius: 4px;
|
1398
|
+
line-height: 0; }
|
1399
|
+
.resizable > .card {
|
1400
|
+
position: relative;
|
1401
|
+
padding-right: 1.25rem; }
|
1402
|
+
.resizable .iframe {
|
1403
|
+
width: 100%;
|
1404
|
+
min-height: 10rem;
|
1405
|
+
-webkit-transition: height 0.3s ease;
|
1406
|
+
transition: height 0.3s ease;
|
1407
|
+
overflow: hidden; }
|
1408
|
+
|
1409
|
+
.resizable--is-transitioning-width {
|
1410
|
+
-webkit-transition: width 0.3s ease;
|
1411
|
+
transition: width 0.3s ease; }
|
1412
|
+
|
1413
|
+
.resizable__handle {
|
1414
|
+
position: absolute;
|
1415
|
+
top: 0;
|
1416
|
+
right: 0;
|
1417
|
+
width: 1.25rem;
|
1418
|
+
height: 100%;
|
1419
|
+
cursor: col-resize;
|
1420
|
+
background: #d1d3d7;
|
1421
|
+
border-radius: 0 4px 4px 0; }
|
1422
|
+
.resizable__handle:hover,
|
1423
|
+
.resizable__handle:focus {
|
1424
|
+
outline: none; }
|
1425
|
+
.resizable__handle:after {
|
1426
|
+
content: "";
|
1427
|
+
position: absolute;
|
1428
|
+
top: 50%;
|
1429
|
+
left: 50%;
|
1430
|
+
display: block;
|
1431
|
+
height: 2rem;
|
1432
|
+
width: 0.4375rem;
|
1433
|
+
margin-top: -1rem;
|
1434
|
+
margin-left: -0.21875rem;
|
1435
|
+
border-right: 1px solid #9c9da5;
|
1436
|
+
border-left: 1px solid #9c9da5; }
|
1437
|
+
|
1438
|
+
.resizable__actions {
|
1439
|
+
display: -webkit-box;
|
1440
|
+
display: -webkit-flex;
|
1441
|
+
display: -ms-flexbox;
|
1442
|
+
display: flex;
|
1443
|
+
-webkit-box-pack: justify;
|
1444
|
+
-webkit-justify-content: space-between;
|
1445
|
+
-ms-flex-pack: justify;
|
1446
|
+
justify-content: space-between;
|
1447
|
+
-webkit-box-align: end;
|
1448
|
+
-webkit-align-items: flex-end;
|
1449
|
+
-ms-flex-align: end;
|
1450
|
+
align-items: flex-end;
|
1451
|
+
margin-bottom: 0.5rem; }
|
1452
|
+
|
1453
|
+
.resizable__width-indicator {
|
1454
|
+
color: #b1b1b1;
|
1455
|
+
font: 300 1rem/1 Consolas, monospace;
|
1456
|
+
opacity: 0.4;
|
1457
|
+
-webkit-transition: opacity 0.3s ease;
|
1458
|
+
transition: opacity 0.3s ease; }
|
1459
|
+
|
1460
|
+
.resizable__width-indicator--is-visible {
|
1461
|
+
opacity: 1; }
|
1462
|
+
|
1463
|
+
.resizable__size-buttons {
|
1464
|
+
display: -webkit-box;
|
1465
|
+
display: -webkit-flex;
|
1466
|
+
display: -ms-flexbox;
|
1467
|
+
display: flex; }
|
1468
|
+
|
1469
|
+
.resizable__size-button {
|
1470
|
+
position: relative;
|
1471
|
+
margin-left: 0.5rem;
|
1472
|
+
cursor: pointer;
|
1473
|
+
opacity: 0.5;
|
1474
|
+
-webkit-transition: opacity 0.3s ease;
|
1475
|
+
transition: opacity 0.3s ease; }
|
1476
|
+
.resizable__size-button > .icon {
|
1477
|
+
height: 1.8rem;
|
1478
|
+
width: 1.8rem;
|
1479
|
+
fill: #e3e4e6;
|
1480
|
+
stroke: #e3e4e6;
|
1481
|
+
-webkit-transition: fill 0.3s ease;
|
1482
|
+
transition: fill 0.3s ease; }
|
1483
|
+
.resizable__size-button:hover,
|
1484
|
+
.resizable__size-button:focus,
|
1485
|
+
.resizable__size-button:active,
|
1486
|
+
.resizable__size-button.resizable__size-button--is-active {
|
1487
|
+
outline: none; }
|
1488
|
+
.resizable__size-button:hover,
|
1489
|
+
.resizable__size-button:focus {
|
1490
|
+
opacity: 0.8; }
|
1491
|
+
.resizable__size-button.resizable__size-button--is-active,
|
1492
|
+
.resizable__size-button:active {
|
1493
|
+
opacity: 1; }
|
1494
|
+
.resizable__size-button.resizable__size-button--is-active > .icon,
|
1495
|
+
.resizable__size-button:active > .icon {
|
1496
|
+
fill: #4196df;
|
1497
|
+
stroke: #4196df; }
|
1498
|
+
|
1499
|
+
.resizable__size-button--is-hidden {
|
1500
|
+
display: none; }
|
1501
|
+
|
1502
|
+
.scroll-container {
|
1503
|
+
overflow: hidden; }
|
1504
|
+
|
1505
|
+
.section {
|
1506
|
+
margin: 2rem 0;
|
1507
|
+
padding: 1rem 0; }
|
1508
|
+
.section > *:first-child,
|
1509
|
+
.section > *:first-child > *:first-child {
|
1510
|
+
margin-top: 0; }
|
1511
|
+
.section > *:last-child,
|
1512
|
+
.section > *:last-child > *:last-child {
|
1513
|
+
margin-bottom: 0; }
|
1514
|
+
|
1515
|
+
.section--small {
|
1516
|
+
border: none;
|
1517
|
+
padding: 0;
|
1518
|
+
margin: 1rem 0; }
|
1519
|
+
|
1520
|
+
.section--subdued {
|
1521
|
+
background: #f1f1f1;
|
1522
|
+
overflow: hidden; }
|
1523
|
+
.section--subdued.section--small {
|
1524
|
+
padding: 1rem 0;
|
1525
|
+
margin: 0; }
|
1526
|
+
|
1527
|
+
.section__container > .section:first-child {
|
1528
|
+
margin-top: 2rem; }
|
1529
|
+
|
1530
|
+
.section__container > .section:last-child {
|
1531
|
+
margin-bottom: 2rem; }
|
1532
|
+
|
1533
|
+
.section__container > .section--small:first-child {
|
1534
|
+
margin-top: 1rem; }
|
1535
|
+
|
1536
|
+
.section__container > .section--small:last-child {
|
1537
|
+
margin-bottom: 1rem; }
|
1538
|
+
|
1539
|
+
.select {
|
1540
|
+
position: relative;
|
1541
|
+
display: inline-block;
|
1542
|
+
border-radius: 4px;
|
1543
|
+
background-color: #e3e4e6; }
|
1544
|
+
.select:after {
|
1545
|
+
content: "";
|
1546
|
+
position: absolute;
|
1547
|
+
right: 0.75rem;
|
1548
|
+
top: 50%;
|
1549
|
+
-webkit-transform: rotate(45deg);
|
1550
|
+
transform: rotate(45deg);
|
1551
|
+
display: block;
|
1552
|
+
height: 0.63281rem;
|
1553
|
+
width: 0.63281rem;
|
1554
|
+
margin-top: -0.47461rem;
|
1555
|
+
border: solid rgba(156, 157, 165, 0.5);
|
1556
|
+
border-width: 0 2px 2px 0;
|
1557
|
+
pointer-events: none; }
|
1558
|
+
.select + .docks-button {
|
1559
|
+
margin-left: 0.5rem; }
|
1560
|
+
|
1561
|
+
.select--is-focused {
|
1562
|
+
border-color: #4196df; }
|
1563
|
+
|
1564
|
+
.select--code > .select__input {
|
1565
|
+
font-family: Consolas, monospace; }
|
1566
|
+
|
1567
|
+
.select__input {
|
1568
|
+
-webkit-appearance: none;
|
1569
|
+
-moz-appearance: none;
|
1570
|
+
box-sizing: border-box;
|
1571
|
+
display: block;
|
1572
|
+
width: 100%;
|
1573
|
+
max-width: none;
|
1574
|
+
height: auto;
|
1575
|
+
padding: 0 2.13281rem 0 0.75rem;
|
1576
|
+
background: transparent;
|
1577
|
+
border: none;
|
1578
|
+
font-size: 1.0125rem;
|
1579
|
+
line-height: 2.125rem;
|
1580
|
+
font-family: inherit;
|
1581
|
+
color: #9c9da5; }
|
1582
|
+
.select__input:focus {
|
1583
|
+
outline: none;
|
1584
|
+
border: none; }
|
1585
|
+
.select__input > option {
|
1586
|
+
color: #33363a; }
|
1587
|
+
|
1588
|
+
_:-ms-input-placeholder, :root .select__input::-ms-expand {
|
1589
|
+
display: none; }
|
1590
|
+
|
1591
|
+
_:-ms-input-placeholder, :root .select__input:focus::-ms-value {
|
1592
|
+
background: transparent; }
|
1593
|
+
|
1594
|
+
@supports (-moz-appearance: meterbar) and (background-blend-mode: difference, normal) {
|
1595
|
+
_::-moz-progress-bar,
|
1596
|
+
body:last-child .select__input__wrapper {
|
1597
|
+
overflow: hidden; }
|
1598
|
+
_::-moz-progress-bar,
|
1599
|
+
body:last-child .select__input {
|
1600
|
+
width: calc(100% + 30px); } }
|
1601
|
+
|
1602
|
+
.select__input:-moz-focusring {
|
1603
|
+
color: transparent;
|
1604
|
+
text-shadow: 0 0 0 black; }
|
1605
|
+
|
1606
|
+
.table {
|
1607
|
+
width: 100%;
|
1608
|
+
min-width: 31.25rem;
|
1609
|
+
border-collapse: separate;
|
1610
|
+
border-spacing: 0; }
|
1611
|
+
|
1612
|
+
.table__container {
|
1613
|
+
margin: 1rem auto; }
|
1614
|
+
|
1615
|
+
.table__container--is-overflowing .table__cell:first-child {
|
1616
|
+
position: absolute;
|
1617
|
+
z-index: 20;
|
1618
|
+
left: 0;
|
1619
|
+
height: 100%;
|
1620
|
+
box-shadow: 3px 0 4px -1px rgba(30, 30, 31, 0);
|
1621
|
+
-webkit-transition: box-shadow 0.2s ease;
|
1622
|
+
transition: box-shadow 0.2s ease; }
|
1623
|
+
|
1624
|
+
.table__container--is-overflowing .table__actions {
|
1625
|
+
-webkit-transform: translateY(0);
|
1626
|
+
transform: translateY(0);
|
1627
|
+
max-height: 3rem;
|
1628
|
+
padding-bottom: 0.5rem; }
|
1629
|
+
|
1630
|
+
.table__scroller {
|
1631
|
+
max-width: 100%;
|
1632
|
+
overflow-x: auto;
|
1633
|
+
overflow-y: hidden;
|
1634
|
+
-webkit-overflow-scrolling: touch; }
|
1635
|
+
|
1636
|
+
.table__scroller--is-scrolled .table__cell:first-child {
|
1637
|
+
box-shadow: 3px 0 4px -1px rgba(30, 30, 31, 0.1); }
|
1638
|
+
|
1639
|
+
.table__backdrop {
|
1640
|
+
position: relative;
|
1641
|
+
z-index: 30;
|
1642
|
+
max-width: 100%;
|
1643
|
+
clear: both;
|
1644
|
+
overflow: hidden;
|
1645
|
+
border: 1px solid #f1f1f1;
|
1646
|
+
border-radius: 8px; }
|
1647
|
+
|
1648
|
+
.table__actions {
|
1649
|
+
-webkit-transform: translateY(140%);
|
1650
|
+
transform: translateY(140%);
|
1651
|
+
max-height: 0;
|
1652
|
+
float: right;
|
1653
|
+
-webkit-transition: -webkit-transform 0.3s cubic-bezier(0.32, 1.44, 0.46, 0.99), max-height 0.3s ease, padding-bottom 0.3s ease;
|
1654
|
+
transition: transform 0.3s cubic-bezier(0.32, 1.44, 0.46, 0.99), max-height 0.3s ease, padding-bottom 0.3s ease; }
|
1655
|
+
|
1656
|
+
.table__header {
|
1657
|
+
font-weight: 400;
|
1658
|
+
padding: 0;
|
1659
|
+
text-align: left; }
|
1660
|
+
|
1661
|
+
.table__body > .table__row:nth-child(odd) > .table__cell {
|
1662
|
+
background-color: #f8f8f8; }
|
1663
|
+
|
1664
|
+
.table__row {
|
1665
|
+
overflow: hidden; }
|
1666
|
+
|
1667
|
+
.table__cell {
|
1668
|
+
position: relative;
|
1669
|
+
z-index: 10;
|
1670
|
+
vertical-align: top;
|
1671
|
+
padding: 0.5rem;
|
1672
|
+
background-color: white; }
|
1673
|
+
|
1674
|
+
.table__cell--centered {
|
1675
|
+
text-align: center; }
|
1676
|
+
|
1677
|
+
.tablist {
|
1678
|
+
margin: 0;
|
1679
|
+
padding: 0;
|
1680
|
+
display: -webkit-box;
|
1681
|
+
display: -webkit-flex;
|
1682
|
+
display: -ms-flexbox;
|
1683
|
+
display: flex;
|
1684
|
+
-webkit-box-pack: center;
|
1685
|
+
-webkit-justify-content: center;
|
1686
|
+
-ms-flex-pack: center;
|
1687
|
+
justify-content: center;
|
1688
|
+
padding: 0.5rem;
|
1689
|
+
margin-right: -0.5rem;
|
1690
|
+
list-style: none; }
|
1691
|
+
|
1692
|
+
.tablist--large {
|
1693
|
+
margin: 2rem 0; }
|
1694
|
+
.tablist--large > .tablist__tab {
|
1695
|
+
font-size: 1.5rem;
|
1696
|
+
line-height: 1;
|
1697
|
+
padding: 1rem 2.5rem 1.2rem;
|
1698
|
+
border: none !important;
|
1699
|
+
opacity: 1 !important; }
|
1700
|
+
.tablist--large > .tablist__tab--is-active {
|
1701
|
+
background-color: #f2f2f3; }
|
1702
|
+
|
1703
|
+
.tablist__tab {
|
1704
|
+
display: inline-block;
|
1705
|
+
padding: 0 0.75rem;
|
1706
|
+
opacity: 0.3;
|
1707
|
+
overflow: hidden;
|
1708
|
+
border: 1px solid transparent;
|
1709
|
+
border-radius: 4px;
|
1710
|
+
-webkit-transition: opacity 0.3s ease, border-color 0.3s ease;
|
1711
|
+
transition: opacity 0.3s ease, border-color 0.3s ease;
|
1712
|
+
font-size: 1.125rem;
|
1713
|
+
line-height: 2.125rem;
|
1714
|
+
color: #9c9da5;
|
1715
|
+
text-align: center;
|
1716
|
+
text-decoration: none;
|
1717
|
+
white-space: nowrap;
|
1718
|
+
text-overflow: ellipsis; }
|
1719
|
+
.tablist__tab:focus,
|
1720
|
+
.tablist__tab:hover {
|
1721
|
+
outline: none;
|
1722
|
+
opacity: 0.5; }
|
1723
|
+
.tablist__tab > .icon {
|
1724
|
+
height: 2rem;
|
1725
|
+
width: 2rem;
|
1726
|
+
fill: #d1d3d7;
|
1727
|
+
stroke: #d1d3d7;
|
1728
|
+
stroke-width: 3px; }
|
1729
|
+
|
1730
|
+
.tablist__tab--is-active, .tablist__tab--is-active:hover, .tablist__tab--is-active:focus {
|
1731
|
+
border-color: #9c9da5;
|
1732
|
+
opacity: 1; }
|
1733
|
+
|
1734
|
+
.tablist__tab__text {
|
1735
|
+
display: block; }
|
1736
|
+
|
1737
|
+
.tablist__panel {
|
1738
|
+
display: none; }
|
1739
|
+
|
1740
|
+
.tablist__panel--is-active {
|
1741
|
+
display: block; }
|
1742
|
+
|
1743
|
+
.vertical-spacer {
|
1744
|
+
margin: 0.5rem 0; }
|
1745
|
+
|
1746
|
+
.vertical-stack {
|
1747
|
+
display: -webkit-box;
|
1748
|
+
display: -webkit-flex;
|
1749
|
+
display: -ms-flexbox;
|
1750
|
+
display: flex;
|
1751
|
+
-webkit-box-orient: vertical;
|
1752
|
+
-webkit-box-direction: normal;
|
1753
|
+
-webkit-flex-direction: column;
|
1754
|
+
-ms-flex-direction: column;
|
1755
|
+
flex-direction: column;
|
1756
|
+
-webkit-align-self: stretch;
|
1757
|
+
-ms-flex-item-align: stretch;
|
1758
|
+
align-self: stretch;
|
1759
|
+
width: 100%; }
|
1760
|
+
|
1761
|
+
.vertical-stack__item {
|
1762
|
+
-webkit-box-flex: 1;
|
1763
|
+
-webkit-flex: 1 1 0px;
|
1764
|
+
-ms-flex: 1 1 0px;
|
1765
|
+
flex: 1 1 0px;
|
1766
|
+
max-width: 100%;
|
1767
|
+
overflow-x: hidden;
|
1768
|
+
overflow-y: auto;
|
1769
|
+
-webkit-overflow-scrolling: touch; }
|
1770
|
+
|
1771
|
+
.vertical-stack__item--fixed {
|
1772
|
+
-webkit-box-flex: 0;
|
1773
|
+
-webkit-flex: 0 0 auto;
|
1774
|
+
-ms-flex: 0 0 auto;
|
1775
|
+
flex: 0 0 auto;
|
1776
|
+
overflow: visible; }
|
1777
|
+
|
1778
|
+
body {
|
1779
|
+
position: relative; }
|
1780
|
+
body.x-ray__helpers--x-ray-is-active {
|
1781
|
+
overflow: hidden; }
|
1782
|
+
|
1783
|
+
.x-ray {
|
1784
|
+
background: white;
|
1785
|
+
position: absolute;
|
1786
|
+
top: 0;
|
1787
|
+
bottom: 0;
|
1788
|
+
left: 0;
|
1789
|
+
right: 0;
|
1790
|
+
z-index: -1;
|
1791
|
+
overflow-x: hidden;
|
1792
|
+
overflow-y: auto;
|
1793
|
+
opacity: 0;
|
1794
|
+
-webkit-transition: opacity 0.3s ease;
|
1795
|
+
transition: opacity 0.3s ease;
|
1796
|
+
min-height: 100%; }
|
1797
|
+
.x-ray .page-header {
|
1798
|
+
-webkit-box-flex: 0;
|
1799
|
+
-webkit-flex: 0 0 auto;
|
1800
|
+
-ms-flex: 0 0 auto;
|
1801
|
+
flex: 0 0 auto; }
|
1802
|
+
|
1803
|
+
.x-ray--is-active {
|
1804
|
+
opacity: 1;
|
1805
|
+
z-index: 1200; }
|
1806
|
+
|
1807
|
+
.x-ray__content {
|
1808
|
+
padding-bottom: 3rem; }
|
1809
|
+
|
1810
|
+
.x-ray__list {
|
1811
|
+
padding: 1rem;
|
1812
|
+
background-color: #f2f2f3; }
|
1813
|
+
|
1814
|
+
.x-ray__closer {
|
1815
|
+
background: transparent;
|
1816
|
+
border: none;
|
1817
|
+
padding: 0;
|
1818
|
+
-webkit-appearance: none;
|
1819
|
+
-moz-appearance: none;
|
1820
|
+
appearance: none; }
|
1821
|
+
|
1822
|
+
.x-ray__diagram {
|
1823
|
+
padding: 1rem 0 0;
|
1824
|
+
background: #e3e4e6; }
|
1825
|
+
|
1826
|
+
.x-ray__details {
|
1827
|
+
display: none; }
|
1828
|
+
|
1829
|
+
.x-ray__details--is-visible {
|
1830
|
+
display: block; }
|
1831
|
+
|
1832
|
+
.x-ray__details__tagname {
|
1833
|
+
display: inline-block;
|
1834
|
+
font-size: 0.75em;
|
1835
|
+
background-color: #f2f2f3;
|
1836
|
+
padding: 0.3em 0.4em 0.2em;
|
1837
|
+
border-radius: 4px;
|
1838
|
+
line-height: 1;
|
1839
|
+
color: #9c9da5;
|
1840
|
+
margin-right: 0.25rem; }
|
1841
|
+
|
1842
|
+
.x-ray__details__description {
|
1843
|
+
margin-bottom: 2rem; }
|
1844
|
+
|
1845
|
+
.sidebar {
|
1846
|
+
position: absolute;
|
1847
|
+
left: 0;
|
1848
|
+
top: 0;
|
1849
|
+
-webkit-transform: translate3d(-100%, 0, 0);
|
1850
|
+
transform: translate3d(-100%, 0, 0);
|
1851
|
+
-webkit-transition: -webkit-transform 0.2s ease;
|
1852
|
+
transition: transform 0.2s ease;
|
1853
|
+
max-width: 15rem;
|
1854
|
+
display: -webkit-box;
|
1855
|
+
display: -webkit-flex;
|
1856
|
+
display: -ms-flexbox;
|
1857
|
+
display: flex;
|
1858
|
+
height: 100vh;
|
1859
|
+
background-color: white;
|
1860
|
+
box-shadow: 0 0 4px rgba(30, 30, 31, 0.3); }
|
1861
|
+
@media screen and (min-width: 40.0625rem) {
|
1862
|
+
.sidebar {
|
1863
|
+
position: static;
|
1864
|
+
-webkit-transform: translate3d(0, 0, 0);
|
1865
|
+
transform: translate3d(0, 0, 0); } }
|
1866
|
+
|
1867
|
+
.sidebar--is-active {
|
1868
|
+
-webkit-transform: translate3d(0, 0, 0);
|
1869
|
+
transform: translate3d(0, 0, 0); }
|
1870
|
+
|
1871
|
+
.sidebar__toggler {
|
1872
|
+
background: transparent;
|
1873
|
+
padding: 0;
|
1874
|
+
margin: 0;
|
1875
|
+
-webkit-appearance: none;
|
1876
|
+
-moz-appearance: none;
|
1877
|
+
appearance: none;
|
1878
|
+
border: none; }
|
1879
|
+
.sidebar__toggler:focus {
|
1880
|
+
outline: none; }
|
1881
|
+
|
1882
|
+
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxpdGllcy9tZWRpYS9tZWRpYS5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vYTExeS5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vYmFzZS5zY3NzIiwidXRpbGl0aWVzL2NvbG9ycy9jb2xvcnMuc2NzcyIsInV0aWxpdGllcy9mb3VuZGF0aW9uL2ljb24uc2NzcyIsInV0aWxpdGllcy9mdW5jdGlvbnMvZnVuY3Rpb25zLnNjc3MiLCJ1dGlsaXRpZXMvZm91bmRhdGlvbi9sYXlvdXQuc2NzcyIsInV0aWxpdGllcy9kZWZhdWx0cy9kZWZhdWx0cy5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vcGFnZS5zY3NzIiwidXRpbGl0aWVzL3pfaW5kZXhlcy96LWluZGV4ZXMuc2NzcyIsInV0aWxpdGllcy9mb3VuZGF0aW9uL3R5cGUuc2NzcyIsInV0aWxpdGllcy9mb250X3NpemVzL2ZvbnQtc2l6ZXMuc2NzcyIsImNvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5zY3NzIiwiY29tcG9uZW50cy9iYWRnZS9iYWRnZS5zY3NzIiwiY29tcG9uZW50cy9idXR0b24vYnV0dG9uLnNjc3MiLCJjb21wb25lbnRzL2NhcmQvY2FyZC5zY3NzIiwiY29tcG9uZW50cy9jb2RlX2Jsb2NrL2NvZGUtYmxvY2suc2NzcyIsImNvbXBvbmVudHMvZGVtby9kZW1vLnNjc3MiLCJjb21wb25lbnRzL2V4cGxvZGVkL2V4cGxvZGVkLnNjc3MiLCJjb21wb25lbnRzL2ZpZWxkL2ZpZWxkLnNjc3MiLCJjb21wb25lbnRzL2hlYWRlci9oZWFkZXIuc2NzcyIsImNvbXBvbmVudHMvaW5saW5lX2dyb3VwL2lubGluZS1ncm91cC5zY3NzIiwiY29tcG9uZW50cy9saXN0L2xpc3Quc2NzcyIsInV0aWxpdGllcy9taXhpbnMvbWl4aW5zLnNjc3MiLCJjb21wb25lbnRzL21vZGFsL21vZGFsLnNjc3MiLCJjb21wb25lbnRzL25vdGljZS9ub3RpY2Uuc2NzcyIsImNvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLnNjc3MiLCJjb21wb25lbnRzL3JhbmdlL3JhbmdlLnNjc3MiLCJjb21wb25lbnRzL3Jlc2l6YWJsZS9yZXNpemFibGUuc2NzcyIsImNvbXBvbmVudHMvc2Nyb2xsX2NvbnRhaW5lci9zY3JvbGwtY29udGFpbmVyLnNjc3MiLCJjb21wb25lbnRzL3NlY3Rpb24vc2VjdGlvbi5zY3NzIiwiY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LnNjc3MiLCJjb21wb25lbnRzL3RhYmxlL3RhYmxlLnNjc3MiLCJjb21wb25lbnRzL3RhYmxpc3QvdGFibGlzdC5zY3NzIiwiY29tcG9uZW50cy92ZXJ0aWNhbF9zcGFjZXIvdmVydGljYWwtc3BhY2VyLnNjc3MiLCJjb21wb25lbnRzL3ZlcnRpY2FsX3N0YWNrL3ZlcnRpY2FsLXN0YWNrLnNjc3MiLCJjb21wb25lbnRzL3hyYXkveHJheS5zY3NzIiwic3RydWN0dXJlcy9zaWRlYmFyL3NpZGViYXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1RkU7RUFzRXlDO0lBRWIsY0FBYyxFQUR4QyxFQUFBOztBQS9FRjtFQWlGQztJQUcwQixjQUFjLEVBRHZDLEVBQUE7O0FBRUQ7RUFHQyxjQUFjLEVBRGQ7RUF2RkY7SUFxRkM7TUFLMEIsZUFBZSxFQUh4QyxFQUFBOztBQS9FRjtFQXNFeUM7SUFFYixjQUFjLEVBRHhDLEVBQUE7O0FBL0VGO0VBaUZDO0lBRzBCLGNBQWMsRUFEdkMsRUFBQTs7QUFFRDtFQUdDLGNBQWMsRUFEZDtFQXZGRjtJQXFGQztNQUswQixlQUFlLEVBSHhDLEVBQUE7O0FBL0VGO0VBc0V5QztJQUViLGNBQWMsRUFEeEMsRUFBQTs7QUEvRUY7RUFpRkM7SUFHMEIsY0FBYyxFQUR2QyxFQUFBOztBQUVEO0VBR0MsY0FBYyxFQURkO0VBdkZGO0lBcUZDO01BSzBCLGVBQWUsRUFIeEMsRUFBQTs7QUN0S0o7RUFDRSxVQUFVO0VBQ1Ysb0JBQVU7RUFDVixZQUFZO0VBQ1osYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixXQUFXO0VB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akI7RUFDRSxlQUFlLEVBRFk7O0FBSTdCO0VBQ0Usc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQiwwQmpDaERZO0VpQ2lEWiwyQkFBMEI7RTdCakMxQixtQkFma0I7RTZCa0RsQixlQUFlO0VBQ2YsZWpDakRhO0VpQ2tEYixzQkFBc0IsRUFSRTs7QUFXMUI7RUFDRSxvQkFBaUIsRUFEVzs7QUNsRDlCO0VBRUUsbUJBQW1CO0VBQ25CLFFBQVE7RUFBRSxPQUFPO0VBQ2pCLDRDQUE4QjtFQUM5QixvQ0FBc0I7RUFDdEIsZ0RBQStCO1VBQS9CLGdDQUErQjtFQUMvQixpQkFBaUI7RUFHakIscUJBQWM7RUFBZCxzQkFBYztFQUFkLHFCQUFjO0VBQWQsY0FBYztFQUNkLGNBQWM7RUFHZCx3QmxDeEJrQjtFSW9CbEIsMENKVVUsRWtDcEJGO0VyQ3FEUjtJcUNyREY7TUFrQkksaUJBQWlCO01BQ2pCLHdDQUFzQjtjQUF0QixnQ0FBc0IsRUFuQmhCLEVBQUE7O0FBMkJWO0VBQ0Usd0NBQXNCO1VBQXRCLGdDQUFzQixFQURIOztBQVdyQjtFQUNFLHdCQUF3QjtFQUN4QixXQUFXO0VBQ1gsVUFBVTtFQUNWLHlCQUFpQjtLQUFqQixzQkFBaUI7VUFBakIsaUJBQWlCO0VBQ2pCLGFBQWEsRUFMSTtFQU9oQjtJQUNDLGNBQWMsRUFEUCIsImZpbGUiOiJwYXR0ZXJuLWxpYnJhcnkuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgIF9fX19fICAgICAgICAgICAgICAgICAgX19fXG4vLyAgICAgICAvX18vXFwgICAgICAgIC8gIC9cXCAgICAgIC8gIC86OlxcICAgICBfX18gICAgICAgIC8gIC9cXFxuLy8gICAgICB8ICB8OjpcXCAgICAgIC8gIC86L18gICAgLyAgLzovXFw6XFwgICAvICAvXFwgICAgICAvICAvOjpcXFxuLy8gICAgICB8ICB8Onw6XFwgICAgLyAgLzovIC9cXCAgLyAgLzovICBcXDpcXCAvICAvOi8gICAgIC8gIC86L1xcOlxcXG4vLyAgICBfX3xfX3w6fFxcOlxcICAvICAvOi8gLzovXy9fXy86LyBcXF9fXFw6L19fLzo6XFwgICAgLyAgLzovfi86OlxcXG4vLyAgIC9fXy86Ojo6fCBcXDpcXC9fXy86LyAvOi8gL1xcICBcXDpcXCAvICAvOnxfX1xcL1xcOlxcX18vX18vOi8gLzovXFw6XFxcbi8vICAgXFwgIFxcOlxcfn5cXF9fXFwvXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXCAgLzovICAgXFwgIFxcOlxcL1xcICBcXDpcXC86L19fXFwvXG4vLyAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcLzovICAgICBcXF9fXFw6Oi9cXCAgXFw6Oi9cbi8vICAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6LyAgICAgIC9fXy86LyAgXFwgIFxcOlxcXG4vLyAgICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6Oi8gICAgICBcXF9fXFwvICAgICAgIFxcX19cXC8gICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvXG5cblxuXG4kQlJFQUtQT0lOVFM6IChcbiAgc21hbGw6IDI1cmVtLFxuICBtZWRpdW06IDM3LjVyZW0sXG4gIGxhcmdlOiA1MHJlbVxuKTtcblxuJEJSRUFLUE9JTlRfSU5DUkVNRU5UUzogKFxuICByZW06IDAuMDYyNXJlbSxcbiAgZW06IDAuMDYyNWVtLFxuICBweDogMXB4LFxuICB2dzogMXZ3XG4pO1xuXG5cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdmFsdWUtZm9yKCRicmVha3BvaW50KSB7XG4gIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRicmVha3BvaW50KTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtY2xlYW4tdmFsdWUoJHBvaW50KSB7XG4gIEBpZiB0eXBlLW9mKCRwb2ludCkgPT0gbnVtYmVyIHtcbiAgICBAcmV0dXJuICRwb2ludDtcbiAgfVxuXG4gIEByZXR1cm4gYnJlYWtwb2ludC12YWx1ZS1mb3IoJHBvaW50KTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5jcmVtZW50LWZvcigkdmFsdWUpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UX0lOQ1JFTUVOVFMsIHVuaXQoJHZhbHVlKSk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWRlZmF1bHQtaW5jbHVzaXZpdHkoJHZhbHVlLCAkZGVmYXVsdCkge1xuICAkaW5jbHVzaXZpdHk6IG51bGw7XG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEgeyAkaW5jbHVzaXZpdHk6IG50aCgkdmFsdWUsIDIpOyB9XG5cbiAgQGlmICRpbmNsdXNpdml0eSB7XG4gICAgQHJldHVybiAkaW5jbHVzaXZpdHkgPT0gaW5jbHVzaXZlO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWFkanVzdGVkLWZvci1pbmNsdXNpdml0eSgkdmFsdWUsICRtaW4tb3ItbWF4LCAkaW5jbHVzaXZlOiBmYWxzZSkge1xuICAkdmFsdWU6IGJyZWFrcG9pbnQtY2xlYW4tdmFsdWUoJHZhbHVlKTtcblxuICBAaWYgbm90ICRpbmNsdXNpdmUge1xuICAgIEBpZiAkbWluLW9yLW1heCA9PSBtaW4ge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKyBicmVha3BvaW50LWluY3JlbWVudC1mb3IoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR2YWx1ZTogJHZhbHVlIC0gYnJlYWtwb2ludC1pbmNyZW1lbnQtZm9yKCR2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBcIigjeyRtaW4tb3ItbWF4fS13aWR0aDogI3skdmFsdWV9KVwiO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXRpbml6ZS1tZWRpYS1xdWVyeSgkbWVkaWEtcXVlcnkpIHtcbiAgQHJldHVybiBcIiN7JG1lZGlhLXF1ZXJ5fSBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksICN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpXCI7XG59XG5cblxuXG5cblxuQG1peGluIGJyZWFrcG9pbnQtYWZ0ZXIoJHBvaW50KSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kICN7YnJlYWtwb2ludC1hZGp1c3RlZC1mb3ItaW5jbHVzaXZpdHkoJHBvaW50LCBtaW4pfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGFmdGVyKCRwb2ludCkgeyBAaW5jbHVkZSBicmVha3BvaW50LWFmdGVyKCRwb2ludCkgeyBAY29udGVudDsgfSB9XG5cbkBtaXhpbiBicmVha3BvaW50LWJlZm9yZSgkcG9pbnQpIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgI3ticmVha3BvaW50LWFkanVzdGVkLWZvci1pbmNsdXNpdml0eSgkcG9pbnQsIG1heCl9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYmVmb3JlKCRwb2ludCkgeyBAaW5jbHVkZSBicmVha3BvaW50LWJlZm9yZSgkcG9pbnQpIHsgQGNvbnRlbnQ7IH0gfVxuXG5AbWl4aW4gYnJlYWtwb2ludCgkYWZ0ZXI6IG51bGwsICRiZWZvcmU6IG51bGwsICRmcm9tOiBudWxsLCAkdG86IG51bGwsICR1bnRpbDogbnVsbCwgJHJldGluYTogZmFsc2UpIHtcbiAgJG1pbi13aWR0aDogbnVsbDtcbiAgJG1heC13aWR0aDogbnVsbDtcbiAgJG1pbi1pbmNsdXNpdmU6IG51bGw7XG4gICRtYXgtaW5jbHVzaXZlOiBudWxsO1xuXG4gIC8vICRhZnRlciBkZWZhdWx0cyB0byBleGNsdXNpdmVcbiAgQGlmICRhZnRlciB7XG4gICAgJG1pbi13aWR0aDogbnRoKCRhZnRlciwgMSk7XG4gICAgJG1pbi1pbmNsdXNpdmU6IGJyZWFrcG9pbnQtZGVmYXVsdC1pbmNsdXNpdml0eSgkYWZ0ZXIsIGZhbHNlKTtcbiAgfVxuXG4gIC8vICRmcm9tIGRlZmF1bHRzIHRvIGluY2x1c2l2ZVxuICBAaWYgJGZyb20ge1xuICAgICRtaW4td2lkdGg6IG50aCgkZnJvbSwgMSk7XG4gICAgJG1pbi1pbmNsdXNpdmU6IGJyZWFrcG9pbnQtZGVmYXVsdC1pbmNsdXNpdml0eSgkZnJvbSwgdHJ1ZSk7XG4gIH1cblxuICAvLyAkYmVmb3JlIGRlZmF1bHRzIHRvIGV4Y2x1c2l2ZVxuICBAaWYgJGJlZm9yZSB7XG4gICAgJG1heC13aWR0aDogbnRoKCRiZWZvcmUsIDEpO1xuICAgICRtYXgtaW5jbHVzaXZlOiBicmVha3BvaW50LWRlZmF1bHQtaW5jbHVzaXZpdHkoJGJlZm9yZSwgZmFsc2UpO1xuICB9XG5cbiAgLy8gJHRvIGRlZmF1bHRzIHRvIGluY2x1c2l2ZVxuICBAaWYgJHRvIHtcbiAgICAkbWF4LXdpZHRoOiBudGgoJHRvLCAxKTtcbiAgICAkbWF4LWluY2x1c2l2ZTogYnJlYWtwb2ludC1kZWZhdWx0LWluY2x1c2l2aXR5KCR0bywgdHJ1ZSk7XG4gIH1cblxuICAvLyAkdW50aWwgZGVmYXVsdHMgdG8gZXhjbHVzaXZlXG4gIEBpZiAkdW50aWwge1xuICAgICRtYXgtd2lkdGg6IG50aCgkdW50aWwsIDEpO1xuICAgICRtYXgtaW5jbHVzaXZlOiBicmVha3BvaW50LWRlZmF1bHQtaW5jbHVzaXZpdHkoJHVudGlsLCBmYWxzZSk7XG4gIH1cblxuICBAaWYgJG1heC13aWR0aCB7ICRtYXgtd2lkdGg6IGJyZWFrcG9pbnQtYWRqdXN0ZWQtZm9yLWluY2x1c2l2aXR5KCRtYXgtd2lkdGgsIG1heCwgJG1heC1pbmNsdXNpdmUpOyB9XG4gIEBpZiAkbWluLXdpZHRoIHsgJG1pbi13aWR0aDogYnJlYWtwb2ludC1hZGp1c3RlZC1mb3ItaW5jbHVzaXZpdHkoJG1pbi13aWR0aCwgbWluLCAkbWluLWluY2x1c2l2ZSk7IH1cblxuICAkbWVkaWEtcXVlcnk6IFwic2NyZWVuXCI7XG4gIEBpZiAkbWluLXdpZHRoIHsgJG1lZGlhLXF1ZXJ5OiAkbWVkaWEtcXVlcnkgKyBcIiBhbmQgI3skbWluLXdpZHRofVwiOyB9XG4gIEBpZiAkbWF4LXdpZHRoIHsgJG1lZGlhLXF1ZXJ5OiAkbWVkaWEtcXVlcnkgKyBcIiBhbmQgI3skbWF4LXdpZHRofVwiOyB9XG4gIEBpZiAkcmV0aW5hIHsgJG1lZGlhLXF1ZXJ5OiBicmVha3BvaW50LXJldGluaXplLW1lZGlhLXF1ZXJ5KCRtZWRpYS1xdWVyeSk7IH1cblxuICBAbWVkaWEgI3skbWVkaWEtcXVlcnl9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5cblxuQG1peGluIHByaW50KCkge1xuICBAbWVkaWEgcHJpbnQgeyBAY29udGVudDsgfVxufVxuXG5cblxuQG1peGluIHJldGluYSgpIHtcbiAgQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSkgeyBAY29udGVudDsgfVxufVxuXG5cblxuQGVhY2ggJGJyZWFrcG9pbnQsICR3aWR0aCBpbiAkQlJFQUtQT0lOVFMge1xuICAubWVkaWFfX2hlbHBlcnMtLWhpZGUtYmVmb3JlLSN7JGJyZWFrcG9pbnR9IHtcbiAgICBAaW5jbHVkZSBiZWZvcmUoJHdpZHRoKSB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgfVxuXG4gIC5tZWRpYV9faGVscGVycy0taGlkZS1hZnRlci0jeyRicmVha3BvaW50fSB7XG4gICAgQGluY2x1ZGUgYWZ0ZXIoJHdpZHRoKSB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgfVxuXG4gIC5tZWRpYV9faGVscGVycy0tc2hvdy1hZnRlci0jeyRicmVha3BvaW50fSB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGFmdGVyKCR3aWR0aCkgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG4iLCIuaGVscGVyLS12aXN1YWxseS1oaWRkZW4ge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbn1cbiIsIi8vICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgX19fX18gICAgICAgLyAgL1xcICAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOjpcXCAgICAgLyAgLzo6XFwgICAgICAvICAvOi9fICAgICAgLyAgLzovX1xuLy8gICAgIC8gIC86L1xcOlxcICAgLyAgLzovXFw6XFwgICAgLyAgLzovIC9cXCAgICAvICAvOi8gL1xcXG4vLyAgICAvICAvOi9+Lzo6XFwgLyAgLzovfi86OlxcICAvICAvOi8gLzo6XFwgIC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAvOi9cXDovX18vOi8gLzovXFw6XFwvX18vOi8gLzovXFw6XFwvX18vOi8gLzovIC9cXFxuLy8gICBcXCAgXFw6XFwvOi9+Lzp8ICBcXDpcXC86L19fXFwvXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXC86LyAvOi9cbi8vICAgIFxcICBcXDo6LyAvOi8gXFwgIFxcOjovICAgICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOjovIC86L1xuLy8gICAgIFxcICBcXDpcXC86LyAgIFxcICBcXDpcXCAgICAgICBcXF9fXFwvIC86LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgXFwgIFxcOjovICAgICBcXCAgXFw6XFwgICAgICAgIC9fXy86LyAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgXFxfX1xcLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbmh0bWwgeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbiosXG4qOmJlZm9yZSxcbio6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHdoaXRlKTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG59XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG4iLCIvLypcbi8vIEBwYXR0ZXJuIENvbG9yc1xuLy8gQGdyb3VwIEhlbHBlclxuLy9cbi8vIFRoaXMgc3R5bGVzaGVldCBwcm92aWRlcyBhIGNlbnRyYWxpemVkIGxvY2F0aW9uIHRvIG1hbmFnZSBjb2xvcnMuIENvbG9yc1xuLy8gc2hvdWxkICoqbmV2ZXIqKiBiZSBkZWNsYXJlZCBpbiBDU1MgZGlyZWN0bHk7IGluc3RlYWQsIGFkZCB0aGUgY29sb3IgdG8gdGhlXG4vLyBgJENPTE9SU2AgbWFwIChmb2xsb3dpbmcgdGhlIFwiY29sb3ItbW9kaWZpZXJcIiBuYW1pbmcgY29udmVudGlvbikgYW5kXG4vLyB0aGVuIGluY2x1ZGUgaXQgYXMgcmVxdWlyZWQgdXNpbmcgdGhlIGBjb2xvcigpYCBmdW5jdGlvbiBkZXNjcmliZWQgYmVsb3cuXG4vL1xuLy8gVGhlIGNvbG9yIGNvbXBvbmVudCBhbHNvIHByb3ZpZGVzIHNvbWUgdXRpbGl0eSBtZXRob2RzIHRvIGRhcmtlbiAoYHNoYWRlKClgKVxuLy8gYW5kIGxpZ2h0ZW4gKGB0aW50KClgKSBjb2xvcnMg4oCUwqB1c2UgdGhlc2Ugb25seSBmb3Igb25lLW9mZnMgdGhhdCBhcmUgZGVlbWVkXG4vLyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gRm9yIHZhcmlhdGlvbnMgdGhhdCBhcmUgdXNlZCBpbiBtdWx0aXBsZSBwbGFjZXMsIGFkZFxuLy8gYSBuZXcgdmFyaWF0aW9uIHRvIHRoZSBgJENPTE9SU2AgbWFwLlxuXG5cbiRVSV9DT0xPUlM6IChcbiAgd2hpdGU6ICggYmFzZTogcmdiKDI1NSwgMjU1LCAyNTUpICksXG4gIGJsYWNrOiAoIGJhc2U6IHJnYigzMCwgMzAsIDMxKSApLFxuXG4gIGdyYXk6IChcbiAgICBsaWdodDogcmdiKDI0MiwgMjQyLCAyNDMpLFxuICAgIGJhc2U6IHJnYigyMjcsIDIyOCwgMjMwKSxcbiAgICBkYXJrOiByZ2IoMjA5LCAyMTEsIDIxNSksXG4gICAgZGFya2VyOiByZ2IoMTU2LCAxNTcsIDE2NSksXG4gICAgZGFya2VzdDogcmdiKDExMCwgMTExLCAxMjIpXG4gICksXG5cbiAgeWVsbG93OiAoXG4gICAgYmFzZTogcmdiKDI1MywgMjQ3LCAxNzUpLFxuICAgIGRhcms6IHJnYigxMzMsIDEyNiwgNTApXG4gICksXG5cbiAgYmx1ZTogKFxuICAgIGJhc2U6IHJnYigxODMsIDIxNCwgMjQ2KSxcbiAgICBkYXJrOiByZ2IoMTQwLCAxOTQsIDI1MSksXG4gICAgZGFya2VyOiByZ2IoOTgsIDEyMSwgMTQ0KVxuICApXG4pO1xuXG5AZnVuY3Rpb24gdWktY29sb3IoJGNvbG9yLCAkc2hhZGU6IGJhc2UpIHtcbiAgQHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJFVJX0NPTE9SUywgJGNvbG9yKSwgJHNoYWRlKTtcbn1cblxuXG4kQ09MT1JTOiAoXG4gIHdoaXRlOiByZ2IoMjU1LCAyNTUsIDI1NSksXG4gIGJsYWNrOiByZ2IoMzAsIDMwLCAzMSksXG5cbiAgYmx1ZS1saWdodDogcmdiKDEzNSwgMTk0LCAyMzUpLFxuICBibHVlOiByZ2IoNjUsIDE1MCwgMjIzKSxcbiAgYmx1ZS1kYXJrOiByZ2IoNDAsIDEzNCwgMjE0KSxcbiAgYmx1ZS1kYXJrZXI6IHJnYigyNiwgOTIsIDE3MSksXG5cbiAgeWVsbG93OiByZ2IoMjUyLCAyNDYsIDE2MSksXG4gIHllbGxvdy1kYXJrOiByZ2IoMTM5LCAxMzQsIDcyKSxcblxuICBzbGF0ZS1saWdodDogcmdiKDU1LCA1NywgNjApLFxuICBzbGF0ZTogcmdiKDUxLCA1NCwgNTgpLFxuXG4gIGdyYXktbGlnaHRlcjogcmdiKDI0OCwgMjQ4LCAyNDgpLFxuICBncmF5LWxpZ2h0OiByZ2IoMjQxLCAyNDEsIDI0MSksXG4gIGdyYXk6IHJnYigyMDcsIDIwNywgMjA3KSxcbiAgZ3JheS1kYXJrOiByZ2IoMTc3LCAxNzcsIDE3NyksXG4gIGdyYXktZGFya2VyOiByZ2IoNzQsIDc0LCA3NClcbik7XG5cblxuLy8qXG4vLyBSZXR1cm5zIHRoZSBjb2xvciBhc3NvY2lhdGVkIHdpdGggdGhlIHBhc3NlZCBpZGVudGlmaWVyLlxuLy9cbi8vIEBhdXRob3IgQ2hyaXMgU2F1dmUgKGdpdGh1YjogbGVtb25tYWRlKVxuLy9cbi8vIEBwYXJhbSB7U3RyaW5nfSAkY29sb3IgLSBUaGUgY29sb3IgKG9yIG90aGVyIGlkZW50aWZpZXIgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHMgdG8gYSBjb2xvcikgdG8gc2VhcmNoIGZvciBpbiB0aGVcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwgYCRDT0xPUlNgIG1hcC5cbi8vXG4vLyBAZXhhbXBsZSBzY3NzXG4vLyAuZm9vIHtcbi8vICAgYmFja2dyb3VuZDogY29sb3IocmVkKTsgLy8gPT4gYmFja2dyb3VuZDogcmdiKDI0NSwgNzksIDg0KTtcbi8vIH1cbi8vXG4vLyBAcmV0dXJucyB7Q29sb3J9XG5cbkBmdW5jdGlvbiBjb2xvcigkY29sb3IpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRDT0xPUlMsICRjb2xvcik7XG59XG5cblxuLy8qXG4vLyBTbGlnaHRseSBsaWdodGVuIGEgY29sb3IuXG4vL1xuLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGNvbG9yIHRvIHRpbnQuXG4vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBQZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHRoZSByZXR1cm5lZCBjb2xvci5cbi8vXG4vLyBAcmV0dXJucyB7Q29sb3J9XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoJGNvbG9yLCBjb2xvcih3aGl0ZSksICRwZXJjZW50YWdlKTtcbn1cblxuXG4vLypcbi8vIFNsaWdodGx5IGRhcmtlbiBhIGNvbG9yLlxuLy9cbi8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBjb2xvciB0byBzaGFkZS5cbi8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyY2VudGFnZSAtIFBlcmNlbnRhZ2Ugb2YgYCRjb2xvcmAgaW4gdGhlIHJldHVybmVkIGNvbG9yLlxuLy9cbi8vIEByZXR1cm5zIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoJGNvbG9yLCBjb2xvcihibGFjayksICRwZXJjZW50YWdlKTtcbn1cbiIsIkBtaXhpbiBpY29uLS1yZWNvbG9yKCRjb2xvciwgJHZhcmlhbnQ6IGJhc2UpIHtcbiAgZmlsbDogdWktY29sb3IoJGNvbG9yLCAkdmFyaWFudCk7XG4gIHN0cm9rZTogdWktY29sb3IoJGNvbG9yLCAkdmFyaWFudCk7XG59XG5cblxuLmljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHN0cm9rZS13aWR0aDogMjtcbn1cblxuJGljb24tLXNpemUtbWVkaXVtOiByZW0oMjQpO1xuJGljb24tLXNpemUtbGFyZ2U6IHJlbSgyOCk7XG5cbi5pY29uLS1tZWRpdW0ge1xuICBoZWlnaHQ6ICRpY29uLS1zaXplLW1lZGl1bTtcbiAgd2lkdGg6ICRpY29uLS1zaXplLW1lZGl1bTtcbn1cblxuLmljb24tLWxhcmdlIHtcbiAgaGVpZ2h0OiAkaWNvbi0tc2l6ZS1sYXJnZTtcbiAgd2lkdGg6ICRpY29uLS1zaXplLWxhcmdlO1xufVxuXG5cbiRpY29uLWFjdGlvbi0tc2l6ZTogMS42NXJlbTtcblxuLmljb24tLWFjdGlvbiB7XG4gIGhlaWdodDogJGljb24tYWN0aW9uLS1zaXplO1xuICB3aWR0aDogJGljb24tYWN0aW9uLS1zaXplO1xufVxuXG4kaWNvbi1oYW1idXJnZXItLXdpZHRoOiAycmVtO1xuJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQ6IDRweDtcblxuLmljb24tLWhhbWJ1cmdlciB7XG4gIGhlaWdodDogJGljb24tYWN0aW9uLS1zaXplO1xuICB3aWR0aDogJGljb24taGFtYnVyZ2VyLS13aWR0aDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG9wYWNpdHk6IDAuNjtcbiAgdG9wOiAwLjJlbTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6ICRpY29uLWhhbWJ1cmdlci0tc2xpY2UtaGVpZ2h0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6ICgkaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodCAvIDIpO1xuICAgIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICB9XG5cbiAgJjpiZWZvcmUgeyB0b3A6IDA7IH1cbiAgJjphZnRlciB7IGJvdHRvbTogMDsgfVxufVxuXG4uaWNvbi0taGFtYnVyZ2VyX19zbGljZSB7XG4gIGhlaWdodDogJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQ7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAoJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQgLyAyKTtcbiAgYmFja2dyb3VuZDogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7IGxlZnQ6IDA7XG4gIG1hcmdpbi10b3A6ICgtMC41ICogJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQpO1xufVxuXG4uaWNvbi0tZ3JheS1kYXJrZXIge1xuICBAaW5jbHVkZSBpY29uLS1yZWNvbG9yKGdyYXksIGRhcmtlcik7XG59XG5cbi5pY29uLS1jbG9zZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3BhY2l0eTogMC42O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiAkaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodDtcbiAgICB3aWR0aDogMTQwJTtcbiAgICBib3JkZXItcmFkaXVzOiAoJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQgLyAyKTtcbiAgICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IC03MCU7XG4gICAgbWFyZ2luLXRvcDogKCRpY29uLWhhbWJ1cmdlci0tc2xpY2UtaGVpZ2h0IC8gLTIpO1xuICB9XG5cbiAgJjpiZWZvcmUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IH1cbiAgJjphZnRlciB7IHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH1cbn1cblxuLmljb24tLWRpc2Nsb3N1cmUge1xuICBoZWlnaHQ6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIHdpZHRoOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtNTAlKTtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgbWFyZ2luLWxlZnQ6IHF1YXJ0ZXIoZGVmYXVsdChzcGFjaW5nKSk7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgL19fL1xcICAgICAgICAvX18vXFwgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86L18gICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcICAgICAgLyAgLzovICAgICAgIC8gIC86L19cbi8vICAgICAvICAvOi8gL1xcICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXCAgICAvICAvOi8gICAgICAgLyAgLzovIC9cXFxuLy8gICAgLyAgLzovIC86L19fICBcXCAgXFw6XFwgIF9fX19fXFxfX1xcOlxcICAvICAvOi8gIF9fXyAgLyAgLzovIC86OlxcXG4vLyAgIC9fXy86LyAvOi9fXy9cXCAgXFxfX1xcOlxcL19fLzo6Ojo6Ojo6XFwvX18vOi8gIC8gIC9cXC9fXy86LyAvOi9cXDpcXFxuLy8gICBcXCAgXFw6XFwvOi9cXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcfn5cXH5+XFwvXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXC86L34vOi9cbi8vICAgIFxcICBcXDo6LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgfn5+ICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOjovIC86L1xuLy8gICAgIFxcICBcXDpcXCAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcLzovICAgIFxcX19cXC8gLzovXG4vLyAgICAgIFxcICBcXDpcXCAgIFxcICBcXDo6LyAgICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6Oi8gICAgICAgL19fLzovXG4vLyAgICAgICBcXF9fXFwvICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cbi8vXG4vLypcbi8vIEBwYXR0ZXJuIEZ1bmN0aW9uc1xuLy8gQGdyb3VwIEhlbHBlclxuLy8gQGF1dGhvciBDaHJpcyBTYXV2ZSAoZ2l0aHViOiBsZW1vbm1hZGUpXG4vL1xuLy8gRnVuY3Rpb25zIHNpbXBseSByZXR1cm4gYSB2YWx1ZTogdGhleSBkb24ndCBhY3R1YWxseSBhZGQgYSBhbnkgc3R5bGVzIHRvXG4vLyB0aGUgY29tcGlsZWQgc3R5bGVzaGVldC4gVXNlIHRoZXNlIHRvIHByb3ZpZGUgc29sdXRpb25zIHRvIGNvbW1vbiBjYWxjdWxhdGlvbnNcbi8vIG9yIFNhc3Mgb3BlcmF0aW9ucy5cblxuXG5cbi8vKlxuLy8gUmVtb3ZlcyB0aGUgdW5pdHMgZnJvbSBhIG51bWJlci5cbi8vXG4vLyBAZGVwcmVjYXRlZCAyLjEuMFxuLy8gQHByaXZhdGVcbi8vXG4vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVGhlIG51bWJlciAodXN1YWxseSBhIG1lYXN1cmVtZW50KSB0aGF0IHlvdSB3b3VsZFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UgdG8gcmVtb3ZlIHVuaXRzIGZyb20uXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBzdHJpcC11bml0cyg0cmVtKTsgLy8gPT4gNFxuLy8gJGJhcjogc3RyaXAtdW5pdHMoMzAlKTsgLy8gPT4gMzBcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xuICBAcmV0dXJuICgkdmFsdWUgLyAoJHZhbHVlKjAgKyAxKSk7XG59XG5cbi8vKlxuLy8gQ29udmVydHMgdGhlIHBhc3NlZCB2YWx1ZSAoYXNzdW1lZCB0byBiZSBpbiBwaXhlbHMpIHRvIHRoZSBjb3JyZXNwb25kaW5nIGByZW1gXG4vLyB2YWx1ZS4gVGhpcyBjb252ZXJzaW9uIGFzc3VtZXMgYSBiYXNlIGZvbnQgc2l6ZSBvZiBgMTZweGAuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFRoZSBwaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8gQHJldHVybnMge051bWJlcn1cblxuQGZ1bmN0aW9uIHJlbSgkdmFsdWUpIHtcbiAgQHJldHVybiAoc3RyaXAtdW5pdHMoJHZhbHVlKSAvIDE2ICogMXJlbSk7XG59XG5cbi8vKlxuLy8gSGFsdmVzIGEgZ2l2ZW4gbWVhc3VyZW1lbnQuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICRtZWFzdXJlbWVudCAtIFRoZSBtZWFzdXJlbWVudCB0byBoYWx2ZS5cbi8vIEByZXR1cm5zIHtOdW1iZXJ9XG4vLyBAYWxpYXMgaGFsZlxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBoYWx2ZSg0cmVtKTsgLy8gPT4gMnJlbVxuLy8gJGJhcjogaGFsZigzNik7IC8vID0+IDE4XG5cbkBmdW5jdGlvbiBoYWx2ZSgkbWVhc3VyZW1lbnQpIHtcbiAgQHJldHVybiAoJG1lYXN1cmVtZW50IC8gMik7XG59XG5cbkBmdW5jdGlvbiBoYWxmKCRtZWFzdXJlbWVudCkge1xuICBAcmV0dXJuIGhhbHZlKCRtZWFzdXJlbWVudCk7XG59XG5cbi8vKlxuLy8gUXVhcnRlcnMgYSBnaXZlbiBtZWFzdXJlbWVudC5cbi8vXG4vLyBAcGFyYW0ge051bWJlcn0gJG1lYXN1cmVtZW50IC0gVGhlIG1lYXN1cmVtZW50IHRvIHF1YXJ0ZXIuXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBxdWFydGVyKDRyZW0pOyAvLyA9PiAxcmVtXG5cbkBmdW5jdGlvbiBxdWFydGVyKCRtZWFzdXJlbWVudCkge1xuICBAcmV0dXJuICgkbWVhc3VyZW1lbnQgLyA0KTtcbn1cblxuLy8qXG4vLyBEb3VibGVzIGEgZ2l2ZW4gbWVhc3VyZW1lbnQuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICRtZWFzdXJlbWVudCAtIFRoZSBtZWFzdXJlbWVudCB0byBkb3VibGUuXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBkb3VibGUoNHJlbSk7IC8vID0+IDhyZW1cblxuQGZ1bmN0aW9uIGRvdWJsZSgkbWVhc3VyZW1lbnQpIHtcbiAgQHJldHVybiAoJG1lYXN1cmVtZW50ICogMik7XG59XG5cbi8vKlxuLy8gTmVnYXRlcyBhIGdpdmVuIG1lYXN1cmVtZW50LlxuLy9cbi8vIEBwYXJhbSB7TnVtYmVyfSAkbWVhc3VyZW1lbnQgLSBUaGUgbWVhc3VyZW1lbnQgdG8gbmVnYXRlLlxuLy8gQHJldHVybnMge051bWJlcn1cbi8vXG4vLyBAZXhhbXBsZVxuLy8gJGZvbzogbmVnYXRpdmUoNHJlbSk7IC8vID0+IC00cmVtXG4vLyAkYmFyOiBuZWdhdGl2ZSgtNHJlbSk7IC8vID0+IDRyZW1cblxuQGZ1bmN0aW9uIG5lZ2F0aXZlKCRtZWFzdXJlbWVudCkge1xuICBAcmV0dXJuICgkbWVhc3VyZW1lbnQgKiAtMSk7XG59XG5cbi8vKlxuLy8gTXVsdGlwbGVzIGEgZ2l2ZW4gbWVhc3VyZW1lbnQgYnkgdGhlIHByb3ZpZGVkIGZhY3Rvci4gVXNlIHRoaXMgaW4gdGhvc2Vcbi8vIChyYXJlKSBpbnN0YW5jZXMgd2hlcmUgeW91IG5lZWQgYSBmYWN0b3IgdGhhdCBpcyBub3QgYDJgLCBgMC41YCwgYDAuMjVgLCBvclxuLy8gYC0xYCAoaW4gd2hpY2ggY2FzZSwgdXNlIHRoZSByZWxldmFudCBtdWx0aXBsaWNhdGlvbiBmdW5jdGlvbiBkaXJlY3RseSkuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICRtZWFzdXJlbWVudCAtIFRoZSBtZWFzdXJlbWVudCB0byBtdWx0aXBsZS5cbi8vIEBwYXJhbSB7TnVtYmVyfSAkZmFjdG9yICAgICAgLSBUaGUgbXVsdGlwbGljYXRpb24gZmFjdG9yLlxuLy8gQHJldHVybnMge051bWJlcn1cbi8vXG4vLyBAZXhhbXBsZVxuLy8gJGZvbzogbXVsdGlwbHkoNHJlbSwgMyk7IC8vID0+IDEycmVtXG4vLyAkYmFyOiBtdWx0aXBseSg0cmVtLCAyKTsgLy8gPT4gOHJlbSBCVVQgZG9uJ3QgZG8gdGhpcyDigJTCoHVzZSBkb3VibGUoNHJlbSkgaW5zdGVhZFxuXG5AZnVuY3Rpb24gbXVsdGlwbHkoJG1lYXN1cmVtZW50LCAkZmFjdG9yKSB7XG4gIEByZXR1cm4gKCRtZWFzdXJlbWVudCAqICRmYWN0b3IpO1xufVxuIiwiLy8gICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgICAgICAgICAgICAgLyAgL1xcICAgICAgICBfX18gICAgLyAgL1xcICAgICAgICAvX18vXFwgICAgICAgIF9fX1xuLy8gICAgICAgICAgICAgICAgICAvICAvOjpcXCAgICAgIC9fXy98ICAvICAvOjpcXCAgICAgICBcXCAgXFw6XFwgICAgICAvICAvXFxcbi8vICAgIF9fXyAgICAgX19fICAvICAvOi9cXDpcXCAgICB8ICB8OnwgLyAgLzovXFw6XFwgICAgICAgXFwgIFxcOlxcICAgIC8gIC86L1xuLy8gICAvX18vXFwgICAvICAvXFwvICAvOi9+Lzo6XFwgICB8ICB8OnwvICAvOi8gIFxcOlxcICBfX18gIFxcICBcXDpcXCAgLyAgLzovXG4vLyAgIFxcICBcXDpcXCAvICAvOi9fXy86LyAvOi9cXDpcXF9ffF9ffDovX18vOi8gXFxfX1xcOlxcL19fL1xcICBcXF9fXFw6XFwvICAvOjpcXFxuLy8gICAgXFwgIFxcOlxcICAvOi9cXCAgXFw6XFwvOi9fX1xcL19fLzo6OjpcXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcIC8gIC86L19fLzovXFw6XFxcbi8vICAgICBcXCAgXFw6XFwvOi8gIFxcICBcXDo6LyAgICAgICB+XFx+flxcOlxcICBcXDpcXCAgLzovICBcXCAgXFw6XFwgIC86L1xcX19cXC8gIFxcOlxcXG4vLyAgICAgIFxcICBcXDo6LyAgICBcXCAgXFw6XFwgICAgICAgICBcXCAgXFw6XFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86LyAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgXFxfX1xcLyAgICAgIFxcICBcXDpcXCAgICAgICAgIFxcX19cXC9cXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gICAgICAgIFxcX19cXC9cbi8vICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi5ncmlkIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmdyaWQtLXZlcnRpY2FsbHktY2VudGVyZWQge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZ3JpZC0tYWxpZ24tcmlnaHQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uZ3JpZC0tb3V0c2lkZS1zcGFjaW5nIHtcbiAgbWFyZ2luOiBkZWZhdWx0KHNwYWNpbmcpIDA7XG4gIHBhZGRpbmc6IDAgZGVmYXVsdChzcGFjaW5nKTtcbn1cblxuLmdyaWQtLXNwYWNlLWJldHdlZW4ge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgPiAuZ3JpZF9faXRlbSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cbn1cblxuLmdyaWRfX2l0ZW0ge1xuICBwYWRkaW5nOiAwIChkZWZhdWx0KHNwYWNpbmcpIC8gMik7XG4gIGZsZXg6IDEgMSAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OiAwOyB9XG4gICY6bGFzdC1jaGlsZCB7IHBhZGRpbmctcmlnaHQ6IDA7IH1cbn1cblxuLmdyaWRfX2l0ZW0tLW5vLWZsZXgge1xuICBmbGV4OiAwIDAgYXV0bztcbn1cblxuLmdyaWRfX2l0ZW0tLWhhbGYge1xuICBmbGV4OiAwIDAgNTAlO1xufVxuXG5cblxuXG5cbi5jb250ZW50IHtcbiAgcGFkZGluZzogMCBkZWZhdWx0KHNwYWNpbmcpO1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgMDtcbn1cblxuLmNvbnRlbnQtLWV4dHJhLXZlcnRpY2FsLXNwYWNpbmcge1xuICBtYXJnaW46IG11bHRpcGx5KGRlZmF1bHQoc3BhY2luZyksIDMpIDA7XG59XG4iLCIvLyAgICBfX18gIF9fXyBfX18gXyAgXyAgIF8gXyAgX19fX18gX19fXG4vLyAgIHwgICBcXHwgX198IF9fL19cXHwgfCB8IHwgfHxfICAgXy8gX198XG4vLyAgIHwgfCkgfCBffHwgXy8gXyBcXCB8X3wgfCB8X198IHwgXFxfXyBcXFxuLy8gICB8X19fL3xfX198Xy9fLyBcXF9cXF9fXy98X19fX3xffCB8X19fL1xuLy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy9cbi8vIFRoaXMgc3R5bGVzaGVldCBkZWNhbHJlcyBkZWZhdWx0IHZhbHVlcyBmb3IgY29tbW9uIHZpc3VhbCBlbGVtZW50cy4gVXNlIHRoaXNcbi8vIG1hcCBpbiBwbGFjZSBvZiBkZWNsYXJpbmcgdmFyaWFibGVzLCB3aGljaCBjb3VsZCBiZSBzbGlnaHRseSBoYXJkZXIgdG8gcmVtZW1iZXJcbi8vIHRoZSBuYW1lIG9mIGFuZCBwcmVzZW50IG1vcmUgb2YgYSByaXNrIG9mIG5hbWluZyBjb25mbGljdHMuIFRvIGFkZCBhIGRlZmF1bHQsXG4vLyBhZGQgYSBkZXNjcmlwdGl2ZSBrZXkgbmFtZSB0byB0aGUgbWFwIHRoYXQgcmVmZXJlbmNlcyBhIG1hcCB0aGF0IGhhcyBhbiBgaW9zYFxuLy8gYW5kIGFuIGBhbmRyb2lkYCBrZXkuIFRoZW4sIHJldHJpZXZlIHRoZSB2YWx1ZSB1c2luZyBgZGVmYXVsdCgkcHJvcGVydHksICRwbGF0Zm9ybSlgLFxuLy8gd2hlcmUgcGxhdGZvcm0gZGVmYXVsdHMgdG8gaU9TLiBJZiB0aGUgcHJvcGVydHkgeW91IGFyZSBhZGRpbmcgaXMgYWxzbyBhIHZhbGlkXG4vLyBDU1MgcHJvcGVydHkgKGkuZS4sIGRlZmF1bHQgYm9yZGVycyBvciBib3JkZXIgcmFkaWkpLCB5b3UgY2FuIGRpcmVjdGx5IGluY2x1ZGVcbi8vIHRoYXQgZGVjbGFyYXRpb24gaW4gQ1NTIHVzaW5nIHRoZSBtaXhpbiB2ZXJzaW9uIG9mIGBkZWZhdWx0KClgLlxuXG5cblxuJERFRkFVTFRTOiAoXG4gIHNwYWNpbmc6IDFyZW0sXG4gIGJvcmRlci1yYWRpdXM6IDRweCxcbiAgbGluZS1oZWlnaHQ6IDEuMyxcbiAgY29udHJvbC1zaXplOiByZW0oMzQpLFxuICBjb250cm9sLXNpemUtLWxhcmdlOiByZW0oNDIpLFxuICBjb250cm9sLXBhZGRpbmc6IDAuNzVyZW0sXG4gIGJveC1zaGFkb3c6IDAgMCA0cHggcmdiYShjb2xvcihibGFjayksIDAuMylcbik7XG5cblxuXG5AZnVuY3Rpb24gZGVmYXVsdCgkcHJvcGVydHkpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRERUZBVUxUUywgJHByb3BlcnR5KTtcbn1cblxuQG1peGluIGRlZmF1bHQoJHByb3BlcnR5KSB7XG4gICN7JHByb3BlcnR5fTogZGVmYXVsdCgkcHJvcGVydHkpO1xufVxuIiwiJGNvbnRleHQ6IHotaW5kZXgtc3RhY2tpbmctY29udGV4dChnbG9iYWwsXG4gIChcbiAgICBjb250ZW50OiAxMCxcbiAgICBzaWRlYmFyOiAyMFxuICApXG4pO1xuXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG59XG5cbi5wYWdlIHtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgbWF4LWhlaWdodDogMTAwdmg7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5wYWdlX19jb250ZW50LFxuLnBhZ2VfX3NpZGViYXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wYWdlX19jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMSAxIDBweDtcbiAgQGluY2x1ZGUgei1pbmRleChjb250ZW50LCBnbG9iYWwpO1xuICBiYWNrZ3JvdW5kOiBjb2xvcih3aGl0ZSk7XG5cbiAgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgfVxufVxuXG4ucGFnZV9fc2lkZWJhciB7XG4gIEBpbmNsdWRlIHotaW5kZXgoc2lkZWJhciwgZ2xvYmFsKTtcbiAgZmxleDogMCAwIGF1dG87XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgX19fX18gICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgX19fICAgICAgICAgL19fL1xcICAgICAgIC8gIC86OlxcICAgICAgIC8gIC9cXCAgICAgICAgL19fL3xcbi8vICAgICAgLyAgLzo6fCAgICAgLyAgL1xcICAgICAgICBcXCAgXFw6XFwgICAgIC8gIC86L1xcOlxcICAgICAvICAvOi9fICAgICAgfCAgfDp8XG4vLyAgICAgLyAgLzovOnwgICAgLyAgLzovICAgICAgICAgXFwgIFxcOlxcICAgLyAgLzovICBcXDpcXCAgIC8gIC86LyAvXFwgICAgIHwgIHw6fFxuLy8gICAgLyAgLzovfDp8X18gL19fLzo6XFwgICAgIF9fX19fXFxfX1xcOlxcIC9fXy86LyBcXF9fXFw6fCAvICAvOi8gLzovXyAgX198X198Onxcbi8vICAgL19fLzovIHw6fCAvXFxcXF9fXFwvXFw6XFxfXyAvX18vOjo6Ojo6OjpcXFxcICBcXDpcXCAvICAvOi8vX18vOi8gLzovIC9cXC9fXy86Ojo6XFxfX19fXG4vLyAgIFxcX19cXC8gIHw6fC86LyAgIFxcICBcXDpcXC9cXFxcICBcXDpcXH5+XFx+flxcLyBcXCAgXFw6XFwgIC86LyBcXCAgXFw6XFwvOi8gLzovICAgflxcfn5cXDo6OjovXG4vLyAgICAgICB8ICB8Oi86LyAgICAgXFxfX1xcOjovIFxcICBcXDpcXCAgfn5+ICAgXFwgIFxcOlxcLzovICAgXFwgIFxcOjovIC86LyAgICAgfH5+fDp8fn5cbi8vICAgICAgIHwgIHw6Oi8gICAgICAvX18vOi8gICBcXCAgXFw6XFwgICAgICAgIFxcICBcXDo6LyAgICAgXFwgIFxcOlxcLzovICAgICAgfCAgfDp8XG4vLyAgICAgICB8ICB8Oi8gICAgICAgXFxfX1xcLyAgICAgXFwgIFxcOlxcICAgICAgICBcXF9fXFwvICAgICAgIFxcICBcXDo6LyAgICAgICB8ICB8Onxcbi8vICAgICAgIHxfX3wvICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICB8X198L1xuLy9cbi8vKlxuLy8gQHBhdHRlcm4gWi1JbmRleFxuLy8gQHRhZ2xpbmUgU3RhY2sgaXQgdXAhXG4vLyBAZ3JvdXAgSGVscGVyXG4vL1xuLy8gYHotaW5kZXhgIGlzIG1hbmFnZWQgaW4gdGhpcyBjZW50cmFsaXplZCBzdHlsZXNoZWV0IHRvIGNyZWF0ZSBhIG1hbmFnZWFibGVcbi8vIGFuZCBzZWxmLWRvY3VtZW50aW5nIHN5c3RlbS4gVGhlIHByb2Nlc3MgdG8gYWRkIHotaW5kZXhlcyBpcyBhcyBmb2xsb3dzOlxuLy9cbi8vIDEuIEZvciBlYWNoIHN0YWNraW5nIGNvbnRleHQgKGEgc2V0IG9mIGVsZW1lbnRzIGZvciB3aGljaCB5b3Ugd291bGQgbGlrZVxuLy8gICAgdG8gbWFpbnRhaW4gdGhlIHN0YWNraW5nIG9yZGVyKSwgY3JlYXRlIGEgbmV3IG1hcCB3aXRoIGEgZGVzY3JpcHRpdmVcbi8vICAgIHZhcmlhYmxlIG5hbWUuXG4vL1xuLy8gMi4gQWRkIGVudHJpZXMgdG8gdGhlIG1hcCBmb3IgZWFjaCBlbGVtZW50IHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gY29udHJvbCB0aGVcbi8vICAgIHN0YWNraW5nIGNvbnRleHQgb2YuIFRoZSBkZWx0YSBiZXR3ZWVuIGVsZW1lbnRzIHNob3VsZCBub3QgbWF0dGVyLCBvbmx5XG4vLyAgICB0aGUgbnVtZXJpYyBvcmRlci4gRWxlbWVudHMgd2l0aCBoaWdoZXIgbnVtYmVycyB3aWxsIHN0YWNrIG9uIHRvcCBvZlxuLy8gICAgZWxlbWVudHMgd2l0aCBsb3dlciB6LWluZGV4ZXMuXG4vL1xuLy8gMy4gYEBpbmNsdWRlIHotaW5kZXhgIGluIHlvdXIgc3R5bGVzaGVldCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgeW91IGFyZVxuLy8gICAgc2V0dGluZyB6LWluZGV4IGZvciBhbmQgdGhlIG1hcCBuYW1lIGRlZmluZWQgaW4gc3RlcCAxLlxuLy9cbi8vIDQuIFByb2ZpdC5cblxuXG5cbiRaX0lOREVYRVM6IChcbiAgZ2xvYmFsOiAoXG4gICAgY29udGVudDogMTAsXG4gICAgc2lkZWJhcjogMjBcbiAgKSxcblxuICBwYWdlOiAoXG4gICAgYXZhdGFyOiAxMCxcbiAgICBwb3BvdmVyLXJlc3Rpbmc6IDIwLFxuICAgIHBvcG92ZXItZGVhY3RpdmF0aW5nOiAzMCxcbiAgICBwb3BvdmVyLWFjdGl2ZTogNDBcbiAgKSxcblxuICBhdmF0YXI6IChcbiAgICBpbml0aWFsczogMTAsXG4gICAgaW1hZ2U6IDIwXG4gICksXG5cbiAgdGFibGU6IChcbiAgICBjZWxsOiAxMCxcbiAgICBjZWxsLXBlcnNpc3RhbnQ6IDIwLFxuICAgIGJhY2tkcm9wOiAzMFxuICApXG4pO1xuXG5cblxuLy8qXG4vLyBUaGlzIG1peGluIGNyZWF0ZXMgYSB6LWluZGV4IGRlY2xhcmF0aW9uIGJhc2VkIG9uIHRoZSBlbGVtZW50IGFuZCBjb250ZXh0XG4vLyBwYXNzZWQgaW4uIFRoZSBtaXhpbiB3aWxsIGF0dGVtcHQgdG8gcmV0cmlldmUgdGhlIGAkY29udGV4dGAgYXMgYSBrZXkgZnJvbVxuLy8gdGhlIGdsb2JhbCBgJFotSU5ERVhFU2AgbWFwLCBhbmQgd2lsbCB0aGVuIHRyeSB0byByZXRyaWV2ZSB0aGUgYCRlbGVtZW50YFxuLy8gZnJvbSB0aGF0IG1hcC4gSWYgdGhpcyBpcyBzdWNjZXNzZnVsLCB0aGUgei1pbmRleCBkZWNsYXJhdGlvbiBpcyBpbmNsdWRlZC5cbi8vXG4vLyBAcGFyYW0ge1N0cmluZ30gJGVsZW1lbnQgLSBUaGUgZWxlbWVudCB3aXRoaW4gdGhlIHN0YWNraW5nIGNvbnRleHQgeW91IGFyZVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nIHRoZSBydWxlIGZvci5cbi8vIEBwYXJhbSB7U3RyaW5nfSAkY29udGV4dCAtIFRoZSBzdGFja2luZyBjb250ZXh0IHlvdSB3YW50IHRvIHNlYXJjaCBpbiBmb3Jcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAkZWxlbWVudGAuXG5cbkBtaXhpbiB6LWluZGV4KCRlbGVtZW50LCAkY29udGV4dCkge1xuICAkaW5kZXg6IG1hcC1nZXQobWFwLWdldCgkWl9JTkRFWEVTLCAkY29udGV4dCksICRlbGVtZW50KTtcblxuICBAaWYgJGluZGV4IHtcbiAgICB6LWluZGV4OiAkaW5kZXg7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHotaW5kZXgtc3RhY2tpbmctY29udGV4dCgkbmFtZSwgJHN0YWNrLW9yZGVyKSB7XG4gICRuZXctc3RhY2stb3JkZXI6ICggJG5hbWU6ICRzdGFjay1vcmRlciApO1xuICAkWl9JTkRFWEVTOiBtYXAtbWVyZ2UoJFpfSU5ERVhFUywgJG5ldy1zdGFjay1vcmRlcik7XG5cbiAgQHJldHVybiB0cnVlO1xufVxuIiwiLy8gICAgICAgIF9fXyAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAgIC8gIC9cXCAgICAgICAgL19fL1xcICAgICAgICBfX18gICAgLyAgL1xcXG4vLyAgICAgIC8gIC86L18gIC8gIC86OlxcICAgICAgIFxcICBcXDpcXCAgICAgIC8gIC9cXCAgLyAgLzovX1xuLy8gICAgIC8gIC86LyAvXFwvICAvOi9cXDpcXCAgICAgICBcXCAgXFw6XFwgICAgLyAgLzovIC8gIC86LyAvXFxcbi8vICAgIC8gIC86LyAvOi8gIC86LyAgXFw6XFwgIF9fX19fXFxfX1xcOlxcICAvICAvOi8gLyAgLzovIC86OlxcXG4vLyAgIC9fXy86LyAvOi9fXy86LyBcXF9fXFw6XFwvX18vOjo6Ojo6OjpcXC8gIC86OlxcL19fLzovIC86L1xcOlxcXG4vLyAgIFxcICBcXDpcXC86L1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFx+flxcfn5cXC9fXy86L1xcOlxcICBcXDpcXC86L34vOi9cbi8vICAgIFxcICBcXDo6LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgfn5+XFxfX1xcLyAgXFw6XFwgIFxcOjovIC86L1xuLy8gICAgIFxcICBcXDpcXCAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwgICAgICAgICBcXCAgXFw6XFxfX1xcLyAvOi9cbi8vICAgICAgXFwgIFxcOlxcICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcICAgICAgICAgXFxfX1xcLyAvX18vOi9cbi8vICAgICAgIFxcX19cXC8gICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgIFxcX19cXC9cblxuQG1peGluIHR5cGUtLWRlZmF1bHQtZm9udC1mYW1pbHkge1xuICBmb250LWZhbWlseTogU291cmNlIFNhbnMgUHJvLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuQG1peGluIHR5cGUtLW1vbm9zcGFjZS1mb250LWZhbWlseSB7XG4gIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgbW9ub3NwYWNlO1xufVxuXG5ib2R5IHtcbiAgdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgY29sb3I6IGNvbG9yKHNsYXRlKTtcbiAgQGluY2x1ZGUgdHlwZS0tZGVmYXVsdC1mb250LWZhbWlseTtcbn1cblxuYnV0dG9uLFxuaW5wdXQge1xuICBAaW5jbHVkZSB0eXBlLS1kZWZhdWx0LWZvbnQtZmFtaWx5O1xufVxuXG5cblxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCAudHlwZSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG5AbWl4aW4gdHlwZS0taGVhZGluZy0xIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGhlYWRpbmctMSk7XG59XG5cbkBtaXhpbiB0eXBlLS1oZWFkaW5nLTIge1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoZWFkaW5nLTIpO1xufVxuXG5AbWl4aW4gdHlwZS0taGVhZGluZy0zIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGhlYWRpbmctMyk7XG59XG5cbkBtaXhpbiB0eXBlLS1oZWFkaW5nLTQge1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgYXV0byBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFyayk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoZWFkaW5nLTQpO1xufVxuXG5AbWl4aW4gdHlwZS0taGVhZGluZy01IHtcbiAgbWFyZ2luOiBkZWZhdWx0KHNwYWNpbmcpIGF1dG8gaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICBAaW5jbHVkZSBmb250LXNpemUoaGVhZGluZy01KTtcbn1cblxuQG1peGluIHR5cGUtLXBhcmFncmFwaCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShwYXJhZ3JhcGgpO1xuICBAaW5jbHVkZSBkZWZhdWx0KGxpbmUtaGVpZ2h0KTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgY29sb3I6IHVpLWNvbG9yKGJsYWNrKTtcblxuICArIHAge1xuICAgIG1hcmdpbi10b3A6ICgwLjc1ICogZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cblxuICA+IGEge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAgID4gc3BhbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdWktY29sb3IoYmx1ZSwgZGFyayk7XG4gICAgfVxuXG4gICAgPiBjb2RlIHtcbiAgICAgIGNvbG9yOiB1aS1jb2xvcihibHVlLCBkYXJrZXIpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWl4KHVpLWNvbG9yKGdyYXksIGxpZ2h0KSwgdWktY29sb3IoYmx1ZSksIDgwJSk7XG4gICAgICBib3JkZXItY29sb3I6IHJnYmEodWktY29sb3IoYmx1ZSwgZGFya2VyKSwgMC4xNSk7XG4gICAgfVxuICB9XG5cbiAgY29kZSB7XG4gICAgQGluY2x1ZGUgdHlwZS0tbW9ub3NwYWNlLWZvbnQtZmFtaWx5O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAwLjA1ZW0gMC4yNWVtO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgbGlnaHQpO1xuICAgIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB1aS1jb2xvcihncmF5KTtcbiAgICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBlLS1wYXJhZ3JhcGgtc21hbGwge1xuICBAaW5jbHVkZSBmb250LXNpemUocGFyYWdyYXBoLXNtYWxsKTtcbn1cblxuQG1peGluIHR5cGUtLWFmdGVyLXBhcmFncmFwaCB7XG4gIC50eXBlLS1wYXJhZ3JhcGggKyAmLFxuICAudXNlci10eXBlICsgJiB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuXG5cbi50eXBlLS1oZWFkaW5nLTEgeyBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTE7IH1cbi50eXBlLS1oZWFkaW5nLTIgeyBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTI7IH1cbi50eXBlLS1oZWFkaW5nLTMgeyBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTM7IH1cbi50eXBlLS1oZWFkaW5nLTQge1xuICBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTQ7XG59XG5cbi50eXBlLS1oZWFkaW5nLTUge1xuICBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTU7XG5cbiAgLnR5cGUtLWhlYWRpbmctNCArICYge1xuICAgIG1hcmdpbi10b3A6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cblxuICBAaW5jbHVkZSB0eXBlLS1hZnRlci1wYXJhZ3JhcGgge1xuICAgIG1hcmdpbi10b3A6ICgxLjUgKiBkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxufVxuXG4udHlwZS0taGVhZGluZy1ib3JkZXJlZCB7XG4gIHBhZGRpbmctYm90dG9tOiBkZWZhdWx0KHNwYWNpbmcpO1xuICBtYXJnaW4tYm90dG9tOiBtdWx0aXBseShkZWZhdWx0KHNwYWNpbmcpLCAxLjMpO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgdWktY29sb3IoZ3JheSk7XG5cbiAgKyAuc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogbmVnYXRpdmUoZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cbn1cblxuLnR5cGUtLXBhcmFncmFwaCB7IEBpbmNsdWRlIHR5cGUtLXBhcmFncmFwaDsgfVxuLnR5cGUtLXBhcmFncmFwaC1zbWFsbCB7IEBpbmNsdWRlIHR5cGUtLXBhcmFncmFwaC1zbWFsbDsgfVxuXG4udHlwZS1jb250YWluZXIge1xuICBoMSB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMTsgfVxuICBoMiB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMjsgfVxuICBoMyB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMzsgfVxuICBoNCB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctNDsgfVxuICBoNSB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctNTsgfVxuXG4gIHAgeyBAaW5jbHVkZSB0eXBlLS1wYXJhZ3JhcGg7IH1cbn1cblxuLnR5cGUtY29udGFpbmVyLS1zbWFsbCB7XG4gIHAgeyBAaW5jbHVkZSB0eXBlLS1wYXJhZ3JhcGgtc21hbGw7IH1cbn1cblxuXG5cbi50eXBlLS1kaXNwbGF5IHtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIG1hcmdpbi10b3A6IDA7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4udHlwZS0tbWFyZ2luLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IGRlZmF1bHQoc3BhY2luZyk7XG59XG5cbi50eXBlLS1zdWJkdWVkIHtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmspO1xufVxuXG5cblxuXG5cblxuXG5cblxuXG5cbi50eXBlLS1jb2RlIHtcbiAgQGluY2x1ZGUgdHlwZS0tbW9ub3NwYWNlLWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6IDAuOTVlbTtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuXG46OnNlbGVjdGlvbiB7XG4gIGJhY2tncm91bmQ6IHVpLWNvbG9yKGJsdWUpO1xufVxuIiwiLy8gICAgICAgIF9fXyAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgLyAgL1xcICAgICAgICAvX18vXFwgICAgICAgIF9fXyAgICAgICAgICAgICAgICAvICAvXFwgICAgICBfX18gICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86L18gIC8gIC86OlxcICAgICAgIFxcICBcXDpcXCAgICAgIC8gIC9cXCAgICAgICAgICAgICAgLyAgLzovXyAgICAvICAvXFwgICAgICAvICAvOjp8ICAgICAgLyAgLzovX1xuLy8gICAgIC8gIC86LyAvXFwvICAvOi9cXDpcXCAgICAgICBcXCAgXFw6XFwgICAgLyAgLzovICAgICAgICAgICAgIC8gIC86LyAvXFwgIC8gIC86LyAgICAgLyAgLzovOnwgICAgIC8gIC86LyAvXFxcbi8vICAgIC8gIC86LyAvOi8gIC86LyAgXFw6XFwgIF9fX19fXFxfX1xcOlxcICAvICAvOi8gICAgICAgICAgICAgLyAgLzovIC86OlxcL19fLzo6XFwgICAgLyAgLzovfDp8X18gIC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAvOi9fXy86LyBcXF9fXFw6XFwvX18vOjo6Ojo6OjpcXC8gIC86OlxcICAgICAgICAgICAgL19fLzovIC86L1xcOlxcX19cXC9cXDpcXF9fL19fLzovIHw6fCAvXFwvX18vOi8gLzovIC9cXFxuLy8gICBcXCAgXFw6XFwvOi9cXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcfn5cXH5+XFwvX18vOi9cXDpcXCAgICAgICAgICAgXFwgIFxcOlxcLzovfi86LyAgXFwgIFxcOlxcL1xcX19cXC8gIHw6fC86L1xcICBcXDpcXC86LyAvOi9cbi8vICAgIFxcICBcXDo6LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgfn5+XFxfX1xcLyAgXFw6XFwgICAgICAgICAgIFxcICBcXDo6LyAvOi8gICAgXFxfX1xcOjovICAgfCAgfDovOi8gIFxcICBcXDo6LyAvOi9cbi8vICAgICBcXCAgXFw6XFwgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcICAgICAgICAgXFwgIFxcOlxcICAgICAgICAgICBcXF9fXFwvIC86LyAgICAgL19fLzovICAgIHwgIHw6Oi8gICAgXFwgIFxcOlxcLzovXG4vLyAgICAgIFxcICBcXDpcXCAgIFxcICBcXDo6LyAgICAgIFxcICBcXDpcXCAgICAgICAgIFxcX19cXC8gICAgICAgICAgICAgL19fLzovICAgICAgXFxfX1xcLyAgICAgfCAgfDovICAgICAgXFwgIFxcOjovXG4vLyAgICAgICBcXF9fXFwvICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICB8X198LyAgICAgICAgXFxfX1xcL1xuLy9cbi8vKlxuLy8gQHBhdHRlcm4gRm9udCBTaXplc1xuLy8gQGdyb3VwIEhlbHBlclxuLy9cbi8vIFRoZSBzdHlsZXNoZWV0IGV4aXN0cyBhcyBhIHNpbmdsZSBwbGFjZSB0byBtYW5hZ2UgYWxsIGZvbnQgc2l6ZXMuIFRvIHVzZVxuLy8gYSBmb250IHNpemUgaW4geW91ciBzdHlsZXNoZWV0LCBmb2xsb3cgdGhpcyBwcm9jZWR1cmU6XG4vL1xuLy8gMS4gQWRkIGEgd2VsbC1uYW1lZCBlbnRyeSB0byB0aGUgYCRGT05ULVNJWkVTYCBtYXAgd2l0aCB0aGUgdmFsdWUgc2V0IHRvXG4vLyAgICB0aGUgZm9udCBzaXplIGZvciB0aGF0IGVsZW1lbnQuXG4vL1xuLy8gMi4gSWYgeW91IHdpc2ggdG8gaW5jbHVkZSBhIGBmb250LXNpemVgIGRlY2xhcmF0aW9uIGluIHlvdXIgc3R5bGVzaGVldCxcbi8vICAgIGBAaW5jbHVkZSBmb250LXNpemUoKWAsIHBhc3NpbmcgaXQgdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCB0byByZXRyaWV2ZVxuLy8gICAgdGhlIGZvbnQtc2l6ZSBmb3IuXG4vL1xuLy8gMy4gUmV0cmlldmluZyB0aGUgYWN0dWFsIGZvbnQtc2l6ZSBkaW1lbnNpb24gKGZvciBleGFtcGxlLCB0byBiZSB1c2VkIGluIGFcbi8vICAgIGNhbGN1bGF0aW9uIHRvIGRldGVybWluZSBuZWNlc3NhcnkgcGFkZGluZykgc2hvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGVcbi8vICAgIHNhbWUgYXJndW1lbnQgZGlzY3Vzc2VkIGFib3ZlIHRvIHRoZSBgZm9udC1zaXplYCAqZnVuY3Rpb24qLlxuXG5cblxuJEZPTlRfU0laRVM6IChcbiAgaGVhZGluZy0xOiByZW0oMzYpLFxuICBoZWFkaW5nLTI6IHJlbSgzMCksXG4gIGhlYWRpbmctMzogcmVtKDI0KSxcbiAgaGVhZGluZy00OiByZW0oMTQpLFxuICBoZWFkaW5nLTU6IHJlbSgyMCksXG4gIGxhYmVsOiByZW0oMTYpLFxuICBwYXJhZ3JhcGg6IHJlbSgyMCksXG4gIHBhcmFncmFwaC1zbWFsbDogcmVtKDE4KSxcbiAgYXZhdGFyOiByZW0oMjApLFxuICBiYWRnZTogMC43NWVtLFxuICBiYWRnZS0tc3RhbmRhbG9uZTogcmVtKDE2KSxcbiAgY29kZS1ibG9jazogcmVtKDE2KSxcbiAgY29kZS1ibG9jay0tY29uZGVuc2VkOiByZW0oMTQpLFxuICBsaXN0LWhlYWRpbmc6IHJlbSgyMCksXG4gIHNlbGVjdDogcmVtKDE2KSxcbiAgdGFibGlzdDogcmVtKDE2KSxcbiAgdGFibGlzdC0tbGFyZ2U6IHJlbSgyNCksXG4gIGNvbnRyb2w6IHJlbSgxOClcbik7XG5cblxuXG4vLypcbi8vIFJldHJpdmVzIHRoZSBmb250LXNpemUgZm9yIGFuIGVsZW1lbnQgZGVjbGFyZWQgaW4gdGhlIGdsb2JhbFxuLy8gYCRGT05UX1NJWkVTYCBtYXAuIFRoaXMgd2lsbCBub3QgYWN0dWFsbHkgYWRkIGEgQ1NTIHJ1bGUg4oCUwqBpZiB5b3Vcbi8vIHdvdWxkIGxpa2UgdGhlIGFjdHVhbCBgZm9udC1zaXplYCBydWxlIHRvIGJlIHByaW50ZWQsIHVzZSB0aGVcbi8vIGBAbWl4aW5gIHZlcnNpb24uIFVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4geW91IHdhbnQgdG8gcmV0cml2ZSB0aGUgZm9udFxuLy8gc2l6ZSBmb3IgdXNlIGluIG90aGVyIGNhbGN1bGF0aW9ucy5cbi8vXG4vLyBAcGFyYW0ge1N0cmluZ30gJGVsZW1lbnQgLSBUaGUgZWxlbWVudCB3aG9zZSBmb250LXNpemUgc2hvdWxkIGJlIHJldHJpZXZlZC5cbi8vIEByZXR1cm5zIHtOdW1iZXJ9XG5cbkBmdW5jdGlvbiBmb250LXNpemUoJGVsZW1lbnQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRGT05ULVNJWkVTLCAkZWxlbWVudCk7XG59XG5cblxuXG4vLypcbi8vIFJldHJpdmVzIHRoZSBmb250LXNpemUgZm9yIGFuIGVsZW1lbnQgZGVjbGFyZWQgaW4gdGhlIGdsb2JhbFxuLy8gYCRGT05UX1NJWkVTYCBtYXAgKiphbmQqKiBwcmludHMgdGhlIGBmb250LXNpemVgIHJ1bGUuXG4vL1xuLy8gQHBhcmFtIHtTdHJpbmd9ICRlbGVtZW50IC0gVGhlIGVsZW1lbnQgd2hvc2UgZm9udC1zaXplIHNob3VsZCBiZSByZXRyaWV2ZWQuXG4vL1xuLy8gQGV4YW1wbGVcbi8vIC50eXBlLS1oZWFkaW5nLTEge1xuLy8gICBAaW5jbHVkZSBmb250LXNpemUoaGVhZGluZy0xKTsgLy8gPT4gZm9udC1zaXplOiAycmVtO1xuLy8gfVxuXG5AbWl4aW4gZm9udC1zaXplKCRlbGVtZW50KSB7XG4gIGZvbnQtc2l6ZTogZm9udC1zaXplKCRlbGVtZW50KTtcbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAgICAgX19fICAgICAgICAvICAvXFwgICAgICAgIF9fXyAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOjpcXCAgICAgIC9fXy9cXCAgICAgIC8gIC86OlxcICAgICAgLyAgL1xcICAvICAvOjpcXCAgICAgIC8gIC86OlxcXG4vLyAgICAgLyAgLzovXFw6XFwgICAgIFxcICBcXDpcXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi8gLyAgLzovXFw6XFwgICAgLyAgLzovXFw6XFxcbi8vICAgIC8gIC86L34vOjpcXCAgICAgXFwgIFxcOlxcICAvICAvOi9+Lzo6XFwgIC8gIC86LyAvICAvOi9+Lzo6XFwgIC8gIC86L34vOi9cbi8vICAgL19fLzovIC86L1xcOlxcX19fICBcXF9fXFw6XFwvX18vOi8gLzovXFw6XFwvICAvOjpcXC9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi9fX19cbi8vICAgXFwgIFxcOlxcLzovX19cXC9fXy9cXCB8ICB8OnxcXCAgXFw6XFwvOi9fX1xcL19fLzovXFw6XFwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOjo6OjovXG4vLyAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcfCAgfDp8IFxcICBcXDo6LyAgICBcXF9fXFwvICBcXDpcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi9+fn5+XG4vLyAgICAgXFwgIFxcOlxcICAgICBcXCAgXFw6XFxfX3w6fCAgXFwgIFxcOlxcICAgICAgICAgXFwgIFxcOlxcICBcXDpcXCAgICAgICBcXCAgXFw6XFxcbi8vICAgICAgXFwgIFxcOlxcICAgICBcXF9fXFw6Ojo6LyAgICBcXCAgXFw6XFwgICAgICAgICBcXF9fXFwvXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgXFxfX1xcLyAgICAgICAgIH5+fn4gICAgICBcXF9fXFwvICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIEF2YXRhclxuLy9cbi8vIEEgc21hbGwgaW1hZ2UgcmVwcmVzZW50aW5nIHNvbWVvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcHJvamVjdC4gVGhlIHNjcmlwdFxuLy8gcGFydCBvZiB0aGlzIGNvbXBvbmVudCBhbGxvd3MgaXQgdG8gZmV0Y2ggYXZhdGFyIGltYWdlcyBmcm9tIEdpdGh1YiwgVHdpdHRlcixcbi8vIG9yIEdyYXZhdGFyLCBkZXBlbmRpbmcgb24gdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLiBJZiBubyBpbWFnZXMgYXJlIGZvdW5kXG4vLyBmb3IgdGhlIGF2YXRhciwgaXQgd2lsbCBmYWxsIGJhY2sgdG8gZGlzcGxheWluZyB0aGVpciBpbml0aWFscy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuLy8qXG4vLyBUaGUgc2l6ZSAoaGVpZ2h0IGFuZCB3aWR0aCkgb2YgYW4gYGF2YXRhcmAuXG4vLyBAdHlwZSBMZW5ndGhcblxuJGF2YXRhci0tc2l6ZTogM3JlbTtcblxuLy8qXG4vLyBUaGUgbWFyZ2luIHRoYXQgc2hvdWxkIGFwcGVhciBiZXR3ZWVuIHR3byBgYXZhdGFyYHMgKGluY2x1ZGluZyB0aG9zZSBvbiBhXG4vLyBuZXcgbGluZSkuXG4vLyBAdHlwZSBMZW5ndGhcblxuJGF2YXRhci0tc3BhY2luZzogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcblxuLy8qXG4vLyBUaGUgY29yZSBjb250YWluZXIgZm9yIGEgc2luZ2xlIGF2YXRhci4gQW4gYXZhdGFyIHN1cHBvcnRzIGZldGNoaW5nIG9mIHRoZVxuLy8gYmFja2dyb3VuZCBpbWFnZSB0aHJvdWdoIGVpdGhlciBhIFtHaXRodWJdKGh0dHA6Ly9naXRodWIuY29tKSBwcm9maWxlIG5hbWUsXG4vLyBhIFtUd2l0dGVyXShodHRwOi8vdHdpdHRlci5jb20pIHVzZXJuYW1lLCBvciBhbiBlbWFpbCBhZGRyZXNzIHRoYXQgaXNcbi8vIGFzc29jaWF0ZWQgd2l0aCBhIFtHcmF2YXRhcl0oaHR0cDovL2dyYXZhdGFyLmNvbSkgYWNjb3VudC4gSWYgYW55IG9mIHRoZVxuLy8gYWJvdmUgYXJlIGdpdmVuLCBjbGlja2luZyBvbiB0aGUgYXZhdGFyIHdpbGwgb3BlbiBhIHRhYiB3aXRoIHRoZSByZWxldmFudFxuLy8gcHJvZmlsZSBwYWdlIG9wZW4gKG9yLCBjb21wb3NlIGEgbmV3IGVtYWlsIGlmIGVtYWlsIHdhcyB0aGUgcHJvdmlkZWRcbi8vIGlkZW50aWZpZXIpLiBJZiBub25lIG9mIHRoZSBhYm92ZSBhcmUgZ2l2ZW4sIHRoZSBpbml0aWFscyBvZiB0aGUgdXNlcidzIG5hbWVcbi8vIHdpbGwgYmUgc2hvd24uXG4vL1xuLy8gQGhlbHBlclxuLy8gPCUgZG9ja3NfY29tcG9uZW50KFwiYXZhdGFyOmNvbnRhaW5lclwiKSBkbyAlPlxuLy8gICA8JT0gZG9ja3NfY29tcG9uZW50KFwiYXZhdGFyXCIsIGF1dGhvcjogT3BlblN0cnVjdC5uZXcobmFtZTogXCJDaHJpcyBTYXV2ZVwiLCBnaXRodWI6IFwibGVtb25tYWRlXCIpKSAlPlxuLy8gPCUgZW5kICU+XG5cbi5hdmF0YXIge1xuICAvLyBwb3NpdGlvblxuICBAaW5jbHVkZSB6LWluZGV4KGF2YXRhciwgcGFnZSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgZmxleDogMCAwIGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAvLyBiYWNrZHJvcFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihncmF5LWxpZ2h0KTtcbiAgYm9yZGVyLXJhZGl1czogZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyB0eXBlXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShhdmF0YXIpO1xufVxuXG4vLypcbi8vIEEgY29udGFpbmVyIHRoYXQgc2hvd3MgdGhlIGluaXRhbHMgb2YgdGhlIHVzZXIuIFRoaXMgd2lsbCBhbHdheXMgYmUgcHJlc2VudFxuLy8gc28gdGhhdCBpdCBpcyB2aXNpYmxlIGltbWVkaWF0ZWx5IG9uIHBhZ2UgbG9hZC4gVGhlIGF2YXRhciBpbWFnZSwgd2hpY2ggaXNcbi8vIGZldGNoZWQgYnkgSmF2YVNjcmlwdCwgd2lsbCBiZSBmYWRlZCBpbiBvdmVyIHRvcCBvZiB0aGlzIHN1YmNvbXBvbmVudCwgaWZcbi8vIGF2YWlsYWJsZS5cbi8vXG4vLyBFdmVyeSBpbml0aWFsIG9mIHRoZSBwYXNzZWQgbmFtZSB3aWxsIGJlIHNob3duLiBUaGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yXG4vLyAy4oCTMyBpbml0aWFscywgYnV0IGFueSBtb3JlIHRoYW4gdGhpcyB3aWxsIG92ZXJmbG93IHRoZSBhdmF0YXIuIEFzIHN1Y2gsXG4vLyBwbGVhc2UgcmVzdHJpY3QgbmFtZXMgdG8gZmlyc3QgYW5kIGxhc3Qgb3IgZmlyc3QsIG1pZGRsZSwgYW5kIGxhc3QuXG5cbi5hdmF0YXJfX2luaXRpYWxzIHtcbiAgLy8gcG9zaXRpb25cbiAgQGluY2x1ZGUgei1pbmRleChpbml0aWFscywgYXZhdGFyKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTsgbGVmdDogMDtcblxuICAvLyBib3ggbW9kZWxcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblxuICAvLyBiYWNrZHJvcFxuICBjb2xvcjogY29sb3IoZ3JheSk7XG5cbiAgLy8gdHlwZVxuICBmb250LXNpemU6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGZvciB0aGUgYXZhdGFyIGltYWdlLiBUaGUgaW1hZ2Ugd2lsbCBiZSBzZXQgYnkgSmF2YVNjcmlwdCBhc1xuLy8gYSBiYWNrZ3JvdW5kIGltYWdlIG9uIHRoaXMgc3ViY29tcG9uZW50LCBzbyBpZiBubyBpbWFnZSBpcyBwcm92aWRlZCB0aGlzXG4vLyBjb250YWluZXIgd2lsbCBlZmZlY3RpdmVseSBiZSBpbnZpc2libGUuIE9uY2UgdGhlIGJhY2tncm91bmQgaW1hZ2UgaXNcbi8vIGZldGNoZWQgKHdoaWNoIHdpbGwgYmUgZG9uZSB3aXRoIGEgc2xpZ2h0IGRlbGF5IHRvIHByZXZlbnQgdG9vIG11Y2ggZnJvbVxuLy8gaGFwcGVuaW5nIG9uIHBhZ2UgbG9hZCksIGl0IGlzIGZhZGVkIGludG8gcGxhY2UgdXNpbmcgdGhlXG4vLyBgYXZhdGFyX19pbWFnZS0taXMtdmlzaWJsZWAgc3RhdGUuXG5cbi5hdmF0YXJfX2ltYWdlIHtcbiAgLy8gcG9zaXRpb25cbiAgQGluY2x1ZGUgei1pbmRleChpbWFnZSwgYXZhdGFyKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBoZWlnaHQ6ICRhdmF0YXItLXNpemU7XG4gIHdpZHRoOiAkYXZhdGFyLS1zaXplO1xuXG4gIC8vIGJhY2tkcm9wXG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLypcbi8vIFRoZSB2YXJpYXRpb24gdGhhdCBjYXVzZXMgdGhlIGltYWdlIHRvIGJlIGZhZGVkIGludG8gdmlldy5cbi8vXG4vLyBAZGVtb190eXBlIG5vbmVcbi8vIEBzZXRfYnkgQXZhdGFyI3Nob3dfaW1hZ2VcblxuLmF2YXRhcl9faW1hZ2UtLWlzLXZpc2libGUge1xuICBvcGFjaXR5OiAxO1xufVxuXG4vLypcbi8vIENyZWF0ZXMgdGhlIHJ1bGVzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHJlc3RyaWN0IGFuIGBhdmF0YXJfX2NvbnRhaW5lcmAgdG9cbi8vIGEgcGFydGljdWxhciBudW1iZXIgb2YgYGF2YXRhcmBzIHBlciBsaW5lLlxuLy9cbi8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBgYXZhdGFyYHMgYWxsb3dlZCBwZXIgbGluZS5cblxuQG1peGluIGF2YXRhci0tcmVzdHJpY3QtdG8tbi1hdmF0YXJzKCRuKSB7XG4gIG1heC13aWR0aDogKCgkbiAqICRhdmF0YXItLXNpemUpICsgKCRuICogJGF2YXRhci0tc3BhY2luZykpO1xufVxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgYXJvdW5kIGEgc2V0IG9mIGF2YXRhcnMuIFRoaXMgY29udGFpbmVyIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0XG4vLyBlbGltaW5hdGVzIHRoZSBleGNlc3MgbWFyZ2luIGJlbG93IGFuZCB0byB0aGUgcmlnaHQgb2YgYGF2YXRhcmBzIG9uIHRoZVxuLy8gb3V0c2lkZSBlZGdlcyBvZiB0aGUgY29udGFpbmVyLCBidXQgc3RpbGwgYWxsb3dzIHRoZW0gdG8gYmUgcHJvcGVybHkgc3BhY2VkXG4vLyBvdXQgaG9yaXpvbnRhbGx5IGFuZCB2ZXJ0aWNhbGx5LiBUaGlzIGlzIGFjY29tcGxpc2hlZCB1c2luZyBuZWdhdGl2ZSBtYXJnaW5cbi8vIG9uIHRoZSBib3R0b20gYW5kIHJpZ2h0IHRvIG9mZnNldCB0aGUgbWFyZ2luIG9mIHRoZSBjb250YWluZWQgYGF2YXRhcmBzLlxuLy9cbi8vIFRoaXMgY29udGFpbmVyIGFsbG93cyB0aHJlZSBhdmF0YXJzIHNpZGUtYnktc2lkZSwgd2l0aCBhZGRpdGlvbmFsIGF2YXRhcnNcbi8vIGJyZWFraW5nIG9udG8gYSBuZXcgbGluZS4gSWYgeW91IG9ubHkgbmVlZCBhIHNpbmdsZSBhdmF0YXIsIHRoaXMgY29udGFpbmVyXG4vLyBpcyBub3QgbmVjZXNzYXJ5LlxuLy9cbi8vIFlvdSBjYW4gY3JlYXRlIHRoaXMgY29tcG9uZW50IHVzaW5nIHRoZSBgXCJhdmF0YXI6Y29udGFpbmVyXCJgIGhlbHBlci4gdGhpc1xuLy8gaGVscGVyIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyOlxuLy9cbi8vIGBgYGVyYl9kZW1vXG4vLyA8ZGl2PlxuLy8gICA8JSBkb2Nrc19jb21wb25lbnQoXCJhdmF0YXI6Y29udGFpbmVyXCIpIGRvICU+XG4vLyAgICAgPCUgNC50aW1lcyBkbyAlPlxuLy8gICAgICAgPCU9IGRvY2tzX2NvbXBvbmVudChcImF2YXRhclwiLCBhdXRob3I6IE9wZW5TdHJ1Y3QubmV3KG5hbWU6IFwiQ2hyaXMgU2F1dmVcIiwgZ2l0aHViOiBcImxlbW9ubWFkZVwiKSkgJT5cbi8vICAgICA8JSBlbmQgJT5cbi8vICAgPCUgZW5kICU+XG4vLyA8L2Rpdj5cbi8vXG4vLyA8ZGl2PlxuLy8gICA8JSBkb2Nrc19jb21wb25lbnQoXCJhdmF0YXI6Y29udGFpbmVyXCIsIHNpemU6IDpsYXJnZSkgZG8gJT5cbi8vICAgICA8JSA0LnRpbWVzIGRvICU+XG4vLyAgICAgICA8JT0gZG9ja3NfY29tcG9uZW50KFwiYXZhdGFyXCIsIGF1dGhvcjogT3BlblN0cnVjdC5uZXcobmFtZTogXCJDaHJpcyBTYXV2ZVwiLCBnaXRodWI6IFwibGVtb25tYWRlXCIpKSAlPlxuLy8gICAgIDwlIGVuZCAlPlxuLy8gICA8JSBlbmQgJT5cbi8vIDwvZGl2PlxuLy8gYGBgXG5cbi5hdmF0YXJfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi1yaWdodDogbmVnYXRpdmUoJGF2YXRhci0tc3BhY2luZykgIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogbmVnYXRpdmUoJGF2YXRhci0tc3BhY2luZykgIWltcG9ydGFudDtcbiAgQGluY2x1ZGUgYXZhdGFyLS1yZXN0cmljdC10by1uLWF2YXRhcnMoMyk7XG5cbiAgPiAuYXZhdGFyIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRhdmF0YXItLXNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogJGF2YXRhci0tc3BhY2luZztcbiAgfVxufVxuXG4vLypcbi8vIEEgY29udGFpbmVyIHRoYXQgY2FuIGhvbGQgbW9yZSBgYXZhdGFyYHMgb24gYSBzaW5nbGUgbGluZSAoZm91ciwgaW5zdGVhZCBvZlxuLy8gdGhlIGJhc2UgdGhyZWUpLiBVc2UgdGhpcyBmb3Igc2l0dWF0aW9ucyBpbiB3aGljaCB5b3UgaGF2ZSBtb3JlIHJvb21cbi8vIGF2YWlsYWJsZSBmb3IgYW5jaWxsYXJ5IGluZm9ybWF0aW9uIGxpa2UgY29udHJpYnV0b3IgaW5mb3JtYXRpb24uXG4vL1xuLy8gQHNldF9ieSA6c2l6ZSAoOmxhcmdlKVxuXG4uYXZhdGFyX19jb250YWluZXItLWxhcmdlIHtcbiAgQGluY2x1ZGUgYXZhdGFyLS1yZXN0cmljdC10by1uLWF2YXRhcnMoNCk7XG59XG4iLCIvLyAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICBfX19fXyAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgX19fX18gICAgICAgLyAgL1xcICAgICAgLyAgLzo6XFwgICAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOjpcXCAgICAgLyAgLzo6XFwgICAgLyAgLzovXFw6XFwgICAgLyAgLzovXyAgICAgIC8gIC86L19cbi8vICAgICAvICAvOi9cXDpcXCAgIC8gIC86L1xcOlxcICAvICAvOi8gIFxcOlxcICAvICAvOi8gL1xcICAgIC8gIC86LyAvXFxcbi8vICAgIC8gIC86L34vOjpcXCAvICAvOi9+Lzo6XFwvX18vOi8gXFxfX1xcOnwvICAvOi9fLzo6XFwgIC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAvOi9cXDovX18vOi8gLzovXFw6XFwgIFxcOlxcIC8gIC86L19fLzovX19cXC9cXDpcXC9fXy86LyAvOi8gL1xcXG4vLyAgIFxcICBcXDpcXC86L34vOnwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwgIC86L1xcICBcXDpcXCAvfn4vOi9cXCAgXFw6XFwvOi8gLzovXG4vLyAgICBcXCAgXFw6Oi8gLzovIFxcICBcXDo6LyAgICAgIFxcICBcXDpcXC86LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDo6LyAvOi9cbi8vICAgICBcXCAgXFw6XFwvOi8gICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgXFwgIFxcOjovICAgICBcXCAgXFw6XFwgICAgICAgXFxfX1xcLyAgICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgXFxfX1xcLyAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cblxuLy8qXG4vLyBAcGF0dGVybiBCYWRnZVxuLy9cbi8vIEEgYmFkZ2UgaXMgYSBzbWFsbCBjaHVuayBvZiB0ZXh0IGluIGEgY29sb3JlZCBib3ggdGhhdCBkZW5vdGVzIGEgcGFydGljdWxhclxuLy8gYXR0cmlidXRlIGFib3V0IHRoZSBpbnRlcmZhY2UgZWxlbWVudCB0byB3aGljaCBpdCBpcyBhdHRhY2hlZC4gV2hlblxuLy8gYWRkaXRpb25hbCBleHBsYW5hdG9yeSB0ZXh0IGlzIHJlcXVpcmVkLCB1c2UgYSBgbm90aWNlYCBpbnN0ZWFkIOKAlMKgYmFkZ2VzXG4vLyBzaG91bGQgb25seSBldmVyIGJlIG9uZSB3b3JkIGluIGxlbmd0aC4gSXQgaXMgYXBwcm9wcmlhdGUgdG8gaGF2ZSBtdWx0aXBsZVxuLy8gYmFkZ2VzIGF0dGFjaGVkIHRvIGEgc2luZ2xlIGVsZW1lbnQgaWYgYWRkaXRpb25hbCBkZXRhaWxzIGFib3V0IHRoYXRcbi8vIGVsZW1lbnQgbmVlZCB0byBiZSBpbmRpY2F0ZWQuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cblxuJGJhZGdlLS1zcGFjaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG5cblxuLy8qXG4vLyBUaGUgYWN0dWFsIGJhZGdlLiBFYWNoIGJhZGdlIHByb3ZpZGVzIHNwYWNpbmcgYmV0d2VlbiBpdHNlbGYgYW5kIGJhZGdlcyBpdFxuLy8gaXMgbmV4dCB0bywgc28gdGhleSBtdXN0IGJlIHdyYXBwZWQgaW4gYSBgYmFkZ2VfX2NvbnRhaW5lcmAgdG8gcmVtb3ZlIGFueVxuLy8gZXhjZXNzIG91dHNpZGUgc3BhY2luZyBpZiB5b3UgaW5jbHVkZSBtb3JlIHRoYW4gYSBzaW5nbGUgYmFkZ2UuXG4vL1xuLy8gQmVjYXVzZSBiYWRnZXMgbW9zdCBvZnRlbiBzaXQgYWxsb25nc2lkZSBvdGhlciB0ZXh0LCB0aGV5IGFyZSBkZXNpZ25lZCB0b1xuLy8gc2NhbGUgd2l0aCB0aGUgc2l6ZSBvZiB3aGF0ZXZlciBjb250YWluZXIgdGhleSBhcmUgaW4uIFRoZXkgd2lsbCBhbHdheXMgYmVcbi8vIHNsaWdodGx5IHNtYWxsZXIgdGhhbiB0aGUgdGV4dCBzaXplIG9mIHRoZSBjb250ZW50IHRvIHdoaWNoIHRoZXkgYXJlXG4vLyBhdHRhY2hlZCBzdWNoIHRoYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBiYWRnZSBhcHByb3hpbWF0ZWx5IG1hdGNoIHRoZVxuLy8gYXNjZW5kZXJzLyBkZXNjZW5kZXJzIG9mIHRoZSB0ZXh0LlxuLy9cbi8vIEBtYXJrdXBcbi8vIDxkaXYgY2xhc3M9XCJiYWRnZV9fY29udGFpbmVyXCI+XG4vLyAgIDwlIDUudGltZXMgZG8gfGl8ICU+XG4vLyAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCI+QmFkZ2UgPCU9IGkgKyAxICU+PC9kaXY+XG4vLyAgIDwlIGVuZCAlPlxuLy8gPC9kaXY+XG5cbi5iYWRnZSB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgZmxleDogMCAwIGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLy8gQSBsaXR0bGUgZXh0cmEgYm90dG9tIHBhZGRpbmcgdG8gbWFrZSBpdCBsb29rIGNlbnRlcmVkLlxuICBwYWRkaW5nOiAwLjE1ZW0gMC41ZW0gMC4yNWVtO1xuXG4gIC8vIGJhY2tkcm9wXG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcblxuICAvLyB0eXBlXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShiYWRnZSk7XG4gIGxpbmUtaGVpZ2h0OiBkZWZhdWx0KGxpbmUtaGVpZ2h0KTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG59XG5cbi8vKlxuLy8gVXNlIHRoaXMgYmFkZ2UgdmFyaWF0aW9uIHdoZW4geW91IGFyZSB0cnlpbmcgdG8gaW5kaWNhdGUgc29tZSBzb3J0IG9mXG4vLyB3YXJuaW5nIHRvIHRoZSB1c2VyIOKAlMKgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhpcyBiYWRnZSBpc1xuLy8gYXR0YWNoZWQgaGFzIGJlZW4gZGVwcmVjYXRlZCBvciBoYXMgYSBjb21tb24gcGl0ZmFsbC5cbi8vXG4vLyBAZGVtb190eXBlIGpvaW50XG5cbi5iYWRnZS0td2FybmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKHllbGxvdyk7XG4gIGNvbG9yOiB1aS1jb2xvcih5ZWxsb3csIGRhcmspO1xufVxuXG4vLypcbi8vIFVzZSB0aGlzIGJhZGdlIHZhcmlhdGlvbiB3aGVuIHlvdSBhcmUgdHJ5aW5nIHRvIGluZGljYXRlIGEgbmV3IG9yIHVwZGF0ZWRcbi8vIHN0YXR1cyBmb3IgdGhlIGF0dGFjaGVkIGNvbnRlbnQuIEZvciBleGFtcGxlLCB0aGlzIGJhZGdlIG1pZ2h0IGJlIHVzZWQgdG9cbi8vIGluZGljYXRlIHNvbWV0aGluZyBpcyBpbiBiZXRhIG9yIGhhcyByZWNlbnRseSBiZWVuIHVwZ3JhZGVkIG9yIHJlbGVhc2VkLlxuLy9cbi8vIEBkZW1vX3R5cGUgam9pbnRcblxuLmJhZGdlLS1uZXcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihibHVlKTtcbiAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG59XG5cbi8vKlxuLy8gVXNlIHRoaXMgYmFkZ2UgdmFyaWF0aW9uIHdoZW4gdGhlIGF0dGFjaGVkIGNvbnRlbnQgaXMgbWVhbnQgdG8gYmVcbi8vIGNvbmNlYWxlZCwgc2VjcmV0LCBvciBpbiBzb21lIG90aGVyIHdheSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGVcbi8vIGF2ZXJhZ2UgY2FzZS4gRm9yIGV4YW1wbGUsIHRoaXMgYmFkZ2UgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdFxuLy8gc29tZXRoaW5nIGlzIHByaXZhdGUvIGZvciBpbnRlcm5hbCB1c2Ugb25seS5cbi8vXG4vLyBAZGVtb190eXBlIGpvaW50XG5cbi5iYWRnZS0tc2VjcmV0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5KTtcbn1cblxuLy8qXG4vLyBUaGlzIHZhcmlhdGlvbiBpcyB1c2VkIHRvIGZpeCB0aGUgdmVydGljYWwgcGFkZGluZyBvbiBiYWRnZXMgdGhhdCBhcmUgbWVhbnRcbi8vIHRvIGNvbnRhaW4gY29udGVudCBzdHlsZWQgYXMgY29kZS4gQmVjYXVzZSB0aGUgbW9ub3NwYWNlIGZvbnQgZmFtaWx5IGhhc1xuLy8gZGlmZmVyZW50IGZvbnQgcHJvcGVydGllcywgbGVhdmluZyB0aGUgZXhpc3RpbmcgYHBhZGRpbmdgLyBgbGluZS1oZWlnaHRgXG4vLyBhbG9uZyByZXN1bHRzIGluIHRoZSB0ZXh0IHNpdHRpbmcgdG9vIGNsb3NlbHkgdG8gdGhlIHRvcCBvZiB0aGUgYmFkZ2UuIFRoaXNcbi8vIGZpeGVzIHRoZSBwcm9ibGVtIHVzaW5nIGEgdmVyeSB1bi1zY2llbnRpZmljIHJlZGlzdHJpYnV0aW9uIG9mIHRoZVxuLy8gYXZhaWxhYmxlIHBhZGRpbmcuXG4vL1xuLy8gTm90ZSB0aGF0LCBiZWNhdXNlIHRoZSBtb25vc3BhY2UgZm9udCBoYXMgbW9yZSBzcGFjZSBhbGxvY2F0ZWQgZm9yIGVhY2hcbi8vIGNoYXJhY3RlciwgYSBiYWRnZSB3aXRoIHRoaXMgdmFyaWFudCB3aWxsIGJlIHdpZGVyIHRoYW4gb25lIHdpdGhvdXQgaXQsXG4vLyBldmVuIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBjb250ZW50LlxuLy9cbi8vIEBkZW1vX3R5cGUgc2VsZWN0XG5cbi5iYWRnZS0tY29kZSB7XG4gIC8vIEBpbmNsdWRlIHR5cGUtLW1vbm9zcGFjZS1mb250LWZhbWlseTtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIHBhZGRpbmctdG9wOiAwLjJlbTtcbn1cblxuLy8qXG4vLyBBIGJhZGdlIHRoYXQgaXMgdXNlZCBvbiBpdHMgb3duICh0aGF0IGlzLCBub3QgYmVzaWRlIG90aGVyIHRleHQsIGJ1dCBtYXkgYmVcbi8vIGJlc2lkZSBvdGhlciBidXR0b25zKS5cbi8vXG4vLyBAZGVtb190eXBlIHNlbGVjdFxuXG4uYmFkZ2UtLXN0YW5kYWxvbmUge1xuICBAaW5jbHVkZSBmb250LXNpemUoYmFkZ2UtLXN0YW5kYWxvbmUpO1xufVxuXG5cblxuLy8qXG4vLyBUaGlzIGNvbnRhaW5lciBzaG91bGQgYWx3YXlzIGJlIHdyYXBwZWQgYXJvdW5kIGEgc2V0IG9mIGJhZGdlcy4gSXQgcmVtb3Zlc1xuLy8gYW55IGV4Y2VzcyByaWdodCBhbmQgYm90dG9tIG1hcmdpbiAod2hpY2ggZXZlcnkgY29udGFpbmVkIGJhZGdlIGhhcyB0b1xuLy8gYWxsb3cgZm9yIHNwYWNpbmcgYmV0d2VlbiByb3dzIGFuZCBjb2x1bW5zIG9mIGJhZGdlcyksIHdoaWxlIHN0aWxsIGFsbG93aW5nXG4vLyB0aGUgYmFkZ2VzIHRvIGJyZWFrIG9udG8gYSBuZXcgbGluZSBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIHRvIGNvbnRhaW5cbi8vIHRoZW0gYWxsIG9uIGEgc2luZ2xlIGxpbmUuXG4vL1xuLy8gSWYgb25seSBhIHNpbmdsZSBiYWRnZSBleGlzdHMsIHRoaXMgY29udGFpbmVyIGNhbiBiZSBvbWl0dGVkLlxuXG4uYmFkZ2VfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi1yaWdodDogbmVnYXRpdmUoJGJhZGdlLS1zcGFjaW5nKSAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiBuZWdhdGl2ZSgkYmFkZ2UtLXNwYWNpbmcpICFpbXBvcnRhbnQ7XG5cbiAgPiAuYmFkZ2Uge1xuICAgIG1hcmdpbi1yaWdodDogJGJhZGdlLS1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRiYWRnZS0tc3BhY2luZztcbiAgfVxufVxuIiwiLy8gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIF9fX19fICAgICAgICAvX18vXFwgICAgICAgICBfX18gICAgICAgX19fICAgICAvICAvXFwgICAgICAgIC9fXy9cXFxuLy8gICAgICAvICAvOjpcXCAgICAgICBcXCAgXFw6XFwgICAgICAgLyAgL1xcICAgICAvICAvXFwgICAvICAvOjpcXCAgICAgICBcXCAgXFw6XFxcbi8vICAgICAvICAvOi9cXDpcXCAgICAgICBcXCAgXFw6XFwgICAgIC8gIC86LyAgICAvICAvOi8gIC8gIC86L1xcOlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgLyAgLzovfi86OlxcICBfX18gIFxcICBcXDpcXCAgIC8gIC86LyAgICAvICAvOi8gIC8gIC86LyAgXFw6XFwgIF9fX19fXFxfX1xcOlxcXG4vLyAgIC9fXy86LyAvOi9cXDp8L19fL1xcICBcXF9fXFw6XFwgLyAgLzo6XFwgICAvICAvOjpcXCAvX18vOi8gXFxfX1xcOlxcL19fLzo6Ojo6Ojo6XFxcbi8vICAgXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXCAvICAvOi8vX18vOi9cXDpcXCAvX18vOi9cXDpcXFxcICBcXDpcXCAvICAvOi9cXCAgXFw6XFx+flxcfn5cXC9cbi8vICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXCAgLzovIFxcX19cXC8gIFxcOlxcXFxfX1xcLyAgXFw6XFxcXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcICB+fn5cbi8vICAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcLzovICAgICAgIFxcICBcXDpcXCAgICBcXCAgXFw6XFxcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcXG4vLyAgICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAgICAgICAgIFxcX19cXC8gICAgIFxcX19cXC8gXFwgIFxcOjovICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuLy9cbi8vKlxuLy8gQHBhdHRlcm4gQnV0dG9uc1xuLy8gQHRhZ2xpbmUgQ2FwdHVyZSBhbGwgdGhlIGNsaWNrcy5cbi8vXG4vLyBCdXR0b25zIGFyZSB3aGF0IHRoZSB1c2VyIHNob3VsZCBwcmVzcyB0byBpbml0aWF0ZSBtb3N0IGFjdGlvbnMuIEFjdGlvbnNcbi8vIG1heSB0YWtlIHBsYWNlIG9uIHRoZSBwYWdlIChmb3IgZXhhbXBsZSwgYnkgYWN0aXZhdGluZyBhIHBvcG92ZXIgb3IgeC1yYXlcbi8vIG1vZGUpwqBvciBtYXkgc2VuZCB0aGUgdXNlciB0byBhbm90aGVyIHNpdGUgdG8gcGVyZm9ybSBhbiBhY3Rpb24gKHRoZSBtb3N0XG4vLyBub3RhYmxlIGV4YW1wbGUgb2YgdGhpcyBhcmUgdGhlIGJ1dHRvbnMgdGhhdCBzZW5kIHRoZSB1c2VyIHRvIEdpdGh1YikuIFRoZVxuLy8gZWxlbWVudCBvbiB3aGljaCB0byBhcHBseSB0aGVzZSBjbGFzc2VzIHdpbGwgZGVwZW5kIG9uIHdoZXRoZXIgdGhlIGFjdGlvblxuLy8gaXMgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgdG8gdGhlIHBhZ2UuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cblxuXG4kYnV0dG9uLS1zcGFjaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG5cblxuLy8qXG4vLyBAdGl0bGUgU3RhbmRhcmQgQnV0dG9uc1xuLy9cbi8vIEEgc3RhbmRhcmQgYnV0dG9uLiBUaGlzIGNvbXBvbmVudCBub3JtYWxpemVzIHRoZSBzdHlsZXMgb2YgYm90aCBgYnV0dG9uYCBhbmRcbi8vIGBhYCBlbGVtZW50cyBzbyB0aGF0IHRoZXNlIGNsYXNzZXMgY2FuIGJlIHBsYWNlZCBvbiBlaXRoZXIgb25lLiBJZiB0aGUgYWN0aW9uXG4vLyBpcyBpbnRlcm5hbCAoaS5lLiwgZG9lc24ndCByZXF1aXJlIGEgYEdFVGAgcmVxdWVzdCksIHVzZSBhIGBidXR0b25gLiBJZiB0aGVcbi8vIGFjdGlvbiBkb2VzIHJlcXVpcmUgYSBgR0VUYCwgdXNlIGEgVVJMLiBOZXZlciB1c2UgYW4gYGFgIHRhZyB3aXRoIGEgYmxhbmtcbi8vIChvciBgXCIjXCJgKSBgaHJlZmAgYXR0cmlidXRlLlxuLy9cbi8vIEFueSB2YXJpYXRpb25zIG9uIHRoaXMgYnV0dG9uIHNob3VsZCBlbnN1cmUgdGhhdCB0aGV5IGRlc2lnbiBhbmQgaW1wbGVtZW50XG4vLyBkZXNpZ25zIGZvciB0aGUgYDpmb2N1c2Agc3RhdGUsIGA6YWN0aXZlYCBzdGF0ZSwgYDpob3ZlcmAgc3RhdGUgKG9wdGlvbmFsKSxcbi8vIGFuZCBmb3IgaWNvbnMgd2l0aCBidXR0b25zICh1c2luZyBhIGNoaWxkIHNlbGVjdG9yIHRvIHRoZSBgaWNvbmAgY29tcG9uZW50KSxcbi8vIGlmIGFkanVzdG1lbnRzIHRvIHRoZSBjb250YWluZWQgaWNvbnMgYXJlIHJlcXVpcmVkLlxuLy9cbi8vIEEgc2luZ2xlIGJ1dHRvbiBjYW4gYmUgaW5jbHVkZWQgb24gaXRzIG93biwgd2l0aG91dCBhbnkgY29udGFpbmVyLiBJZlxuLy8gbXVsdGlwbGUgYnV0dG9ucyBoYXZlIHRvIGJlIHBsYWNlZCBiZXNpZGUgZWFjaCBvdGhlciwgd3JhcCBhbGwgb2YgdGhlIGJ1dHRvbnNcbi8vIGluIGEgYGRvY2tzLWJ1dHRvbl9fY29udGFpbmVyYC5cbi8vXG4vLyBAbWFya3VwXG4vLyA8ZGl2IGNsYXNzPVwiZG9ja3MtYnV0dG9uX19jb250YWluZXJcIj5cbi8vICAgPGJ1dHRvbiBjbGFzcz1cImRvY2tzLWJ1dHRvblwiPmJ1dHRvbiE8L2J1dHRvbj5cbi8vXG4vLyAgIDxidXR0b24gY2xhc3M9XCJkb2Nrcy1idXR0b25cIj5cbi8vICAgICA8JT0gZG9ja3NfaWNvbiA6Z2l0aHViLCBzaXplOiA6bWVkaXVtICU+XG4vLyAgICAgPHNwYW4gY2xhc3M9XCJkb2Nrcy1idXR0b25fX3RleHRcIj5pY29uICsgdGV4dDwvc3Bhbj5cbi8vICAgPC9idXR0b24+XG4vL1xuLy8gICA8YnV0dG9uIGNsYXNzPVwiZG9ja3MtYnV0dG9uXCI+XG4vLyAgICAgPHNwYW4gY2xhc3M9XCJkb2Nrcy1idXR0b25fX3RleHRcIj50ZXh0ICsgaWNvbjwvc3Bhbj5cbi8vICAgICA8JT0gZG9ja3NfaWNvbiA6Z2l0aHViLCBzaXplOiA6bWVkaXVtICU+XG4vLyAgIDwvYnV0dG9uPlxuLy9cbi8vICAgPGRpdiBjbGFzcz1cImRvY2tzLWJ1dHRvbl9fc2VnbWVudGVkLWNvbnRhaW5lclwiPlxuLy8gICAgIDxidXR0b24gY2xhc3M9XCJkb2Nrcy1idXR0b25cIj5TZWdtZW50IDE8L2J1dHRvbj5cbi8vICAgICA8YnV0dG9uIGNsYXNzPVwiZG9ja3MtYnV0dG9uXCI+U2VnbWVudCAyPC9idXR0b24+XG4vLyAgIDwvZGl2PlxuLy8gPC9kaXY+XG5cbi5kb2Nrcy1idXR0b24ge1xuICAvLyBib3ggbW9kZWxcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAwIGRlZmF1bHQoY29udHJvbC1wYWRkaW5nKTtcblxuICAvLyBiYWNrZHJvcFxuICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcblxuICAvLyB0eXBlXG4gIC8vIEBpbmNsdWRlIHR5cGUtLWRlZmF1bHQtZm9udC1mYW1pbHk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShjb250cm9sKTtcbiAgbGluZS1oZWlnaHQ6IGRlZmF1bHQoY29udHJvbC1zaXplKTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gID4gKjpmaXJzdC1jaGlsZCB7IG1hcmdpbi1yaWdodDogJGJ1dHRvbi0tc3BhY2luZzsgfVxufVxuXG4vLypcbi8vIEEgc2xpZ2h0ZXIgZGFyayB2YXJpYXRpb24uXG5cbi5kb2Nrcy1idXR0b24tLWRhcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrKTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuXG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrKTtcbiAgICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIH1cbn1cblxuLy8qXG4vLyBBIGJ1dHRvbiB0aGF0IGNhbiBubyBsb25nZXIgYmUgcHJlc3NlZC4gTWFrZSBzdXJlIHRvIGFsd2F5cyBhbHNvIGluY2x1ZGUgdGhlXG4vLyBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBvbiB0aGUgYWN0dWFsIGBidXR0b25gIOKAlMKgdGhpcyBpbXByb3ZlcyB1c2FiaWxpdHkgYnlcbi8vIHByZXZlbnRpbmcgdGhlIGJ1dHRvbiBmcm9tIGJlaW5nIHRhYmJlZCB0bywgYW5kIHByZXZlbnRzIGFueSBldmVudCBoYW5kbGVyc1xuLy8gb24gdGhlIGBidXR0b25gIGZyb20gcnVubmluZy5cbi8vXG4vLyBAamF2YXNjcmlwdF9hY3Rpb24gdGhpcy5jbGFzc0xpc3QuYWRkKFwiZG9ja3MtYnV0dG9uLS1pcy1kaXNhYmxlZFwiKTsgdGhpcy5kaXNhYmxlZCA9IHRydWVcblxuLmRvY2tzLWJ1dHRvbi0taXMtZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjM7XG59XG5cblxuXG4vLypcbi8vIEEgY29udGFpbmVyIGZvciBhIGNvbGxlY3Rpb24gb2YgYnV0dG9ucyB0aGF0IG5vcm1hbGl6ZXMgdGhlIG1hcmdpbiBvbiB0aGVcbi8vIG91dHNpZGUuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgZWFjaCBidXR0b24gaW5zaWRlIHRoZSBjb250YWluZXIgaGFzXG4vLyByaWdodCBhbmQgYm90dG9tIG1hcmdpbiBzbyB0aGF0IHRoZXJlIGlzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNwYWNlXG4vLyBiZXR3ZWVuIGVhY2ggb2YgYW55IG51bWJlciBvZiBidXR0b25zLlxuXG4uZG9ja3MtYnV0dG9uX19jb250YWluZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW4tcmlnaHQ6IG5lZ2F0aXZlKCRidXR0b24tLXNwYWNpbmcpICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IG5lZ2F0aXZlKCRidXR0b24tLXNwYWNpbmcpICFpbXBvcnRhbnQ7XG5cbiAgLy8gUHJldmVudHMgbWFyZ2luIGZyb20gY29sbGFwc2luZyB3aGlsZSBzdGlsbCBhbGxvd2luZyBvdmVyZmxvdy9cblxuICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgZGlzcGxheTogdGFibGU7IH1cblxuICAvLyBBbGxvdyBmb3IgYW55dGhpbmcgaW5zaWRlIHRoZSBjb250YWluZXIg4oCUwqB0aGlzIGlzIHVzZWZ1bCBmb3IsIGZvciBleGFtcGxlLFxuICAvLyBjb250YWluZWQgYnV0dG9ucyB0aGF0IGFjdGl2YXRlIHBvcG92ZXJzIGFuZCB0aHVzIGhhdmUgcG9wb3ZlciBjb250YWluZXJzXG4gIC8vIGFyb3VuZCB0aGVtLlxuXG4gID4gKiB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiAkYnV0dG9uLS1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRidXR0b24tLXNwYWNpbmc7XG4gIH1cbn1cblxuLy8qXG4vLyBVc2UgdGhpcyBjb250YWluZXIgdmFyaWF0aW9uIHdoZW4geW91IHdhbnQgYWxsIG9mIHRoZSBidXR0b25zIGluc2lkZSB0aGVcbi8vIGNvbnRhaW5lciB0byBjb25zdW1lIGFuIGVxdWFsIHBhcnQgb2YgdGhlIHRvdGFsIHdpZHRoIGF2YWlsYWJsZSB0byB0aGVcbi8vIGNvbnRhaW5lci4gTm90ZSB0aGF0IHBvdGVudGlhbGx5LXVuZXhwZWN0ZWQgYmVoYXZpb3IgbWF5IG9jY3VyIHdoZW4gdGhlXG4vLyBidXR0b25zIGluIHRoaXMgYnV0dG9uIGdyb3VwIGhhdmUgYSB0b3RhbCBpbnRyaW5zaWMgbWluaW11bSB3aWR0aCBncmVhdGVyXG4vLyB0aGFuIHRoYXQgb2YgdGhlIGNvbnRhaW5lciDigJQgYnV0dG9ucyB3aXRoIHNtYWxsZXIgaW50cmluc2ljIHdpZHRocyBpbiB0aGVcbi8vIGdyb3VwIHdpbGwgc2hyaW5rIGFzIG11Y2ggYXMgcG9zc2libGUsIGFuZCB0aGVuIGJ1dHRvbnMgd2lsbCBzdGFydCwgb25lLWJ5LW9uZVxuLy8gYXMgcmVxdWlyZWQsIGJyZWFraW5nIG9udG8gYWRkaXRpb25hbCBsaW5lcyAoYW5kIGZpbGxpbmcgdGhlbSBjb21wbGV0ZWx5LFxuLy8gcmVzdWx0aW5nIGluIHNvbWUgYnV0dG9ucyBsaWtlbHkgYmVpbmcgbGFyZ2VyIHRoYW4gb3RoZXJzKS5cbi8vXG4vLyBGb3IgdGhlIGJlc3QgcmVzdWx0cywgdHJ5IHRvIGhhdmUgb25seSB0d28gYnV0dG9ucyBzaWRlLWJ5LXNpZGUgaW4gYVxuLy8gY29udGFpbmVyIHVzaW5nIHRoaXMgdmFyaWFudC5cblxuLmRvY2tzLWJ1dHRvbl9fY29udGFpbmVyLS1maWxsLXdpZHRoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAvLyBGb3IgYm90aCBidXR0b25zIGFuZCBub24tYnV0dG9uLWV5IHRoaW5ncyBpbiBidXR0b24gZ3JvdXBzLCBsaWtlIHBvcG92ZXJcbiAgLy8gY29udGFpbmVycy5cblxuICAuZG9ja3MtYnV0dG9uLFxuICA+ICo6bm90KC5kb2Nrcy1idXR0b24pIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXg6IDEgMCAwJTtcbiAgICBtaW4td2lkdGg6IC13ZWJraXQtbWluLWNvbnRlbnQ7XG4gICAgbWluLXdpZHRoOiAtbW96LW1pbi1jb250ZW50O1xuICAgIG1pbi13aWR0aDogbWluLWNvbnRlbnQ7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gVGhlIHRleHQgZm9yIGEgYnV0dG9uLiBUaGlzIGNvbnRhaW5lciBpcyBub3QgbmVjZXNzYXJ5IHVubGVzcyB0aGVyZSBpcyBhbHNvXG4vLyBhbiBpY29uIGluIHRoZSBidXR0b24uXG5cbi5kb2Nrcy1idXR0b25fX3RleHQge31cblxuXG5cbi8vKlxuLy8gQSB3cmFwcGVyIGFyb3VuZCBidXR0b25zIHRoYXQgY2F1c2VzIHRoZW0gdG8gbG9vayBsaWtlIG9uZSBidXR0b24gc2VnbWVudGVkXG4vLyBpbnRvIHBpZWNlcy5cblxuLmRvY2tzLWJ1dHRvbl9fc2VnbWVudGVkLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXG4gID4gLmRvY2tzLWJ1dHRvbiB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICY6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXItbGVmdDogbm9uZTsgfVxuICAgICY6Zmlyc3QtY2hpbGQgeyBib3JkZXItcmFkaXVzOiBkZWZhdWx0KGJvcmRlci1yYWRpdXMpIDAgMCBkZWZhdWx0KGJvcmRlci1yYWRpdXMpOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgYm9yZGVyLXJhZGl1czogMCBkZWZhdWx0KGJvcmRlci1yYWRpdXMpIGRlZmF1bHQoYm9yZGVyLXJhZGl1cykgMDsgfVxuICB9XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgIF9fX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgLyAgLzo6XFxcbi8vICAgICAgLyAgLzovICAgICAgIC8gIC86OlxcICAgICAgLyAgLzo6XFwgICAgLyAgLzovXFw6XFxcbi8vICAgICAvICAvOi8gICAgICAgLyAgLzovXFw6XFwgICAgLyAgLzovXFw6XFwgIC8gIC86LyAgXFw6XFxcbi8vICAgIC8gIC86LyAgX19fICAvICAvOi9+Lzo6XFwgIC8gIC86L34vOi8gL19fLzovIFxcX19cXDp8XG4vLyAgIC9fXy86LyAgLyAgL1xcL19fLzovIC86L1xcOlxcL19fLzovIC86L19fXFwgIFxcOlxcIC8gIC86L1xuLy8gICBcXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOjo6OjovXFwgIFxcOlxcICAvOi9cbi8vICAgIFxcICBcXDpcXCAgLzovICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi9+fn5+ICBcXCAgXFw6XFwvOi9cbi8vICAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6Oi9cbi8vICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXCAgICAgICBcXF9fXFwvXG4vLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG4vL1xuLy8qXG4vLyBAcGF0dGVybiBDYXJkXG4vL1xuLy8gQSBzaW1wbGUsIGNsZWFuIGNvbnRhaW5lciBmb3IgY29udGVudCB0aGF0IGlzIHRvIGFwcGVhciBvbiBhbiBhcmVhIHdpdGggYVxuLy8gY29sb3JlZCBiYWNrZ3JvdW5kIGJ1dCB0aGF0IHJlcXVpcmVzIGEgY29tcGxldGVseSBuZXV0cmFsIGJhY2tncm91bmQgdG9cbi8vIGFwcGVhciBwcm9wZXJseS5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuLy8qXG4vLyBAbWFya3VwXG4vLyA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuLy8gICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxcmVtOyB3aWR0aDogMXJlbTsgbWFyZ2luOiAycmVtIGF1dG87XCI+PC9kaXY+XG4vLyA8L2Rpdj5cblxuLmNhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgX19fX18gICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAgICAgICAvICAvXFwgICAgICAvICAvOjpcXCAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOi8gICAgICAgLyAgLzo6XFwgICAgLyAgLzovXFw6XFwgICAgLyAgLzovX1xuLy8gICAgIC8gIC86LyAgICAgICAvICAvOi9cXDpcXCAgLyAgLzovICBcXDpcXCAgLyAgLzovIC9cXFxuLy8gICAgLyAgLzovICBfX18gIC8gIC86LyAgXFw6XFwvX18vOi8gXFxfX1xcOnwvICAvOi8gLzovX1xuLy8gICAvX18vOi8gIC8gIC9cXC9fXy86LyBcXF9fXFw6XFwgIFxcOlxcIC8gIC86L19fLzovIC86LyAvXFxcbi8vICAgXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFwgIC86L1xcICBcXDpcXC86LyAvOi9cbi8vICAgIFxcICBcXDpcXCAgLzovICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcLzovICBcXCAgXFw6Oi8gLzovXG4vLyAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovXG4vLyAgICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi9cbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIENvZGUgQmxvY2tcbi8vXG4vLyBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIGZ1bGwtZmVhdHVyZWQgY29udGFpbmVyIGZvciBjb2RlIGRlbW9zLCBpbmNsdWRpbmdcbi8vIHN1cHBvcnQgZm9yIG11bHRpcGxlIGxhbmd1YWdlcyBiZWluZyBzaG93biBpbiBhIHNpbmdsZSBjb2RlIGJsb2NrLCBhXG4vLyByZW5kZXJlZCBkZW1vIG9mIHRoZSBjb2RlIGluIHRoZSBjb2RlIGJsb2NrLCBoaWRpbmcgdGhlIG1hcmt1cCwgYW5kXG4vLyBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQgY29tcG9uZW50cy4gVGhlIGNvbXBvbmVudCBjYW4gYmUgc2NhbGVkIHRvXG4vLyBpbmNsdWRlIGFzIG11Y2ggb3IgYXMgbGl0dGxlIG9mIHRoZXNlIGZlYXR1cmVzIGFzIGRlc2lyZWQuXG4vL1xuLy8gVGhpcyB0aGluZyBuZWVkcyBoZSBmb2xsb3dpbmcgY29tcG9uZW50czpcbi8vXG4vLyAtIFtgYnV0dG9uYF0oQGxpbmspXG4vL1xuLy8gLSBbYHJlc2l6YWJsZTo6Zm9jdXNfc2l6ZV9idXR0b25gXShAbGluaylcbi8vXG4vLyAtIFtgZXhwbG9kZWQ6OkV4cGxvZGVkI3NldF9tYXJrdXBgXShAbGluaylcbi8vXG4vLyBUaGUgSmF2YVNjcmlwdCBwYXJ0IG9mIHRoaXMgY29tcG9uZW50IGFsc28gc3VwcG9ydHMgY29tbXVuaWNhdGlvbiB3aXRoIGFuXG4vLyBgaWZyYW1lYGVkIGRlbW8sIGluLXBsYWNlIHVwZGF0aW5nIG9mIGhlbHBlciBhbmQgcmVuZGVyZWQgbWFya3VwIGZvclxuLy8gY29tcG9uZW50cywgYW5kLCB0aHJvdWdoIFtoaWdobGlnaHQuanNdKGh0dHBzOi8vaGlnaGxpZ2h0anMub3JnLyksIHN5bnRheFxuLy8gaGlnaGxpZ2h0aW5nIG9mIG1hbnkgY29tbW9uIGxhbmd1YWdlcy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbi8vKlxuLy8gQHRpdGxlIENvZGUgQmxvY2tcbi8vXG4vLyBUaGlzIGlzIGhlIG92ZXJhbGwgY29udGFpbmVyIGZvciB0aGUgY29kZSBibG9jay4gSXQncyBwcmltYXJ5IHB1cnBvc2UgaXMgdG9cbi8vIHByb3ZpZGUgbWFyZ2luIGFib3ZlIGFuZCBiZWxvdyB0aGUgY29kZSBibG9jaywgYW5kIHRvIHByb3ZpZGUgYSBob29rIHRvXG4vLyBtYWtlIGFkanVzdG1lbnRzIHRvIG1hbnkgc3ViY29tcG9uZW50cyB0aHJvdWdoIHZhcmlhdGlvbnMgc3VjaCBhc1xuLy8gYGNvZGUtYmxvY2stLWNvbmRlbnNlZGAgYW5kIGBjb2RlLWJsb2NrLS1oaWRkZW5gLlxuLy9cbi8vIENvZGUgYmxvY2tzIGNhbiBnbyBmcm9tIHRoZSBpbmNyZWRpYmx5IGNvbXBsZXggKHNlZSB0aGUgZGVtbyBhYm92ZSksIHRvXG4vLyBtb3JlIG1vZGVyYXRlIGxldmVscyBvZiBkZXRhaWwg4oCUwqBzdWNoIGFzIGEgY29kZSBibG9jayB0aGF0IGdldHMgcmVuZGVyZWRcbi8vIGlubGluZSBiYXNlZCBvbiBhIHRlbXBsYXRpbmcgbGFuZ3VhZ2UgYW5kIGEgc3R1YiwgYW5kIHRoYXQgb3V0cHV0cyBhblxuLy8gYXR0YWNoZWQgZGVtbzpcbi8vXG4vLyBgYGBlcmJfZGVtb1xuLy8gPCU9IGRvY2tzX2NvZGVfYmxvY2sgY29kZTogXCI8cCBzdHlsZT0nY29sb3I6IGdyYXk7Jz5IZWxsbyB3b3JsZCE8L3A+XCIsXG4vLyAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogXCJlcmJcIixcbi8vICAgICAgICAgICAgICAgICAgICAgIGRlbW8/OiB0cnVlLFxuLy8gICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPzogdHJ1ZSAlPlxuLy8gYGBgXG4vL1xuLy8gQWxsIHRoZSB3YXkgdG8gYW4gaW5jcmVkaWJseSBzaW1wbGUgY29kZSBibG9jazpcbi8vXG4vLyBgYGBlcmJfZGVtb1xuLy8gPCU9IGRvY2tzX2NvZGVfYmxvY2sgY29kZTogXCI8cCBjbGFzcz0ndHlwZSB0eXBlLS1wYXJhZ3JhcGgnPkhlbGxvIHdvcmxkITwvcD5cIiAlPlxuLy8gYGBgXG4vL1xuLy8gQGhlbHBlclxuLy8gPCU9IGRvY2tzX2NvZGVfYmxvY2sgY29kZTogXCI8cCBzdHlsZT0nY29sb3I6IGdyYXk7Jz5IZWxsbyB3b3JsZCE8L3A+XCIsXG4vLyAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogXCJlcmJcIixcbi8vICAgICAgICAgICAgICAgICAgICAgIGRlbW8/OiB0cnVlLFxuLy8gICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPzogdHJ1ZSAlPlxuXG4uY29kZS1ibG9jayB7XG4gIG1hcmdpbjogZGVmYXVsdChzcGFjaW5nKSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG5cbiAgLmRvY2tzLWJ1dHRvbiB7IGRpc3BsYXk6IG5vbmU7IH1cbn1cblxuXG4vLypcbi8vIEEgY29kZSBibG9jayB3aXRoIGxlc3MgaW50ZXJuYWwgcGFkZGluZyBhbmQgYSBzbWFsbGVyIGZvbnQgc2l6ZS4gVXNlIHRoaXNcbi8vIHZhcmlhbnQgZm9yIHNpdHVhdGlvbnMgaW4gd2hpY2ggdGhlIGNvZGUgaXMgc2Vjb25kYXJ5IG9yIHdvdWxkIGNsYXNoIHdpdGhcbi8vIGEgbW9yZSBpbXBvcnRhbnQgY29kZSBibG9jay5cbi8vXG4vLyBAc2V0X2J5IDpjb25kZW5zZWQ/XG5cbi5jb2RlLWJsb2NrLS1jb25kZW5zZWQge1xuICBtYXJnaW4tdG9wOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG4gIC5jb2RlLWJsb2NrX19jb2RlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoY29kZS1ibG9jay0tY29uZGVuc2VkKTtcbiAgfVxuXG4gICY6bm90KC5jb2RlLWJsb2NrLS13aXRoLWhlYWRlcikge1xuICAgIC5jb2RlLWJsb2NrX19jb2RlIHtcbiAgICAgIHBhZGRpbmctdG9wOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICAgIH1cbiAgfVxufVxuXG4vLypcbi8vIEEgY29kZSBibG9jayB0aGF0IGlzIGZ1bGwtYmxlZWQgd2l0aGluIHRoZSB2aWV3cG9ydC4gVGhpcyB3aWxsIHJlbW92ZSBhbnlcbi8vIHVubmVjZXNzYXJ5IGJvcmRlciByYWRpdXMgYW5kIHNpZGUgcGFkZGluZy8gYm9yZGVycy5cbi8vXG4vLyBAc2V0X2J5IDpmdWxsX3dpZHRoP1xuXG4uY29kZS1ibG9jay0tZnVsbC13aWR0aCB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgLmNvbnRlbnQgJiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lZ2F0aXZlKGRlZmF1bHQoc3BhY2luZykpO1xuICAgIG1hcmdpbi1yaWdodDogbmVnYXRpdmUoZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cbn1cblxuLy8qXG4vLyBBIGNvZGUgYmxvY2sgdGhhdCBoYXMgaGlkZGVuIHRoZSBjb250YWluZWQgbWFya3VwIGFuZCBtb3N0IG9mIGl0cyBVSS4gVXNlXG4vLyB0aGlzIGZvciB0aGUgaW5pdGlhbCBzdGF0ZSBvZiBhIGNvZGUgYmxvY2sgb25seSB3aGVuIGl0IGhhcyBhIGRlbW8gYXR0YWNoZWRcbi8vIHRvIGl0LCBvdGhlcndpc2UgdGhlIGNvZGUgYmxvY2sgd2lsbCBhcHBlYXIgYXMgYSBzdHJhbmdlIHN0cmlwIG9mIGNvbG9yXG4vLyB3aXRoIG5vIGluZGljYXRpb24gb2YgaXRzIHB1cnBvc2UuIEhpZGVhYmxlIGNvZGUgYmxvY2tzIChhcyBzZXQgYnlcbi8vIGA6aGlkZWFibGU/YCkgY2FuIGhhdmUgdGhpcyBzdGF0ZSB0b2dnbGVkIGJ5IGNsaWNraW5nIG9uIHRoZSBjb250YWluZWRcbi8vIGJ1dHRvbi5cbi8vXG4vLyBXaGVuIHRoZSBjb2RlIGJsb2NrIGlzIGhpZGRlbiwgYWxsIG9mIHRoZSBVSSBpbiB0aGUgaGVhZGVyIGV4Y2VwdCBmb3IgdGhlXG4vLyBidXR0b24gdG8gdG9nZ2xlIHZpc2liaWxpdHkgaXMgaGlkZGVuICh0aGF0IGlzLCB0YWJzIHRvIHN3aXRjaCBiZXR3ZWVuXG4vLyBsYW5ndWFnZXMgYW5kIHRoZSBgc2VsZWN0YCB0byBzd2l0Y2ggYmV0d2VlbiBkZW1vcywgaWYgdGhleSBleGlzdCkuXG4vL1xuLy8gQHNldF9ieSA6aGlkZGVuPywgQ29kZUJsb2NrI3RvZ2dsZVxuLy8gQGphdmFzY3JpcHRfYWN0aW9uIERvY2tzLkNvZGVCbG9jay5mb3IodGhpcykudG9nZ2xlKClcblxuLmNvZGUtYmxvY2stLWlzLWhpZGRlbiB7XG4gICY6bm90KC5jb2RlLWJsb2NrLS13aXRoLWRlbW8pIHtcbiAgICAuY29kZS1ibG9ja19fdG9nZ2xlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gICAgfVxuICB9XG5cbiAgLmNvZGUtYmxvY2tfX2NvbnRlbnQge1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBUaGlzIGNvbXBvbmVudCBzaXRzIGluIHRoZSBgY29kZS1ibG9ja19faGVhZGVyYCBhbmQgd3JhcHMgYXJvdW5kIGJvdGggdGhlXG4vLyBidXR0b24gdG8gaGlkZSB0aGUgY29kZSBibG9jayBhbmQgYSBgc2VsZWN0YCB0byBzd2l0Y2ggYmV0d2VlbiBzZXRzIG9mXG4vLyBjb2RlIHRoYXQgbWF5IGJlIHNob3duIGluIHRoaXMgY29kZSBibG9jaywgaWYgZWl0aGVyIG9yIGJvdGggYXJlIHJlcXVpcmVkLlxuXG4uY29kZS1ibG9ja19fYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cblxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgZm9yIGFsbCBhY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIGJsb2NrLiBJZiB0aGUgY29kZSBibG9ja1xuLy8gaW5jbHVkZXMgYm90aCBoZWxwZXIgYW5kIGNvbXBpbGVkIG1hcmt1cCwgdGhlIGhlYWRlciB3aWxsIGNvbnRhaW4gdGhlXG4vLyB0YWJsaXN0IHJlcXVpcmVkIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZW0uIElmIHRoZSBjb2RlIGJsb2NrIGlzIGhpZGVhYmxlLFxuLy8gdGhlIGhlYWRlciB3aWxsIGFsc28gaW5jbHVkZSBhIGJ1dHRvbiB0byBoaWRlIGl0LiBGaW5hbGx5LCBpZiB0aGVyZSBhcmVcbi8vIG11bHRpcGxlIHNldHMgb2YgY29kZSB0aGF0IG1heSBiZSBzaG93biBpbiB0aGlzIGNvZGUgYmxvY2ssIHRoZSBoZWFkZXIgd2lsbFxuLy8gY29udGFpbiBhIGBzZWxlY3RgIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZW0uXG5cbi5jb2RlLWJsb2NrX19oZWFkZXIge1xuICAvLyBib3ggbW9kZWxcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpIGRlZmF1bHQoc3BhY2luZyk7XG4gIGZsZXg6IDAgMCBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYmFja2dyb3VuZDogdWktY29sb3IoZ3JheSwgbGlnaHQpO1xuXG4gIC5zZWxlY3QsXG4gIC50YWJsaXN0IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlXG4gIH1cblxuICAudGFibGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBUaGlzIGNvbXBvbmVudCBhbGxvd3MgdGhlIGNvZGUgdG8gc2Nyb2xsIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LlxuXG4uY29kZS1ibG9ja19fY29kZS1jb250YWluZXIge1xuICBvdmVyZmxvdzogYXV0bztcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuXG4vLypcbi8vIFRoZSB0aGluZyB0aGF0IHRvZ2dsZXMuXG5cbi5jb2RlLWJsb2NrX190b2dnbGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXI6IG5vbmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBAaW5jbHVkZSBmb250LXNpemUoY29udHJvbCk7XG4gIHBhZGRpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSkgMDtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlO1xuXG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5KTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgPiAuaWNvbiB7XG4gICAgLy8gQGluY2x1ZGUgaWNvbi0tcmVjb2xvcihncmF5LCBkYXJrZXIpO1xuICAgIG1hcmdpbi1yaWdodDogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbn1cblxuLy8qXG4vLyBDb250YWluZXIgYXJvdW5kIHRoZSBjb2RlIGFuZCBoZWFkZXIuXG5cbi5jb2RlLWJsb2NrX19jb250ZW50IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuM3MgZWFzZTtcbiAgbWF4LWhlaWdodDogMTVyZW07XG59XG5cblxuXG4vLypcbi8vIFRoZSBhY3R1YWwgY29kZSBmb3IgdGhlIGFzc29jaWF0ZWQgZGVtby4gVGhpcyBpcyB3aGVyZSBhbGwgb2YgdGhlIHN0eWxlc1xuLy8gZm9yIHRoZSBzeW50YXggaGlnaGxpZ2h0aW5nIHNob3VsZCBnby4gVGhpcyBzdWJjb21wb25lbnQgd3JhcHMgYXJvdW5kIHRoZVxuLy8gY29kZSBhbmQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIHNpZGUgcGFkZGluZyBzbyB0aGF0IHRoZSBjb2RlIGlzIHNjcm9sbGFibGVcbi8vIHdoZW4gaXQgb3ZlcmZsb3dzLlxuXG4uY29kZS1ibG9ja19fY29kZSB7XG4gIC8vIGJveCBtb2RlbFxuICBtYXJnaW46IDA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAvLyBPbmx5IHByb3ZpZGUgaGFsZiBzcGFjaW5nIG9uIHRoZSB0b3AgKHdpdGggbWF0Y2hpbmcgaGFsZiBzcGFjaW5nIG9uIHRoZVxuICAvLyBib3R0b20gb2YgdGhlIGhlYWRlcikuXG4gIHBhZGRpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSkgZGVmYXVsdChzcGFjaW5nKSBkZWZhdWx0KHNwYWNpbmcpO1xuXG4gIC8vIHR5cGVcbiAgQGluY2x1ZGUgZm9udC1zaXplKGNvZGUtYmxvY2spO1xuICBsaW5lLWhlaWdodDogMS4zO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAvLyBOZWVkcyBmdWxsIHBhZGRpbmcgdG9wIHdoZW4gdGhlcmUgaXMgbm8gaGVhZGVyLlxuICAuY29kZS1ibG9jazpub3QoLmNvZGUtYmxvY2stLXdpdGgtaGVhZGVyKTpub3QoLmNvZGUtYmxvY2stLWNvbmRlbnNlZCk6bm90KC5jb2RlLWJsb2NrLS13aXRoLWRlbW8pICYge1xuICAgIHBhZGRpbmctdG9wOiBkZWZhdWx0KHNwYWNpbmcpO1xuICB9XG5cbiAgLmNvZGUtYmxvY2stLXdpdGgtZGVtbzpub3QoLmNvZGUtYmxvY2stLXdpdGgtaGVhZGVyKSAmIHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgfVxuXG4gIC8vIEVuc3VyZSB2ZXJ5IGJhc2ljIHN0eWxlcyBmb3IgY29kZS5cbiAgPiBjb2RlIHtcbiAgICBAaW5jbHVkZSB0eXBlLS1tb25vc3BhY2UtZm9udC1mYW1pbHk7XG4gICAgcGFkZGluZzogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBmb250LXNpemU6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuXG5cbi8vIFN5bnRheCBoaWdobGlnaHRpbmcgc3R5bGVzLlxuXG4uaGxqcy12YWx1ZSxcbi5obGpzLXN0cmluZyxcbi5obGpzLXByZXByb2Nlc3NvciB7XG4gIGNvbG9yOiBjb2xvcihibHVlKVxufVxuXG4uaGxqcy1zeW1ib2wge1xuICBjb2xvcjogY29sb3IoYmx1ZS1kYXJrZXIpO1xufVxuXG4uaGxqcy1hdF9ydWxlLFxuLmhsanMtYXR0cmlidXRlLFxuLmhsanMta2V5d29yZCB7XG4gIGNvbG9yOiBjb2xvcihncmF5LWRhcmtlcik7XG59XG5cbi5obGpzLWNvbW1lbnQge1xuICBjb2xvcjogcmdiYShjb2xvcihncmF5LWRhcmspLCAwLjUpO1xuICBmb250LXN0eWxlOiBpdGFsaWNcbn1cblxuLmhsanMtdGFnLFxuLmhsanMtdmFyaWFibGUge1xuICBjb2xvcjogY29sb3IoZ3JheS1kYXJrKTtcbn1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uY29kZS1ibG9jay0td2l0aC1kZW1vIHtcbiAgLmNvZGUtYmxvY2tfX2NvbnRlbnQge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgPiAuY29kZS1ibG9ja19faGVhZGVyIHtcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uY29kZS1ibG9ja19fZGVtbyB7XG4gIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZyk7XG59XG5cbi5jb2RlLWJsb2NrX19kZW1vX19jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNvZGUtYmxvY2tfX2lmcmFtZSB7XG4gIGhlaWdodDogMTBlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3Iod2hpdGUpO1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG59XG4iLCIvLyAgICAgICBfX19fXyAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgIC8gIC86OlxcICAgICAgIC8gIC9cXCAgICAgICAgL19fL1xcICAgICAgICAvICAvXFxcbi8vICAgICAvICAvOi9cXDpcXCAgICAgLyAgLzovXyAgICAgIHwgIHw6OlxcICAgICAgLyAgLzo6XFxcbi8vICAgIC8gIC86LyAgXFw6XFwgICAvICAvOi8gL1xcICAgICB8ICB8Onw6XFwgICAgLyAgLzovXFw6XFxcbi8vICAgL19fLzovIFxcX19cXDp8IC8gIC86LyAvOi9fICBfX3xfX3w6fFxcOlxcICAvICAvOi8gIFxcOlxcXG4vLyAgIFxcICBcXDpcXCAvICAvOi8vX18vOi8gLzovIC9cXC9fXy86Ojo6fCBcXDpcXC9fXy86LyBcXF9fXFw6XFxcbi8vICAgIFxcICBcXDpcXCAgLzovIFxcICBcXDpcXC86LyAvOi9cXCAgXFw6XFx+flxcX19cXC9cXCAgXFw6XFwgLyAgLzovXG4vLyAgICAgXFwgIFxcOlxcLzovICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXCAgLzovXG4vLyAgICAgIFxcICBcXDo6LyAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgIFxcX19cXC8gICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cbi8vXG4vLypcbi8vIEBwYXR0ZXJuIERlbW9cbi8vXG4vLyBBIGNvbnRhaW5lciBhcm91bmQgYSBkZW1vIChvciBzZXQgb2YgZGVtb3MpIG9mIGEgY29tcG9uZW50LiBUaGUgc3R5bGVzIGZvclxuLy8gdGhpcyBjb21wb25lbnQgYXJlIHZlcnkgbGlnaHQg4oCUwqB0aGV5IGFyZSBtZWFudCBub3QgdG8gaW50ZXJmZXJlIHdpdGggdGhlXG4vLyBjb21wb25lbnRzIGJlaW5nIGRlbW9uc3RyYXRlZC4gVGhlIEphdmFTY3JpcHQgY29tcG9uZW50LCBob3dldmVyLCBjb250cm9sc1xuLy8gbXVjaCBvZiB0aGUgY2hpbGQtYGlmcmFtZWAtc2lkZSBjb21tdW5pY2F0aW9uLCBpbmNsdWRpbmcgY29tbXVuaWNhdGluZ1xuLy8gaGVpZ2h0IGNoYW5nZXMsIHVwZGF0aW5nIGNsYXNzZXMsIHNlbmRpbmcgbWFya3VwLCBhbmQgcnVubmluZyByZWdpc3RlcmVkXG4vLyBldmVudCBoYW5kbGVycy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbiRkZW1vLS1taW4taGVpZ2h0OiByZW0oMTYwKTtcblxuXG5cbi8vKlxuLy8gQSBjb250YWluZXIgZm9yIGEgZGVtbyBvZiBhIGNvbXBvbmVudCBhbmQsIG9wdGlvbmFsbHksIHZhcmlhdGlvbnMgb24gdGhhdFxuLy8gY29tcG9uZW50IHRoYXQgdGhlIGRldmVsb3BlciBoYXMgc3BlY2lmaWVkIHRvIGRpc3BsYXkgam9pbnRseS5cbi8vXG4vLyBAaGVscGVyXG4vLyA8JSBtYXJrdXAgPSBcIjxkaXYgY2xhc3M9J2Zvbycgc3R5bGU9J2hlaWdodDogMnJlbTsnPjwvZGl2PlwiICU+XG4vLyA8JT0gZG9ja3NfZGVtbyA6Ok9wZW5TdHJ1Y3QubmV3KFxuLy8gICBuYW1lOiBcImZvb1wiLFxuLy8gICBjb21wb25lbnQ6IDo6T3BlblN0cnVjdC5uZXcobmFtZTogXCJmb29cIiwgbWFya3VwOiBtYXJrdXApLFxuLy8gICBqb2ludF92YXJpYXRpb25zOiBbXG4vLyAgICAgOjpPcGVuU3RydWN0Lm5ldyhuYW1lOiBcImZvby0tYmFyXCIsIG1hcmt1cDogbWFya3VwKSxcbi8vICAgICA6Ok9wZW5TdHJ1Y3QubmV3KG5hbWU6IFwiZm9vLS1iYXpcIiwgbWFya3VwOiBtYXJrdXApXG4vLyAgIF1cbi8vICkgJT5cblxuLmRlbW8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG4gIG1pbi1oZWlnaHQ6ICRkZW1vLS1taW4taGVpZ2h0O1xufVxuXG5cblxuLy8qXG4vLyBBIHNpbmdsZSBkZW1vIHdpdGhpbiB0aGUgcmVzaXphYmxlIGlmcmFtZS4gU3BhY2luZyBzdHlsZXMgYXJlIG9ubHkgYXBwbGllZCB0b1xuLy8gc2libGluZ3Mgb2YgYW5vdGhlciBkZW1vIHNlY3Rpb24gc28gdGhhdCB0aGUgc2VwYXJhdGlvbiBvbmx5IGFwcGxpZXMgdG8gdGhlXG4vLyBzZWNvbmQgdGhyb3VnaCBsYXN0IGVsZW1lbnQgb2YgYSBqb2ludCBkZW1vLlxuLy9cbi8vIFRoZSBKYXZhU2NyaXB0IGNvbXBvbmVudCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBtaW5pbXVtIGhlaWdodCBub3RlZCBhYm92ZVxuLy8gd2lsbCBiZSBldmVubHkgYWxsb2NhdGVkIGFtb25nIHRoZSBgZGVtb19fc2VjdGlvbmBzIHdpdGhpbiBhIGBkZW1vYC5cbi8vXG4vLyBZb3UgY2FuIG1ha2UgdXNlIG9mIHRoZSBoZWxwZXJzIGluIGBkZW1vLWhlbHBlcnMuc2Nzc2AgdG8gcHJvdmlkZSBjdXN0b21cbi8vIHN0eWxlcyBmb3Igc2VjdGlvbnMgY29udGFpbmluZyBnaXZlbiBjb21wb25lbnRzLiBUaGUgSmF2YVNjcmlwdCBjb21wb25lbnRcbi8vIHdpbGwgZmluZCB0aGUgbGFzdCBzZWN0aW9uIGFuZCBhc3NpZ24gaXRzIGJhY2tncm91bmQgY29sb3IgdG8gdGhlXG4vLyBiYWNrZ3JvdW5kIG9mIHRoZSBlbnRpcmUgZGVtbyBzbyB0aGF0IHRoZXJlIGlzIG5vIGZsYXNoIG9mIHdoaXRlIG9uIHRoZVxuLy8gYm90dG9tIG9mIHRoZSBkZW1vIGR1cmluZyByZXNpemVzLlxuXG4uZGVtb19fc2VjdGlvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3Iod2hpdGUpO1xuXG4gIH4gLmRlbW9fX3NlY3Rpb24ge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBjb2xvcihncmF5LWxpZ2h0KTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIGRlc2NyaXB0b3IgZm9yIHRoZSBjdXJyZW50IHNlY3Rpb24ncyBkZW1vLiBUaGlzIGlzIHByb3ZpZGVkIGluIG9yZGVyIHRvXG4vLyBkaXN0aW5ndWlzaCB2YXJpYW50cyB3aXRoaW4gYSBqb2ludCBkZW1vLlxuXG4uZGVtb19faGVhZGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luLXJpZ2h0OiBuZWdhdGl2ZShoYWxmKGRlZmF1bHQoc3BhY2luZykpKTtcbiAgcGFkZGluZzogaGFsZihkZWZhdWx0KHNwYWNpbmcpKSBkZWZhdWx0KHNwYWNpbmcpIDA7XG5cbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICBfX18gICAgICAgIF9fX19fICAgICAgICBfX18gICAgICAgIF9fX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC9fXy98ICAgICAgIC8gIC9cXCAgICAgICAgICAgICAgICAgLyAgL1xcICAgICAgLyAgLzo6XFwgICAgICAvICAvXFwgICAgICAvICAvOjpcXFxuLy8gICAgICAvICAvOi9fICAgICAgfCAgfDp8ICAgICAgLyAgLzo6XFwgICAgICAgICAgICAgICAvICAvOjpcXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi9fICAgIC8gIC86L1xcOlxcXG4vLyAgICAgLyAgLzovIC9cXCAgICAgfCAgfDp8ICAgICAvICAvOi9cXDpcXF9fXyAgICAgX19fICAvICAvOi9cXDpcXCAgLyAgLzovICBcXDpcXCAgLyAgLzovIC9cXCAgLyAgLzovICBcXDpcXFxuLy8gICAgLyAgLzovIC86L18gIF9ffF9ffDp8ICAgIC8gIC86L34vOi9fXy9cXCAgIC8gIC9cXC8gIC86LyAgXFw6XFwvX18vOi8gXFxfX1xcOnwvICAvOi8gLzovXy9fXy86LyBcXF9fXFw6fFxuLy8gICAvX18vOi8gLzovIC9cXC9fXy86Ojo6XFxfX18vX18vOi8gLzovXFwgIFxcOlxcIC8gIC86L19fLzovIFxcX19cXDpcXCAgXFw6XFwgLyAgLzovX18vOi8gLzovIC9cXCAgXFw6XFwgLyAgLzovXG4vLyAgIFxcICBcXDpcXC86LyAvOi8gICB+XFx+flxcOjo6OnwgIFxcOlxcLzovICBcXCAgXFw6XFwgIC86L1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFwgIC86L1xcICBcXDpcXC86LyAvOi9cXCAgXFw6XFwgIC86L1xuLy8gICAgXFwgIFxcOjovIC86LyAgICAgfH5+fDp8fn4gXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXC86LyAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcLzovXG4vLyAgICAgXFwgIFxcOlxcLzovICAgICAgfCAgfDp8ICAgIFxcICBcXDpcXCAgICAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6L1xuLy8gICAgICBcXCAgXFw6Oi8gICAgICAgfCAgfDp8ICAgICBcXCAgXFw6XFwgICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi8gICAgICBcXF9fXFwvICAgICAgXFwgIFxcOjovICAgICAgXFxfX1xcL1xuLy8gICAgICAgXFxfX1xcLyAgICAgICAgfF9ffC8gICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gRXhwbG9kZWRcbi8vXG4vLyBBbiBleHBsb2RlZCB2aWV3IG9mIGEgZ2l2ZW4gRE9NIHN0cnVjdHVyZSB0aGF0IGNhbiBiZSBmcmVlbHkgcm90YXRlZC4gSXRcbi8vIGFsbG93cyB0aGUgdXNlciB0byBzZWUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50IGFzIGl0IGlzIHJlbmRlcmVkLFxuLy8gaGVscGluZyB0aGVtIGxlYXJuIGFib3V0IHN1YmNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbi8vKlxuLy8gVGhpcyBpcyB0aGUgYmFzZSBjb21wb25lbnQgZm9yIGFuIGV4cGxvc2lvbi4gSXQgY29udGFpbnMgdGhlIHNvdXJjZSBtYXJrdXBcbi8vIGFuZCB0aGUgZXhwbG9kZWQgcmVwcmVzZW50YXRpb24sIGFzIHdlbGwgYXMgY29tbXVuaWNhdGVzIG92ZXJhbGwgc3RhdGVzIG9mXG4vLyB0aGUgY29tcG9uZW50IHRvIHN1YmNvbXBvbmVudHMuXG4vL1xuLy8gQGhlbHBlclxuLy8gPCU9IGRvY2tzX2V4cGxvZGVkIG1hcmt1cDogJVEoXG4vLyAgIDxkaXYgY2xhc3M9XCJmb29cIiBzdHlsZT1cInBhZGRpbmc6IDFlbTtcIj5cbi8vICAgICA8ZGl2IGNsYXNzPVwiZm9vX19iYXJcIiBzdHlsZT1cImhlaWdodDogNWVtOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4vLyAgICAgICA8ZGl2IGNsYXNzPVwiZm9vX19iYXJfX2JhelwiIHN0eWxlPVwid2lkdGg6IDUwJTsgaGVpZ2h0OiAxMDAlOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDtcIj48L2Rpdj5cbi8vICAgICAgIDxkaXYgY2xhc3M9XCJmb29fX2Jhcl9fYmF6XCIgc3R5bGU9XCJ3aWR0aDogNTAlOyBoZWlnaHQ6IDEwMCU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiA1MCU7XCI+PC9kaXY+XG4vLyAgICAgPC9kaXY+XG4vLyAgIDwvZGl2PlxuLy8gKSAlPlxuXG4uZXhwbG9kZWQge31cblxuLmV4cGxvZGVkLS1pcy1iZWluZy1pbml0aWFsaXplZCB7XG4gIC5leHBsb2RlZF9fcGFuZSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2U7XG4gIH1cbn1cblxuXG5cbi5leHBsb2RlZF9fc291cmNlLFxuLmV4cGxvZGVkX19zdHJ1Y3R1cmUge1xuICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpIGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKTtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIGNvbnRhaW5lciBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSBtYXJrdXAgZm9yIHRoZSBjb21wb25lbnQuIFRoaXMgaXNcbi8vIGtlcHQgYXJvdW5kIHNvIHRoYXQgZWFjaCBwYW5lIGNhbiBiZSBhc3NvY2lhdGVkIHRvIGEgc291cmNlIERPTSBub2RlIGZvclxuLy8gYW55IGNvbnN1bWVyIG9mIHRoZSBleHBsb3Npb24gcGFuZSBzZWxlY3Rpb24gdG8gZGlzcGxheSBzb3VyY2Ugc3RydWN0dXJlXG4vLyBkZXRhaWxzLlxuXG4uZXhwbG9kZWRfX3NvdXJjZSB7fVxuXG4vLypcbi8vIEEgY29udGFpbmVyIHRoYXQgd3JhcHMgZXhhY3RseSBhcm91bmQgdGhlIHNvdXJjZSBtYXJrdXAuIFRoaXMgZXh0cmFcbi8vIGNvbnRhaW5lciAoY29ycmVzcG9uZGluZyB0byB0aGUgc3RydWN0dXJlJ3MgYGV4cGxvZGVkX19zdHJ1Y3R1cmVfX2NvbnRlbnRgKVxuLy8gaXMgcmVxdWlyZWQgdG8gc2ltcGxpZnkgYWJzb2x1dGUgcG9zaXRpb25pbmcgY2FsY3VsYXRpb25zIGZvciB0aGVcbi8vIEphdmFTY3JpcHQgY29tcG9uZW50LlxuXG4uZXhwbG9kZWRfX3NvdXJjZV9fY29udGVudCB7fVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGFyb3VuZCB0aGUgZXhwbG9kZWQgcmVwcmVzZW50YXRpb24uIFRoaXMgY29udGFpbmVyIHByb3ZpZGVzXG4vLyB0aGUgcGVyc3BlY3RpdmUgcmVxdWlyZWQgdG8gbWFrZSB0aGUgY29tcG9uZW50IHRocmVlLWRpbWVuc2lvbmFsLlxuXG4uZXhwbG9kZWRfX3N0cnVjdHVyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGVyc3BlY3RpdmU6IDIwMDBweDtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIHRoYXQgd3JhcHMgZXhhY3RseSBhcm91bmQgdGhlIGV4cGxvZGVkIHN0cnVjdHVyZS4gVGhpcyBleHRyYVxuLy8gY29udGFpbmVyIGV4aXN0cyBzbyB0aGF0IGBleHBsb2RlZF9fc3RydWN0dXJlYCBjYW4gcHJvdmlkZSBzb21lIHBhZGRpbmcvXG4vLyBob3Jpem9udGFsIGNlbnRlcmluZyBvZiB0aGUgZXhwbG9kZWQgc3RydWN0dXJlIHdoaWxlIGFsc28gcHJvdmlkaW5nIGFcbi8vIHNpbXBsZSByZWxhdGl2ZSBjb250YWluZXIgKHRoaXMgc3ViY29tcG9uZW50KSBmcm9tIHdoaWNoIHRvIG1ha2UgYWJzb2x1dGVcbi8vIHBvc2l0aW9uaW5nIGNhbGN1bGF0aW9ucy5cblxuLmV4cGxvZGVkX19zdHJ1Y3R1cmVfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDA7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGZvciBhbGwgY29udHJvbHMgKHJhbmdlIHNsaWRlcnMpIHRoYXQgY2FuIGJlIHVzZWQgdG9cbi8vIG1hbmlwdWxhdGUgdGhlIGNvbXBvbmVudC5cblxuLmV4cGxvZGVkX19jb250cm9sLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgbWFyZ2luOiAzcmVtIG5lZ2F0aXZlKGRlZmF1bHQoc3BhY2luZykpIDA7XG59XG5cbi8vKlxuLy8gQSBjb250YWluZXIgZm9yIGEgc2luZ2xlIGNvbnRyb2wgdGhhdCBtYW5pcHVsYXRlcyB0aGUgY29tcG9uZW50LlxuXG4uZXhwbG9kZWRfX2NvbnRyb2wge1xuICBmbGV4OiAxIDEgMDtcbiAgbWFyZ2luLWxlZnQ6IGRlZmF1bHQoc3BhY2luZyk7XG5cbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gQSBzaW5nbGUgcGFuZSByZXByZXNlbnRpbmcgYSBET00gbm9kZSBpbiB0aGUgc291cmNlIG1hcmt1cC4gVGhlc2UgcGFuZXMgYXJlXG4vLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYnkgdGhlIEphdmFTY3JpcHQgcGFydCBvZiB0aGlzIGNvbXBvbmVudHMgYW5kLFxuLy8gbGlrZXdpc2UsIGFyZSByb3RhdGVkIGluIHRocmVlLWRpbWVuc2lvbmFsIHNwYWNlIGFzIHRoZSB1c2VyIGRyYWdzIG92ZXIgdGhlXG4vLyBjb21wb25lbnQuXG5cbi5leHBsb2RlZF9fcGFuZSB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG5cbiAgLy8gYmFja2Ryb3BcbiAgQGluY2x1ZGUgZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh1aS1jb2xvcihncmF5LCBkYXJrZXIpLCAwLjYpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHVpLWNvbG9yKGdyYXkpLCAwLjUpO1xuXG4gIC8vIHRyYW5zaXRpb25cbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoYmx1ZSk7XG4gIH1cbn1cblxuLy8qXG4vLyBUaGUgSmF2YVNjcmlwdCBhZGRzIHRoaXMgc3RhdGUgdG8gcGFuZXMgdGhhdCBoYXZlIGJlZW4gY2xpY2tlZC8gdGFwcGVkIGJ5XG4vLyB0aGUgdXNlci4gVGhlIGFjdHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWN0aXZlIHBhbmUgaXMgZGVmZXJyZWQgdG8gb3RoZXJcbi8vIGNvbXBvbmVudHMgKHRoaXMgaXMgZG9uZSBieSBmaXJpbmcgYW4gZXZlbnQgd2l0aCBhIHJlZmVyZW5jZSB0byB0aGlzXG4vLyBzZWxlY3RlZCBwYW5lKS5cbi8vXG4vLyBAZGVtb190eXBlIG5vbmVcbi8vIEBzZXRfYnkgRXhwbG9kZWQuY2xpY2tcblxuLmV4cGxvZGVkX19wYW5lLS1pcy1zZWxlY3RlZCB7XG4gICYsICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHVpLWNvbG9yKGJsdWUsIGRhcmspO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbiIsIi5maWVsZCB7XG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmspO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAgaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbn1cblxuJGZpZWxkLS1zd2l0Y2gtLXNpemU6IG11bHRpcGx5KDEuNSwgZGVmYXVsdChzcGFjaW5nKSk7XG5cbi5maWVsZC0tc3dpdGNoIHtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICA+IC5sYWJlbCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmctbGVmdDogbXVsdGlwbHkoMS41LCAkZmllbGQtLXN3aXRjaC0tc2l6ZSk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxpbmUtaGVpZ2h0OiAkZmllbGQtLXN3aXRjaC0tc2l6ZTtcbiAgICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IG11bHRpcGx5KCRmaWVsZC0tc3dpdGNoLS1zaXplLCAwLjcpO1xuICAgICAgd2lkdGg6IG11bHRpcGx5KDAuMywgJGZpZWxkLS1zd2l0Y2gtLXNpemUpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBoYWxmKCRmaWVsZC0tc3dpdGNoLS1zaXplKTtcbiAgICAgIGxlZnQ6IGhhbGYoJGZpZWxkLS1zd2l0Y2gtLXNpemUpO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB1aS1jb2xvcihibHVlLCBkYXJrZXIpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTYwJSkgcm90YXRlKDQ1ZGVnKTtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogJGZpZWxkLS1zd2l0Y2gtLXNpemU7XG4gICAgICB3aWR0aDogJGZpZWxkLS1zd2l0Y2gtLXNpemU7XG4gICAgICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5KTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDsgbGVmdDogMDtcbiAgICAgIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICB9XG5cbiAgPiAuZmllbGRfX3N3aXRjaDpjaGVja2VkICsgLmxhYmVsOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogdWktY29sb3IoYmx1ZSk7XG4gIH1cblxuICA+IC5maWVsZF9fc3dpdGNoOmNoZWNrZWQgKyAubGFiZWw6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgPiAuZmllbGRfX3N3aXRjaCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG9wYWNpdHk6IDAuMTtcbiAgfVxuXG4gICsgLmZpZWxkLS1zd2l0Y2gge1xuICAgIG1hcmdpbi10b3A6IGRlZmF1bHQoc3BhY2luZyk7XG4gIH1cbn1cblxuLmZpZWxkX19pY29uIHtcbiAgZmxleDogMCAwIGF1dG87XG4gIGZvbnQtc2l6ZTogMDtcblxuICA+IC5pY29uIHtcbiAgICBAaW5jbHVkZSBpY29uLS1yZWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIH1cbn1cblxuLmZpZWxkX19pbnB1dCB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiBkZWZhdWx0KGNvbnRyb2wtc2l6ZSk7XG4gIGZvbnQtc2l6ZTogMS4xcmVtO1xuICBAaW5jbHVkZSB0eXBlLS1kZWZhdWx0LWZvbnQtZmFtaWx5O1xuXG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiByZ2JhKHVpLWNvbG9yKGdyYXksIGRhcmtlciksIDAuNSk7XG4gIH1cblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHJnYmEodWktY29sb3IoZ3JheSwgZGFya2VyKSwgMC41KTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbn1cblxuIiwiLy8qXG4vLyBAcGF0dGVybiBQYWdlIEhlYWRlclxuLy8gQGdyb3VwIFBhcnRpYWxzXG4vL1xuLy8gQSBncm91cCBvZiBoZWFkaW5ncyBhbmQgb3RoZXIgcGFnZS1sZXZlbCBpbmZvcm1hdGlvbiB0aGF0IGFwcGVhcnMgYXQgdGhlXG4vLyB0b3Agb2YgYSBnaXZlbiBwYWdlIG9yIHNlY3Rpb24uXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cbi8vKlxuLy8gQG1hcmt1cFxuLy8gPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4vLyAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtLXZlcnRpY2FsbHktY2VudGVyZWRcIj5cbi8vICAgICA8ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbVwiPlxuLy8gICAgICAgPGgxIGNsYXNzPVwidHlwZSB0eXBlLS1oZWFkaW5nIHR5cGUtLWhlYWRpbmctMVwiPlRoZSB0aXRsZTwvaDE+XG4vLyAgICAgPC9kaXY+XG4vL1xuLy8gICAgIDxkaXYgY2xhc3M9XCJncmlkX19pdGVtIGdyaWRfX2l0ZW0tLW5vLWZsZXhcIj5cbi8vICAgICAgIDxidXR0b24gY2xhc3M9XCJkb2Nrcy1idXR0b24gZG9ja3MtYnV0dG9uLS1kYXJrXCI+QWN0aW9uPC9idXR0b24+XG4vLyAgICAgPC9kaXY+XG4vLyAgIDwvZGl2PlxuLy8gPC9oZWFkZXI+XG5cbi5wYWdlLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXkpO1xuICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpO1xuICBwYWRkaW5nLWJvdHRvbTogZGVmYXVsdChzcGFjaW5nKTtcbiAgbWluLWhlaWdodDogcmVtKDY2KTtcblxuICAudHlwZS0taGVhZGluZy0xIHtcbiAgICBtYXJnaW46IC0wLjVlbSAwO1xuICB9XG59XG4iLCIkaW5saW5lLWdyb3VwLS1zcGFjaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG4uaW5saW5lLWdyb3VwIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLXJpZ2h0OiBuZWdhdGl2ZSgkaW5saW5lLWdyb3VwLS1zcGFjaW5nKTtcbiAgbWFyZ2luLWJvdHRvbTogbmVnYXRpdmUoJGlubGluZS1ncm91cC0tc3BhY2luZyk7XG59XG5cbi5pbmxpbmUtZ3JvdXBfX2l0ZW0ge1xuICBtYXJnaW4tcmlnaHQ6ICRpbmxpbmUtZ3JvdXAtLXNwYWNpbmc7XG4gIG1hcmdpbi1ib3R0b206ICRpbmxpbmUtZ3JvdXAtLXNwYWNpbmc7XG59XG4iLCIvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX19cbi8vICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgLyAgL1xcICAgICAgICBfX19cbi8vICAgICAgICAgICAgICAgICAgLyAgL1xcICAgICAgLyAgLzovXyAgICAgIC8gIC9cXFxuLy8gICAgX19fICAgICBfX18gIC8gIC86LyAgICAgLyAgLzovIC9cXCAgICAvICAvOi9cbi8vICAgL19fL1xcICAgLyAgL1xcL19fLzo6XFwgICAgLyAgLzovIC86OlxcICAvICAvOi9cbi8vICAgXFwgIFxcOlxcIC8gIC86L1xcX19cXC9cXDpcXF9fL19fLzovIC86L1xcOlxcLyAgLzo6XFxcbi8vICAgIFxcICBcXDpcXCAgLzovICAgIFxcICBcXDpcXC9cXCAgXFw6XFwvOi9+LzovX18vOi9cXDpcXFxuLy8gICAgIFxcICBcXDpcXC86LyAgICAgIFxcX19cXDo6L1xcICBcXDo6LyAvOi9cXF9fXFwvICBcXDpcXFxuLy8gICAgICBcXCAgXFw6Oi8gICAgICAgL19fLzovICBcXF9fXFwvIC86LyAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgL19fLzovICAgICAgICBcXF9fXFwvXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcX19cXC9cblxuLy8qXG4vLyBAcGF0dGVybiBMaXN0XG4vL1xuLy8gQSBsaXN0IGFsbG93cyB5b3UgdG8gcHJlc2VudCBhIHNldCBvZiBzZWxlY3RhYmxlIGl0ZW1zIHZlcnRpY2FsbHkuIFRoZXNlXG4vLyBsaXN0cyBjYW4gYmUgYmUgc2VwYXJhdGVkIGludG8gYW55IG51bWJlciBvZiBzdWJsaXN0cywgYW5kIHR3byBsZXZlbHMgb2Zcbi8vIHN1YmhlYWRpbmdzIGFyZSBhdmFpbGFibGUgKHNvLCB5b3UgY2FuIGhhdmUgYSBzdWJsaXN0IHdpdGhpbiBhIHN1Ymxpc3QpLlxuLy9cbi8vIFRoZSBzdWJsaXN0cyBjYW4gb3B0aW9uYWxseSBhbGxvdyBhIHN1YmhlYWRpbmcgdG8gdG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mXG4vLyB0aGUgYXNzb2NpYXRlZCBzdWJsaXN0LiBJdCBhbHNvIHN1cHBvcnRzIHRoZSBhYmlsaXR5IHRvIGZpbHRlciB0aGUgY29udGVudHNcbi8vIG9mIGEgbGlzdCB0byBvbmx5IGl0ZW1zIG1hdGNoaW5nIGEgZ2l2ZW4gc3RyaW5nLCBoaWRpbmcgc3ViaGVhZGluZ3MgYXNcbi8vIG5lY2Vzc2FyeS5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbi8vKlxuLy8gVGhlIGNvcmUgY29udGFpbmVyIGZvciBhIGxpc3QuIExpc3QgaXRlbXMgY2FuIGdvIGRpcmVjdGx5IGluIHRoaXMgY29udGFpbmVyXG4vLyBvciwgaWYgeW91IHdhbnQgdG8gcHJvdmlkZSB0b2dnbGUtYWJsZSBvciBmaWx0ZXItYWJsZSBzdWJsaXN0cywgd2l0aGluIGFcbi8vIHN1Ymxpc3QuXG5cbi5saXN0IHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiBkZWZhdWx0KHNwYWNpbmcpIDAgZG91YmxlKGRlZmF1bHQoc3BhY2luZykpO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gIC50eXBlLS1oZWFkaW5nIHtcbiAgICBwYWRkaW5nLWxlZnQ6IGRlZmF1bHQoc3BhY2luZyk7XG4gICAgcGFkZGluZy1yaWdodDogZGVmYXVsdChzcGFjaW5nKTtcbiAgfVxuXG4gIC5wb3BvdmVyICYge1xuICAgIG1hcmdpbi1ib3R0b206IGRlZmF1bHQoc3BhY2luZyk7XG4gIH1cbn1cblxuLy8qXG4vLyBBbiBpbmRpdmlkdWFsIGl0ZW0gd2l0aGluIGEgbGlzdC4gVGhlc2UgaXRlbXMgaGF2ZSBob3ZlciwgZm9jdXMsIGFuZCBhY3RpdmVcbi8vIHN0YXRlcyBzbyB0aGF0IGl0IGlzIGNsZWFyIHdoYXQgaXRlbSBpcyBhY3Rpb25hYmxlLyBiZWluZyBhY3Rpb25lZC5cblxuLmxpc3RfX2l0ZW0ge1xuICAvLyBib3ggbW9kZWxcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHF1YXJ0ZXIoZGVmYXVsdChzcGFjaW5nKSkgZGVmYXVsdChzcGFjaW5nKTtcblxuICAvLyBiYWNrZHJvcFxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gdHlwZVxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIH1cblxuICAmOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoYmx1ZSk7XG4gICAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gIH1cbn1cblxuLy8qXG4vLyBBbiBpdGVtIHRoYXQgaXMgY3VycmVudGx5IGFjdGl2ZSBGb3IgZXhhbXBsZSwgaW4gdGhlIHNpZGViYXIsIHRoaXMgY2xhc3MgaXNcbi8vIHVzZWQgZm9yIHRoZSBpdGVtIHJlcHJlc2VudGluZyB0aGUgY3VycmVudGx5LWFjdGl2ZSBwYXR0ZXJuLlxuXG4ubGlzdF9faXRlbS0taXMtYWN0aXZlIHtcbiAgJixcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoYmx1ZSk7XG4gICAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gIH1cbn1cblxuLy8qXG4vLyBBIGxpc3QgaXRlbSB0aGF0IGlzIGluZGVudGVkIG9uIHRoZSBsZWZ0IHRvIGluZGljYXRlIHRoYXQgaXQgaXMgcmVsYXRlZCB0b1xuLy8gdGhlIGNsb3Nlc3QsIG5vbi1pbmRlbnRlZCBpdGVtIGFib3ZlIGl0LlxuXG4ubGlzdF9faXRlbS0taW5kZW50ZWQge1xuICBwYWRkaW5nLWxlZnQ6IGNhbGMoI3tkZWZhdWx0KHNwYWNpbmcpfSArIDJjaCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogY2FsYygje2RlZmF1bHQoc3BhY2luZyl9ICsgMWNoKTtcbiAgICB0b3A6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSh1aS1jb2xvcihibGFjayksIDAuMDcpO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkOmJlZm9yZSB7XG4gICAgaGVpZ2h0OiA4NSU7XG4gIH1cblxuICAubGlzdF9faXRlbTpub3QoLmxpc3RfX2l0ZW0tLWluZGVudGVkKSArICY6YmVmb3JlIHtcbiAgICB0b3A6IDE1JTtcbiAgICBoZWlnaHQ6IDg1JTtcbiAgfVxufVxuXG4vLypcbi8vIEEgc3Vic2V0IG9mIGl0ZW1zIHRoYXQgaGF2ZSB0aGVpciBvd24gaGFkaW5nIHRvIGRpc3Rpbmd1aXNoIHRoZW0uIFRoaXNcbi8vIHN1YmNvbXBvbmVudCBjYW4gY29udGFpbiBhbnkgbnVtYmVyIG9mIGl0ZW1zIGFuZC8gb3Igb3RoZXIgc3VibGlzdHMuIFRoaXNcbi8vIGdyb3VwaW5nIGFsc28gYWxsb3dzIHRoZSBbYEZpbHRlcmFibGVgXShAbGluayBmaWx0ZXJhYmxlKSBjb21wb25lbnQgdG9cbi8vIGFjY3VyYXRlbHkgaGlkZSBzdWJzZXRzIG9mIHRoZSBsaXN0LCBpbmNsdWRpbmcgaGVhZGluZ3Mgd2l0aGluIGEgZ3JvdXBcbi8vIHdoZXJlIGFsbCBpdGVtcyBhcmUgaGlkZGVuLlxuXG4ubGlzdF9fZ3JvdXAge31cblxuXG5cbi8vKlxuLy8gQSBob3Jpem9udGFsIGxpc3Qgb2YgbGlua3Mgc2VwYXJhdGVkIGJ5IHNsYXNoZXMuXG5cbi5saW5rLWxpc3Qge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcblxuICA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMCAwIGF1dG87XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICRsaW5rLWxpc3RfX2l0ZW0tLXNlcGFyYXRvci1oZWlnaHQ6IDgwJTtcblxuICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgLy8gcG9zaXRpb25cbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogaGFsZigxMDAlIC0gJGxpbmstbGlzdF9faXRlbS0tc2VwYXJhdG9yLWhlaWdodCk7XG4gICAgICByaWdodDogLTFweDtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTtcblxuICAgICAgLy8gYm94IG1vZGVsXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogJGxpbmstbGlzdF9faXRlbS0tc2VwYXJhdG9yLWhlaWdodDtcblxuICAgICAgLy8gYmFja2Ryb3BcbiAgICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkIHJnYmEodWktY29sb3IoZ3JheSwgZGFya2VzdCksIDAuMSk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkOmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuICB9XG59XG5cbi8vKlxuLy8gQW4gaW5kaXZpZHVhbCBsaXN0IHdpdGhpbiBhIGxpbmsgbGlzdC4gVGhpcyBjbGFzcyBzaG91bGQgZ28gb24gdGhlIGFjdHVhbFxuLy8gYW5jaG9yIChvciBgYnV0dG9uYCwgaWYgdGhlcmUgaXMgbm8gcmVhc29uYWJsZSBgaHJlZmApIGVsZW1lbnQgc28gdGhhdFxuLy8gdGhlcmUgaXMgYXMgbGFyZ2UgYSBoaXQgdGFyZ2V0IGFzIHBvc3NpYmxlLlxuLy9cbi8vIEVhY2ggaXRlbSAoZXhjZXB0IGZvciB0aGUgbGFzdCBvbmUpIGlzIGdpdmVuIGEgc21hbGwgc2VwYXJhdG9yIHNvIHRoYXQgaXQgaXNcbi8vIGNsZWFyIHdoZXJlIHRoZSBoaXQgYXJlYXMgZW5kLiBUaGlzIGlzIHBsYWNlZCBvbiB0aGUgY29udGFpbmluZyBgbGlgIHNpbmNlXG4vLyB0aGUgYGxpbmstbGlzdF9faXRlbWAgY2FuIGJlIGEgYGJ1dHRvbmAuXG4vL1xuLy8gSW4gdGhlIGRhcmsgdGhlbWUsIHRoZSBjb2xvcnMgZm9yIGVhY2ggbGlzdCBpdGVtIGludmVydC5cblxuLmxpbmstbGlzdF9faXRlbSB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgZGlzcGxheTogYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogcXVhcnRlcihkZWZhdWx0KHNwYWNpbmcpKSBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIEBpbmNsdWRlIHJlbW92ZS1icm93c2VyLXN0eWxpbmc7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3BhY2l0eTogMC42O1xuXG4gIC8vIHR5cGVcbiAgZm9udC1zaXplOiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIGxpc3QgdGhhdCBzaW1wbHkgYXJyYW5nZXMgdGhlIGNvbnRhaW5lZCBgbGlgcyB3aXRoIHNvbWUgc3BhY2luZyBiZXR3ZWVuXG4vLyB0aGVtLlxuXG4udW5zdHlsZWQtbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICA+IGxpIHtcbiAgICBtYXJnaW46IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKSAwO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gICAgICAgIF9fXyAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICBfX19cbi8vICAgICAgIC9fXy9cXCAgICAgIF9fXyAgICAgICAvX18vfCAgICAgIF9fXyAgICAgICAgL19fL1xcXG4vLyAgICAgIHwgIHw6OlxcICAgIC8gIC9cXCAgICAgfCAgfDp8ICAgICAvICAvXFwgICAgICAgXFwgIFxcOlxcXG4vLyAgICAgIHwgIHw6fDpcXCAgLyAgLzovICAgICB8ICB8OnwgICAgLyAgLzovICAgICAgICBcXCAgXFw6XFxcbi8vICAgIF9ffF9ffDp8XFw6XFwvX18vOjpcXCAgIF9ffF9ffDp8ICAgL19fLzo6XFwgICAgX19fX19cXF9fXFw6XFxcbi8vICAgL19fLzo6Ojp8IFxcOlxcX19cXC9cXDpcXF8vX18vOjo6OlxcX19fXFxfX1xcL1xcOlxcX18vX18vOjo6Ojo6OjpcXFxuLy8gICBcXCAgXFw6XFx+flxcX19cXC8gIFxcICBcXDpcXC9cXCB+XFx+flxcOjo6Oi8gIFxcICBcXDpcXC9cXCAgXFw6XFx+flxcfn5cXC9cbi8vICAgIFxcICBcXDpcXCAgICAgICAgIFxcX19cXDo6LyAgfH5+fDp8fn4gICAgXFxfX1xcOjovXFwgIFxcOlxcICB+fn5cbi8vICAgICBcXCAgXFw6XFwgICAgICAgIC9fXy86LyAgIHwgIHw6fCAgICAgIC9fXy86LyAgXFwgIFxcOlxcXG4vLyAgICAgIFxcICBcXDpcXCAgICAgICBcXF9fXFwvICAgIHwgIHw6fCAgICAgIFxcX19cXC8gICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgIHxfX3wvICAgICAgICAgICAgICAgICBcXF9fXFwvXG4vL1xuLy8gTWl4aW5zIGFyZSB1c2VkIHRvIGluY2x1ZGUgY29tbW9uIGZ1bmN0aW9uYWxpdHkgaW4gY29tcG9uZW50cy5cbi8vIFVzZSB0aGVzZSBvdmVyIHBsYWNlaG9sZGVycyBldmVuIHdoZW4gbm8gdmFyaWFibGVzIGFyZSByZXF1aXJlZDpcbi8vIGBAZXh0ZW5kc2AgaXMgbW9yZSB0cm91YmxlIHRoYW4gaXQncyB3b3J0aCwgYW5kIHByb3BlciBjb21wcmVzc2lvblxuLy8gbW9zdGx5IHNvbHZlcyB0aGUgcHJvYmxlbSBvZiBkdXBsaWNhdGVkIG1hcmt1cCBmcm9tIG1peGlucy5cblxuLy8gICAgX19fIF9fXyBfX18gX19fIF8gICAgICBfX18gICBfX1xuLy8gICB8ICAgXFxfIF8vIF9ffCBfIFxcIHwgICAgL19cXCBcXCAvIC9cbi8vICAgfCB8KSB8IHxcXF9fIFxcICBfLyB8X18gLyBfIFxcIFYgL1xuLy8gICB8X19fL19fX3xfX18vX3wgfF9fX18vXy8gXFxfXFxffFxuLy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGxhY2Vob2xkZXJzIHByb3ZpZGluZyBjb21tb24gZGlzcGxheS8gcG9zaXRpb25pbmcgcGF0dGVybnMuXG5cbkBtaXhpbiBjb21wb3NpdGUtbGF5ZXIge1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbn1cblxuQG1peGluIGNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7IGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbkBtaXhpbiBjb3Zlci1hbGwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDsgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcbn1cblxuQG1peGluIHJlbW92ZS1icm93c2VyLXN0eWxpbmcge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuXG5cbi8vICAgIF9fX19fIF9fXyAgXyAgIF8gIF9fXyBfICBfXG4vLyAgIHxfICAgXy8gXyBcXHwgfCB8IHwvIF9ffCB8fCB8XG4vLyAgICAgfCB8fCAoXykgfCB8X3wgfCAoX198IF9fIHxcbi8vICAgICB8X3wgXFxfX18vIFxcX19fLyBcXF9fX3xffHxffFxuLy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGxhY2Vob2xkZXJzIHRvIGhlbHAgd2l0aCB0b3VjaCBkZXZpY2VzLlxuXG5AbWl4aW4gdG91Y2gtc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuXG5cbi8vICAgIF9fX19fX18gICBfX19fXyBfX19cbi8vICAgfF8gICBfXFwgXFwgLyAvIF8gXFwgX198XG4vLyAgICAgfCB8ICBcXCBWIC98ICBfLyBffFxuLy8gICAgIHxffCAgIHxffCB8X3wgfF9fX3xcbi8vXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBsYWNob2xkZXJzIHRvIGFkZCBuaWNlIGZlYXR1cmVzIHRvIHRleHQgY29udGVudC5cblxuQG1peGluIHdvcmQtd3JhcCB7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIGh5cGhlbnM6IGF1dG87XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuIiwiLmRldGFpbHMtc2hlZXQge1xuICBtYXgtd2lkdGg6IDkwJTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDUwJTsgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDAuNHJlbTtcbiAgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYShjb2xvcihibGFjayksIDAuMyk7XG4gIHotaW5kZXg6IDIwO1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZGV0YWlscy1zaGVldC0taXMtYWN0aXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5kZXRhaWxzLXNoZWV0X19vdmVybGF5IHtcbiAgYmFja2dyb3VuZDogcmdiYShjb2xvcihibGFjayksIDAuOSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwOyBib3R0b206IDA7XG4gIHJpZ2h0OiAwOyBsZWZ0OiAwO1xuICB6LWluZGV4OiAxOTtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmRldGFpbHMtc2hlZXRfX292ZXJsYXktLWlzLWFjdGl2ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5cbi5kZXRhaWxzLXNoZWV0X19zZWN0aW9uIHtcbiAgcGFkZGluZzogMXJlbTtcblxuICArIC5kZXRhaWxzLXNoZWV0X19zZWN0aW9uIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgY29sb3Ioc2t5LWRhcmspO1xuICB9XG59XG5cbi5kZXRhaWxzLXNoZWV0X19uYW1lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihza3ktbGlnaHQpO1xuICBwYWRkaW5nOiAwLjFyZW0gMC4yNWVtO1xuICBib3JkZXItcmFkaXVzOiAwLjI1ZW07XG4gIGNvbG9yOiBjb2xvcihzbGF0ZS1saWdodCk7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgbW9ub3NwYWNlO1xuICBtYXJnaW46IDA7XG59XG5cbi5kZXRhaWxzLXNoZWV0X19zdWJ0aXRsZSB7XG4gIG1hcmdpbjogMCAwIDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjZyZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiBjb2xvcihzbGF0ZS1saWdodCk7XG4gIG9wYWNpdHk6IDAuMztcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cbiIsIi8vKlxuLy8gQHBhdHRlcm4gTm90aWNlXG4vL1xuLy8gQSBzaW1wbGUsIGNvbG9yZWQgY29udGFpbmVyIGFyb3VuZCB0aGF0IGVtcGhhc2l6ZXMgdGhlIGNvbnRhaW5lZCB0ZXh0LiBUaGlzXG4vLyBzaG91bGQgYmUgdXNlZCBmb3IgaW1wb3J0YW50IGRldGFpbHMgYWJvdXQgYSBzeW1ib2w7IGZvciBleGFtcGxlLCB0b1xuLy8gaW5kaWNhdGUgdGhhdCBhIGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIG9yIGV4cGVyaW1lbnRhbC5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG4vLypcbi8vIEEgcmVndWxhciBub3RpY2UuXG4vL1xuLy8gQG1hcmt1cFxuLy8gPGRpdiBjbGFzcz1cIm5vdGljZVwiPlxuLy8gICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXJcIj5cbi8vICAgICA8cD5QbGVhc2UgZG9uJ3QgdXNlIHRoaXMgY29tcG9uZW50IGFueW1vcmUhIEl0J3Mgbm8gZ29vZC48L3A+XG4vLyAgIDwvZGl2PlxuLy8gPC9kaXY+XG5cbi5ub3RpY2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcih5ZWxsb3cpO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGNvbG9yOiB1aS1jb2xvcih5ZWxsb3csIGRhcmspO1xuICBwYWRkaW5nOiAxcmVtO1xuICBib3JkZXItcmFkaXVzOiBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBAaW5jbHVkZSBmb250LXNpemUocGFyYWdyYXBoLXNtYWxsKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC50eXBlLCBwLCBjb2RlIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cblxuICAudHlwZS0taGVhZGluZyB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgfVxufVxuXG4vLypcbi8vIEEgbm90aWNlIHRoYXQgaW5kaWNhdGVzIHNvbWV0aGluZyBpcyBuZXcgYWJvdXQgdGhlIGF0dGFjaGVkIHN5bWJvbC5cbi8vXG4vLyBAZGVtb190eXBlIGpvaW50XG5cbi5ub3RpY2UtLW5ldyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGJsdWUpO1xuICBjb2xvcjogdWktY29sb3IoYmx1ZSwgZGFya2VyKTtcbn1cbiIsIiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgTmV4dCBQb3BvdmVyXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuJHBvcG92ZXItdG9vbHRpcC1zaXplOiByZW0oMTApO1xuJHBvcG92ZXItbWF4LXdpZHRoOiByZW0oNDAwKTtcbiRwb3BvdmVyLW1pbi13aWR0aDogcmVtKDE1MCk7XG4kcG9wb3Zlci1tYXgtd2lkdGgtcGVyY2VudDogMTAwJTtcbiRwb3BvdmVyLW1heC1oZWlnaHQ6IHJlbSg4MDApO1xuJHBvcG92ZXItdmVydGljYWwtbWFyZ2luOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpICsgKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAvIDIpO1xuJHBvcG92ZXItYmFja2dyb3VuZC1jb2xvcjogY29sb3Iod2hpdGUpO1xuJHBvcG92ZXItc2VjdGlvbi1ib3JkZXI6IDFweCBzb2xpZCBjb2xvcihncmF5LWxpZ2h0KTtcbiRwb3BvdmVyLWJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKGNvbG9yKHNsYXRlKSwgMC4wNSksIDAgMnB4IDdweCAxcHggcmdiYShjb2xvcihzbGF0ZSksIDAuMTYpO1xuXG5cblxuLnBvcG92ZXJfX2NvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIEBpbmNsdWRlIHotaW5kZXgocG9wb3Zlci1yZXN0aW5nLCBwYWdlKTtcblxuICA+ICo6Zm9jdXMgeyBvdXRsaW5lOiAwOyB9XG59XG5cbi5wb3BvdmVyX19jb250YWluZXItLWNvbnRhaW5zLWFjdGl2ZS1wb3BvdmVyIHtcbiAgQGluY2x1ZGUgei1pbmRleChwb3BvdmVyLWFjdGl2ZSwgcGFnZSk7XG59XG5cbi5wb3BvdmVyX19jb250YWluZXItLWlzLWRlYWN0aXZhdGluZyB7XG4gIEBpbmNsdWRlIHotaW5kZXgocG9wb3Zlci1kZWFjdGl2YXRpbmcsIHBhZ2UpO1xufVxuXG4ucG9wb3Zlcl9fY29udGFpbmVyLS1mdWxsLXdpZHRoIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuXG5cbi5wb3BvdmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDEwMCU7XG5cbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6ICRwb3BvdmVyLW1heC13aWR0aC1wZXJjZW50O1xuICBtYXJnaW46ICRwb3BvdmVyLXZlcnRpY2FsLW1hcmdpbiBkZWZhdWx0KHNwYWNpbmcpO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRwb3BvdmVyLWJhY2tncm91bmQtY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIG9wYWNpdHk6IDA7XG4gIGJveC1zaGFkb3c6ICRwb3BvdmVyLWJveC1zaGFkb3c7XG5cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMzVzIGN1YmljLWJlemllciguMjcsMS40MSwuNTMsLjk3KSwgb3BhY2l0eSAwLjJzIGVhc2U7XG59XG5cbi5wb3BvdmVyLS1pcy1hY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICBvcGFjaXR5OiAxO1xufVxuXG4ucG9wb3Zlci0taXMtcG9zaXRpb25lZC1hYm92ZSB7XG4gIHRvcDogYXV0bztcbiAgYm90dG9tOiAxMDAlO1xuXG4gIC5wb3BvdmVyX190b29sdGlwIHtcbiAgICB0b3A6IDEwMCU7XG5cbiAgICAmOmFmdGVyIHsgdG9wOiAkcG9wb3Zlci10b29sdGlwLXNpemUgLyAtMjsgfVxuICB9XG59XG5cblxuLnBvcG92ZXJfX3Rvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdG9wOiAoLTIgKiAkcG9wb3Zlci10b29sdGlwLXNpemUpO1xuXG4gIHdpZHRoOiAoJHBvcG92ZXItdG9vbHRpcC1zaXplICogMik7XG4gIGhlaWdodDogKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAqIDIpO1xuICBtYXJnaW4tbGVmdDogKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAqIC0xKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAqIDMgLyAyKTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXG4gICAgbWFyZ2luLWxlZnQ6ICgkcG9wb3Zlci10b29sdGlwLXNpemUgLyAtMik7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6ICRwb3BvdmVyLXRvb2x0aXAtc2l6ZTtcbiAgICB3aWR0aDogJHBvcG92ZXItdG9vbHRpcC1zaXplO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBvcG92ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBib3gtc2hhZG93OiAkcG9wb3Zlci1ib3gtc2hhZG93O1xuICB9XG59XG5cblxuXG4ucG9wb3Zlcl9fY29udGVudC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWF4LXdpZHRoOiAkcG9wb3Zlci1tYXgtd2lkdGg7XG4gIG1heC1oZWlnaHQ6ICRwb3BvdmVyLW1heC1oZWlnaHQ7XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cblxuXG4ucG9wb3Zlcl9fY29udGVudCB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgbWluLXdpZHRoOiAkcG9wb3Zlci1taW4td2lkdGg7XG5cbiAgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgPiAqOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuXG5cblxuLnBvcG92ZXJfX3BhbmUge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuIiwiLy8gICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgICAgICAgICAgICAgX19fICAgICAgLyAgLzo6XFwgICAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOi9fICAgICAgICAgICAgICAgICAvICAvXFwgICAgLyAgLzovXFw6XFwgICAgLyAgLzovXyAgICAgIC8gIC86OlxcXG4vLyAgICAgLyAgLzovIC9cXCAgX19fICAgICBfX18gIC8gIC86LyAgIC8gIC86LyAgXFw6XFwgIC8gIC86LyAvXFwgICAgLyAgLzovXFw6XFxcbi8vICAgIC8gIC86LyAvOjpcXC9fXy9cXCAgIC8gIC9cXC9fXy86OlxcICAvX18vOi8gXFxfX1xcOnwvICAvOi8gLzovXyAgLyAgLzovfi86L1xuLy8gICAvX18vOi8gLzovXFw6XFwgIFxcOlxcIC8gIC86L1xcX19cXC9cXDpcXF9cXCAgXFw6XFwgLyAgLzovX18vOi8gLzovIC9cXC9fXy86LyAvOi9fX19cbi8vICAgXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXCAgLzovICAgIFxcICBcXDpcXC9cXCAgXFw6XFwgIC86L1xcICBcXDpcXC86LyAvOi9cXCAgXFw6XFwvOjo6OjovXG4vLyAgICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwvOi8gICAgICBcXF9fXFw6Oi9cXCAgXFw6XFwvOi8gIFxcICBcXDo6LyAvOi8gIFxcICBcXDo6L35+fn5cbi8vICAgICBcXF9fXFwvIC86LyAgICBcXCAgXFw6Oi8gICAgICAgL19fLzovICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXFxuLy8gICAgICAgL19fLzovICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICBcXF9fXFwvICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gU2xpZGVyXG4vL1xuLy8gQSBzaW1wbGUgcmFuZ2Ugc2xpZGVyLiBVc2UgdGhpcyBjb21wb25lbnQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHVzZXIgaGFzXG4vLyB0byBzZWxlY3QgZnJvbSBhIGNvbnRpbnVvdXMgcmFuZ2Ugb2YgdmFsdWVzIHdpdGggYSBtaW5pbXVtIGFuZCBtYXhpbXVtLiBGb3Jcbi8vIGV4YW1wbGUsIHRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBwZXJzcGVjdGl2ZSBhbmQgcGFuZSBnYXAgZm9yXG4vLyB0aGUgYEV4cGxvZGVkYCBjb21wb25lbnQuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cbi8vKlxuLy8gQG1hcmt1cFxuLy8gPGxhYmVsIGNsYXNzPVwibGFiZWxcIiBmb3I9XCJyYW5nZVwiPlRyeSBzb21ldGhpbmcgaW4gcmFuZ2U8L2xhYmVsPlxuLy8gPGlucHV0IGNsYXNzPVwicmFuZ2VcIiBuYW1lPVwicmFuZ2VcIiBpZD1cInJhbmdlXCIgdHlwZT1cInJhbmdlXCI+XG5cbi5yYW5nZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG5cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG59XG5cbiRyYW5nZV9fdHJhY2stLXNpemU6IGRlZmF1bHQoY29udHJvbC1zaXplLS1sYXJnZSk7XG4kcmFuZ2VfX3RodW1iLS1zcGFjaW5nOiAoMC4xICogZGVmYXVsdChjb250cm9sLXNpemUtLWxhcmdlKSk7XG4kcmFuZ2VfX3RodW1iLS1zaXplOiAoJHJhbmdlX190cmFjay0tc2l6ZSAtIGRvdWJsZSgkcmFuZ2VfX3RodW1iLS1zcGFjaW5nKSk7XG5cbkBtaXhpbiByYW5nZV9fdHJhY2sge1xuICAvLyBib3ggbW9kZWxcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHJhbmdlX190cmFjay0tc2l6ZTtcblxuICAvLyBiYWNrZHJvcFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmspO1xuICBib3JkZXItcmFkaXVzOiBoYWxmKCRyYW5nZV9fdHJhY2stLXNpemUpO1xuICBwYWRkaW5nOiAkcmFuZ2VfX3RodW1iLS1zcGFjaW5nO1xufVxuXG5AbWl4aW4gcmFuZ2VfX3RodW1iIHtcbiAgLy8gYm94IG1vZGVsXG4gIGhlaWdodDogJHJhbmdlX190aHVtYi0tc2l6ZTtcbiAgd2lkdGg6ICRyYW5nZV9fdGh1bWItLXNpemU7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYm94LXNoYWRvdzogMXB4IDFweCAzcHggcmdiYShjb2xvcihibGFjayksIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiBoYWxmKCRyYW5nZV9fdGh1bWItLXNpemUpO1xuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG4ucmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsgQGluY2x1ZGUgcmFuZ2VfX3RyYWNrOyB9XG4ucmFuZ2U6Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsgb3V0bGluZTogbm9uZTsgfVxuLnJhbmdlOjotbW96LXJhbmdlLXRyYWNrIHsgQGluY2x1ZGUgcmFuZ2VfX3RyYWNrOyB9XG4ucmFuZ2U6Oi1tcy10cmFjayB7IEBpbmNsdWRlIHJhbmdlX190cmFjazsgfVxuXG4ucmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsgQGluY2x1ZGUgcmFuZ2VfX3RodW1iOyB9XG4ucmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgeyBAaW5jbHVkZSByYW5nZV9fdGh1bWI7IH1cbi5yYW5nZTo6LW1zLXRodW1iIHsgQGluY2x1ZGUgcmFuZ2VfX3RodW1iOyB9XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgIF9fXyAgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86OlxcICAgICAgLyAgLzovXyAgICAgIC8gIC86L18gICAgIC8gIC9cXCAgICAgICAvICAvOjp8ICAgICAgLyAgLzovX1xuLy8gICAgIC8gIC86L1xcOlxcICAgIC8gIC86LyAvXFwgICAgLyAgLzovIC9cXCAgIC8gIC86LyAgICAgIC8gIC86Lzp8ICAgICAvICAvOi8gL1xcXG4vLyAgICAvICAvOi9+LzovICAgLyAgLzovIC86L18gIC8gIC86LyAvOjpcXCAvX18vOjpcXCAgICAgLyAgLzovfDp8X18gIC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAvOi9fX18vX18vOi8gLzovIC9cXC9fXy86LyAvOi9cXDpcXFxcX19cXC9cXDpcXF9fIC9fXy86LyB8OnwgL1xcL19fLzovIC86LyAvXFxcbi8vICAgXFwgIFxcOlxcLzo6Ojo6L1xcICBcXDpcXC86LyAvOi9cXCAgXFw6XFwvOi9+LzovICAgXFwgIFxcOlxcL1xcXFxfX1xcLyAgfDp8LzovXFwgIFxcOlxcLzovIC86L1xuLy8gICAgXFwgIFxcOjovfn5+fiAgXFwgIFxcOjovIC86LyAgXFwgIFxcOjovIC86LyAgICAgXFxfX1xcOjovICAgIHwgIHw6LzovICBcXCAgXFw6Oi8gLzovXG4vLyAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXC86LyAgICBcXF9fXFwvIC86LyAgICAgIC9fXy86LyAgICAgfCAgfDo6LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDo6LyAgICAgICAvX18vOi8gICAgICAgXFxfX1xcLyAgICAgIHwgIHw6LyAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICB8X198LyAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIFJlc2l6YWJsZVxuLy9cbi8vIEEgY29udGFpbmVyIHRoYXQgY2FuIGJlIHJlc2l6ZWQgYnkgZHJhZ2dpbmcgb24gYSBoYW5kbGVcbi8vIChgLnJlc2l6YWJsZV9faGFuZGxlYCkgd2l0aCBhIGNvbnRhaW5lZCBpZnJhbWUgdGhhdCBzaG93cyB0aGUgYWN0dWFsIGRlbW9cbi8vIGNvbnRlbnQuIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIHNlZSBob3cgdGhlIGRlc2lnbiB3b3VsZCBhY3R1YWxseSBiZWhhdmVcbi8vIGF0IGRpZmZlcmVudCB2aWV3cG9ydCB3aWR0aHMsIGFuZCBhbGxvd3MgZm9yIGZpeGVkIGFuZCBhYnNvbHV0ZSBwb3NpdGlvbmVkXG4vLyBlbGVtZW50cyB0byBiZSBkaXNwbGF5ZWQgaW4gYSByZWFzb25hYmxlIHdheS5cbi8vXG4vLyBUaGUgSmF2YVNjcmlwdCBwb3J0aW9uIG9mIHRoaXMgY29tcG9uZW50IG1hbmFnZXMgdGhlIGNvbW11bmljYXRpb24gb2Zcbi8vIGhlaWdodCBjaGFuZ2VzIGZyb20gdGhlIGBpZnJhbWVgIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZW1vIGlzIGVudGlyZWx5XG4vLyB2aXNpYmxlIGFuZCBzaG93cyB0aGUgY3VycmVudCB3aWR0aCBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlZSBhIHNtYWxsXG4vLyBudW1iZXIgb2YgcHJlc2V0IHdpZHRocy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbiRyZXNpemFibGUtLW1pbi13aWR0aDogMThyZW07XG4kcmVzaXphYmxlLS1ib3JkZXI6IDFweCBzb2xpZCB1aS1jb2xvcihncmF5LCBkYXJrZXIpO1xuJHJlc2l6YWJsZS0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZzogMC4zcyBlYXNlO1xuXG4kcmVzaXphYmxlX19oYW5kbGUtLXdpZHRoOiAxLjI1cmVtO1xuJHJlc2l6YWJsZV9faGFuZGxlLS1ncm9vdmUtaGVpZ2h0OiBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7XG4kcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS1wZXJjZW50YWdlLXdpZHRoOiAwLjM1O1xuXG4kcmVzaXphYmxlX19zaXplLWJ1dHRvbl9faWNvbi0tc2l6ZTogMS44cmVtO1xuXG5cblxuLy8qXG4vLyBUaGUgY29yZSBjb21wb25lbnQgb2YgYSBgUmVzaXphYmxlYC4gVGhpcyBwYXJ0IG9mIHRoZSBjb21wb25lbnQgY29udGFpbnNcbi8vIHRoZSBoYW5kbGUgYW5kIGBpZnJhbWVgLCBhbmQgaXMgdGhlIHBhcnQgb2YgdGhlIGNvbXBvbmVudCB0aGF0IGlzIGFjdHVhbGx5XG4vLyByZXNpemVkIHdoZW4gZHJhZ2dpbmcgdGhlIGhhbmRsZS8gdXNpbmcgdGhlIHNpemUgYnV0dG9ucy4gVGhlIGBtaW4td2lkdGhgXG4vLyBzcGVjaWZpZWQgaGVyZSBzaG91bGQgYWNjb3VudCBmb3IgYm90aCB0aGUgYG1pbi13aWR0aGAgb2YgdGhlIGNvbnRlbnQgKmFuZCpcbi8vIHRoZSB3aWR0aCBvZiB0aGUgaGFuZGxlICh3aGljaCB3aWxsIGJlIHBvc2l0aW9uZWQgYWJzb2x1dGVseSBvdmVyIHRoZSByaWdodFxuLy8gc2lkZSkuXG4vL1xuLy8gQGhlbHBlciBkb2Nrc19yZXNpemFibGVcblxuLnJlc2l6YWJsZSB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6ICgkcmVzaXphYmxlLS1taW4td2lkdGggKyAkcmVzaXphYmxlX19oYW5kbGUtLXdpZHRoKTtcblxuICAvLyBiYWNrZHJvcFxuICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIHR5cGVcbiAgbGluZS1oZWlnaHQ6IDA7XG5cbiAgPiAuY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRyZXNpemFibGVfX2hhbmRsZS0td2lkdGg7XG4gIH1cblxuICAuaWZyYW1lIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMHJlbTtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgJHJlc2l6YWJsZS0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cbi8vKlxuLy8gUHJvdmlkZXMgYSB0cmFuc2l0aW9uIHRoYXQgc21vb3RobHkgbW92ZXMgdGhlIHJlc2l6YWJsZSBjb250YWluZXIgZnJvbSBvbmVcbi8vIHdpZHRoIHRvIHRoZSBuZXh0LiBUaGlzIGlzIG5vdCBkb25lIGJ5IGRlZmF1bHQgYXMgZHJhZ2dpbmcgdGhlIGhhbmRsZSB3b3VsZFxuLy8gYXBwZWFyIGJyb2tlbi5cblxuLnJlc2l6YWJsZS0taXMtdHJhbnNpdGlvbmluZy13aWR0aCB7XG4gIHRyYW5zaXRpb246IHdpZHRoICRyZXNpemFibGUtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmc7XG59XG5cblxuXG4vLypcbi8vIFRoZSBoYW5kbGUgYnkgd2hpY2ggdG8gcmVzaXplIHRoZSBjb250YWluZXIuIERlZmF1bHQgc3R5bGUgZ2l2ZXMgdHdvIHNtYWxsXG4vLyBncm9vdmVzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGhhbmRsZSB0aGF0IGFmZm9yZHMgaXRzIGRyYWdnYWJpbGl0eS5cblxuLnJlc2l6YWJsZV9faGFuZGxlIHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7IHJpZ2h0OiAwO1xuXG4gIC8vIGJveCBtb2RlbFxuICB3aWR0aDogJHJlc2l6YWJsZV9faGFuZGxlLS13aWR0aDtcbiAgaGVpZ2h0OiAxMDAlO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGN1cnNvcjogY29sLXJlc2l6ZTtcbiAgYmFja2dyb3VuZDogdWktY29sb3IoZ3JheSwgZGFyayk7XG4gIGJvcmRlci1yYWRpdXM6IDAgZGVmYXVsdChib3JkZXItcmFkaXVzKSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpIDA7XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gICY6YWZ0ZXIge1xuICAgICRyZXNpemFibGVfX2hhbmRsZS0tZ3Jvb3ZlLXdpZHRoOiAkcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS1wZXJjZW50YWdlLXdpZHRoICogJHJlc2l6YWJsZV9faGFuZGxlLS13aWR0aDtcblxuICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICAvLyBwb3NpdGlvblxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTsgbGVmdDogNTAlO1xuXG4gICAgLy8gYm94IG1vZGVsXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAkcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS1oZWlnaHQ7XG4gICAgd2lkdGg6ICRyZXNpemFibGVfX2hhbmRsZS0tZ3Jvb3ZlLXdpZHRoO1xuICAgIG1hcmdpbi10b3A6IG5lZ2F0aXZlKGhhbGYoJHJlc2l6YWJsZV9faGFuZGxlLS1ncm9vdmUtaGVpZ2h0KSk7XG4gICAgbWFyZ2luLWxlZnQ6IG5lZ2F0aXZlKGhhbGYoJHJlc2l6YWJsZV9faGFuZGxlLS1ncm9vdmUtd2lkdGgpKTtcblxuICAgIC8vIGJhY2tkcm9wXG4gICAgYm9yZGVyLXJpZ2h0OiAkcmVzaXphYmxlLS1ib3JkZXI7XG4gICAgYm9yZGVyLWxlZnQ6ICRyZXNpemFibGUtLWJvcmRlcjtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIGNvbnRhaW5lciBmb3IgYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiBhbmQgYWNpb25zIGF2YWlsYWJsZSBmb3IgdGhlXG4vLyBjb21wb25lbnQuXG5cbi5yZXNpemFibGVfX2FjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgbWFyZ2luLWJvdHRvbTogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbn1cblxuXG5cblxuLy8qXG4vLyBBIHNtYWxsIG5vdGljZSB0aGF0IHNob3dzIHRoZSBjdXJyZW50IHdpZHRoIG9mIHRoZSAoY29udGVudCBvZiB0aGUpIHJlc2l6YWJsZVxuLy8gbW9kdWxlLiBUaGlzIGluZGljYXRvciBzbGlkZXMgaW4gd2hlbiB0aGUgc2l6ZSBjaGFuZ2VzICh0aHJvdWdoIHRoZSB1c2Ugb2Zcbi8vIHRoZSBgcmVzaXphYmxlX193aWR0aC1pbmRpY2F0b3ItLWlzLXZpc2libGVgIHZhcmlhbnQpLlxuLy9cbi8vIFRoZSBpbmRpY2F0b3Igc2hvd3MgdGhlIHdpZHRoIGluIGJvdGggYHB4YCBhbmQgYGVtYCB2YWx1ZXMgd2hpY2ggYXJlXG4vLyBjb250YWluZWQgaW4gdGhlIHN1Ym1vZHVsZXMgYHJlc2l6YWJsZV9fd2lkdGgtaW5kaWNhdG9yX19weGAgYW5kXG4vLyBgcmVzaXphYmxlX193aWR0aC1pbmRpY2F0b3JfX2VtYCwgcmVzcGVjdGl2ZWx5LlxuLy9cbi8vIEBzdGF0ZSAtLWlzLXZpc2libGUgLSBUaGUgaW5kaWNhdG9yIGlzIGN1cnJlbnRseSBiZWluZyBzaG93bi5cblxuLnJlc2l6YWJsZV9fd2lkdGgtaW5kaWNhdG9yIHtcbiAgLy8gdHlwZVxuICBjb2xvcjogY29sb3IoZ3JheS1kYXJrKTtcbiAgZm9udDogMzAwIDFyZW0vMSBDb25zb2xhcywgbW9ub3NwYWNlOztcblxuICAvLyBiYWNrZHJvcFxuICBvcGFjaXR5OiAwLjQ7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgJHJlc2l6YWJsZS0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZztcbn1cblxuLnJlc2l6YWJsZV9fd2lkdGgtaW5kaWNhdG9yLS1pcy12aXNpYmxlIHsgb3BhY2l0eTogMTsgfVxuXG5cblxuLy8qXG4vLyBBIHZlcnRpY2FsbHktb3JpZW50ZWQgc2V0IG9mIGJ1dHRvbnMgdGhhdCByZXNpemUgdGhlIHJlc2l6YWJsZSBtb2R1bGUgdG9cbi8vIHByZWRldGVybWluZWQgd2lkdGhzLiBUaGVzZSB3aWR0aHMgaGF2ZSBiZWVuIHNldCBpbiB0aGUgSmF2YXNjcmlwdCBwYXJ0IG9mXG4vLyB0aGlzIG1vZHVsZS5cblxuLnJlc2l6YWJsZV9fc2l6ZS1idXR0b25zIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuXG5cbi8vKlxuLy8gQSBzaW5nbGUgYnV0dG9uIHRoYXQgcmVzaXplcyB0aGUgbW9kdWxlLlxuLy9cbi8vIEBzdGF0ZSAtLWlzLWFjdGl2ZSAoc2VsZWN0KVxuLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyBidXR0b24gaGFzIGJlZW4gcHJlc3NlZCBhbmQgdGhhdCB0aGUgdXNlciBoYXMgbm90XG4vLyBzdWJzZXF1ZW50bHkgcmVzaXplZCB0aGUgbW9kdWxlIGluIHNvbWUgb3RoZXIgd2F5LlxuLy9cbi8vIEBzdGF0ZSAtLWlzLWhpZGRlbiAobm9uZSlcbi8vIEluZGljYXRlcyB0aGF0IHRoZSBidXR0b24gc2hvdWxkIGJlIGhpZGRlbiBiZWNhdXNlIG5vdCBlbm91Z2ggc2NyZWVuIHNwYWNlXG4vLyBleGlzdHMgZm9yIGl0cyByZXNpemUuXG4vL1xuLy8gQHZhcmlhbnQgLS1zbWFsbCAgKG5vbmUpIC0gUmVzaXplcyB0byBhIHJvdWdobHkgc21hcnRwaG9uZS1zaXplZCB3aWR0aC5cbi8vIEB2YXJpYW50IC0tbWVkaXVtIChub25lKSAtIFJlc2l6ZXMgdG8gYSByb3VnaGx5IHRhYmxldC1zaXplZCB3aWR0aC5cbi8vIEB2YXJpYW50IC0tbGFyZ2UgIChub25lKSAtIFJlc2l6ZXMgdG8gYSByb3VnaGx5IGRlc2t0b3Atc2l6ZWQgd2lkdGguXG5cbi5yZXNpemFibGVfX3NpemUtYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tbGVmdDogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIG9wYWNpdHk6IDAuNTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAkcmVzaXphYmxlLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nO1xuXG4gID4gLmljb24ge1xuICAgIGhlaWdodDogJHJlc2l6YWJsZV9fc2l6ZS1idXR0b25fX2ljb24tLXNpemU7XG4gICAgd2lkdGg6ICRyZXNpemFibGVfX3NpemUtYnV0dG9uX19pY29uLS1zaXplO1xuXG4gICAgQGluY2x1ZGUgaWNvbi0tcmVjb2xvcihncmF5KTtcbiAgICB0cmFuc2l0aW9uOiBmaWxsICRyZXNpemFibGUtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmc7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSxcbiAgJi5yZXNpemFibGVfX3NpemUtYnV0dG9uLS1pcy1hY3RpdmUge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cblxuICAmLnJlc2l6YWJsZV9fc2l6ZS1idXR0b24tLWlzLWFjdGl2ZSxcbiAgJjphY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG5cbiAgICA+IC5pY29uIHtcbiAgICAgIGZpbGw6IGNvbG9yKGJsdWUpO1xuICAgICAgc3Ryb2tlOiBjb2xvcihibHVlKTtcbiAgICB9XG4gIH1cbn1cblxuLnJlc2l6YWJsZV9fc2l6ZS1idXR0b24tLWlzLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIuc2Nyb2xsLWNvbnRhaW5lciB7XG4gIC8vIENvbnRhaW4gYW55IGludGVyaW9yIG1hcmdpbnNcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgX19fICBfX18gICAgICAgIC8gIC9cXCAgICAgICAgL19fL1xcXG4vLyAgICAgIC8gIC86L18gICAgICAvICAvOi9fICAgICAgLyAgLzovICAgICAgIC8gIC9cXC8gIC9cXCAgICAgIC8gIC86OlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgIC8gIC86LyAvXFwgICAgLyAgLzovIC9cXCAgICAvICAvOi8gICAgICAgLyAgLzovICAvOi8gICAgIC8gIC86L1xcOlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgLyAgLzovIC86OlxcICAvICAvOi8gLzovXyAgLyAgLzovICBfX18gIC8gIC86L19fLzo6XFwgICAgLyAgLzovICBcXDpcXCAgX19fX19cXF9fXFw6XFxcbi8vICAgL19fLzovIC86L1xcOlxcL19fLzovIC86LyAvXFwvX18vOi8gIC8gIC9cXC8gIC86OlxcX19cXC9cXDpcXF9fL19fLzovIFxcX19cXDpcXC9fXy86Ojo6Ojo6OlxcXG4vLyAgIFxcICBcXDpcXC86L34vOi9cXCAgXFw6XFwvOi8gLzovXFwgIFxcOlxcIC8gIC86L19fLzovXFw6XFwgXFwgIFxcOlxcL1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFx+flxcfn5cXC9cbi8vICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXCAgLzovXFxfX1xcLyAgXFw6XFwgXFxfX1xcOjovXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgfn5+XG4vLyAgICAgXFxfX1xcLyAvOi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86LyAgICAgIFxcICBcXDpcXC9fXy86LyAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXFxuLy8gICAgICAgL19fLzovICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOjovICAgICAgICBcXF9fXFwvXFxfX1xcLyAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6XFxcbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gU2VjdGlvblxuLy9cbi8vIFNlY3Rpb25zIGFyZSBzaW1wbHkgd2F5cyBvZiBncm91cGluZyByZWxhdGVkIGNvbnRlbnQgYW5kIHByb3Zpc2luZ1xuLy8gc2VwYXJhdGlvbiBiZXR3ZWVuIHRoYXQgY29udGFpbmVkIGNvbnRlbnQgYW5kIFwic2libGluZ1wiIGNvbnRlbnQuXG4vL1xuLy8gU21hbGxlciB2YXJpYXRpb25zIGFyZSBhdmFpbGFibGUgZm9yIG1vcmUgY29uZGVuc2VkIGNvbnRlbnQsIGxpa2UgY29udGVudFxuLy8gaW5zaWRlIG9mIGEgcG9wb3Zlci5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbi8vKlxuLy8gQSBjb250YWluZXIgYXJvdW5kIHNvbWUgY29udGVudCB0aGF0IHByb3ZpZGVzIHRoZSB2ZXJ0aWNhbCBzZXBhcmF0aW9uIGZyb21cbi8vIG90aGVyIGBzZWN0aW9uYHMuIFRoaXMgd2lsbCBhbHNvIHJlbW92ZSBhbnkgdG9wLyBib3R0b20gcGFkZGluZyBmcm9tIHRoZVxuLy8gZmlyc3QvIGxhc3QgY2hpbGQsIHJlc3BlY3RpdmVseSwgdG8gYXZvaWQgbW9yZSB2ZXJ0aWNhbCBwYWRkaW5nIHRoYW5cbi8vIG5lY2Vzc2FyeS5cblxuLnNlY3Rpb24ge1xuICBtYXJnaW46IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKSAwO1xuICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpIDA7XG5cbiAgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAmLFxuICAgICYgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuICB9XG5cbiAgPiAqOmxhc3QtY2hpbGQge1xuICAgICYsXG4gICAgJiA+ICo6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLypcbi8vIEEgc21hbGxlciBzZWN0aW9uIHdpdGggbm8gYm9yZGVyIHNlcGFyYXRpbmcgY29udGVudC4gVXNlIHRoaXMgdmFyaWFudCBmb3Jcbi8vIHBsYWNlcyB3aGVyZSB0aGUgYmFzZSBhbW91bnQgb2YgdmVydGljYWwgcGFkZGluZyBpcyBleGNlc3NpdmUgKGZvciBleGFtcGxlLFxuLy8gaW4gcG9wb3ZlcnMgb3Igb3RoZXIgbGltaXRlZC13aWR0aCBjb250YWluZXJzKS5cblxuLnNlY3Rpb24tLXNtYWxsIHtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgMDtcbn1cblxuLy8qXG4vLyBBIHNlY3Rpb24gd2l0aCBhIGxpZ2h0IGdyYXkgYmFja2dyb3VuZCB0aGF0IHNlcGFyYXRlcyBpdCB2aXN1YWxseSBmcm9tIHRoZVxuLy8gb3RoZXIgc2VjdGlvbnMuIFVzZSB0aGlzIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBzaWduaWZpY2FudGx5IGRpZmZlcmVudFxuLy8gZ3JvdXBzIG9mIGNvbnRlbnQuIEl0IGlzIGJlc3QgdG8gb25seSB1c2UgdGhpcyB3aXRoIGBzZWN0aW9uLS1zbWFsbGAg4oCUXG4vLyByZWd1bGFyIGBzZWN0aW9uYHMgYWxyZWFkeSBoYXZlIHN1ZmZpY2llbnQgc2VwYXJhdGlvbiBpbiBtb3N0IGNhc2VzLlxuXG4uc2VjdGlvbi0tc3ViZHVlZCB7XG4gIGJhY2tncm91bmQ6IGNvbG9yKGdyYXktbGlnaHQpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICYuc2VjdGlvbi0tc21hbGwge1xuICAgIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZykgMDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gVXNlIHRoaXMgY29udGFpbmVyIGZvciB3aGVuIHlvdSB3YW50IGEgZ3JvdXAgb2Ygc2VjdGlvbnMgdG8gaGF2ZSBhZGRpdGlvbmFsXG4vLyB2ZXJ0aWNhbCBzZXBhcmF0aW9uIGZyb20gdGhlIGNvbnRlbnQgYXJvdW5kIGl0LiBUaGUgYW1vdW50IG9mIGFkZGl0aW9uYWxcbi8vIHNwYWNlIGRlcGVuZHMgb24gd2hldGhlciB0aGUgY29udGFpbmVyIGNvbnRhaW5zIHJlZ3VsYXIgb3IgYC0tc21hbGxgXG4vLyBgc2VjdGlvbmBzLlxuLy9cbi8vIFRoaXMgY29udGFpbmVyIGlzIG5vdCBuZWNlc3Nhcnkg4oCUIGZvciBleGFtcGxlLCBzZWN0aW9ucyBjYW4gc2l0IG9uIHRoZWlyIG93blxuLy8gaW5zaWRlIGEgcG9wb3Zlci5cblxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XG4gID4gLnNlY3Rpb24ge1xuICAgICY6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7IH1cbiAgICAmOmxhc3QtY2hpbGQgeyBtYXJnaW4tYm90dG9tOiBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7IH1cbiAgfVxuXG4gID4gLnNlY3Rpb24tLXNtYWxsIHtcbiAgICAmOmZpcnN0LWNoaWxkIHsgbWFyZ2luLXRvcDogZGVmYXVsdChzcGFjaW5nKTsgfVxuICAgICY6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IGRlZmF1bHQoc3BhY2luZyk7IH1cbiAgfVxufVxuIiwiLy8gICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgICAgICAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgX19fXG4vLyAgICAgIC8gIC86L18gICAgICAvICAvOi9fICAgICAgICAgICAgICAgICAvICAvOi9fICAgICAgLyAgLzovICAgICAgIC8gIC9cXFxuLy8gICAgIC8gIC86LyAvXFwgICAgLyAgLzovIC9cXCAgX19fICAgICBfX18gIC8gIC86LyAvXFwgICAgLyAgLzovICAgICAgIC8gIC86L1xuLy8gICAgLyAgLzovIC86OlxcICAvICAvOi8gLzovXy9fXy9cXCAgIC8gIC9cXC8gIC86LyAvOi9fICAvICAvOi8gIF9fXyAgLyAgLzovXG4vLyAgIC9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi8gL1xcICBcXDpcXCAvICAvOi9fXy86LyAvOi8gL1xcL19fLzovICAvICAvXFwvICAvOjpcXFxuLy8gICBcXCAgXFw6XFwvOi9+LzovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXCAgLzovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXCAvICAvOi9fXy86L1xcOlxcXG4vLyAgICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwvOi8gIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXCAgLzovXFxfX1xcLyAgXFw6XFxcbi8vICAgICBcXF9fXFwvIC86LyAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwvOi8gICAgICBcXCAgXFw6XFxcbi8vICAgICAgIC9fXy86LyAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gICAgICAgIFxcX19cXC9cbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIFNlbGVjdFxuLy9cbi8vIEEgY3VzdG9tIGBzZWxlY3RgIGVsZW1lbnQuIEluIG9yZGVyIHRvIHByZXNlbnQgdGhlc2UgaW4gdGhlIHNhbWUgd2F5IGFjcm9zc1xuLy8gYnJvd3NlcnMsIG1vc3Qgb2YgdGhlIHN0eWxpbmcgaXMgZG9uZSBvbiBhIG5vZGUgd3JhcHBlZCBhcm91bmQgYW4gYWN0dWFsXG4vLyBgc2VsZWN0YCBlbGVtZW50LCBhbmQgYSBiaXQgb2YgSmF2YVNjcmlwdCB0aGF0IHRyYW5zbGF0ZXMgdGhlIGZvY3VzLyBibHVyXG4vLyBvbiB0aGUgY29udGFpbmVkIGBzZWxlY3RgIGludG8gYSBzdGF0ZSBjbGFzcy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbiRzZWxlY3QtLWZvbnQtc2l6ZTogKGZvbnQtc2l6ZShjb250cm9sKSAqIDAuOSk7XG4kc2VsZWN0LS1ob3Jpem9udGFsLXBhZGRpbmc6IGRlZmF1bHQoY29udHJvbC1wYWRkaW5nKTtcbiRzZWxlY3QtLWxpbmUtaGVpZ2h0OiBkZWZhdWx0KGNvbnRyb2wtc2l6ZSk7XG4kc2VsZWN0LS1pY29uLXNpemU6ICRzZWxlY3QtLWZvbnQtc2l6ZSAvIDEuNjtcblxuXG5cbi8vKlxuLy8gVGhlIHdyYXBwZXIgYXJvdW5kIGEgYHNlbGVjdGAuIFRoaXMgd3JhcHBlciBwcm92aWRlcyBtb3N0IG9mIHRoZSB2aXN1YWxcbi8vIHN0eWxpbmcsIGluY2x1ZGluZyB0aGUgZm9jdXMgc3R5bGluZy4gVGhpcyBwYXJ0IG9mIHRoZSBjb21wb25lbnQgYWxzb1xuLy8gY3JlYXRlcyBhIHRyaWFuZ2xlIGljb24gaW4gcGxhY2Ugb2YgdGhlIGJyb3dzZXItc3VwcGxpZWQgb25lLlxuLy9cbi8vIEBoZWxwZXJcbi8vIDwlPSBkb2Nrc19zZWxlY3Qgb3B0aW9uczogJXcoU3VwZXJfbG9uZ19vcHRpb25fdGhhdF9pc19xdWl0ZV9sb25nIG5vcm1hbF9zaXplIFNNQUxMKSAlPlxuXG4uc2VsZWN0IHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYm9yZGVyLXJhZGl1czogZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcblxuICAgIC8vIHBvc2l0aW9uXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAkc2VsZWN0LS1ob3Jpem9udGFsLXBhZGRpbmc7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXG4gICAgLy8gYm94IG1vZGVsXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAkc2VsZWN0LS1pY29uLXNpemU7XG4gICAgd2lkdGg6ICRzZWxlY3QtLWljb24tc2l6ZTtcbiAgICBtYXJnaW4tdG9wOiAoLTAuNzUgKiAkc2VsZWN0LS1pY29uLXNpemUpO1xuXG4gICAgLy8gYmFja2Ryb3BcbiAgICBib3JkZXI6IHNvbGlkIHJnYmEodWktY29sb3IoZ3JheSwgZGFya2VyKSwgMC41KTtcbiAgICBib3JkZXItd2lkdGg6IDAgMnB4IDJweCAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgKyAuZG9ja3MtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxufVxuXG4vLypcbi8vIFRoaXMgc3RhdGUgaXMgYXBwbGllZCB0byBhIGBzZWxlY3RgIHdob3NlIGNvbnRhaW5lZCBpbnB1dCBpcyBmb2N1c2VkLlxuXG4uc2VsZWN0LS1pcy1mb2N1c2VkIHtcbiAgYm9yZGVyLWNvbG9yOiBjb2xvcihibHVlKTtcbn1cblxuLy8qXG4vLyBBIHNlbGVjdCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBtb25vc3BhY2UgZm9udCAoZm9yIGV4YW1wbGUsIGJlY2F1c2Vcbi8vIGl0IGlzIGNob29zaW5nIGEgY2xhc3MgbmFtZSkuXG5cbi5zZWxlY3QtLWNvZGUge1xuICA+IC5zZWxlY3RfX2lucHV0IHtcbiAgICBAaW5jbHVkZSB0eXBlLS1tb25vc3BhY2UtZm9udC1mYW1pbHk7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gVGhlIGFjdHVhbCBgc2VsZWN0YC4gTW9zdCBvZiB0aGUgc3R5bGVzIGhlcmUgZ28gdG8gdW5kb2luZyB0aGUgZGVmYXVsdFxuLy8gYnJvd3NlciBzdHlsZXMgZm9yIGBzZWxlY3Rgcy4gQWxsIG9mIHRoZSBmb250IHNpemluZyBmb3IgdGhlIGNvbXBvbmVudCBtdXN0XG4vLyBiZSBwbGFjZWQgaGVyZSBmb3IgdGhvc2Ugc3R5bGVzIHRvIGRpc3BsYXkgY29ycmVjdGx5LlxuXG4uc2VsZWN0X19pbnB1dCB7XG4gIC8vIGJveCBtb2RlbFxuICBAaW5jbHVkZSByZW1vdmUtYnJvd3Nlci1zdHlsaW5nO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBwYWRkaW5nOiAwIChkb3VibGUoJHNlbGVjdC0taG9yaXpvbnRhbC1wYWRkaW5nKSArICRzZWxlY3QtLWljb24tc2l6ZSkgMCAkc2VsZWN0LS1ob3Jpem9udGFsLXBhZGRpbmc7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcblxuICAvLyB0eXBlXG4gIGZvbnQtc2l6ZTogJHNlbGVjdC0tZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogZGVmYXVsdChjb250cm9sLXNpemUpO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIC8vIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgbW9ub3NwYWNlO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICB9XG5cbiAgPiBvcHRpb24ge1xuICAgIGNvbG9yOiBjb2xvcihzbGF0ZSk7XG4gIH1cbn1cblxuLy8gQWxsIG9mIHRoZSBiZWxvdyBoYWNrcyBjb3VydGVzeSBvZiBUb2RkIFBhcmtlcidzIGZpbmUgd29ySyBoZXJlOlxuLy8gaHR0cDovL2pzYmluLmNvbSAvIHlhcnVoIC8gNDkgLyBlZGl0XG5cbi8vIEhpZGVzIG5hdGl2ZSBzZWxlY3QgYXJyb3cgaW4gSUUgMTArXG5fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgOnJvb3QgLnNlbGVjdF9faW5wdXQ6Oi1tcy1leHBhbmQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBIaWRlcyBibHVlIGJhY2tncm91bmQgb24gZm9jdXMgaW4gSUUgMTArXG5fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgOnJvb3QgLnNlbGVjdF9faW5wdXQ6Zm9jdXM6Oi1tcy12YWx1ZSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4vLyBDcmF6eSBoYWNrcyB0byB0YXJnZXQgRkYgYW5kIGNsaXAgdGhlIG5hdGl2ZSBzZWxlY3QgYXJyb3dcbkBzdXBwb3J0cyAoLW1vei1hcHBlYXJhbmNlOm1ldGVyYmFyKSBhbmQgKGJhY2tncm91bmQtYmxlbmQtbW9kZTpkaWZmZXJlbmNlLG5vcm1hbCkge1xuXG4gIF86Oi1tb3otcHJvZ3Jlc3MtYmFyLFxuICBib2R5Omxhc3QtY2hpbGQgLnNlbGVjdF9faW5wdXRfX3dyYXBwZXIge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICBfOjotbW96LXByb2dyZXNzLWJhcixcbiAgYm9keTpsYXN0LWNoaWxkIC5zZWxlY3RfX2lucHV0IHtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMzBweCk7XG4gIH1cbn1cblxuLy8gS2lsbHMgdGhlIHN0dXBpZCBmb2N1cyByaW5nIGluIEZGXG4uc2VsZWN0X19pbnB1dDotbW96LWZvY3VzcmluZyB7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IDAgMCAwIGJsYWNrO1xufVxuIiwiLy8gICAgICAgICAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1xuLy8gICAgICAgIF9fXyAgICAvICAvXFwgICAgICAgIF9fX19fICAgICAgICAgICAgICAgICAgIC8gIC9cXFxuLy8gICAgICAgLyAgL1xcICAvICAvOjpcXCAgICAgIC8gIC86OlxcICAgICAgICAgICAgICAgICAvICAvOi9fXG4vLyAgICAgIC8gIC86LyAvICAvOi9cXDpcXCAgICAvICAvOi9cXDpcXCAgX19fICAgICBfX18gIC8gIC86LyAvXFxcbi8vICAgICAvICAvOi8gLyAgLzovfi86OlxcICAvICAvOi9+Lzo6XFwvX18vXFwgICAvICAvXFwvICAvOi8gLzovX1xuLy8gICAgLyAgLzo6XFwvX18vOi8gLzovXFw6XFwvX18vOi8gLzovXFw6XFwgIFxcOlxcIC8gIC86L19fLzovIC86LyAvXFxcbi8vICAgL19fLzovXFw6XFwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOi9+LzovXFwgIFxcOlxcICAvOi9cXCAgXFw6XFwvOi8gLzovXG4vLyAgIFxcX19cXC8gIFxcOlxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXC86LyAgXFwgIFxcOjovIC86L1xuLy8gICAgICAgIFxcICBcXDpcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgICAgXFxfX1xcL1xcICBcXDpcXCAgICAgICBcXCAgXFw6Oi8gICAgICBcXF9fXFwvICAgICAgXFwgIFxcOjovXG4vLyAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIFRhYmxlXG4vL1xuLy8gVGFibGVzIGFyZSB1c2VkIHRvIHByZXNlbnQgdGFidWxhciBkYXRhIG9ubHkg4oCUwqBuZXZlciBmb3IgbGF5b3V0ISBUaGVzZSB0YWJsZXNcbi8vIGFyZSBzbWFydGVyIHRoYW4gdGhlIGF2ZXJhZ2UgdGFibGUsIGhvd2V2ZXIuIFRoZXkgd2lsbCBkZXRlcm1pbmUgdGhlaXJcbi8vIGludHJpbnNpYyBzaXplICh1cCB0byBhIHN0eWxlc2hlZXQtc3BlY2lmaWVkIG1heGltdW0pIGFuZCwgd2hlbiB0aGUgc3BhY2Vcbi8vIGF2YWlsYWJsZSB0byB0aGVtIGlzIGxlc3MgdGhhbiB0aGF0IHNpemUsIHRoZXkgd2lsbCBiZWdpbiB0byBzY3JvbGwuXG4vL1xuLy8gQXMgeW91IHNjcm9sbCwgdGhlIGZpcnN0IGNvbHVtbiB3aWxsIHN0YXkgZml4ZWQsIHNvIHlvdSBhbHdheXMgaGF2ZSBjb250ZXh0LFxuLy8gYW5kIHRoZSBhbnkgZ2l2ZW4gY29sdW1uIHdpbGwgYWx3YXlzIGJlIHNtYWxsIGVub3VnaCB0byBiZSBmdWxseSB2aXNpYmxlLiBOb3Rcbi8vIG9ubHkgdGhhdCwgYnV0IHRoZSB0YWJsZSBwcm92aWRlcyBib3RoIGtleWJvYXJkIGlucHV0IGFuZCBpbnRlcmZhY2UgZWxlbWVudHNcbi8vIHRoYXQgYWxsb3cgeW91IHRvIHF1aWNrbHkgc2hpZnQgdG8gb3ZlcnNjcm9sbGVkIGNvbHVtbnMuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cblxuXG4kdGFibGUtLWJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKGdyYXktbGlnaHQpO1xuJHRhYmxlLS1ib3JkZXItcmFkaXVzOiBkb3VibGUoZGVmYXVsdChib3JkZXItcmFkaXVzKSk7XG4kdGFibGUtLWJveC1zaGFkb3ctc2l6ZTogM3B4IDAgNHB4IC0xcHg7XG5cblxuXG4vLypcbi8vIEEgc21hcnRlciBgdGFibGVgIGVsZW1lbnQuIFRoZSBgbWluLXdpZHRoYCBwbGFjZWQgaGVyZSB3aWxsIG5vdCBhY3R1YWxseVxuLy8gYmUgdGhlIG1pbmltdW0gd2lkdGggb2YgdGhlIHJlbmRlcmVkIHRhYmxlOyB0aGUgcHJvdmlkZWQgbWluaW11bSB3aWR0aCB3aWxsXG4vLyBpbnN0ZWFkIGJlIHVzZWQgYXMgdGhlIG1heGltdW0gd2lkdGggYWxsb3dlZCBpbiBkZXRlcm1pbmluZyB0aGUgcHJlZmVycmVkL1xuLy8gaW50cmluc2ljIHNpemUgb2YgdGhlIHRhYmxlIGNlbGxzLiBUaGF0IGlzLCBhIHRhYmxlIHdob3NlIG5hdHVyYWwgc2l6ZSBpc1xuLy8gbGVzcyB0aGFuIHRoaXMgYW1vdW50IHdpbGwgbm90IG92ZXJmbG93IHVudGlsIHRoZSBzcGFjZSBpdCBoYXMgaXMgbGVzcyB0aGFuXG4vLyBpdHMgaW50cmluc2ljIHNpemUsIHdoZXJlIGEgdGFibGUgd2l0aCBsYXJnZSBjZWxscyB3aWxsIG92ZXJmbG93IGF0IHRoZVxuLy8gcHJvdmlkZWQgYG1pbi13aWR0aGAgYnJlYWtwb2ludC5cbi8vXG4vLyBWaXN1YWxseSwgYWxsIHRhYmxlcyB3aWxsIGJlIDEwMCUgd2lkdGguIEFzIG5vdGVkIGFib3ZlLCB0YWJsZXMgd2lsbCBvdmVyZmxvd1xuLy8gb25jZSB0aGUgbGVzc2VyIG9mIHRoZSBgbWluLXdpZHRoYCBiZWxvdyBvciB0aGUgaW50cmlzaWMgc2l6ZSBvZiB0aGUgdGFibGVcbi8vIGlzIHJlYWNoZWQuIFRoaXMgb3ZlcmZsb3dpbmcgaXMgbWFuYWdlZCBieSB0aGUgSmF2YVNjcmlwdCBjb21wb25lbnQuXG4vL1xuLy8gQGhlbHBlciBkb2Nrc190YWJsZVxuXG4udGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiByZW0oNTAwKTtcblxuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIG91dGVybW9zdCB3cmFwcGVyIGFyb3VuZCBhIHRhYmxlLiBUaGlzIHdyYXBwZXIgaXMgdXNlZCB0byBzaWduYWwgdG8gdGhlXG4vLyBlbnRpcmUgY29tcG9uZW50IHdoZW4gdGhlIHRhYmxlIGlzIGluIG92ZXJmbG93ICh2aWEgdGhlXG4vLyBgdGFibGVfX2NvbnRhaW5lci0taXMtb3ZlcmZsb3dpbmdgIHN0YXRlKS4gRG9pbmcgc28gb24gdGhlIG91dG1vc3QgY29udGFpbmVyXG4vLyBhbGxvd3MgYWRqdXN0bWVudHMgdG8gYm90aCB0aGUgdGFibGUgaXRzZWxmIGFuZCB0aGUgYHRhYmxlX19hY3Rpb25zYC5cbi8vXG4vLyBJbiBhZGRpdGlvbiwgYHRhYmxlX19jb250YWluZXJzYCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSByZXF1aXJlZFxuLy8gc3BhY2UgYmV0d2VlbiB0aGVtc2VsdmVzIGFuZCBvdGhlciBjb250ZW50LlxuXG4udGFibGVfX2NvbnRhaW5lciB7XG4gIG1hcmdpbjogZGVmYXVsdChzcGFjaW5nKSBhdXRvO1xufVxuXG4vLypcbi8vIFNpZ25hbHMgdG8gdGhlIGB0YWJsZWAgdGhhdCBpdCBzaG91bGQgZm9yY2UgdGhlIGZpcnN0IGNlbGwgaW4gZWFjaCByb3dcbi8vIHRvIGZsb2F0IGFib3V0IHRoZSByZXN0IG9mIHRoZSByb3dzICh0aGUgcmVxdWlyZWQgbGVmdCBwYWRkaW5nIG9uIHRoZVxuLy8gc2Vjb25kIGNlbGwgaW4gZWFjaCByb3cgdG8gYWNjb3VudCBmb3IgdGhlIGFic29sdXRlbHktcG9zaXRpb25lZCBmaXJzdCBjZWxsXG4vLyBpcyBkb25lIGF1dG9tYXRpY2FsbHkgYnkgdGhlIEphdmFTY3JpcHQgc2lkZSBvZiB0aGluZ3MsIGFzIGlzIHRoZVxuLy8gZXF1YWxpemF0aW9uIG9mIGFsbCBvZiB0aGUgZmlyc3QgY2VsbHMnIHdpZHRocykuIEFkZGl0aW9uYWxseSwgdGhpc1xuLy8gc3RhdGUgY2F1c2VzIHRoZSBgdGFibGVfX2FjdGlvbnNgIHRvIGJlIG1hZGUgdmlzaWJsZS5cbi8vXG4vLyBAc2V0X2J5IFRhYmxlI2NoZWNrX2Zvcl9vdmVyZmxvd1xuLy8gQGRlbW9fdHlwZSBub25lXG5cbi50YWJsZV9fY29udGFpbmVyLS1pcy1vdmVyZmxvd2luZyB7XG4gIC50YWJsZV9fY2VsbDpmaXJzdC1jaGlsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIEBpbmNsdWRlIHotaW5kZXgoY2VsbC1wZXJzaXN0YW50LCB0YWJsZSk7XG4gICAgbGVmdDogMDtcblxuICAgIGhlaWdodDogMTAwJTtcblxuICAgIC8vIFN0YXJ0IGJveCBzaGFkb3cgYXMgdHJhbnNwYXJlbnQgc28gaXQgY2FuIGJlIGFuaW1hdGVkIGludG8gdmlldyB3aGVuXG4gICAgLy8gdGhlIHRhYmxlIGlzIGFjdHVhbGx5IGJlaW5nIHNjcm9sbGVkLlxuICAgIGJveC1zaGFkb3c6ICR0YWJsZS0tYm94LXNoYWRvdy1zaXplIHJnYmEoY29sb3IoYmxhY2spLCAwKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgZWFzZTtcbiAgfVxuXG4gIC50YWJsZV9fYWN0aW9ucyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG1heC1oZWlnaHQ6IDNyZW07XG4gICAgcGFkZGluZy1ib3R0b206IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gQSB3cmFwcGVyIGFyb3VuZCB0aGUgYHRhYmxlYCB0aGF0IGFsbG93cyBpdCB0byBzY3JvbGwgd2hlbiB0aGUgbWluaW11bVxuLy8gd2lkdGggb2YgaXRzIGNvbHVtbnMgKHRoZWlyIGludHJpbnNpYyB3aWR0aCBvciB0aGVpciB3aWR0aCB3aGVuIHRoZSB0YWJsZVxuLy8gaXMgbGFyZ2VyIHRoYW4gdGhlIGBtaW4td2lkdGhgIHNldCBvbiBgdGFibGVgKSBpcyBsYXJnZXIgdGhhbiB0aGUgc3BhY2Vcbi8vIGF2YWlsYWJsZSB0byB0aGlzIGNvbnRhaW5lci5cblxuLnRhYmxlX19zY3JvbGxlciB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi8vKlxuLy8gVGhlIHN0YXRlIHRoYXQgaXMgYWRkZWQgYnkgdGhlIEphdmFTY3JpcHQgY29tcG9uZW50IHdoZW4gdGhlIHRhYmxlIGlzXG4vLyBvdmVyZmxvd2VkICoqYW5kKiogdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGlzIHN1YmNvbXBvbmVudCBpcyBub3QgZnVsbHlcbi8vIHBpbm5lZCB0byB0aGUgbGVmdC5cbi8vXG4vLyBAc2V0X2J5IFRhYmxlI2hhbmRsZV9zY3JvbGwsIFRhYmxlI3NoaWZ0X3RhYmxlXG5cbi50YWJsZV9fc2Nyb2xsZXItLWlzLXNjcm9sbGVkIHtcbiAgLnRhYmxlX19jZWxsOmZpcnN0LWNoaWxkIHtcbiAgICBib3gtc2hhZG93OiAkdGFibGUtLWJveC1zaGFkb3ctc2l6ZSByZ2JhKGNvbG9yKGJsYWNrKSwgMC4xKTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBUaGUgd3JhcHBlciBhcm91bmQgYSBgdGFibGVgIHRoYXQgcHJvdmlkZXMgYSBmZXcgdmlzdWFsIHBpZWNlcy4gTW9zdFxuLy8gbm90aWNlYWJseSwgdGhpcyBhZGRzIHRoZSBib3JkZXIgYW5kIGJvcmRlciByYWRpdXMgb24gdGhlIG91dHNpZGUgb2YgdGhlXG4vLyB0YWJsZS4gVGhlc2UgcGllY2VzIG11c3QgYmUgb24gdGhpcyBjb250YWluZXIgcmF0aGVyIHRoYW4gdGhlXG4vLyBgdGFibGVfX2NvbnRhaW5lcmAgc3ViY29tcG9uZW50IGJlY2F1c2UgaXQgc2hvdWxkIG9ubHkgd3JhcCBhcm91bmQgdGhlXG4vLyBgdGFibGVgLCBhbmQgbm90IHRoZSBgdGFibGVfX2FjdGlvbnNgLiBUaGVzZSBydWxlcyBjYW4ndCBiZSBvbiB0aGVcbi8vIGB0YWJsZV9fc2Nyb2xsZXJgIHN1YmNvbXBvbmVudCwgZWl0aGVyLCBiZWNhdXNlIGl0IG11c3QgYmUgYG92ZXJmbG93OiBoaWRkZW5gXG4vLyAodG8gaGlkZSB0aGUgcGFydHMgb3V0c2lkZSB0aGUgcm91bmRlZCBjb3JuZXJzKSwgd2hlcmUgdGhlIHNjcm9sbGVyIG11c3Rcbi8vIGJlIGFsbG93ZWQgdG8gc2Nyb2xsLlxuLy9cbi8vIE1vcmUgaW1wb3J0YW50bHksIGhvd2V2ZXIsIHRoaXMgY29udGFpbmVyIGlzIGBwb3NpdGlvbjogcmVsYXRpdmVgIGFuZCwgYXNcbi8vIHN1Y2gsIGFjdHMgYXMgdGhlIGVsZW1lbnQgYWdhaW5zdCB3aGljaCB0aGUgcGVyc2lzdGFudCBjZWxscyBhcmVcbi8vIHBvc2l0aW9uZWQuIFRoZXNlIHJ1bGVzIGNhbid0IGJlIG9uIHRoZSBgdGFibGVfX3Njcm9sbGVyYCBiZWNhdXNlIGl0IHNjcm9sbHMsXG4vLyB3aGVyZSB0aGUgcGVyc2lzdGFudCBjZWxscyBzaG91bGQgYmUgZml4ZWQgZXZlbiBhcyB0aGUgcmVzdCBvZiB0aGUgdGFibGVcbi8vIHNjcm9sbHMuXG5cbi50YWJsZV9fYmFja2Ryb3Age1xuICAvLyBwb3NpdGlvblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHotaW5kZXgoYmFja2Ryb3AsIHRhYmxlKTtcblxuICAvLyBib3ggbW9kZWxcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBjbGVhcjogYm90aDtcblxuICAvLyBiYWNrZHJvcFxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXI6ICR0YWJsZS0tYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkdGFibGUtLWJvcmRlci1yYWRpdXM7XG59XG5cblxuXG4vLypcbi8vIEEgY29udGFpbmVyIGFyb3VuZCB0aGUgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gdGhlIGB0YWJsZWAuIEZvciBub3csXG4vLyB0aGlzIGluY2x1ZGVzIG9ubHkgdGhlIHNlZ21lbnRlZCBidXR0b24gdG8gc2hpZnQgdGhlIHRhYmxlIHJpZ2h0LyBsZWZ0IGJ5XG4vLyBvbmUgY29sdW1uLlxuXG4udGFibGVfX2FjdGlvbnMge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTQwJSk7XG4gIG1heC1oZWlnaHQ6IDA7XG4gIGZsb2F0OiByaWdodDtcblxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyAkYm91bmN5LXRyYW5zaXRpb24sXG4gICAgICAgICAgICAgIG1heC1oZWlnaHQgMC4zcyBlYXNlLFxuICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbSAwLjNzIGVhc2U7XG59XG5cblxuXG4vLypcbi8vIFRoZSBoZWFkZXIgcm93IG9mIHRoZSB0YWJsZS5cblxuLnRhYmxlX19oZWFkZXIge1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nOiAwO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGFyb3VuZCB0aGUgcm93cyB0aGF0IG1ha2UgdXAgdGhlIGJvZHkgb2YgdGhlIHRhYmxlLlxuXG4udGFibGVfX2JvZHkge1xuICAvLyBTdHJpcGVkIHJvd3MhXG4gID4gLnRhYmxlX19yb3c6bnRoLWNoaWxkKG9kZCkgPiAudGFibGVfX2NlbGwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGdyYXktbGlnaHRlcik7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gQSByb3cgb2YgdGFibGUgY2VsbHMuXG5cbi50YWJsZV9fcm93IHtcbiAgLy8gSGlkZSB0aGUgb3ZlcmZsb3cgc28gdGhhdCBib3ggc2hhZG93cyBvbiBwZXJzaXN0YW50IGNlbGxzIGRvbid0IGJsZWVkXG4gIC8vIGJldHdlZW4gcm93cy5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuXG5cbi8vKlxuLy8gQW4gaW5kaXZpZHVhbCB0YWJsZSBjZWxsLlxuXG4udGFibGVfX2NlbGwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHotaW5kZXgoY2VsbCwgdGFibGUpO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICBwYWRkaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG59XG5cbi8vKlxuLy8gQSB0YWJsZSBjZWxsIHdpdGggY2VudGVyLWFsaWduZWQgdGV4dC5cblxuLnRhYmxlX19jZWxsLS1jZW50ZXJlZCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIi8vICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1xuLy8gICAgICAgIF9fXyAgICAvICAvXFwgICAgICAgIF9fX19fICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgLyAgL1xcICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgLyAgLzo6XFwgICAgICAvICAvOjpcXCAgICAgICAgICAgICAgICAgLyAgL1xcICAgICAgLyAgLzovXyAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOi8gLyAgLzovXFw6XFwgICAgLyAgLzovXFw6XFwgIF9fXyAgICAgX19fICAvICAvOi8gICAgIC8gIC86LyAvXFwgICAgLyAgLzovXG4vLyAgICAgLyAgLzovIC8gIC86L34vOjpcXCAgLyAgLzovfi86OlxcL19fL1xcICAgLyAgL1xcL19fLzo6XFwgICAgLyAgLzovIC86OlxcICAvICAvOi9cbi8vICAgIC8gIC86OlxcL19fLzovIC86L1xcOlxcL19fLzovIC86L1xcOlxcICBcXDpcXCAvICAvOi9cXF9fXFwvXFw6XFxfXy9fXy86LyAvOi9cXDpcXC8gIC86OlxcXG4vLyAgIC9fXy86L1xcOlxcICBcXDpcXC86L19fXFwvXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXCAgLzovICAgIFxcICBcXDpcXC9cXCAgXFw6XFwvOi9+LzovX18vOi9cXDpcXFxuLy8gICBcXF9fXFwvICBcXDpcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwvOi8gICAgICBcXF9fXFw6Oi9cXCAgXFw6Oi8gLzovXFxfX1xcLyAgXFw6XFxcbi8vICAgICAgICBcXCAgXFw6XFwgIFxcOlxcICAgICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6Oi8gICAgICAgL19fLzovICBcXF9fXFwvIC86LyAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgICBcXF9fXFwvXFwgIFxcOlxcICAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgIC9fXy86LyAgICAgICAgXFxfX1xcL1xuLy8gICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIFRhYmxpc3Rcbi8vXG4vLyBUYWJsaXN0cyBhcmUgdXNlZCB0byBjcmVhdGUgZ3JvdXBzIG9mIHJlbGF0ZWQgY29udGVudCB0aGF0IGlzIGNvbmRpdGlvbmFsbHlcbi8vIHNob3duIG9yIGhpZGRlbiBiYXNlZCBvbiB0aGUgc2VsZWN0ZWQgdGFiLiBUaGUgSmF2YVNjcmlwdCBwYXJ0IG9mIHRoaXNcbi8vIGNvbXBvbmVudHMgZW5zdXJlcyB0aGF0IHRoZSByZXF1aXJlZCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgbWFya3VwIGlzIGFkZGVkXG4vLyB0byB0aGUgdGFicywgYW5kIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBzdHlsZXMgYXJlIGF2YWlsYWJsZSBkZXBlbmRpbmcgb25cbi8vIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSB0YWJzIGFyZSBiZWluZyB1c2VkLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgZm9yIGEgc2V0IG9mIHRhYnMuIFdoaWxlIHBhbmVscyBhbmQgdGFicyBib3RoIHVzZSBgdGFibGlzdGBcbi8vIGFzIHRoZWlyIGJhc2UgY29tcG9uZW50LCBvbmx5IGB0YWJsaXN0X190YWJgcyBhcmUgY2hpbGQgbm9kZXMgb2YgdGhpc1xuLy8gY29tcG9uZW50OyBgdGFibGlzdF9fcGFuZWxgcyAoYW5kIHRoZWlyIGNvbnRhaW5lcikgYXJlIHNlcGFyYXRlIGZyb20gdGhlXG4vLyBkb2N1bWVudCB0byBhbGxvdyB0YWJzIHRvIG1vdmUgYXJvdW5kIHRoZSBwYWdlIGluZGVwZW5kZW50bHkgb2YgdGhlIGNvbnRlbnRcbi8vIHRoZXkgYWN0dWFsbHkgYWN0aXZhdGUuXG4vL1xuLy8gVGhlIGB0YWJsaXN0LS1tYW5hZ2VzLXVybGAgdmFyaWFudCBpcyB1bmlxdWUgaW4gdGhhdCBpdCBoYXMgbm8gdmlzdWFsXG4vLyBkaWZmZXJlbmNlcywgYnV0IHdpbGwgcHJlc2VydmUgdGhlIHNlbGVjdGVkIHRhYiB2aWEgYSBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyXG4vLyBhbmQgcmVzdG9yZSB0aGUgc2VsZWN0ZWQgdGFiIG9uIHN1YnNlcXVlbnQgcGFnZSBsb2Fkcy4gVG8gYWRkIHRoaXNcbi8vIGZ1bmN0aW9uYWxpdHksIHNpbXBseSBwYXNzIGB0cnVlYCBmb3IgdGhlIGA6bWFuYWdlX3VybGAgb3B0aW9uIG9mIHRoZVxuLy8gYGRvY2tzX3RhYmxpc3RgIHZpZXcgaGVscGVyLlxuLy9cbi8vIEBoZWxwZXIgZG9ja3NfdGFibGlzdFxuXG4udGFibGlzdCB7XG4gIC8vIGJveCBtb2RlbFxuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICBtYXJnaW4tcmlnaHQ6IG5lZ2F0aXZlKGhhbGYoZGVmYXVsdChzcGFjaW5nKSkpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi8vKlxuLy8gQSBsYXJnZXIgc2V0IG9mIHRhYnMgKGJvdGggaW4gdGVybXMgb2YgdGhlIGZvbnQgc2l6ZSBvZiB0aGUgdGFicyBhbmQgdGhlXG4vLyBwYWRkaW5nIHdpdGhpbiBlYWNoIHRhYikuXG4vL1xuLy8gQHNldF9ieSA6c2l6ZSAoOmxhcmdlKVxuXG4udGFibGlzdC0tbGFyZ2Uge1xuICBtYXJnaW46IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKSAwO1xuXG4gID4gLnRhYmxpc3RfX3RhYiB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKHRhYmxpc3QtLWxhcmdlKTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpIG11bHRpcGx5KGRlZmF1bHQoc3BhY2luZyksIDIuNSkgbXVsdGlwbHkoZGVmYXVsdChzcGFjaW5nKSwgMS4yKTtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIH1cblxuICA+IC50YWJsaXN0X190YWItLWlzLWFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgbGlnaHQpO1xuICB9XG59XG5cbi8vKlxuLy8gQSB2YXJpYXRpb24gb2YgdGhlIHRhYmxpc3QgdGhhdCBmb3JjZXMgdGhlIEphdmFTY3JpcHQgdG8gcHJlc2VydmUgdGhlXG4vLyBzZWxlY3RlZCB0YWIgYW5kIHJlbG9hZCB0aGF0IHRhYiBvbiBzdWJzZXF1ZW50IHBhZ2UgbG9hZHMuXG4vL1xuLy8gQGRlbW9fdHlwZSBub25lXG4vLyBAc2V0X2J5IDptYW5hZ2VfdXJsXG5cbi50YWJsaXN0LS1tYW5hZ2VzLXVybCB7fVxuXG5cblxuXG4vLypcbi8vIEEgc2luZ2xlIHRhYiBpbiB0aGUgdGFibGlzdC4gVGFicyB3aWxsIGJlIGEgcmVsYXRpdmVseSBsaWdodCBjb2xvciBieVxuLy8gZGVmYXVsdCB3aXRoIHByb2dyZXNzaXZlbHkgZGFya2VyIHNoYWRlcyB1c2VkIG9uIGA6Zm9jdXNgL2A6aG92ZXJgIGFuZCB3aGVuXG4vLyBgOmFjdGl2ZWAuXG4vL1xuLy8gVGFicyBzaG91bGQgc3RpbGwgd29yayBldmVuIHdoZW4gdGhlcmUgaXMgbm8gSmF2YVNjcmlwdCBvciBDU1MuIFRvIG1ha2UgdGhpc1xuLy8gd29yaywgZW5zdXJlIHRoYXQgZWFjaCBgdGFibGlzdF9fdGFiYCBpcyBhbiBgYWAgdGFnIHdpdGggYW4gYGhyZWZgIHRoYXRcbi8vIHBvaW50cyB0byB0aGUgYGlkYCBvZiB0aGUgcmVsZXZhbnQgYHRhYmxpc3RfX3BhbmVsYC4gTGlrZXdpc2UsIHRoZSBgaWRgcyBvZlxuLy8gdGhlIHRhYiBhbmQgcGFuZWwgc2hvdWxkIG1hdGNoIHVwIHZhaSB0aGUgYGFyaWEtY29udHJvbHNgIGFuZFxuLy8gYGFyaWEtbGFiZWxsZWRieWAgcHJvcGVydGllcy4gVGhlIEphdmFTY3JpcHQgY29tcG9uZW50LCBpZiBydW4sIHdpbGxcbi8vIGd1YXJhbnRlZSBhbGwgb2YgdGhlc2UgYXNzb2NpYXRpb25zLlxuLy9cbi8vIEBoZWxwZXIgZG9ja3NfdGFibGlzdF90YWJcblxuLnRhYmxpc3RfX3RhYiB7XG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDAgZGVmYXVsdChjb250cm9sLXBhZGRpbmcpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIG9wYWNpdHk6IDAuMztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlLCBib3JkZXItY29sb3IgMC4zcyBlYXNlO1xuXG4gIC8vIHR5cGVcbiAgQGluY2x1ZGUgZm9udC1zaXplKGNvbnRyb2wpO1xuICBsaW5lLWhlaWdodDogZGVmYXVsdChjb250cm9sLXNpemUpO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG4gICY6Zm9jdXMsXG4gICY6aG92ZXIge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG5cbiAgPiAuaWNvbiB7XG4gICAgaGVpZ2h0OiBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7XG4gICAgd2lkdGg6IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKTtcbiAgICBAaW5jbHVkZSBpY29uLS1yZWNvbG9yKGdyYXksIGRhcmspO1xuICAgIHN0cm9rZS13aWR0aDogM3B4O1xuICB9XG59XG5cbi8vKlxuLy8gVGhlIHZhcmlhdGlvbiBhZGRlZCB0byB0aGUgdGFiIHdob3NlIGNvcnJlc3BvbmRpbmcgdGFiIGlzIGN1cnJlbnRseVxuLy8gdmlzaWJsZS4gVGhpcyBjbGFzcyBjYW4gZWl0aGVyIGJlIGFwcGxpZWQgbWFudWFsbHkgYnkgc2V0dGluZyB0aGUgYDphY3RpdmU/YFxuLy8gYXJndW1lbnQgdG8gdGhlIGhlbHBlciBtZXRob2QgdG8gYHRydWVgIG9yIGJ5IGNsaWNraW5nIG9uIHRoZSBjb3JyZWN0IHRhYlxuLy8gKHdoaWNoIGRvZXMgYWxsIHRoZSByZXF1aXJlZCBhdHRyaWJ1dGUgbWFuaXB1bGF0aW9ucyB0aHJvdWdoIHRoZSBKYXZhU2NyaXB0XG4vLyBjb21wb25lbnQpLlxuLy9cbi8vIEBkZW1vX3R5cGUgbm9uZVxuLy8gQHNldF9ieSA6YWN0aXZlP1xuXG4udGFibGlzdF9fdGFiLS1pcy1hY3RpdmUge1xuICAmLCAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4vLypcbi8vIFRoZSB0ZXh0IHdpdGhpbiBhIHRhYi4gVGhpcyBjb250YWluZXIgaXMgcmVxdWlyZWQgaW4gb3JkZXIgZm9yIHRoZSB0ZXh0IGFuZFxuLy8gKG9wdGlvbmFsKSBpY29uIHRvIGJlIGFib3ZlIG9uZSBhbm90aGVyLlxuXG4udGFibGlzdF9fdGFiX190ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuXG4vLypcbi8vIEEgcGFuZWwgdGhhdCBjb250YWlucyB0aGUgY29udGVudCB0aGF0IHNob3VsZCBiZSBzaG93biB3aGVuIHRoZSBhc3NvY2lhdGVkXG4vLyB0YWIgaXMgYWN0aXZlLlxuLy9cbi8vIEBoZWxwZXIgZG9ja3NfdGFibGlzdF9wYW5lbFxuXG4udGFibGlzdF9fcGFuZWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vLypcbi8vIEEgc3RhdGUgaW5kaWNhdGluZyB0aGF0IHRoZSBhc3NvY2lhdGVkIHRhYiBpcyBhY3RpdmUgYW5kIHRoZSBjb250ZW50cyBvZlxuLy8gdGhpcyBwYW5lbCBzaG91bGQgYmUgbWFkZSB2aXNpYmxlLiBUaGVyZSBpcyBubyBhbmltYXRpb24gd2hlbiBzd2l0Y2hpbmdcbi8vIGJldHdlZW4gdGFicyDigJTCoHRoZXkgc2ltcGx5IHBvcCBpbiBhbmQgb3V0IG9mIHZpZXcuXG4vL1xuLy8gQGRlbW9fdHlwZSBub25lXG4vLyBAc2V0X2J5IDphY3RpdmU/XG5cbi50YWJsaXN0X19wYW5lbC0taXMtYWN0aXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuXG4vLypcbi8vIEEgY29udGFpbmVyIGFyb3VuZCBhbGwgb2YgdGhlIHBhbmVscyBmb3IgYSB0YWJsaXN0LiBUaGlzIGNvbnRhaW5lclxuLy8gdGVjaG5pY2FsbHkgZG9lcyBub3RoaW5nLCBidXQgaXMgYSBuaWNlIHdheSB0byBpc29sYXRlIGEgc2V0IG9mIHRhYiBwYW5lbHNcbi8vIGZyb20gdGhlIHN1cnJvdW5kaW5nIGNvbnRlbnQuXG5cbi50YWJsaXN0X19wYW5lbC1jb250YWluZXIge31cbiIsIi52ZXJ0aWNhbC1zcGFjZXIge1xuICAgIG1hcmdpbjogaGFsZihkZWZhdWx0KHNwYWNpbmcpKSAwO1xufVxuIiwiLnZlcnRpY2FsLXN0YWNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi52ZXJ0aWNhbC1zdGFja19faXRlbSB7XG4gIGZsZXg6IDEgMSAwcHg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi52ZXJ0aWNhbC1zdGFja19faXRlbS0tZml4ZWQge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4iLCJib2R5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICYueC1yYXlfX2hlbHBlcnMtLXgtcmF5LWlzLWFjdGl2ZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG4ueC1yYXkge1xuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcih3aGl0ZSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwOyBib3R0b206IDA7XG4gIGxlZnQ6IDA7IHJpZ2h0OiAwO1xuICB6LWluZGV4OiAtMTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgbWluLWhlaWdodDogMTAwJTtcblxuICAucGFnZS1oZWFkZXIge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG59XG5cbi54LXJheS0taXMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgei1pbmRleDogMTIwMDtcbn1cblxuXG5cbi54LXJheV9fY29udGVudCB7XG4gIHBhZGRpbmctYm90dG9tOiAzcmVtO1xufVxuXG5cbi54LXJheV9fbGlzdCB7XG4gIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcbn1cblxuLngtcmF5X19jbG9zZXIge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG5cblxuLngtcmF5X19kaWFncmFtIHtcbiAgcGFkZGluZzogZGVmYXVsdChzcGFjaW5nKSAwIDA7XG4gIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXkpO1xufVxuXG5cbi54LXJheV9fZGV0YWlscyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi54LXJheV9fZGV0YWlscy0taXMtdmlzaWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ueC1yYXlfX2RldGFpbHNfX3RhZ25hbWUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIHBhZGRpbmc6IDAuM2VtIDAuNGVtIDAuMmVtO1xuICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcbn1cblxuLngtcmF5X19kZXRhaWxzX19kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206ICgyICogZGVmYXVsdChzcGFjaW5nKSk7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgICAgICAgICBfX19fXyAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAgIF9fXyAgICAgIC8gIC86OlxcICAgICAgLyAgL1xcICAgICAgICBfX19fXyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOi9fICAgIC8gIC9cXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi9fICAgICAgLyAgLzo6XFwgICAgIC8gIC86OlxcICAgICAgLyAgLzo6XFxcbi8vICAgICAvICAvOi8gL1xcICAvICAvOi8gICAvICAvOi8gIFxcOlxcICAvICAvOi8gL1xcICAgIC8gIC86L1xcOlxcICAgLyAgLzovXFw6XFwgICAgLyAgLzovXFw6XFxcbi8vICAgIC8gIC86LyAvOjpcXC9fXy86OlxcICAvX18vOi8gXFxfX1xcOnwvICAvOi8gLzovXyAgLyAgLzovfi86OlxcIC8gIC86L34vOjpcXCAgLyAgLzovfi86L1xuLy8gICAvX18vOi8gLzovXFw6XFxfX1xcL1xcOlxcX1xcICBcXDpcXCAvICAvOi9fXy86LyAvOi8gL1xcL19fLzovIC86L1xcOi9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi9fX19cbi8vICAgXFwgIFxcOlxcLzovfi86LyAgXFwgIFxcOlxcL1xcICBcXDpcXCAgLzovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXC86L34vOnwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOjo6OjovXG4vLyAgICBcXCAgXFw6Oi8gLzovICAgIFxcX19cXDo6L1xcICBcXDpcXC86LyAgXFwgIFxcOjovIC86LyAgXFwgIFxcOjovIC86LyBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi9+fn5+XG4vLyAgICAgXFxfX1xcLyAvOi8gICAgIC9fXy86LyAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwvOi8gICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICAvX18vOi8gICAgICBcXF9fXFwvICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6XFxcbi8vICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gU2lkZWJhclxuLy8gQGdyb3VwIFBhcnRpYWxzXG4vL1xuLy8gVGhlIG1haW4gc2lkZWJhciBmb3IgdGhlIHBhZ2UuIFRoaXMgc2lkZWJhciBpcyBhY3RpdmF0ZWQgYnkgYSB0b2dnbGVcbi8vIChgc2lkZWJhcl9fdG9nZ2xlcmApIGFuZCBzbGlkZXMgb3ZlciB0aGUgbWFpbiBjb250ZW50ICh3aXRob3V0IG1vdmluZyB0aGVcbi8vIG1haW4gY29udGVudCkuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cbi8vKlxuLy8gVGhlIG1haW4gcGllY2Ugb2YgdGhlIHNpZGViYXIuIFRoaXMgcHJvdmlkZXMgdGhlIHZpc3VhbCBiYWNraW5nIG9mIHRoZVxuLy8gc2lkZWJhciBhbmQgbWFuYWdlcyB0aGUgcmV2ZWFsLyBoaWRlIHRyYW5zaXRpb24uXG5cbi5zaWRlYmFyIHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwOyB0b3A6IDA7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICBtYXgtd2lkdGg6IDE1cmVtO1xuXG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMHZoO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKHdoaXRlKTtcbiAgQGluY2x1ZGUgZGVmYXVsdChib3gtc2hhZG93KTtcblxuICBAaW5jbHVkZSBhZnRlcig0MHJlbSkge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG4vLypcbi8vIFRoZSBzdGF0ZSB0aGF0IGlzIGFkZGVkIGJ5IHRoZSBKYXZhU2NyaXB0IGNvbXBvbmVudCB3aGVuIHRoZSBzaWRlYmFyIGlzXG4vLyB2aXNpYmxlLlxuXG4uc2lkZWJhci0taXMtYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIGNvbnRhaW5lciBmb3IgdGhlIGl0ZW0gdGhhdCBzaG91bGQgYWN0aXZhdGUgdGhlIHNpZGViYXIuIFRoZSBKYXZhU2NyaXB0XG4vLyBjb21wb25lbnQgd2lsbCBsb29rIGZvciBhbnkgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgYW5kIHdpbGwgYXR0YWNoIGBjbGlja2Bcbi8vIGhhbmRsZXJzIHRoYXQgdGhhdCB0b2dnbGUgdGhlIHNpZGViYXIncyB2aXNpYmlsaXR5LlxuXG4uc2lkZWJhcl9fdG9nZ2xlciB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLy8gQGluY2x1ZGUgYWZ0ZXIoNDByZW0pIHtcbiAgLy8gICBkaXNwbGF5OiBub25lO1xuICAvLyB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */
|