@wppconnect/server 2.8.6 → 2.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/swagger.json CHANGED
@@ -344,12 +344,31 @@
344
344
  },
345
345
  "waitQrCode": {
346
346
  "type": "boolean"
347
+ },
348
+ "proxy": {
349
+ "type": "object",
350
+ "properties": {
351
+ "url": {
352
+ "type": "string"
353
+ },
354
+ "username": {
355
+ "type": "string"
356
+ },
357
+ "password": {
358
+ "type": "string"
359
+ }
360
+ }
347
361
  }
348
362
  }
349
363
  },
350
364
  "example": {
351
365
  "webhook": "",
352
- "waitQrCode": false
366
+ "waitQrCode": false,
367
+ "proxy": {
368
+ "url": "http://myproxy.com:8080",
369
+ "username": "myuser",
370
+ "password": "mypassword"
371
+ }
353
372
  }
354
373
  }
355
374
  }
@@ -512,6 +531,55 @@
512
531
  }
513
532
  }
514
533
  },
534
+ "/api/{session}/set-online-presence": {
535
+ "post": {
536
+ "tags": ["Misc"],
537
+ "description": "",
538
+ "operationId": "setOnlinePresence",
539
+ "parameters": [
540
+ {
541
+ "name": "session",
542
+ "in": "path",
543
+ "required": true,
544
+ "schema": {
545
+ "type": "string",
546
+ "example": "NERDWHATS_AMERICA"
547
+ }
548
+ }
549
+ ],
550
+ "responses": {
551
+ "200": {
552
+ "description": "OK"
553
+ },
554
+ "500": {
555
+ "description": "Internal Server Error"
556
+ }
557
+ },
558
+ "security": [
559
+ {
560
+ "bearerAuth": []
561
+ }
562
+ ],
563
+ "requestBody": {
564
+ "required": true,
565
+ "content": {
566
+ "application/json": {
567
+ "schema": {
568
+ "type": "object",
569
+ "properties": {
570
+ "isOnline": {
571
+ "type": "boolean"
572
+ }
573
+ }
574
+ },
575
+ "example": {
576
+ "isOnline": false
577
+ }
578
+ }
579
+ }
580
+ }
581
+ }
582
+ },
515
583
  "/api/{session}/download-media": {
516
584
  "post": {
517
585
  "tags": ["Messages"],
@@ -1806,6 +1874,76 @@
1806
1874
  }
1807
1875
  }
1808
1876
  },
1877
+ "/api/{session}/send-pix-key": {
1878
+ "post": {
1879
+ "tags": ["Messages"],
1880
+ "description": "",
1881
+ "parameters": [
1882
+ {
1883
+ "name": "session",
1884
+ "in": "path",
1885
+ "required": true,
1886
+ "schema": {
1887
+ "type": "string",
1888
+ "example": "NERDWHATS_AMERICA"
1889
+ }
1890
+ }
1891
+ ],
1892
+ "responses": {
1893
+ "400": {
1894
+ "description": "Bad Request"
1895
+ }
1896
+ },
1897
+ "security": [
1898
+ {
1899
+ "bearerAuth": []
1900
+ }
1901
+ ],
1902
+ "requestBody": {
1903
+ "required": true,
1904
+ "content": {
1905
+ "application/json": {
1906
+ "schema": {
1907
+ "type": "object",
1908
+ "required": ["phone", "keyType", "name", "key"],
1909
+ "properties": {
1910
+ "phone": {
1911
+ "type": "string"
1912
+ },
1913
+ "keyType": {
1914
+ "type": "string"
1915
+ },
1916
+ "name": {
1917
+ "type": "string"
1918
+ },
1919
+ "key": {
1920
+ "type": "string"
1921
+ },
1922
+ "instructions": {
1923
+ "type": "string"
1924
+ },
1925
+ "options": {
1926
+ "type": "object"
1927
+ }
1928
+ }
1929
+ },
1930
+ "examples": {
1931
+ "Send PIX key to contact": {
1932
+ "value": {
1933
+ "phone": "5521999999999",
1934
+ "keyType": "PHONE",
1935
+ "name": "WPPCONNECT-TEAM",
1936
+ "key": "+5567123456789",
1937
+ "instructions": "some instructions about the pix",
1938
+ "options": {}
1939
+ }
1940
+ }
1941
+ }
1942
+ }
1943
+ }
1944
+ }
1945
+ }
1946
+ },
1809
1947
  "/api/{session}/all-broadcast-list": {
1810
1948
  "get": {
1811
1949
  "tags": ["Misc"],
@@ -1870,13 +2008,111 @@
1870
2008
  ],
1871
2009
  "responses": {
1872
2010
  "200": {
1873
- "description": "OK"
2011
+ "description": "Group information retrieved successfully",
2012
+ "content": {
2013
+ "application/json": {
2014
+ "schema": {
2015
+ "type": "object",
2016
+ "properties": {
2017
+ "status": {
2018
+ "type": "string",
2019
+ "example": "success"
2020
+ },
2021
+ "response": {
2022
+ "type": "object",
2023
+ "properties": {
2024
+ "id": {
2025
+ "type": "string",
2026
+ "example": "1234567890@g.us"
2027
+ },
2028
+ "name": {
2029
+ "type": "string",
2030
+ "example": "Group name"
2031
+ },
2032
+ "description": {
2033
+ "type": "string",
2034
+ "nullable": true,
2035
+ "example": "Group description"
2036
+ },
2037
+ "subject": {
2038
+ "type": "string",
2039
+ "example": "Group subject"
2040
+ },
2041
+ "subjectUpdatedAt": {
2042
+ "type": "string",
2043
+ "nullable": true,
2044
+ "example": "2024-11-12T08:00:00.000Z"
2045
+ },
2046
+ "subjectUpdatedBy": {
2047
+ "type": "string",
2048
+ "nullable": true,
2049
+ "example": "1111111111111@c.us"
2050
+ },
2051
+ "descriptionUpdatedAt": {
2052
+ "type": "string",
2053
+ "nullable": true,
2054
+ "example": "2024-11-13T09:00:00.000Z"
2055
+ },
2056
+ "descriptionUpdatedBy": {
2057
+ "type": "string",
2058
+ "nullable": true,
2059
+ "example": "2222222222222@c.us"
2060
+ },
2061
+ "createdAt": {
2062
+ "type": "string",
2063
+ "nullable": true,
2064
+ "example": "2024-11-10T12:34:56.000Z"
2065
+ },
2066
+ "lastActivityAt": {
2067
+ "type": "string",
2068
+ "nullable": true,
2069
+ "example": "2024-11-15T10:00:00.000Z"
2070
+ },
2071
+ "participants": {
2072
+ "type": "array",
2073
+ "items": {
2074
+ "type": "object",
2075
+ "properties": {
2076
+ "id": {
2077
+ "type": "string",
2078
+ "example": "1111111111111@c.us"
2079
+ },
2080
+ "isAdmin": {
2081
+ "type": "boolean",
2082
+ "example": true
2083
+ }
2084
+ }
2085
+ }
2086
+ }
2087
+ }
2088
+ }
2089
+ }
2090
+ }
2091
+ }
2092
+ }
1874
2093
  },
1875
2094
  "400": {
1876
2095
  "description": "Bad Request"
1877
2096
  },
1878
2097
  "500": {
1879
- "description": "Internal Server Error"
2098
+ "description": "Internal error retrieving group info",
2099
+ "content": {
2100
+ "application/json": {
2101
+ "schema": {
2102
+ "type": "object",
2103
+ "properties": {
2104
+ "status": {
2105
+ "type": "string",
2106
+ "example": "error"
2107
+ },
2108
+ "message": {
2109
+ "type": "string",
2110
+ "example": "Error getting group info"
2111
+ }
2112
+ }
2113
+ }
2114
+ }
2115
+ }
1880
2116
  }
1881
2117
  },
1882
2118
  "security": [
@@ -2043,6 +2279,144 @@
2043
2279
  }
2044
2280
  }
2045
2281
  },
2282
+ "/api/{session}/group-info/{groupId}": {
2283
+ "get": {
2284
+ "tags": ["Group"],
2285
+ "summary": "Get detailed information about a group",
2286
+ "description": "",
2287
+ "parameters": [
2288
+ {
2289
+ "name": "session",
2290
+ "in": "path",
2291
+ "required": true,
2292
+ "schema": {
2293
+ "type": "string",
2294
+ "example": "NERDWHATS_AMERICA"
2295
+ }
2296
+ },
2297
+ {
2298
+ "name": "groupId",
2299
+ "in": "path",
2300
+ "required": true,
2301
+ "schema": {
2302
+ "type": "string",
2303
+ "example": "<groupId>"
2304
+ }
2305
+ }
2306
+ ],
2307
+ "responses": {
2308
+ "200": {
2309
+ "description": "Group information retrieved successfully",
2310
+ "content": {
2311
+ "application/json": {
2312
+ "schema": {
2313
+ "type": "object",
2314
+ "properties": {
2315
+ "status": {
2316
+ "type": "string",
2317
+ "example": "success"
2318
+ },
2319
+ "response": {
2320
+ "type": "object",
2321
+ "properties": {
2322
+ "id": {
2323
+ "type": "string",
2324
+ "example": "1234567890@g.us"
2325
+ },
2326
+ "name": {
2327
+ "type": "string",
2328
+ "example": "Group name"
2329
+ },
2330
+ "description": {
2331
+ "type": "string",
2332
+ "nullable": true,
2333
+ "example": "Group description"
2334
+ },
2335
+ "subject": {
2336
+ "type": "string",
2337
+ "example": "Group subject"
2338
+ },
2339
+ "subjectUpdatedAt": {
2340
+ "type": "string",
2341
+ "nullable": true,
2342
+ "example": "2024-11-12T08:00:00.000Z"
2343
+ },
2344
+ "subjectUpdatedBy": {
2345
+ "type": "string",
2346
+ "nullable": true,
2347
+ "example": "1111111111111@c.us"
2348
+ },
2349
+ "descriptionUpdatedAt": {
2350
+ "type": "string",
2351
+ "nullable": true,
2352
+ "example": "2024-11-13T09:00:00.000Z"
2353
+ },
2354
+ "descriptionUpdatedBy": {
2355
+ "type": "string",
2356
+ "nullable": true,
2357
+ "example": "2222222222222@c.us"
2358
+ },
2359
+ "createdAt": {
2360
+ "type": "string",
2361
+ "nullable": true,
2362
+ "example": "2024-11-10T12:34:56.000Z"
2363
+ },
2364
+ "lastActivityAt": {
2365
+ "type": "string",
2366
+ "nullable": true,
2367
+ "example": "2024-11-15T10:00:00.000Z"
2368
+ },
2369
+ "participants": {
2370
+ "type": "array",
2371
+ "items": {
2372
+ "type": "object",
2373
+ "properties": {
2374
+ "id": {
2375
+ "type": "string",
2376
+ "example": "1111111111111@c.us"
2377
+ },
2378
+ "isAdmin": {
2379
+ "type": "boolean",
2380
+ "example": true
2381
+ }
2382
+ }
2383
+ }
2384
+ }
2385
+ }
2386
+ }
2387
+ }
2388
+ }
2389
+ }
2390
+ }
2391
+ },
2392
+ "500": {
2393
+ "description": "Internal error retrieving group info",
2394
+ "content": {
2395
+ "application/json": {
2396
+ "schema": {
2397
+ "type": "object",
2398
+ "properties": {
2399
+ "status": {
2400
+ "type": "string",
2401
+ "example": "error"
2402
+ },
2403
+ "message": {
2404
+ "type": "string",
2405
+ "example": "Error getting group info"
2406
+ }
2407
+ }
2408
+ }
2409
+ }
2410
+ }
2411
+ }
2412
+ },
2413
+ "security": [
2414
+ {
2415
+ "bearerAuth": []
2416
+ }
2417
+ ]
2418
+ }
2419
+ },
2046
2420
  "/api/{session}/group-invite-link/{groupId}": {
2047
2421
  "get": {
2048
2422
  "tags": ["Group"],
@@ -64,6 +64,15 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
64
64
  Object.assign(
65
65
  {},
66
66
  { tokenStore: myTokenStore },
67
+ client.config.proxy ?
68
+ {
69
+ proxy: {
70
+ url: client.config.proxy?.url,
71
+ username: client.config.proxy?.username,
72
+ password: client.config.proxy?.password
73
+ }
74
+ } :
75
+ {},
67
76
  req.serverOptions.createOptions,
68
77
  {
69
78
  session: session,
@@ -102,8 +111,8 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
102
111
  statusFind
103
112
  );
104
113
  if (
105
- statusFind === 'autocloseCalled' ||
106
- statusFind === 'desconnectedMobile')
114
+ statusFind === _wppconnect.StatusFind.autocloseCalled ||
115
+ statusFind === _wppconnect.StatusFind.disconnectedMobile)
107
116
  {
108
117
  client.status = 'CLOSED';
109
118
  client.qrcode = null;
@@ -373,4 +382,4 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
373
382
  return client;
374
383
  }
375
384
  }exports.default = CreateSessionUtil;
376
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3BwY29ubmVjdCIsInJlcXVpcmUiLCJfc2Vzc2lvbkNvbnRyb2xsZXIiLCJfY2hhdFdvb3RDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2Z1bmN0aW9ucyIsIl9zZXNzaW9uVXRpbCIsIl9mYWN0b3J5IiwiQ3JlYXRlU2Vzc2lvblV0aWwiLCJzdGFydENoYXRXb290Q2xpZW50IiwiY2xpZW50IiwiY29uZmlnIiwiY2hhdFdvb3QiLCJjaGF0V29vdENsaWVudCIsInNlc3Npb24iLCJjcmVhdGVTZXNzaW9uVXRpbCIsInJlcSIsImNsaWVudHNBcnJheSIsInJlcyIsImdldENsaWVudCIsInN0YXR1cyIsImJvZHkiLCJ0b2tlblN0b3JlIiwiRmFjdG9yeSIsIm15VG9rZW5TdG9yZSIsImNyZWF0ZVRva2VuU3RvcnkiLCJ0b2tlbkRhdGEiLCJnZXRUb2tlbiIsInNldFRva2VuIiwic2VydmVyT3B0aW9ucyIsImN1c3RvbVVzZXJEYXRhRGlyIiwiY3JlYXRlT3B0aW9ucyIsInB1cHBldGVlck9wdGlvbnMiLCJ1c2VyRGF0YURpciIsIndwcENsaWVudCIsImNyZWF0ZSIsIk9iamVjdCIsImFzc2lnbiIsInBob25lTnVtYmVyIiwicGhvbmUiLCJkZXZpY2VOYW1lIiwidW5kZWZpbmVkIiwicG93ZXJlZEJ5IiwiY2F0Y2hMaW5rQ29kZSIsImNvZGUiLCJleHBvcnRQaG9uZUNvZGUiLCJjYXRjaFFSIiwiYmFzZTY0UXIiLCJhc2NpaVFSIiwiYXR0ZW1wdCIsInVybENvZGUiLCJleHBvcnRRUiIsIm9uTG9hZGluZ1NjcmVlbiIsInBlcmNlbnQiLCJtZXNzYWdlIiwibG9nZ2VyIiwiaW5mbyIsInN0YXR1c0ZpbmQiLCJldmVudEVtaXR0ZXIiLCJlbWl0IiwicXJjb2RlIiwiY2xvc2UiLCJjYWxsV2ViSG9vayIsImVycm9yIiwic3RhcnQiLCJ3ZWJob29rIiwib25QYXJ0aWNpcGFudHNDaGFuZ2VkIiwib25SZWFjdGlvbk1lc3NhZ2UiLCJvblJldm9rZWRNZXNzYWdlIiwib25Qb2xsUmVzcG9uc2UiLCJvbkxhYmVsVXBkYXRlZCIsImUiLCJFcnJvciIsIm5hbWUiLCJvcGVuZGF0YSIsInBob25lQ29kZSIsImlvIiwiZGF0YSIsIl9oZWFkZXJTZW50IiwianNvbiIsInFyQ29kZSIsInVybGNvZGUiLCJyZXBsYWNlIiwiaW1hZ2VCdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJpc0Nvbm5lY3RlZCIsInN0YXJ0SGVscGVyIiwiY2hlY2tTdGF0ZVNlc3Npb24iLCJsaXN0ZW5NZXNzYWdlcyIsImxpc3RlbkFja3MiLCJvblByZXNlbmNlQ2hhbmdlZCIsIm9uU3RhdGVDaGFuZ2UiLCJzdGF0ZSIsImNvbmZsaXRzIiwiU29ja2V0U3RhdGUiLCJDT05GTElDVCIsImluY2x1ZGVzIiwidXNlSGVyZSIsIm9uTWVzc2FnZSIsInR5cGUiLCJvbkxpdmVMb2NhdGlvbiIsInNlbmRlciIsImlkIiwibG9jYXRpb24iLCJvbkFueU1lc3NhZ2UiLCJkb3dubG9hZCIsIndlYnNvY2tldCIsImF1dG9Eb3dubG9hZCIsImZyb21NZSIsInJlc3BvbnNlIiwib25TZWxmTWVzc2FnZSIsIm9uSW5jb21pbmdDYWxsIiwiY2FsbCIsIm9uQWNrIiwiYWNrIiwicHJlc2VuY2VDaGFuZ2VkRXZlbnQiLCJyZWFjdGlvbiIsIm9uVXBkYXRlTGFiZWwiLCJlbmNvZGVGdW5jdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJkZWNvZGVGdW5jdGlvbiIsInRleHQiLCJvYmplY3QiLCJwYXJzZSIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvY3JlYXRlU2Vzc2lvblV0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3JlYXRlLCBTb2NrZXRTdGF0ZSB9IGZyb20gJ0B3cHBjb25uZWN0LXRlYW0vd3BwY29ubmVjdCc7XG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5cbmltcG9ydCB7IGRvd25sb2FkIH0gZnJvbSAnLi4vY29udHJvbGxlci9zZXNzaW9uQ29udHJvbGxlcic7XG5pbXBvcnQgeyBXaGF0c0FwcFNlcnZlciB9IGZyb20gJy4uL3R5cGVzL1doYXRzQXBwU2VydmVyJztcbmltcG9ydCBjaGF0V29vdENsaWVudCBmcm9tICcuL2NoYXRXb290Q2xpZW50JztcbmltcG9ydCB7IGF1dG9Eb3dubG9hZCwgY2FsbFdlYkhvb2ssIHN0YXJ0SGVscGVyIH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgY2xpZW50c0FycmF5LCBldmVudEVtaXR0ZXIgfSBmcm9tICcuL3Nlc3Npb25VdGlsJztcbmltcG9ydCBGYWN0b3J5IGZyb20gJy4vdG9rZW5TdG9yZS9mYWN0b3J5JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3JlYXRlU2Vzc2lvblV0aWwge1xuICBzdGFydENoYXRXb290Q2xpZW50KGNsaWVudDogYW55KSB7XG4gICAgaWYgKGNsaWVudC5jb25maWcuY2hhdFdvb3QgJiYgIWNsaWVudC5fY2hhdFdvb3RDbGllbnQpXG4gICAgICBjbGllbnQuX2NoYXRXb290Q2xpZW50ID0gbmV3IGNoYXRXb290Q2xpZW50KFxuICAgICAgICBjbGllbnQuY29uZmlnLmNoYXRXb290LFxuICAgICAgICBjbGllbnQuc2Vzc2lvblxuICAgICAgKTtcbiAgICByZXR1cm4gY2xpZW50Ll9jaGF0V29vdENsaWVudDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb25VdGlsKFxuICAgIHJlcTogYW55LFxuICAgIGNsaWVudHNBcnJheTogYW55LFxuICAgIHNlc3Npb246IHN0cmluZyxcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjbGllbnQgPSB0aGlzLmdldENsaWVudChzZXNzaW9uKSBhcyBhbnk7XG4gICAgICBpZiAoY2xpZW50LnN0YXR1cyAhPSBudWxsICYmIGNsaWVudC5zdGF0dXMgIT09ICdDTE9TRUQnKSByZXR1cm47XG4gICAgICBjbGllbnQuc3RhdHVzID0gJ0lOSVRJQUxJWklORyc7XG4gICAgICBjbGllbnQuY29uZmlnID0gcmVxLmJvZHk7XG5cbiAgICAgIGNvbnN0IHRva2VuU3RvcmUgPSBuZXcgRmFjdG9yeSgpO1xuICAgICAgY29uc3QgbXlUb2tlblN0b3JlID0gdG9rZW5TdG9yZS5jcmVhdGVUb2tlblN0b3J5KGNsaWVudCk7XG4gICAgICBjb25zdCB0b2tlbkRhdGEgPSBhd2FpdCBteVRva2VuU3RvcmUuZ2V0VG9rZW4oc2Vzc2lvbik7XG5cbiAgICAgIC8vIHdlIG5lZWQgdGhpcyB0byB1cGRhdGUgcGhvbmUgaW4gY29uZmlnIGV2ZXJ5IHRpbWUgc2Vzc2lvbiBzdGFydHMsIHNvIHdlIGNhbiBhc2sgZm9yIGNvZGUgZm9yIGl0IGFnYWluLlxuICAgICAgbXlUb2tlblN0b3JlLnNldFRva2VuKHNlc3Npb24sIHRva2VuRGF0YSA/PyB7fSk7XG5cbiAgICAgIHRoaXMuc3RhcnRDaGF0V29vdENsaWVudChjbGllbnQpO1xuXG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMuY3VzdG9tVXNlckRhdGFEaXIpIHtcbiAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMuY3JlYXRlT3B0aW9ucy5wdXBwZXRlZXJPcHRpb25zID0ge1xuICAgICAgICAgIHVzZXJEYXRhRGlyOiByZXEuc2VydmVyT3B0aW9ucy5jdXN0b21Vc2VyRGF0YURpciArIHNlc3Npb24sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdwcENsaWVudCA9IGF3YWl0IGNyZWF0ZShcbiAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7IHRva2VuU3RvcmU6IG15VG9rZW5TdG9yZSB9LFxuICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmNyZWF0ZU9wdGlvbnMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvbjogc2Vzc2lvbixcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiBjbGllbnQuY29uZmlnLnBob25lID8/IG51bGwsXG4gICAgICAgICAgICBkZXZpY2VOYW1lOlxuICAgICAgICAgICAgICBjbGllbnQuY29uZmlnLnBob25lID09IHVuZGVmaW5lZCAvLyBidWcgd2hlbiB1c2luZyBwaG9uZSBjb2RlIHRoaXMgc2hvdWxkbid0IGJlIHBhc3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL3dwcGNvbm5lY3QtdGVhbS93cHBjb25uZWN0LXNlcnZlci9pc3N1ZXMvMTY4NyNpc3N1ZWNvbW1lbnQtMjA5OTM1Nzg3NClcbiAgICAgICAgICAgICAgICA/IGNsaWVudC5jb25maWc/LmRldmljZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmRldmljZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICdXcHBDb25uZWN0J1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcG93ZXJlZEJ5OlxuICAgICAgICAgICAgICBjbGllbnQuY29uZmlnLnBob25lID09IHVuZGVmaW5lZCAvLyBidWcgd2hlbiB1c2luZyBwaG9uZSBjb2RlIHRoaXMgc2hvdWxkbid0IGJlIHBhc3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL3dwcGNvbm5lY3QtdGVhbS93cHBjb25uZWN0LXNlcnZlci9pc3N1ZXMvMTY4NyNpc3N1ZWNvbW1lbnQtMjA5OTM1Nzg3NClcbiAgICAgICAgICAgICAgICA/IGNsaWVudC5jb25maWc/LnBvd2VyZWRCeSB8fFxuICAgICAgICAgICAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMucG93ZXJlZEJ5IHx8XG4gICAgICAgICAgICAgICAgICAnV1BQQ29ubmVjdC1TZXJ2ZXInXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjYXRjaExpbmtDb2RlOiAoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0UGhvbmVDb2RlKHJlcSwgY2xpZW50LmNvbmZpZy5waG9uZSwgY29kZSwgY2xpZW50LCByZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGNoUVI6IChcbiAgICAgICAgICAgICAgYmFzZTY0UXI6IGFueSxcbiAgICAgICAgICAgICAgYXNjaWlRUjogYW55LFxuICAgICAgICAgICAgICBhdHRlbXB0OiBhbnksXG4gICAgICAgICAgICAgIHVybENvZGU6IHN0cmluZ1xuICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0UVIocmVxLCBiYXNlNjRRciwgdXJsQ29kZSwgY2xpZW50LCByZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uTG9hZGluZ1NjcmVlbjogKHBlcmNlbnQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHJlcS5sb2dnZXIuaW5mbyhgWyR7c2Vzc2lvbn1dICR7cGVyY2VudH0lIC0gJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXR1c0ZpbmQ6IChzdGF0dXNGaW5kOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBldmVudEVtaXR0ZXIuZW1pdChcbiAgICAgICAgICAgICAgICAgIGBzdGF0dXMtJHtjbGllbnQuc2Vzc2lvbn1gLFxuICAgICAgICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZCA9PT0gJ2F1dG9jbG9zZUNhbGxlZCcgfHxcbiAgICAgICAgICAgICAgICAgIHN0YXR1c0ZpbmQgPT09ICdkZXNjb25uZWN0ZWRNb2JpbGUnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjbGllbnQuc3RhdHVzID0gJ0NMT1NFRCc7XG4gICAgICAgICAgICAgICAgICBjbGllbnQucXJjb2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgY2xpZW50c0FycmF5W3Nlc3Npb25dID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3N0YXR1cy1maW5kJywge1xuICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXNGaW5kLFxuICAgICAgICAgICAgICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVxLmxvZ2dlci5pbmZvKHN0YXR1c0ZpbmQgKyAnXFxuXFxuJyk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXSA9IE9iamVjdC5hc3NpZ24od3BwQ2xpZW50LCBjbGllbnQpO1xuICAgICAgYXdhaXQgdGhpcy5zdGFydChyZXEsIGNsaWVudCk7XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUGFydGljaXBhbnRzQ2hhbmdlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9uUGFydGljaXBhbnRzQ2hhbmdlZChyZXEsIGNsaWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUmVhY3Rpb25NZXNzYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25SZWFjdGlvbk1lc3NhZ2UoY2xpZW50LCByZXEpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblJldm9rZWRNZXNzYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25SZXZva2VkTWVzc2FnZShjbGllbnQsIHJlcSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUG9sbFJlc3BvbnNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25Qb2xsUmVzcG9uc2UoY2xpZW50LCByZXEpO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25MYWJlbFVwZGF0ZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vbkxhYmVsVXBkYXRlZChjbGllbnQsIHJlcSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVxLmxvZ2dlci5lcnJvcihlKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5uYW1lID09ICdUaW1lb3V0RXJyb3InKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KHNlc3Npb24pIGFzIGFueTtcbiAgICAgICAgY2xpZW50LnN0YXR1cyA9ICdDTE9TRUQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9wZW5kYXRhKHJlcTogUmVxdWVzdCwgc2Vzc2lvbjogc3RyaW5nLCByZXM/OiBhbnkpIHtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVNlc3Npb25VdGlsKHJlcSwgY2xpZW50c0FycmF5LCBzZXNzaW9uLCByZXMpO1xuICB9XG5cbiAgZXhwb3J0UGhvbmVDb2RlKFxuICAgIHJlcTogYW55LFxuICAgIHBob25lOiBhbnksXG4gICAgcGhvbmVDb2RlOiBhbnksXG4gICAgY2xpZW50OiBXaGF0c0FwcFNlcnZlcixcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgZXZlbnRFbWl0dGVyLmVtaXQoYHBob25lQ29kZS0ke2NsaWVudC5zZXNzaW9ufWAsIHBob25lQ29kZSwgY2xpZW50KTtcblxuICAgIE9iamVjdC5hc3NpZ24oY2xpZW50LCB7XG4gICAgICBzdGF0dXM6ICdQSE9ORUNPREUnLFxuICAgICAgcGhvbmVDb2RlOiBwaG9uZUNvZGUsXG4gICAgICBwaG9uZTogcGhvbmUsXG4gICAgfSk7XG5cbiAgICByZXEuaW8uZW1pdCgncGhvbmVDb2RlJywge1xuICAgICAgZGF0YTogcGhvbmVDb2RlLFxuICAgICAgcGhvbmU6IHBob25lLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3Bob25lQ29kZScsIHtcbiAgICAgIHBob25lQ29kZTogcGhvbmVDb2RlLFxuICAgICAgcGhvbmU6IHBob25lLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBpZiAocmVzICYmICFyZXMuX2hlYWRlclNlbnQpXG4gICAgICByZXMuc3RhdHVzKDIwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogJ3Bob25lQ29kZScsXG4gICAgICAgIHBob25lOiBwaG9uZSxcbiAgICAgICAgcGhvbmVDb2RlOiBwaG9uZUNvZGUsXG4gICAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgICAgfSk7XG4gIH1cblxuICBleHBvcnRRUihcbiAgICByZXE6IGFueSxcbiAgICBxckNvZGU6IGFueSxcbiAgICB1cmxDb2RlOiBhbnksXG4gICAgY2xpZW50OiBXaGF0c0FwcFNlcnZlcixcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgZXZlbnRFbWl0dGVyLmVtaXQoYHFyY29kZS0ke2NsaWVudC5zZXNzaW9ufWAsIHFyQ29kZSwgdXJsQ29kZSwgY2xpZW50KTtcbiAgICBPYmplY3QuYXNzaWduKGNsaWVudCwge1xuICAgICAgc3RhdHVzOiAnUVJDT0RFJyxcbiAgICAgIHFyY29kZTogcXJDb2RlLFxuICAgICAgdXJsY29kZTogdXJsQ29kZSxcbiAgICB9KTtcblxuICAgIHFyQ29kZSA9IHFyQ29kZS5yZXBsYWNlKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJywgJycpO1xuICAgIGNvbnN0IGltYWdlQnVmZmVyID0gQnVmZmVyLmZyb20ocXJDb2RlLCAnYmFzZTY0Jyk7XG5cbiAgICByZXEuaW8uZW1pdCgncXJDb2RlJywge1xuICAgICAgZGF0YTogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgaW1hZ2VCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3FyY29kZScsIHtcbiAgICAgIHFyY29kZTogcXJDb2RlLFxuICAgICAgdXJsY29kZTogdXJsQ29kZSxcbiAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgIH0pO1xuICAgIGlmIChyZXMgJiYgIXJlcy5faGVhZGVyU2VudClcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAncXJjb2RlJyxcbiAgICAgICAgcXJjb2RlOiBxckNvZGUsXG4gICAgICAgIHVybGNvZGU6IHVybENvZGUsXG4gICAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBvblBhcnRpY2lwYW50c0NoYW5nZWQocmVxOiBhbnksIGNsaWVudDogYW55KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUGFydGljaXBhbnRzQ2hhbmdlZCgobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucGFydGljaXBhbnRzY2hhbmdlZCcsIG1lc3NhZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQocmVxOiBSZXF1ZXN0LCBjbGllbnQ6IFdoYXRzQXBwU2VydmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgICAgT2JqZWN0LmFzc2lnbihjbGllbnQsIHsgc3RhdHVzOiAnQ09OTkVDVEVEJywgcXJjb2RlOiBudWxsIH0pO1xuXG4gICAgICByZXEubG9nZ2VyLmluZm8oYFN0YXJ0ZWQgU2Vzc2lvbjogJHtjbGllbnQuc2Vzc2lvbn1gKTtcbiAgICAgIC8vY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdzZXNzaW9uLWxvZ2dlZCcsIHsgc3RhdHVzOiAnQ09OTkVDVEVEJ30pO1xuICAgICAgcmVxLmlvLmVtaXQoJ3Nlc3Npb24tbG9nZ2VkJywgeyBzdGF0dXM6IHRydWUsIHNlc3Npb246IGNsaWVudC5zZXNzaW9uIH0pO1xuICAgICAgc3RhcnRIZWxwZXIoY2xpZW50LCByZXEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICAgIHJlcS5pby5lbWl0KCdzZXNzaW9uLWVycm9yJywgY2xpZW50LnNlc3Npb24pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuY2hlY2tTdGF0ZVNlc3Npb24oY2xpZW50LCByZXEpO1xuICAgIGF3YWl0IHRoaXMubGlzdGVuTWVzc2FnZXMoY2xpZW50LCByZXEpO1xuXG4gICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2subGlzdGVuQWNrcykge1xuICAgICAgYXdhaXQgdGhpcy5saXN0ZW5BY2tzKGNsaWVudCwgcmVxKTtcbiAgICB9XG5cbiAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblByZXNlbmNlQ2hhbmdlZCkge1xuICAgICAgYXdhaXQgdGhpcy5vblByZXNlbmNlQ2hhbmdlZChjbGllbnQsIHJlcSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2hlY2tTdGF0ZVNlc3Npb24oY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uU3RhdGVDaGFuZ2UoKHN0YXRlKSA9PiB7XG4gICAgICByZXEubG9nZ2VyLmluZm8oYFN0YXRlIENoYW5nZSAke3N0YXRlfTogJHtjbGllbnQuc2Vzc2lvbn1gKTtcbiAgICAgIGNvbnN0IGNvbmZsaXRzID0gW1NvY2tldFN0YXRlLkNPTkZMSUNUXTtcblxuICAgICAgaWYgKGNvbmZsaXRzLmluY2x1ZGVzKHN0YXRlKSkge1xuICAgICAgICBjbGllbnQudXNlSGVyZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdGVuTWVzc2FnZXMoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uTWVzc2FnZShhc3luYyAobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICBldmVudEVtaXR0ZXIuZW1pdChgbWVuc2FnZW0tJHtjbGllbnQuc2Vzc2lvbn1gLCBjbGllbnQsIG1lc3NhZ2UpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbm1lc3NhZ2UnLCBtZXNzYWdlKTtcbiAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdsb2NhdGlvbicpXG4gICAgICAgIGNsaWVudC5vbkxpdmVMb2NhdGlvbihtZXNzYWdlLnNlbmRlci5pZCwgKGxvY2F0aW9uKSA9PiB7XG4gICAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdsb2NhdGlvbicsIGxvY2F0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBjbGllbnQub25BbnlNZXNzYWdlKGFzeW5jIChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgIG1lc3NhZ2Uuc2Vzc2lvbiA9IGNsaWVudC5zZXNzaW9uO1xuXG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSAnc3RpY2tlcicpIHtcbiAgICAgICAgZG93bmxvYWQobWVzc2FnZSwgY2xpZW50LCByZXEubG9nZ2VyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICByZXEuc2VydmVyT3B0aW9ucz8ud2Vic29ja2V0Py5hdXRvRG93bmxvYWQgfHxcbiAgICAgICAgKHJlcS5zZXJ2ZXJPcHRpb25zPy53ZWJob29rPy5hdXRvRG93bmxvYWQgJiYgbWVzc2FnZS5mcm9tTWUgPT0gZmFsc2UpXG4gICAgICApIHtcbiAgICAgICAgYXdhaXQgYXV0b0Rvd25sb2FkKGNsaWVudCwgcmVxLCBtZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgcmVxLmlvLmVtaXQoJ3JlY2VpdmVkLW1lc3NhZ2UnLCB7IHJlc3BvbnNlOiBtZXNzYWdlIH0pO1xuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25TZWxmTWVzc2FnZSAmJiBtZXNzYWdlLmZyb21NZSlcbiAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnNlbGZtZXNzYWdlJywgbWVzc2FnZSk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBjbGllbnQub25JbmNvbWluZ0NhbGwoYXN5bmMgKGNhbGwpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdpbmNvbWluZ2NhbGwnLCBjYWxsKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnaW5jb21pbmdjYWxsJywgY2FsbCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0ZW5BY2tzKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5vbkFjayhhc3luYyAoYWNrKSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25hY2snLCBhY2spO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbmFjaycsIGFjayk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblByZXNlbmNlQ2hhbmdlZChjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQub25QcmVzZW5jZUNoYW5nZWQoYXN5bmMgKHByZXNlbmNlQ2hhbmdlZEV2ZW50KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25wcmVzZW5jZWNoYW5nZWQnLCBwcmVzZW5jZUNoYW5nZWRFdmVudCk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucHJlc2VuY2VjaGFuZ2VkJywgcHJlc2VuY2VDaGFuZ2VkRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25SZWFjdGlvbk1lc3NhZ2UoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUmVhY3Rpb25NZXNzYWdlKGFzeW5jIChyZWFjdGlvbjogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25yZWFjdGlvbm1lc3NhZ2UnLCByZWFjdGlvbik7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucmVhY3Rpb25tZXNzYWdlJywgcmVhY3Rpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25SZXZva2VkTWVzc2FnZShjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25SZXZva2VkTWVzc2FnZShhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ29ucmV2b2tlZG1lc3NhZ2UnLCByZXNwb25zZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucmV2b2tlZG1lc3NhZ2UnLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cbiAgYXN5bmMgb25Qb2xsUmVzcG9uc2UoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUG9sbFJlc3BvbnNlKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25wb2xscmVzcG9uc2UnLCByZXNwb25zZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucG9sbHJlc3BvbnNlJywgcmVzcG9uc2UpO1xuICAgIH0pO1xuICB9XG4gIGFzeW5jIG9uTGFiZWxVcGRhdGVkKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgIGF3YWl0IGNsaWVudC5vblVwZGF0ZUxhYmVsKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb251cGRhdGVsYWJlbCcsIHJlc3BvbnNlKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb251cGRhdGVsYWJlbCcsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGVuY29kZUZ1bmN0aW9uKGRhdGE6IGFueSwgd2ViaG9vazogYW55KSB7XG4gICAgZGF0YS53ZWJob29rID0gd2ViaG9vaztcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH1cblxuICBkZWNvZGVGdW5jdGlvbih0ZXh0OiBhbnksIGNsaWVudDogYW55KSB7XG4gICAgY29uc3Qgb2JqZWN0ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICBpZiAob2JqZWN0LndlYmhvb2sgJiYgIWNsaWVudC53ZWJob29rKSBjbGllbnQud2ViaG9vayA9IG9iamVjdC53ZWJob29rO1xuICAgIGRlbGV0ZSBvYmplY3Qud2ViaG9vaztcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgZ2V0Q2xpZW50KHNlc3Npb246IGFueSkge1xuICAgIGxldCBjbGllbnQgPSBjbGllbnRzQXJyYXlbc2Vzc2lvbl07XG5cbiAgICBpZiAoIWNsaWVudClcbiAgICAgIGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXSA9IHtcbiAgICAgICAgc3RhdHVzOiBudWxsLFxuICAgICAgICBzZXNzaW9uOiBzZXNzaW9uLFxuICAgICAgfSBhcyBhbnk7XG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7OztBQUdBLElBQUFDLGtCQUFBLEdBQUFELE9BQUE7O0FBRUEsSUFBQUUsZUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBLDBCQUEyQyxDQXZCM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBV2UsTUFBTU8saUJBQWlCLENBQUMsQ0FDckNDLG1CQUFtQkEsQ0FBQ0MsTUFBVyxFQUFFLENBQy9CLElBQUlBLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLElBQUksQ0FBQ0YsTUFBTSxDQUFDUCxlQUFlLEVB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
385
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3BwY29ubmVjdCIsInJlcXVpcmUiLCJfc2Vzc2lvbkNvbnRyb2xsZXIiLCJfY2hhdFdvb3RDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2Z1bmN0aW9ucyIsIl9zZXNzaW9uVXRpbCIsIl9mYWN0b3J5IiwiQ3JlYXRlU2Vzc2lvblV0aWwiLCJzdGFydENoYXRXb290Q2xpZW50IiwiY2xpZW50IiwiY29uZmlnIiwiY2hhdFdvb3QiLCJjaGF0V29vdENsaWVudCIsInNlc3Npb24iLCJjcmVhdGVTZXNzaW9uVXRpbCIsInJlcSIsImNsaWVudHNBcnJheSIsInJlcyIsImdldENsaWVudCIsInN0YXR1cyIsImJvZHkiLCJ0b2tlblN0b3JlIiwiRmFjdG9yeSIsIm15VG9rZW5TdG9yZSIsImNyZWF0ZVRva2VuU3RvcnkiLCJ0b2tlbkRhdGEiLCJnZXRUb2tlbiIsInNldFRva2VuIiwic2VydmVyT3B0aW9ucyIsImN1c3RvbVVzZXJEYXRhRGlyIiwiY3JlYXRlT3B0aW9ucyIsInB1cHBldGVlck9wdGlvbnMiLCJ1c2VyRGF0YURpciIsIndwcENsaWVudCIsImNyZWF0ZSIsIk9iamVjdCIsImFzc2lnbiIsInByb3h5IiwidXJsIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsInBob25lTnVtYmVyIiwicGhvbmUiLCJkZXZpY2VOYW1lIiwidW5kZWZpbmVkIiwicG93ZXJlZEJ5IiwiY2F0Y2hMaW5rQ29kZSIsImNvZGUiLCJleHBvcnRQaG9uZUNvZGUiLCJjYXRjaFFSIiwiYmFzZTY0UXIiLCJhc2NpaVFSIiwiYXR0ZW1wdCIsInVybENvZGUiLCJleHBvcnRRUiIsIm9uTG9hZGluZ1NjcmVlbiIsInBlcmNlbnQiLCJtZXNzYWdlIiwibG9nZ2VyIiwiaW5mbyIsInN0YXR1c0ZpbmQiLCJldmVudEVtaXR0ZXIiLCJlbWl0IiwiU3RhdHVzRmluZCIsImF1dG9jbG9zZUNhbGxlZCIsImRpc2Nvbm5lY3RlZE1vYmlsZSIsInFyY29kZSIsImNsb3NlIiwiY2FsbFdlYkhvb2siLCJlcnJvciIsInN0YXJ0Iiwid2ViaG9vayIsIm9uUGFydGljaXBhbnRzQ2hhbmdlZCIsIm9uUmVhY3Rpb25NZXNzYWdlIiwib25SZXZva2VkTWVzc2FnZSIsIm9uUG9sbFJlc3BvbnNlIiwib25MYWJlbFVwZGF0ZWQiLCJlIiwiRXJyb3IiLCJuYW1lIiwib3BlbmRhdGEiLCJwaG9uZUNvZGUiLCJpbyIsImRhdGEiLCJfaGVhZGVyU2VudCIsImpzb24iLCJxckNvZGUiLCJ1cmxjb2RlIiwicmVwbGFjZSIsImltYWdlQnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwiaXNDb25uZWN0ZWQiLCJzdGFydEhlbHBlciIsImNoZWNrU3RhdGVTZXNzaW9uIiwibGlzdGVuTWVzc2FnZXMiLCJsaXN0ZW5BY2tzIiwib25QcmVzZW5jZUNoYW5nZWQiLCJvblN0YXRlQ2hhbmdlIiwic3RhdGUiLCJjb25mbGl0cyIsIlNvY2tldFN0YXRlIiwiQ09ORkxJQ1QiLCJpbmNsdWRlcyIsInVzZUhlcmUiLCJvbk1lc3NhZ2UiLCJ0eXBlIiwib25MaXZlTG9jYXRpb24iLCJzZW5kZXIiLCJpZCIsImxvY2F0aW9uIiwib25BbnlNZXNzYWdlIiwiZG93bmxvYWQiLCJ3ZWJzb2NrZXQiLCJhdXRvRG93bmxvYWQiLCJmcm9tTWUiLCJyZXNwb25zZSIsIm9uU2VsZk1lc3NhZ2UiLCJvbkluY29taW5nQ2FsbCIsImNhbGwiLCJvbkFjayIsImFjayIsInByZXNlbmNlQ2hhbmdlZEV2ZW50IiwicmVhY3Rpb24iLCJvblVwZGF0ZUxhYmVsIiwiZW5jb2RlRnVuY3Rpb24iLCJKU09OIiwic3RyaW5naWZ5IiwiZGVjb2RlRnVuY3Rpb24iLCJ0ZXh0Iiwib2JqZWN0IiwicGFyc2UiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2NyZWF0ZVNlc3Npb25VdGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMSBXUFBDb25uZWN0IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNyZWF0ZSwgU29ja2V0U3RhdGUsIFN0YXR1c0ZpbmQgfSBmcm9tICdAd3BwY29ubmVjdC10ZWFtL3dwcGNvbm5lY3QnO1xuaW1wb3J0IHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyBkb3dubG9hZCB9IGZyb20gJy4uL2NvbnRyb2xsZXIvc2Vzc2lvbkNvbnRyb2xsZXInO1xuaW1wb3J0IHsgV2hhdHNBcHBTZXJ2ZXIgfSBmcm9tICcuLi90eXBlcy9XaGF0c0FwcFNlcnZlcic7XG5pbXBvcnQgY2hhdFdvb3RDbGllbnQgZnJvbSAnLi9jaGF0V29vdENsaWVudCc7XG5pbXBvcnQgeyBhdXRvRG93bmxvYWQsIGNhbGxXZWJIb29rLCBzdGFydEhlbHBlciB9IGZyb20gJy4vZnVuY3Rpb25zJztcbmltcG9ydCB7IGNsaWVudHNBcnJheSwgZXZlbnRFbWl0dGVyIH0gZnJvbSAnLi9zZXNzaW9uVXRpbCc7XG5pbXBvcnQgRmFjdG9yeSBmcm9tICcuL3Rva2VuU3RvcmUvZmFjdG9yeSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENyZWF0ZVNlc3Npb25VdGlsIHtcbiAgc3RhcnRDaGF0V29vdENsaWVudChjbGllbnQ6IGFueSkge1xuICAgIGlmIChjbGllbnQuY29uZmlnLmNoYXRXb290ICYmICFjbGllbnQuX2NoYXRXb290Q2xpZW50KVxuICAgICAgY2xpZW50Ll9jaGF0V29vdENsaWVudCA9IG5ldyBjaGF0V29vdENsaWVudChcbiAgICAgICAgY2xpZW50LmNvbmZpZy5jaGF0V29vdCxcbiAgICAgICAgY2xpZW50LnNlc3Npb25cbiAgICAgICk7XG4gICAgcmV0dXJuIGNsaWVudC5fY2hhdFdvb3RDbGllbnQ7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uVXRpbChcbiAgICByZXE6IGFueSxcbiAgICBjbGllbnRzQXJyYXk6IGFueSxcbiAgICBzZXNzaW9uOiBzdHJpbmcsXG4gICAgcmVzPzogYW55XG4gICkge1xuICAgIHRyeSB7XG4gICAgICBsZXQgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQoc2Vzc2lvbikgYXMgYW55O1xuICAgICAgaWYgKGNsaWVudC5zdGF0dXMgIT0gbnVsbCAmJiBjbGllbnQuc3RhdHVzICE9PSAnQ0xPU0VEJykgcmV0dXJuO1xuICAgICAgY2xpZW50LnN0YXR1cyA9ICdJTklUSUFMSVpJTkcnO1xuICAgICAgY2xpZW50LmNvbmZpZyA9IHJlcS5ib2R5O1xuXG4gICAgICBjb25zdCB0b2tlblN0b3JlID0gbmV3IEZhY3RvcnkoKTtcbiAgICAgIGNvbnN0IG15VG9rZW5TdG9yZSA9IHRva2VuU3RvcmUuY3JlYXRlVG9rZW5TdG9yeShjbGllbnQpO1xuICAgICAgY29uc3QgdG9rZW5EYXRhID0gYXdhaXQgbXlUb2tlblN0b3JlLmdldFRva2VuKHNlc3Npb24pO1xuXG4gICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gdXBkYXRlIHBob25lIGluIGNvbmZpZyBldmVyeSB0aW1lIHNlc3Npb24gc3RhcnRzLCBzbyB3ZSBjYW4gYXNrIGZvciBjb2RlIGZvciBpdCBhZ2Fpbi5cbiAgICAgIG15VG9rZW5TdG9yZS5zZXRUb2tlbihzZXNzaW9uLCB0b2tlbkRhdGEgPz8ge30pO1xuXG4gICAgICB0aGlzLnN0YXJ0Q2hhdFdvb3RDbGllbnQoY2xpZW50KTtcblxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLmN1c3RvbVVzZXJEYXRhRGlyKSB7XG4gICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmNyZWF0ZU9wdGlvbnMucHVwcGV0ZWVyT3B0aW9ucyA9IHtcbiAgICAgICAgICB1c2VyRGF0YURpcjogcmVxLnNlcnZlck9wdGlvbnMuY3VzdG9tVXNlckRhdGFEaXIgKyBzZXNzaW9uLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3cHBDbGllbnQgPSBhd2FpdCBjcmVhdGUoXG4gICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge30sXG4gICAgICAgICAgeyB0b2tlblN0b3JlOiBteVRva2VuU3RvcmUgfSxcbiAgICAgICAgICBjbGllbnQuY29uZmlnLnByb3h5XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBwcm94eToge1xuICAgICAgICAgICAgICAgICAgdXJsOiBjbGllbnQuY29uZmlnLnByb3h5Py51cmwsXG4gICAgICAgICAgICAgICAgICB1c2VybmFtZTogY2xpZW50LmNvbmZpZy5wcm94eT8udXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICBwYXNzd29yZDogY2xpZW50LmNvbmZpZy5wcm94eT8ucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgICByZXEuc2VydmVyT3B0aW9ucy5jcmVhdGVPcHRpb25zLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlc3Npb246IHNlc3Npb24sXG4gICAgICAgICAgICBwaG9uZU51bWJlcjogY2xpZW50LmNvbmZpZy5waG9uZSA/PyBudWxsLFxuICAgICAgICAgICAgZGV2aWNlTmFtZTpcbiAgICAgICAgICAgICAgY2xpZW50LmNvbmZpZy5waG9uZSA9PSB1bmRlZmluZWQgLy8gYnVnIHdoZW4gdXNpbmcgcGhvbmUgY29kZSB0aGlzIHNob3VsZG4ndCBiZSBwYXNzZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS93cHBjb25uZWN0LXRlYW0vd3BwY29ubmVjdC1zZXJ2ZXIvaXNzdWVzLzE2ODcjaXNzdWVjb21tZW50LTIwOTkzNTc4NzQpXG4gICAgICAgICAgICAgICAgPyBjbGllbnQuY29uZmlnPy5kZXZpY2VOYW1lIHx8XG4gICAgICAgICAgICAgICAgICByZXEuc2VydmVyT3B0aW9ucy5kZXZpY2VOYW1lIHx8XG4gICAgICAgICAgICAgICAgICAnV3BwQ29ubmVjdCdcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBvd2VyZWRCeTpcbiAgICAgICAgICAgICAgY2xpZW50LmNvbmZpZy5waG9uZSA9PSB1bmRlZmluZWQgLy8gYnVnIHdoZW4gdXNpbmcgcGhvbmUgY29kZSB0aGlzIHNob3VsZG4ndCBiZSBwYXNzZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS93cHBjb25uZWN0LXRlYW0vd3BwY29ubmVjdC1zZXJ2ZXIvaXNzdWVzLzE2ODcjaXNzdWVjb21tZW50LTIwOTkzNTc4NzQpXG4gICAgICAgICAgICAgICAgPyBjbGllbnQuY29uZmlnPy5wb3dlcmVkQnkgfHxcbiAgICAgICAgICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLnBvd2VyZWRCeSB8fFxuICAgICAgICAgICAgICAgICAgJ1dQUENvbm5lY3QtU2VydmVyJ1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0Y2hMaW5rQ29kZTogKGNvZGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmV4cG9ydFBob25lQ29kZShyZXEsIGNsaWVudC5jb25maWcucGhvbmUsIGNvZGUsIGNsaWVudCwgcmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYXRjaFFSOiAoXG4gICAgICAgICAgICAgIGJhc2U2NFFyOiBhbnksXG4gICAgICAgICAgICAgIGFzY2lpUVI6IGFueSxcbiAgICAgICAgICAgICAgYXR0ZW1wdDogYW55LFxuICAgICAgICAgICAgICB1cmxDb2RlOiBzdHJpbmdcbiAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmV4cG9ydFFSKHJlcSwgYmFzZTY0UXIsIHVybENvZGUsIGNsaWVudCwgcmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkxvYWRpbmdTY3JlZW46IChwZXJjZW50OiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICByZXEubG9nZ2VyLmluZm8oYFske3Nlc3Npb259XSAke3BlcmNlbnR9JSAtICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGF0dXNGaW5kOiAoc3RhdHVzRmluZDogU3RhdHVzRmluZCkgPT4ge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGV2ZW50RW1pdHRlci5lbWl0KFxuICAgICAgICAgICAgICAgICAgYHN0YXR1cy0ke2NsaWVudC5zZXNzaW9ufWAsXG4gICAgICAgICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICAgICAgICBzdGF0dXNGaW5kXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBzdGF0dXNGaW5kID09PSBTdGF0dXNGaW5kLmF1dG9jbG9zZUNhbGxlZCB8fFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZCA9PT0gU3RhdHVzRmluZC5kaXNjb25uZWN0ZWRNb2JpbGVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNsaWVudC5zdGF0dXMgPSAnQ0xPU0VEJztcbiAgICAgICAgICAgICAgICAgIGNsaWVudC5xcmNvZGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICBjbGllbnRzQXJyYXlbc2Vzc2lvbl0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnc3RhdHVzLWZpbmQnLCB7XG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1c0ZpbmQsXG4gICAgICAgICAgICAgICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXEubG9nZ2VyLmluZm8oc3RhdHVzRmluZCArICdcXG5cXG4nKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgY2xpZW50ID0gY2xpZW50c0FycmF5W3Nlc3Npb25dID0gT2JqZWN0LmFzc2lnbih3cHBDbGllbnQsIGNsaWVudCk7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0KHJlcSwgY2xpZW50KTtcblxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25QYXJ0aWNpcGFudHNDaGFuZ2VkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25QYXJ0aWNpcGFudHNDaGFuZ2VkKHJlcSwgY2xpZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25SZWFjdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vblJlYWN0aW9uTWVzc2FnZShjbGllbnQsIHJlcSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUmV2b2tlZE1lc3NhZ2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vblJldm9rZWRNZXNzYWdlKGNsaWVudCwgcmVxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25Qb2xsUmVzcG9uc2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vblBvbGxSZXNwb25zZShjbGllbnQsIHJlcSk7XG4gICAgICB9XG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vbkxhYmVsVXBkYXRlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9uTGFiZWxVcGRhdGVkKGNsaWVudCwgcmVxKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXEubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLm5hbWUgPT0gJ1RpbWVvdXRFcnJvcicpIHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQoc2Vzc2lvbikgYXMgYW55O1xuICAgICAgICBjbGllbnQuc3RhdHVzID0gJ0NMT1NFRCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb3BlbmRhdGEocmVxOiBSZXF1ZXN0LCBzZXNzaW9uOiBzdHJpbmcsIHJlcz86IGFueSkge1xuICAgIGF3YWl0IHRoaXMuY3JlYXRlU2Vzc2lvblV0aWwocmVxLCBjbGllbnRzQXJyYXksIHNlc3Npb24sIHJlcyk7XG4gIH1cblxuICBleHBvcnRQaG9uZUNvZGUoXG4gICAgcmVxOiBhbnksXG4gICAgcGhvbmU6IGFueSxcbiAgICBwaG9uZUNvZGU6IGFueSxcbiAgICBjbGllbnQ6IFdoYXRzQXBwU2VydmVyLFxuICAgIHJlcz86IGFueVxuICApIHtcbiAgICBldmVudEVtaXR0ZXIuZW1pdChgcGhvbmVDb2RlLSR7Y2xpZW50LnNlc3Npb259YCwgcGhvbmVDb2RlLCBjbGllbnQpO1xuXG4gICAgT2JqZWN0LmFzc2lnbihjbGllbnQsIHtcbiAgICAgIHN0YXR1czogJ1BIT05FQ09ERScsXG4gICAgICBwaG9uZUNvZGU6IHBob25lQ29kZSxcbiAgICAgIHBob25lOiBwaG9uZSxcbiAgICB9KTtcblxuICAgIHJlcS5pby5lbWl0KCdwaG9uZUNvZGUnLCB7XG4gICAgICBkYXRhOiBwaG9uZUNvZGUsXG4gICAgICBwaG9uZTogcGhvbmUsXG4gICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICB9KTtcblxuICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAncGhvbmVDb2RlJywge1xuICAgICAgcGhvbmVDb2RlOiBwaG9uZUNvZGUsXG4gICAgICBwaG9uZTogcGhvbmUsXG4gICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICB9KTtcblxuICAgIGlmIChyZXMgJiYgIXJlcy5faGVhZGVyU2VudClcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAncGhvbmVDb2RlJyxcbiAgICAgICAgcGhvbmU6IHBob25lLFxuICAgICAgICBwaG9uZUNvZGU6IHBob25lQ29kZSxcbiAgICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgICB9KTtcbiAgfVxuXG4gIGV4cG9ydFFSKFxuICAgIHJlcTogYW55LFxuICAgIHFyQ29kZTogYW55LFxuICAgIHVybENvZGU6IGFueSxcbiAgICBjbGllbnQ6IFdoYXRzQXBwU2VydmVyLFxuICAgIHJlcz86IGFueVxuICApIHtcbiAgICBldmVudEVtaXR0ZXIuZW1pdChgcXJjb2RlLSR7Y2xpZW50LnNlc3Npb259YCwgcXJDb2RlLCB1cmxDb2RlLCBjbGllbnQpO1xuICAgIE9iamVjdC5hc3NpZ24oY2xpZW50LCB7XG4gICAgICBzdGF0dXM6ICdRUkNPREUnLFxuICAgICAgcXJjb2RlOiBxckNvZGUsXG4gICAgICB1cmxjb2RlOiB1cmxDb2RlLFxuICAgIH0pO1xuXG4gICAgcXJDb2RlID0gcXJDb2RlLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnLCAnJyk7XG4gICAgY29uc3QgaW1hZ2VCdWZmZXIgPSBCdWZmZXIuZnJvbShxckNvZGUsICdiYXNlNjQnKTtcblxuICAgIHJlcS5pby5lbWl0KCdxckNvZGUnLCB7XG4gICAgICBkYXRhOiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBpbWFnZUJ1ZmZlci50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICB9KTtcblxuICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAncXJjb2RlJywge1xuICAgICAgcXJjb2RlOiBxckNvZGUsXG4gICAgICB1cmxjb2RlOiB1cmxDb2RlLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG4gICAgaWYgKHJlcyAmJiAhcmVzLl9oZWFkZXJTZW50KVxuICAgICAgcmVzLnN0YXR1cygyMDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdxcmNvZGUnLFxuICAgICAgICBxcmNvZGU6IHFyQ29kZSxcbiAgICAgICAgdXJsY29kZTogdXJsQ29kZSxcbiAgICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uUGFydGljaXBhbnRzQ2hhbmdlZChyZXE6IGFueSwgY2xpZW50OiBhbnkpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25QYXJ0aWNpcGFudHNDaGFuZ2VkKChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25wYXJ0aWNpcGFudHNjaGFuZ2VkJywgbWVzc2FnZSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydChyZXE6IFJlcXVlc3QsIGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgICBPYmplY3QuYXNzaWduKGNsaWVudCwgeyBzdGF0dXM6ICdDT05ORUNURUQnLCBxcmNvZGU6IG51bGwgfSk7XG5cbiAgICAgIHJlcS5sb2dnZXIuaW5mbyhgU3RhcnRlZCBTZXNzaW9uOiAke2NsaWVudC5zZXNzaW9ufWApO1xuICAgICAgLy9jYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3Nlc3Npb24tbG9nZ2VkJywgeyBzdGF0dXM6ICdDT05ORUNURUQnfSk7XG4gICAgICByZXEuaW8uZW1pdCgnc2Vzc2lvbi1sb2dnZWQnLCB7IHN0YXR1czogdHJ1ZSwgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24gfSk7XG4gICAgICBzdGFydEhlbHBlcihjbGllbnQsIHJlcSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgcmVxLmlvLmVtaXQoJ3Nlc3Npb24tZXJyb3InLCBjbGllbnQuc2Vzc2lvbik7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jaGVja1N0YXRlU2Vzc2lvbihjbGllbnQsIHJlcSk7XG4gICAgYXdhaXQgdGhpcy5saXN0ZW5NZXNzYWdlcyhjbGllbnQsIHJlcSk7XG5cbiAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5saXN0ZW5BY2tzKSB7XG4gICAgICBhd2FpdCB0aGlzLmxpc3RlbkFja3MoY2xpZW50LCByZXEpO1xuICAgIH1cblxuICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUHJlc2VuY2VDaGFuZ2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLm9uUHJlc2VuY2VDaGFuZ2VkKGNsaWVudCwgcmVxKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjaGVja1N0YXRlU2Vzc2lvbihjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQub25TdGF0ZUNoYW5nZSgoc3RhdGUpID0+IHtcbiAgICAgIHJlcS5sb2dnZXIuaW5mbyhgU3RhdGUgQ2hhbmdlICR7c3RhdGV9OiAke2NsaWVudC5zZXNzaW9ufWApO1xuICAgICAgY29uc3QgY29uZmxpdHMgPSBbU29ja2V0U3RhdGUuQ09ORkxJQ1RdO1xuXG4gICAgICBpZiAoY29uZmxpdHMuaW5jbHVkZXMoc3RhdGUpKSB7XG4gICAgICAgIGNsaWVudC51c2VIZXJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0ZW5NZXNzYWdlcyhjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQub25NZXNzYWdlKGFzeW5jIChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgIGV2ZW50RW1pdHRlci5lbWl0KGBtZW5zYWdlbS0ke2NsaWVudC5zZXNzaW9ufWAsIGNsaWVudCwgbWVzc2FnZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ubWVzc2FnZScsIG1lc3NhZ2UpO1xuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ2xvY2F0aW9uJylcbiAgICAgICAgY2xpZW50Lm9uTGl2ZUxvY2F0aW9uKG1lc3NhZ2Uuc2VuZGVyLmlkLCAobG9jYXRpb24pID0+IHtcbiAgICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ2xvY2F0aW9uJywgbG9jYXRpb24pO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGF3YWl0IGNsaWVudC5vbkFueU1lc3NhZ2UoYXN5bmMgKG1lc3NhZ2U6IGFueSkgPT4ge1xuICAgICAgbWVzc2FnZS5zZXNzaW9uID0gY2xpZW50LnNlc3Npb247XG5cbiAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdzdGlja2VyJykge1xuICAgICAgICBkb3dubG9hZChtZXNzYWdlLCBjbGllbnQsIHJlcS5sb2dnZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zPy53ZWJzb2NrZXQ/LmF1dG9Eb3dubG9hZCB8fFxuICAgICAgICAocmVxLnNlcnZlck9wdGlvbnM/LndlYmhvb2s/LmF1dG9Eb3dubG9hZCAmJiBtZXNzYWdlLmZyb21NZSA9PSBmYWxzZSlcbiAgICAgICkge1xuICAgICAgICBhd2FpdCBhdXRvRG93bmxvYWQoY2xpZW50LCByZXEsIG1lc3NhZ2UpO1xuICAgICAgfVxuXG4gICAgICByZXEuaW8uZW1pdCgncmVjZWl2ZWQtbWVzc2FnZScsIHsgcmVzcG9uc2U6IG1lc3NhZ2UgfSk7XG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblNlbGZNZXNzYWdlICYmIG1lc3NhZ2UuZnJvbU1lKVxuICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29uc2VsZm1lc3NhZ2UnLCBtZXNzYWdlKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IGNsaWVudC5vbkluY29taW5nQ2FsbChhc3luYyAoY2FsbCkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ2luY29taW5nY2FsbCcsIGNhbGwpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdpbmNvbWluZ2NhbGwnLCBjYWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RlbkFja3MoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uQWNrKGFzeW5jIChhY2spID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbmFjaycsIGFjayk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29uYWNrJywgYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uUHJlc2VuY2VDaGFuZ2VkKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5vblByZXNlbmNlQ2hhbmdlZChhc3luYyAocHJlc2VuY2VDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnByZXNlbmNlY2hhbmdlZCcsIHByZXNlbmNlQ2hhbmdlZEV2ZW50KTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25wcmVzZW5jZWNoYW5nZWQnLCBwcmVzZW5jZUNoYW5nZWRFdmVudCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJlYWN0aW9uTWVzc2FnZShjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25SZWFjdGlvbk1lc3NhZ2UoYXN5bmMgKHJlYWN0aW9uOiBhbnkpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnJlYWN0aW9ubWVzc2FnZScsIHJlYWN0aW9uKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25yZWFjdGlvbm1lc3NhZ2UnLCByZWFjdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJldm9rZWRNZXNzYWdlKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgIGF3YWl0IGNsaWVudC5vblJldm9rZWRNZXNzYWdlKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25yZXZva2VkbWVzc2FnZScsIHJlc3BvbnNlKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25yZXZva2VkbWVzc2FnZScsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuICBhc3luYyBvblBvbGxSZXNwb25zZShjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25Qb2xsUmVzcG9uc2UoYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnBvbGxyZXNwb25zZScsIHJlc3BvbnNlKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25wb2xscmVzcG9uc2UnLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cbiAgYXN5bmMgb25MYWJlbFVwZGF0ZWQoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uVXBkYXRlTGFiZWwoYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnVwZGF0ZWxhYmVsJywgcmVzcG9uc2UpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnVwZGF0ZWxhYmVsJywgcmVzcG9uc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZW5jb2RlRnVuY3Rpb24oZGF0YTogYW55LCB3ZWJob29rOiBhbnkpIHtcbiAgICBkYXRhLndlYmhvb2sgPSB3ZWJob29rO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgfVxuXG4gIGRlY29kZUZ1bmN0aW9uKHRleHQ6IGFueSwgY2xpZW50OiBhbnkpIHtcbiAgICBjb25zdCBvYmplY3QgPSBKU09OLnBhcnNlKHRleHQpO1xuICAgIGlmIChvYmplY3Qud2ViaG9vayAmJiAhY2xpZW50LndlYmhvb2spIGNsaWVudC53ZWJob29rID0gb2JqZWN0LndlYmhvb2s7XG4gICAgZGVsZXRlIG9iamVjdC53ZWJob29rO1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cblxuICBnZXRDbGllbnQoc2Vzc2lvbjogYW55KSB7XG4gICAgbGV0IGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXTtcblxuICAgIGlmICghY2xpZW50KVxuICAgICAgY2xpZW50ID0gY2xpZW50c0FycmF5W3Nlc3Npb25dID0ge1xuICAgICAgICBzdGF0dXM6IG51bGwsXG4gICAgICAgIHNlc3Npb246IHNlc3Npb24sXG4gICAgICB9IGFzIGFueTtcbiAgICByZXR1cm4gY2xpZW50O1xuICB9XG59XG4iXSwi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